1

我正在尝试导入遵循标准 svn 约定(主干/分支/标签)的 svn 存储库。“问题”是每个副本下面有两个完全无用的目录,我真的想在我的 git repo 中消除它们。我的 svn 结构如下所示:

trunk/redundantdir1/redunddantdir2/realstuff
branches/b1/redundantdir1/redunddantdir2/realstuff
tags/t1/redundantdir1/redunddantdir2/realstuff
...

在 svn 中,这两个目录并没有受到太大的伤害,因为大多数用户只会从“realstuff”中退出。使用 git,我真的很想将冗余目录排除在存储库之外。我不准备开始更改 svn 结构,我需要能够在(短时间内)使 git repo 与 subversion 保持同步。建议?

4

2 回答 2

1

我不建议使用 git-svn 进行任何 SVN 分支或合并,所以你真的不需要分支或标签目录。然后你可以像这样克隆你需要的 repo 部分:

git-svn clone https://example.com/svnroot/trunk/redundantdir1/redunddantdir2/realstuff myprojectname

编辑:如果您确实需要在分支中进行更改(而不是创建或合并我建议使用真正的 svn 执行的分支),那么您可以简单地将该分支克隆为单独的 git repo,如下所示:

git-svn clone https://example.com/svnroot/branches/b1/redundantdir1/redunddantdir2/realstuff myprojectname-b1
于 2009-08-13T13:18:09.550 回答
0

我对这个问题的回答也可能有用。

基本上,这个想法是将其git svn clone分成两个操作,首先是git svn init设置带有排除项的存储库,然后是git svn fetch从 svn 中提取修订:

git svn init <Svn repo url> -s --ignore-paths 'redundantdir1'
git svn fetch

这也为您提供了将 git 存储库作为 svn 存储库的狭义克隆的选项,例如忽略 svn 存储库中的前 12344 个变更集,您可以执行以下操作:

git svn fetch -r 12345:HEAD

从那时起,git svn fetch将只是更新最近的变更集。

于 2011-02-03T11:14:39.460 回答