迁移后检查 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 的输出将指示更多差异。
我正在开发一个程序,将多个存储库从 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 的输出将指示更多差异。