代码之家  ›  专栏  ›  技术社区  ›  Ibrahim

使用有点奇怪的SVN布局的Git SVN

  •  1
  • Ibrahim  · 技术社区  · 16 年前

    我正在做一个实习,他们正在使用SVN(尽管有人讨论过要搬到HG或Git,但这在不久的将来不会发生)。我喜欢git,所以我想使用git svn与svn存储库进行交互,并能够执行本地提交、分支和类似的操作(当然,在提交到svn之前重新调整)。但是,有一点小问题,SVN存储库的布局有点奇怪。基本上是这样的

    /FOO
      +-branches
      +-tags
      +-trunk
        +-FOO
        +-myproject
    

    基本上,我的项目被卡在主干的子目录中,还有一个项目也是主干的子目录。如果我使用git svn并且只克隆我的项目的目录而不是根目录,它会混淆还是会导致任何问题?我只是想知道,因为提交数量是为整个存储库而不仅仅是我的项目递增的,所以提交是关闭的还是类似的?我可能不会将任何分支或标记推送到SVN,因为我更喜欢在Git中本地执行这些操作,而且我不知道Git SVN如何处理分支和标记,而且没有其他人使用它们,所以我觉得这样做没什么意义。谢谢你的帮助!

    1 回复  |  直到 16 年前
        1
  •  1
  •   Josh    16 年前

    我在多项目多平台SVN报告中使用了Git SVN。

    我通常只在我感兴趣的svn repo目录中直接使用本地git repo点,放弃对分支的任何本地支持等等,尽管我听说支持越来越好。Git核心文档中似乎有Git SVN分支支持。

    我的做法是:

    git svn init http://repo.farts.com/svn/path/to/the/directory/of/project
    git svn fetch
    

    当承诺的时候…

    git stash
    git svn rebase
    git stash pop
    git commit -am "Some really awesome stuff"
    git svn dcommit
    

    这件事我没遇到什么麻烦。如果您重新设定的代码发生了更改,则弹出stash将启动合并。Rebase使历史保持线性。也许有更好的方法可以做到这一点,但我幸存下来了,有了上面的进程加上git合并工具。

    您还可以查看git svn附带的自定义布局选项,用于指定主干、分支和标记彼此之间的关系。您可以使用-t trunk-b branches-t标记分别指定其中的每一个——这些标记在默认情况下是相对的,但是您可以提供绝对路径。

    另外,作为一个建议,我个人会根据实习的敏感性使用SVN客户。我不是吉特镇好公民的一员,我这么说,但源头控制可能是一个大麻烦,也是人们的圣地——如果它给任何人造成一盎司的不便,它几乎不值得。也就是说,如果你能保持独立,不让任何人因为你的工具选择而感到负担,那么快乐的Git'ing;-)

    乔希