我将要将一堆存储库从bitbucket.org迁移到一个本地Bitbucket服务器实例。我无法决定是克隆每个存储库为--bare还是--mirror。
脚本流程似乎非常简单:
1. 从bitbucket.org获取存储库并将其写入文件以备使用和保留为日志。(已完成,可行)
2. 读取文件,提取存储库,repo slug(repo name)并将它们克隆。(已使用--mirror工作)
3. 对于每个克隆的repo,运行: - git gc --auto清理repos - 在新的本地服务器上从slug创建repo - git remote set-url origin ssh://on_prem_server:7999/PROJ/REPO - git push --all origin - git push --tags origin
所以我实际上不是镜像bitbucket.org repos而是迁移它们。我的理解是git clone --mirror给出原始存储库的真实副本。而git clone --bare则不会,至少需要之后一个fetch。这就是为什么我最初认为使用--mirror是最好的。
但现在我担心使用镜像可能存在某些危险。
因此我的问题是:
1. 使用git clone --mirror是否存在任何危险,我应该意识到?
2. 我是否应该使用--mirror或--bare足够好?
脚本流程似乎非常简单:
1. 从bitbucket.org获取存储库并将其写入文件以备使用和保留为日志。(已完成,可行)
2. 读取文件,提取存储库,repo slug(repo name)并将它们克隆。(已使用--mirror工作)
3. 对于每个克隆的repo,运行: - git gc --auto清理repos - 在新的本地服务器上从slug创建repo - git remote set-url origin ssh://on_prem_server:7999/PROJ/REPO - git push --all origin - git push --tags origin
所以我实际上不是镜像bitbucket.org repos而是迁移它们。我的理解是git clone --mirror给出原始存储库的真实副本。而git clone --bare则不会,至少需要之后一个fetch。这就是为什么我最初认为使用--mirror是最好的。
但现在我担心使用镜像可能存在某些危险。
因此我的问题是:
1. 使用git clone --mirror是否存在任何危险,我应该意识到?
2. 我是否应该使用--mirror或--bare足够好?
git remote set-url --push origin no_push
(对于每个要设置为只读的远程仓库都要重复此操作)来避免意外推送。当需要时,您仍然可以显式地使用git push $URL
进行推送 ;) - Jim Klimov