我正在开发一个程序,将多个repos从git服务器迁移到Gitlab。迁移部分已经完成,现在我想检查一切是否正常,并且所有的回购都已正确迁移。
最好的方法是什么?
答案 0 :(得分:0)
从gitlab克隆代码
git clone <gitlab-repo-url>
将git服务器repo url添加为本地存储库中的遥控器
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服务器上的主分支
答案 1 :(得分:0)
在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
答案 2 :(得分:0)
我知道这是一个老问题,但我最近遇到了同样的要求。我想找到一个工具来解决它,但没有运气。经过一番搜索,这里有一个解决方案,可以比较两个完整的 repo,而不仅仅是一个特定的分支。
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!'
带有 --mirror 选项的克隆将克隆整个 repo 而不将工作树克隆到目录中。 diff 与 --no-index 可用于比较整个目录。如果repo的内容相同,那么只有config文件中的url不同。
附言您必须使用相同的协议克隆两个 repo。由于某些未知原因,它会在使用不同的协议时产生不同的文件。这样 diff 的输出将表明更多的差异。