【问题标题】:Checking git repos after migration迁移后检查 git repos
【发布时间】:2016-10-15 00:46:03
【问题描述】:

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

最好的方法是什么?

【问题讨论】:

  • 你在找什么?
  • 一种将原始 git 存储库与迁移后的存储库进行比较的方法。
  • 好的,您可以通过登录存储库并运行git diff master remotes/b/master Visit 来获取更多详细信息。
  • 您应该说明您是如何迁移存储库的。如果您只是更改上游 URL,则无需检查任何内容。
  • @MohammadFareed 谢谢伙计,它起作用了,这正是我所需要的。

标签: git migration repository gitlab integrity


【解决方案1】:

我知道这是一个老问题,但我最近遇到了同样的要求。我想找一个工具来解决它,但没有运气。经过一番搜索,这里有一个解决方案,可以比较两个完整的仓库,而不仅仅是一个特定的分支。

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 克隆到目录中。带有 --no-index 的 diff 可用于比较整个目录。如果repo的内容相同,那么只有config文件中的url不同。

附:您必须使用相同的协议克隆两个 repo。由于某些未知原因,它会在使用不同的协议时产生不同的文件。这样 diff 的输出将表明更多的差异。

【讨论】:

    【解决方案2】:

    在 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
    

    【讨论】:

      【解决方案3】:

      从 gitlab 中克隆代码

      git clone <gitlab-repo-url>
      

      将 git 服务器 repo url 作为远程添加到本地 repo

      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 上的 master 分支
      oldserver/master 是旧 git 服务器上的 master 分支

      【讨论】:

      • 我使用了类似的解决方案,所以我没有检查日志,而是使用了 git diff 。
      猜你喜欢
      • 2016-01-09
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多