git svn克隆、合并信息丢失

git svn克隆、合并信息丢失,git,svn,git-svn,Git,Svn,Git Svn,我们有一个SVN设置,分支合并经常发生。我目前正在迁移到git。我正在使用svn2git进行迁移,但我认为同样的情况也适用于gitsvn svn git clone似乎不会保留来自svn的mergeinfo,因为svn和git merge的工作方式不同?例如,在git svn clone之后,迁移一个svn主干repositoy(有或没有功能分支)。执行git log--full history只会在分支合并到的主干中显示提交,但是该合并引入到主干中的分支中的所有提交历史不再存在,但是如果使用T

我们有一个SVN设置,分支合并经常发生。我目前正在迁移到git。我正在使用svn2git进行迁移,但我认为同样的情况也适用于gitsvn

svn git clone似乎不会保留来自svn的mergeinfo,因为svn和git merge的工作方式不同?例如,在git svn clone之后,迁移一个svn主干repositoy(有或没有功能分支)。执行
git log--full history
只会在分支合并到的主干中显示提交,但是该合并引入到主干中的分支中的所有提交历史不再存在,但是如果使用TortoiseSVN并启用“Include merged reversions”,它会在svn repo中显示。似乎svn中的所有mergeinfo都没有保留/复制到git master/trunk存储库中?这是应该发生的吗


我已经读到SubGit可以处理这个问题(我还没有尝试过)。但我只是想确保git svn clone确实不会在git中保留svn存储库中的mergeinfo属性/信息。

正如@Vamper和其他人从其他地方建议的那样,因此Q&As:git svn可能不是导入/转换svn回购的最佳工具,我非常确定它在某些情况下会起作用。但在边缘案例中失败了

在我们的例子中,这是因为在非标准的回购结构中,它有一个共享的根级主干和分支,用于许多不同的应用程序。因此,其结构类似于“trunk\app1、app2、app3…”和“branchs\app1\u feature1、app1\u feature2、app2\u feature、app3\u feature1”

最初我没有导入任何分支,这不会将分支中的合并信息引入主干。然后,我尝试将我需要的主干和分支移动到同一个svn repo中的不同位置,作为标准结构,但git svn似乎对此也不满意。在那之后,我尝试了,因为它似乎很容易开始,并且可以免费导入,但最初没有成功,因为它使用的是相同的移动主干/分支。然后,我尝试使用SubGit导入整个“分支”,最终得到了一些合并的infor,但由于重命名/移动了trunk,仍然缺少一些早期的修订信息

最后,我使用ruby gem'svn2git'并给出以下注释:

svn2git https://svn-host/product --trunk trunk/application1 --branches branches 
   --no-minimize-url --notags --metadata --authors ../../authors.txt -v 
它至少带回了最新的合并信息,并且作为一个快速查看,似乎有来自trunk的所有修订,即使是重命名/移动的旧分支,因为新的trunk。但是转换花了很长时间,我不得不让它在一夜之间运行,它将所有不必要的分支从其他应用程序带到我的git克隆中


注意:对于我在svn2git中使用的注释,我后来意识到,'--branchs'参数可以省略,因为'branchs'是默认值。

正如@vamper和其他地方建议的那样,因此Q&as:git svn可能不是导入/转换svn回购的最佳工具,我很肯定它在某些情况下会起作用。但在边缘案例中失败了

在我们的例子中,这是因为在非标准的回购结构中,它有一个共享的根级主干和分支,用于许多不同的应用程序。因此,其结构类似于“trunk\app1、app2、app3…”和“branchs\app1\u feature1、app1\u feature2、app2\u feature、app3\u feature1”

最初我没有导入任何分支,这不会将分支中的合并信息引入主干。然后,我尝试将我需要的主干和分支移动到同一个svn repo中的不同位置,作为标准结构,但git svn似乎对此也不满意。在那之后,我尝试了,因为它似乎很容易开始,并且可以免费导入,但最初没有成功,因为它使用的是相同的移动主干/分支。然后,我尝试使用SubGit导入整个“分支”,最终得到了一些合并的infor,但由于重命名/移动了trunk,仍然缺少一些早期的修订信息

最后,我使用ruby gem'svn2git'并给出以下注释:

svn2git https://svn-host/product --trunk trunk/application1 --branches branches 
   --no-minimize-url --notags --metadata --authors ../../authors.txt -v 
它至少带回了最新的合并信息,并且作为一个快速查看,似乎有来自trunk的所有修订,即使是重命名/移动的旧分支,因为新的trunk。但是转换花了很长时间,我不得不让它在一夜之间运行,它将所有不必要的分支从其他应用程序带到我的git克隆中


注意:对于我对svn2git使用的注释,我后来意识到,'--branchs'参数可以省略,因为'branchs'是默认值。

我已经在Git中看到了由
Git svn
生成的合并。合并很好,只是合并的分支没有保留历史记录,例如,如果一个功能分支从主干中的reversion 100分支出来,并提交101-103,主干在reversion 104中合并回该功能分支,在svn中,我可以看到101-104的回复历史,但在git中,我只能看到回复历史100和104,合并后,功能分支中101-103的历史记录在主干中丢失。如果仅克隆主干,则可能是真的。如果同时克隆要素分支,则会得到预期的结果。至少我得到了你们所期待的。谢谢@Vampire,是的,我现在也克隆了主干和分支。你是说合并信息对你有用吗?是的,它对你有用。:-)我已经在Git中看到了由
Git svn
生成的合并。合并很好,只是历史没有从合并的分支中保留,例如,如果一个功能分支从主干中的reversion 100分支出来,并且提交了101-103,主干在reversion 104中合并回功能分支,在svn中,我可以看到101-104的恢复历史,但在git中,我只能看到恢复历史100和104,功能分支中101-103的历史在合并后丢失在主干中。如果只克隆主干,这可能是真的。如果同时克隆要素分支,则会得到预期的结果。在l