我有一个很大的文件集(50 so ),它们在很远的两台主机上,我想把它们放在几个Git存储库中,这样每个文件都是另一边存储库的镜像存储库。但我不想通过网络传输文件,因为这将花费很长的时间(50-60小时),这是不必要的,因为文件已经在两端。
我的想法是在每一端创建一个Git存储库,将每一端的所有文件添加到本地存储库,然后使用git-pull从一个存储库到另一个存储库。我认为Git会足够聪明,知道文件(对象)是相同的,而不是传输它们。但这似乎不是因为只有一个小样本,它需要很长的时间来做拉取(主要是在“解包对象”阶段),并且它使两者之间的网络连接达到最大。所以在我看来,它是在不必要地传输Git对象。
有没有人知道如何在不实际传输文件的情况下做到这一点?
谢谢!
发布于 2010-01-24 22:46:38
有趣的是,这是可行的,因为大文件的内容是相同的(我假设),并且应该在两端创建相同的目标文件。
在我的本地计算机上对两个存储库进行测试表明,不同存储库中的同一文件将具有相同的SHA id。
检查并查看两个存储库中实际文件的SHA in是否相同。如果他们是,那么我们需要弄清楚为什么他们可能无论如何都会被转移,如果不是,那么找出为什么不。
发布于 2010-01-25 05:42:19
你需要提交是相同的。即使树ids相同,提交ids也可以不同。
我现在能想到的是:
将(初始的)提交放在一边。注意它的散列。在.git/objects/文件夹中查找散列。将文件复制到另一台pc。如果另一台pc有一个具有相同id的树,它应该可以工作
发布于 2010-01-25 00:32:20
我使用了sneakernet (好吧,carnet):取一棵本地的、下游的git树,将整个过程刻录到DVD上。在远程端,将DVD复制到磁盘。然后,如有必要,编辑.git/ config的远程“源”配置部分,以便存储库仍然可以到达其上游。
https://stackoverflow.com/questions/2127363
复制相似问题