2010-07-20 48 views
0

我正在使用giternal,它將外部引用的.git目錄壓縮到.tgz文件中。不幸的是,每次我「凍結」外部時,都會爲回購創建一個新的.tgz文件。在不同的機器上創建相同的.tgz文件

即使.git目錄的內容相同,也會創建一個帶有diffs的新.tgz文件。這導致回購膨脹。

有沒有辦法讓tar czf在不同的機器上用完全相同的打包二進制內容創建一個.tgz文件?

回答

1

由於文件時間,uid和gid與tar檔案中的文件內容一起存儲,因此很難獲得完全相同的存檔。 我只能提供一個多毛的解決方案,像改變tar文件到公共時間和uids。 ustar交換格式在pax實用程序的POSIX定義中進行了解釋。 或者您可以解壓縮最後一張和當前快照並對它們進行比較,從而決定它們是否相同,並且是否需要最後一張。

+0

+1:我最近一再重新打包一些代碼,並想知道爲什麼我爲相同的代碼獲得不同的校驗和。我最終意識到,這是文件時間戳正在改變,而不是文件。 – 2011-02-02 23:15:54

+0

uid/gid可以[faked](http://fakeroot.alioth.debian.org/),時間可以[set](http://www.kernel.org/doc/man-pages/online/pages /man3/futimes.3.html),但目錄遍歷順序可能也很重要,我相信還有其他的東西,我們都失蹤了...... – ephemient 2011-02-02 23:16:50

相關問題