Я работаю над программой для переноса нескольких репозиториев с сервера git на сервер Gitlab. Часть миграции уже выполнена, и теперь я хочу проверить, все ли прошло нормально и все репозитории были перенесены правильно.
Как лучше всего это сделать?
Я работаю над программой для переноса нескольких репозиториев с сервера git на сервер Gitlab. Часть миграции уже выполнена, и теперь я хочу проверить, все ли прошло нормально и все репозитории были перенесены правильно.
Как лучше всего это сделать?
Клонируйте код из 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
В 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
Я знаю, что это старый вопрос, но недавно я столкнулся с тем же требованием. Я думал найти инструмент, чтобы решить эту проблему, но безуспешно. После некоторого поиска вот решение для сравнения двух целых репо, а не только конкретной ветки.
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 будет указывать на большую разницу.
git diff master remotes/b/master
Посетить Больше подробностей. - person Mohammad Fareed   schedule 14.06.2016