2011-12-10 172 views
2

我有一个SVN仓库,看起来是这样的:“git svn clone”只克隆trunk? (预期克隆整个存储库)

  • 分支
    • ...各分支机构(没有评分)
  • 标签
    • ...各种标签(none none)
  • trunk
    • 共同
    • DOC
    • EXTLIB
    • 凸出

我运行:

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

命令似乎成功执行。

由于我们克隆了整个存储库,我期望在克隆目录中看到“分支”,“标签”和“干道”文件夹。相反,我看到“普通”,“doc”,“extlib”和“proj”。

看来,git只克隆我的存储库的主干。有谁知道这是为什么,以及如何解决它?或者我只是看不正确?

在此先感谢您的帮助!

+0

您是否尝试过与git标签-l?如果你没有分支或标签混帐不能显示更多。 – khmarbaise

回答

4

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

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

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

要查看分支混帐,做

git branch -a 

(-a使得它包括远程跟踪分支)。这应该会显示SVN回购中的分支和标签。 (*)注意:git svn不会从Subversion标签创建git标签,因为在Subversion中标签和分支在技术上没有区别(这只是一个约定)。由于在Subversion中如何区分标签&并不完全清楚,所以git svn只是将它们全部导入为分支。见例如Debian bug #501761: git-svn --tags should at least /try/ to handle tags as tags

+0

要在另一个问题上对此进行扩展,但您的回答有助于我更好地理解,谢谢! – SeanKilleen

+0

我扩大了我的答案,以解释Subversion回购中的标签会发生什么。 – sleske

2

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

此外,基于--stdlayout选项,您告诉git-svn桥采用默认布局来区分主干,标签和分支。

0

一旦你得到一些SVN分支开始(如图可以用git branch-A),你可以通过

git checkout <abranchname> 

切换工作区和背部与

git checkout master