我有一个拥有17年历史的大型git存储库。在用svn2git转换它之后,我通常会做一个' git repack -a -d -f'。这说“打包没什么新东西。'然后,如果我将它推送到服务器(在我的案例中为Bit Bucket),然后在服务器上找到存储库并重新打包,它将重新打包整个存储库。如果可能的话,我希望能够一直重新包装整个回购。我无法弄清楚推送到服务器之间的变化,允许重新包装。请注意,客户端和服务器之间的存储库没有任何更改。
答案 0 :(得分:0)
您看到的输出来自these source lines:
if (!names.nr && !quiet)
printf("Nothing new to pack.\n");
此处names.nr
是从git pack-objects
命令读取的SHA-1 ID行的数量,当使用先前在此相同代码中计算的argv和环境中提供的参数运行时。
在这种情况下发生的事情是,您使用的svn2git
实用程序正在构建单个包文件,无论出于何种原因,git pack-objects
选择单独保留该文件。
我无法解释的是为什么-a -d -f
没有强制重新包装,因为它应该。 git pack-objects
命令应该生成一个带有新压缩的新包文件。 (我想有一种可能性是git pack-objects
完全失败了你的特定系统,但是你也应该对此抱怨。)