1

我在 GitHub 上托管了一个简单的 git 存储库,我希望将其拉入一个在 SVN 存储库中维护的项目中。Git 存储库中有 2 个分支(目前,还会有更多分支),但我只想并且需要拉入 Git 存储库的当前“主”分支。

我正在使用一个简单的svn:external来实现这一点,使用附加到 Github repo URL 的“/trunk”路径,这基本上运行良好。

唯一的问题是,当我更新我的 SVN 工作副本时,除了更新外部(基本上正确)之外,我还得到了一个“分支”文件夹,它根本不属于我在 Git 存储库中的项目文件的一部分(并且从来没有)。

因此,使用如下所示的 git repo master:

  repo-root
      folder a
      folder b
      file a
      file b

我最终得到一个从 SVN 外部更新的文件夹,如下所示:

  external-root
      branches
      folder a
      folder b
      file a
      file b

即莫名其妙地出现了一个无关的“分支”文件夹。如果我删除该文件夹,它只是在下次更新外部时重新创建。创建的分支文件夹是空的 - 它不包含任何文件或数据,更不用说与 GitHub 方面的实际分支相关的任何内容。

我正在使用 TortoiseSVN,如果我使用 repo 浏览器查看外部引用的 git repo,我看不到任何暗示这个无关的“分支”文件夹来自哪里,只是预期的分支/主干结构:

   repo-url
      branches
         develop
      trunk
         folder a
         folder b
         file a
         file b

如果我使用 Tortoise SVN 的“显示日志”工具来尝试查看此分支文件夹的历史记录,github 会以“修订版 NN 中不存在”作为响应。

这个分支文件夹来自哪里,我该如何阻止它?

4

1 回答 1

0

与非常乐于助人的 GitHub 支持人员一起对该问题进行的详细调查使我们得出结论,这是我在执行外部初始“更新”时使用的旧版本 TortoiseSVN 中的一个错误。

我们认为这会导致 SVN 存储库中的一些错误配置的元数据,这些元数据被后来更新的 SVN 客户端不恰当地应用(分支文件夹在删除后将被“恢复”,即使是由备用的命令行客户端,如 SlikSVN )。

但是,在完全删除 externals 配置、重新提交“external-less”SVN 存储库,然后重新创建外部引用后,不再出现分支文件夹,因此我们得出结论,无论错误是什么,在哪-曾经它驻留的组件(TortoiseSVN 或 github SVN API 层)现在已修复。

如果您在svn:externals引用 GitHub(或者通常是git )repo时遇到此问题或类似问题,请使用完全最新的 SVN 工具链:

  1. 删除外部文件的所有工作副本
  2. 删除/移除SVN 属性中的svn:externals配置
  3. 在此状态下提交 SVN 存储库
  4. 然后重新创建你的svn:externals

这应该可以解决问题。

于 2013-03-11T00:24:38.470 回答