所以我有一个非常大的svn回购并且迁移到git并得到了正确的回购
git svn clone path_to_svn
与
同步后git svn fetch
git svn rebase
并且它第一次起作用,但在第二次尝试失败时 无法确定来自工作树历史记录的上游SVN信息 ,尽管我在同步分支,根本没有改变,我们只是在它上同步,然后将master与它合并。
我决定做新克隆并尝试在我的项目上设置遥控器并合并这个新分支,在克隆之后我发现相同的提交有不同的哈希值,但我100%肯定,它们是相同的。相同的差异,作者等。
为什么我会在相同的提交中看到不同的哈希?
答案 0 :(得分:1)
通常,git-svn
将在您再次克隆存储库时创建相同的Git对象。它将使用Subversion存储库的作者名称和签入日期来设置提交作者和提交者,它将根据Subversion中的checkin消息设置提交消息,并且它将正确地创建内容。所以你应该最终得到相同的提交对象(我刚刚验证过这是我自己的情况)。
但是,这仅适用于两个克隆的条件相同的情况。这意味着,例如,您指定相同的分支布局,并且服务器返回正确的时间戳(我可以看到DST更改的一些问题)。 Subversion URL仍然是相同的,因为它嵌入在Git提交消息中。
我建议你做两个提交的git cat-file -p <hash>
个,每个克隆应该是相同的。这样,您可以尝试找出克隆之间可能存在的差异。您还可以为每个存储库并排打开gitk
以完成提交,并尝试查找某个历史记录可能已更改的位置。