【问题标题】:Strange SVN folder in repository存储库中奇怪的 SVN 文件夹
【发布时间】:2013-02-05 20:19:46
【问题描述】:

我正在从 SVN 迁移到 git,我正在尝试使用 git svn 包装器 svn2git (https://github.com/nirvdrum/svn2git) 迁移我现有的 SVN 存储库。我正在使用 svn2git,因为它保持分支完好无损。我的最终目标是将项目放到github上。

通过 svn2git 执行克隆时,尝试访问文件夹时执行停止:

svn/https%3A

这应该是一个分支 - 但是我在存储库中看不到它。我假设在某个阶段我不小心命名了一个以 https 开头的分支:(认为它需要完整的 SVN 路径),但是现在我不确定如何再次删除它,因为它找不到。

有什么方法可以使用 svnadmin 查找和删除它吗?

【问题讨论】:

  • svn2git 是否列出了它失败的版本?你能登录 svn/branches 并找到它吗?它很可能是被创建和删除的(因此不容易看到)
  • 是的..它在 rev 789 上失败了,我在服务器上的 svn respoistory 上进行了 grep,发现 revs 788、789 和 790 包含分支/https:/ 的痕迹...不过我的问题是不是我不确定在获取时如何避免这些修订?

标签: git svn svn2git


【解决方案1】:

在花费了几个小时之后,尝试了各种执行转换的方法(我没有尝试 thekbb 提出的解决方案,因为在找到答案之前我没有看到它),我最终放弃了 git-svn 并使用subgit 第一次转换整个存储库,没有任何麻烦。

我不想在这里互相推诿,但我会说我使用 subgit 的经验远好于使用 git-svn 或包装器 svn2git 的经验。

似乎 git-svn 在 subversion 存储库中遇到异常时会抛出错误,但是 subgit 似乎会自行解决,在这种情况下我更喜欢这种情况,因为我正在从 SVN 迁移到 Git,所以任何时候我可以避免花费修补 SVN 存储库的时间是我很乐意节省的时间。

在 subgit 安装指南中我没有看到的唯一一件事(我可能错过了)是您应该在执行安装时使 svn 服务器脱机,否则您最终会出现“中断”(当有人访问存储库)这会停止安装。

【讨论】:

  • 感谢 SubGit 开发团队的回答。我想问一下你遇到过什么样的干扰?如果您使用的是 SubGit 1.0,那么 SubGit 应该将某些挂钩安装到 SVN 和 Git 存储库中,以确保每个修订都被转换,即使它在安装过程中被提交。因此,在这种情况下无需关闭服务器。 SubGit 2.0 EAP 构建确实存在一些问题;这些问题应该已经在最新版本中得到修复。
【解决方案2】:

已经很久了,很抱歉没有对此进行测试... 但理论上你可以删除罪犯

git branch -D https%3A

然后重启:

svn2git --rebase

如果这不起作用,我会尝试使用 svndumpfilter 删除该分支。您必须使用 svnadmin dump 转储存储库,然后对其进行过滤:

svndumpfilter exclude branches/https%3A < dumpfile > filtered-dumpfile

然后您可以将过滤后的转储文件加载到新的 svn 存储库,然后对其执行 svn2git。

【讨论】:

  • 您好,非常感谢您抽出宝贵时间回复我的问题。不幸的是,我没有测试你的答案。在它被列出之前,我尝试了 subgit(见我的回答)并且它没有问题。但是,我认为 svndumpfilter 是正确的,可以正确“修复”svn repo。再次感谢您的宝贵时间,非常感谢您提供帮助。
猜你喜欢
  • 1970-01-01
  • 2012-03-08
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 2012-04-15
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
相关资源
最近更新 更多