“git svn clone”只克隆主干? (预计克隆整个存储库)

时间:2011-12-10 21:20:34

标签: git svn git-svn msysgit

我有一个SVN存储库,看起来像这样:

  • 分支
    • ......各种分支(暂无)
  • 标记
    • ...各种标签(还没有)
  • 躯干
    • 共同
    • 文档
    • EXTLIB
    • 凸出

我跑:

git svn clone --stdlayout https://[SVN URL]/svn/MyProject "C:\_build\WorkingFolders\Myproject_gitcopy"

该命令似乎成功执行。

我希望在克隆目录中看到“branches”,“tags”和“trunk”文件夹,因为我们克隆了整个存储库。相反,我看到“普通”,“doc”,“extlib”和“proj”。

看来git只克隆了我的存储库的主干。有谁知道为什么会这样,以及如何解决它?或者我只是错误地看到它?

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

实际上,git svn正试图通过聪明来帮助你: - )。

git以不同于Subversion的方式处理标记和分支。在Subversion中,标签和分支不作为单独的技术概念存在;它们只是特殊目录下树的副本。

git实际上将分支作为“真实”对象。因此,git svn会自动将Subversion分支和标记转换为git branches(*)。

要在git中查看分支,请执行

git branch -a

( - a使它包括远程跟踪分支)。这应该显示SVN repo的分支和标签。

(*)注意:git svn不会从Subversion标签创建git标签,因为在Subversion中,标签和分支之间在技术上没有区别(它只是一种约定)。由于尚不完全清楚如何区分标签和Subversion中的分支,git svn只是将它们全部作为分支导入。参见例如Debian bug #501761: git-svn --tags should at least /try/ to handle tags as tags

答案 1 :(得分:2)

在Git中,你没有像trunk,tags和branches这样的目录结构。通常你会在git的master分支中看到SVN-trunk中的所有内容但是根据你提到的信息,你提到Subversion中根本没有标签或分支,你也不会在Git中看到标签或分支

此外,基于--stdlayout选项,您告诉git-svn bridge假设默认布局为不同的主干,标签和分支。

答案 2 :(得分:0)

一旦启动了一些svn分支(如git branch -a所示),您可以通过

切换工作区
git checkout <abranchname>

并返回

git checkout master