Один и тот же git-репозиторий, та же история, разные коммиты хеширования? - PullRequest
0 голосов
/ 05 октября 2018

У меня есть клон CPython на моем собственном сервере gitlab несколько лет назад.Всего я только что попытался вытащить / объединить последние из официального репозитория github в репозиторий моего gitlab, но это не удалось из-за отсутствия общей истории.

Все коммиты есть, некоторые авторы, даты коммитов и т. Д.Однако все хеши коммитов разные.Кто-нибудь есть идеи, как это произошло?Делала ли операция импорта из github-> gitlab что-то отличное от клона?Возможно, более старое поведение gitlab?

Спасибо

Редактировать: cat-файл из GitHub для первоначального коммита:


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

В то время какcat-файл из моей версии Gitlab для первоначального коммита:


tree 52384aa82c1f7785424544fc3ee003729b07ac12  
author Guido van Rossum <guido@python.org> 650211915 +0000  
committer Guido van Rossum <guido@python.org> 650211915 +0000  

Initial revision

Интересно, как потерялась дополнительная информация HG / SVG.

1 Ответ

0 голосов
/ 05 октября 2018

Хеш объекта полностью определяется содержимым объекта.

Найдите корневой коммит (ы) двух репозиториев и проверьте их данные (git cat-file -p). Что-то будет другим.Все остальные различия проистекают оттуда.В противном случае истории совпадают до некоторой точки, и в этот момент происходит что-то другое, а затем истории расходятся.

В общем, такие вещи случаются, когда кто-то делает огромную git filter-branch, чтобы переписать историю.Клонирование определенно не делает это, но импорт из другой системы контроля версий (SVN или Mercurial) может сделать это, если импортер не устанавливает все данные каждого коммита из другой VCS или если вы запускаете элементыс помощью различных картографов (например, коммиттеры Mercurial не соответствуют Git, поэтому нужна карта).

Редактировать при редактировании: это явно строка HG:extra, которая отличается.(Текстовые строки tree, author, committer и основная фиксация совпадают.) HG:extra данные относятся к Mercurial;в этом случае это происходит из-за импорта в Mercurial из SVN.Python поддерживался в Mercurial в течение некоторого времени, но теперь поддерживается в Git.Возможно, Python изначально поддерживался в SVN.Это имеет смысл, учитывая даты: как отмечалось здесь , Python существовал до SVN или Mercurial;SVN был создан в 2000 году, 1.0 выпущен в 2004 году;Mercurial был создан в 2005 году. ( Git также датируется 2005 годом. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...