1

我有一个拥有 17 年历史的大型 git 存储库。用 svn2git 转换后,我通常会执行 'git repack -a -d -f'。上面写着“没有什么新东西要打包”。然后,如果我将它推送到服务器(在我的情况下为 Bit Bucket),然后在服务器上找到存储库并重新打包,它会重新打包整个存储库。如果可能的话,我希望能够始终重新打包整个 repo。我无法弄清楚推送到服务器之间的变化是什么,这允许重新打包。请注意,客户端和服务器之间的存储库没有任何更改。

4

1 回答 1

0

您看到的输出来自这些源代码行

    if (!names.nr && !quiet)
            printf("Nothing new to pack.\n");

names.nr是从命令中读取的 SHA-1 ID 行数git pack-objects,当使用 argv 中提供的参数和之前在同一代码中计算的环境运行时。

在这种情况下发生的情况是,您使用的任何svn2git实用程序都在构建单个包文件,并且无论出于何种原因,git pack-objects都选择不理会该文件。

我无法解释的是为什么-a -d -f不强制重新包装,因为它应该。该git pack-objects命令应该已经生成了一个具有新压缩的新包文件。(我想一种可能性是git pack-objects您的特定系统完全失败了,但是您也应该对此提出投诉。)

于 2017-09-16T21:35:15.290 回答