迁移后检查git repos

时间:2016-06-14 10:26:46

标签: git migration repository gitlab integrity

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

最好的方法是什么?

3 个答案:

答案 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 的输出将表明更多的差异。