git svn init可以处理trunk / branches / tags的兄弟目录,这些目录应该是base checkout的一部分

时间:2012-06-27 11:38:30

标签: git import git-svn svn-trunk

macports svn存储库如下所示:

  branches/
  contrib/
  distfiles/
  downloads/
  tags/
  trunk/
  users/

我想使用git svn导入它,并使用标准功能正确解释分支和标签。

我希望看到的是一个包含目录的单个git仓库

  trunk/ 
  contrib/
  distfiles/
  downloads/
  users/

换句话说,我想将分支目录中的分支保留为分支(对于我认为的主干),将标记保留为git标记。但是,我希望能够在不切换分支的情况下看到trunk,contrib,distfiles,downloads和users的内容。

这与this question类似,但不同之处在于这些额外的目录(contrib,distfiles,downloads,users)没有自己的标签或分支。在我看来,他们应该是主干的子目录,所以另一种解决方案是以某种方式检查主干,这些额外的子目录出现在主干下。但是,原因可能是不可能的。

如果没有任何建议如何轻松处理这个问题,那么我可以轻松地同时浏览contrib和trunk而不会做任何真正困难的事情?我可以通过子模块陪审团,但这似乎是在寻找麻烦。

1 个答案:

答案 0 :(得分:2)

不确定

git svn clone http://repo_hostname/top_level_dir_above_those

没有任何选项,git svn不会寻找分支,只需要按照你想要的方式检查整个事情。

<强>更新

进一步澄清之后,git存储库的某些部分无法在同一版本的所有分支中查看... git版本整个目录树结构。

但是,您可以使用上面的命令将每个顶级目录签出到自己的存储库中,然后对分支,标记和主干使用标准布局git svn repo。让它们保持最新将是一件痛苦的事,但是为了方便起见,shell脚本可以为每个repo执行一次获取。