迁移后检查 git 个存储库

Checking git repos after migration

我正在开发一个程序,将多个存储库从 git 服务器迁移到 Gitlab 一个。迁移部分已经完成,现在我想检查是否一切正常,是否所有的存储库都已正确迁移。

最好的方法是什么?

从 gitlab

克隆代码
git clone <gitlab-repo-url>

将 git 服务器仓库 url 添加为本地仓库上的远程服务器

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

运行 git 获取两个遥控器

git fetch --all

运行 git 日志显示来自所有遥控器的提交

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

如果您看到两个远程 master 分支都指向同一个提交,则表明迁移进展顺利

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

我知道这是一个老问题,但我最近 运行 遇到了同样的要求。我想找到一个工具来解决它,但没有运气。经过一些搜索后,这里有一个解决方案来比较两个整个回购,而不仅仅是一个特定的 b运行ch.

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 with --mirror 选项会将没有工作树的整个 repo 克隆到一个目录中。 diff with --no-index 可用于比较整个目录。如果repo的内容相同,那么只有config文件中的url不同。

P.S。您必须使用相同的协议克隆这两个 repo。由于某些未知原因,它会在使用不同的协议时生成不同的文件。这样 diff 的输出将指示更多差异。