Проверка репозиториев git после миграции

Я работаю над программой для переноса нескольких репозиториев с сервера git на сервер Gitlab. Часть миграции уже выполнена, и теперь я хочу проверить, все ли прошло нормально и все репозитории были перенесены правильно.

Как лучше всего это сделать?


person ibizang    schedule 14.06.2016    source источник
comment
Что ты ищешь.?   -  person Mohammad Fareed    schedule 14.06.2016
comment
Способ сравнить исходные репозитории git с перенесенными.   -  person ibizang    schedule 14.06.2016
comment
Хорошо, вы можете сделать это, войдя в репозиторий и запустив git diff master remotes/b/master Посетить Больше подробностей.   -  person Mohammad Fareed    schedule 14.06.2016
comment
Вы должны рассказать, как вы переносите репозитории. Нет необходимости ничего проверять, если вы просто измените URL-адрес восходящего потока.   -  person Kai    schedule 14.06.2016
comment
@MohammadFareed, спасибо, парень, это сработало, и это именно то, что мне нужно.   -  person ibizang    schedule 17.06.2016


Ответы (3)


Клонируйте код из gitlab

git clone <gitlab-repo-url>

Добавьте URL-адрес репозитория сервера git в качестве удаленного в локальное репо

cd <repo>
git remote add oldserver <git-server-repo-url>

Запустите git fetch для обоих пультов

git fetch --all

Запустите git log, показывающий коммиты со всех ваших пультов

git log --decorate=short --oneline --remotes=* --branches=*

Если вы видите, что обе главные ветки пульта указывают на одну и ту же фиксацию, это сильный индикатор, что миграция прошла успешно

e4bf7c2 (master, origin/master, oldserver/master) Latest commit message
9d5339c A previous commit message
fe43ce7 Other commit message

origin/master - это основная ветка на gitlab
oldserver/master - это основная ветка на старом сервере git

person everton    schedule 14.06.2016
comment
Я использовал аналогичное решение, поэтому вместо просмотра журналов я использовал git diff. - person ibizang; 17.06.2016

В repo_a:

git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master
git remote rm b
person Mohammad Fareed    schedule 19.06.2016

Я знаю, что это старый вопрос, но недавно я столкнулся с тем же требованием. Я думал найти инструмент, чтобы решить эту проблему, но безуспешно. После некоторого поиска вот решение для сравнения двух целых репо, а не только конкретной ветки.

git clone --mirror path/to/repo_a.git old/repo_a.git
git clone --mirror path/to/repo_b.git new/repo_b.git
git diff --name-only --no-index old/repo_a.git new/repo_b.git | wc -l | xargs test 1 -lt && echo 'repo not the same!'

clone с параметром --mirror клонирует все репо без рабочего дерева в каталог. diff с --no-index можно использовать для сравнения всего каталога. Если содержимое репо одинаково, то будет отличаться только URL-адрес в файле конфигурации.

P.S. Вам нужно будет клонировать оба репо с одним и тем же протоколом. По неизвестной причине при использовании другого протокола создается другой файл. Таким образом, вывод diff будет указывать на большую разницу.

person haudoing    schedule 25.12.2020