几年前,我在自己的gitlab服务器上克隆了CPython。 Total我只是试图将最新的信息从官方的github仓库中提取/合并到我的gitlab的仓库中,但是由于没有共同的历史而失败了。
所有提交都在那儿,一些作者,提交消息的日期等。但是所有提交哈希都是不同的。有人知道这是怎么发生的吗?从github-> gitlab进行的导入操作是否与克隆操作有所不同?可能是较旧的gitlab行为?
谢谢
编辑: 来自GitHub的初始提交的cat文件为:
tree 52384aa82c1f7785424544fc3ee003729b07ac12
author Guido van Rossum <guido@python.org> 650211915 +0000
committer Guido van Rossum <guido@python.org> 650211915 +0000
HG:extra convert_revision:svn%3A6015fed2-1504-0410-9fe19d1591cc4771/python/branches/legacy-trunk%402161
Initial revision
我的Gitlab版本中用于初始提交的cat文件是:
tree 52384aa82c1f7785424544fc3ee003729b07ac12
author Guido van Rossum <guido@python.org> 650211915 +0000
committer Guido van Rossum <guido@python.org> 650211915 +0000
Initial revision
想知道HG / SVG额外信息是如何丢失的。
答案 0 :(得分:3)
对象的哈希值完全取决于对象的内容。
找到两个存储库的根提交并检查其数据(git cat-file -p
)。 某些事情会有所不同。所有其他差异均源于此。否则,历史会匹配到某个点,这时会有所不同,然后历史会发生分歧。
通常,这种情况发生在某人进行大量的git filter-branch
重写历史记录时。克隆肯定不会执行 操作,但是如果导入程序未设置其他VCS的所有提交的所有数据,或者从其他版本控制系统(SVN或Mercurial)导入,则可能会执行此操作项目通过不同的映射器(例如,Mercurial提交者与Git不匹配,因此需要一张地图)。
每编辑一次编辑:显然HG:extra
行是不同的。 (tree
,author
,committer
和主要提交文本行是相同的。)HG:extra
数据特定于Mercurial;在这种情况下,这似乎是由于从SVN导入到Mercurial。 Python在Mercurial中维护了一段时间,但现在在Git中维护。也许Python最初是在SVN中维护的。给定日期,这是有道理的:如here所述,Python在SVN或Mercurial之前就已存在; SVN创建于2000年,2004年发布了1.0;水星成立于2005年。(Git also dates to 2005.)