我正在试图找出将多个git repos从一个网络镜像到另一个网络的最佳方法。我将网络称为NetworkA和NetworkB。 NetworkA和NetworkB永远不会相互连接,没有数据可以离开NetworkB(即从A到B的一种方式)。
此方案必须是增量式的,因为NetworkA上的repos的数量和大小会使完整的灯泡对于常规同步任务(捆绑,复制到DVD,解包)花费太长时间。
我已经弄清楚如何创建增量捆绑包并在NetworkB上使用镜像克隆成功地从捆绑包中正确获取数据。
问题是,当删除旧的(先前捆绑的)分支时,我无法将该信息包含在新捆绑中。新捆绑包仅包含自最后一个捆绑包以来的引用。如果我使用git fetch --prune那么那个特定包中的所有引用都将被修剪,这不是我想要的。
最后,我在接收端(NetworkB)拥有所需的所有对象和提交,但我没有办法确保在NetworkB上正确同步refs本身。
我认为这样做的一种方法是在NetowrkA上创建一个packed-refs文件,然后将其直接复制到NetworkB上的镜像仓库中,但感觉有点危险。
是否有“git”方式导出和导入packed-refs(只是refs,而不是实际的对象)?