2009-12-07 26 views
4

所以,我可以從p4使用git-p4導入沒有任何問題。一切似乎工作,但我的PNG文件(也許其他人)正在損壞。git-p4正在吃我的圖像文件

我讀過關於gitattributes和行結束問題,但我沒有做任何事情似乎改變最終結果。破碎的圖像。

我的屬性文件是: * .png格式的二進制

任何想法?據我瞭解,git應該足夠聰明,以便在沒有這種幫助的情況下發現png是一個二進制文件。

這是什麼特別與p4-git如何將文件從Perforce中拉出來?

更新:這是在Windows上。我忘了這很重要。

+0

你在Windows上使用Git嗎? – 2009-12-07 21:48:37

+0

是的,抱歉。這是Windows。 – 2009-12-07 21:58:09

+1

區分文件(預期和實際)。這將有助於確定這是否是cr/lf類型的問題,或者是否有其他事情正在發生。 – jdigital 2009-12-07 22:40:48

回答

6

PNG文件格式有一個標題,專門用於尋找最終轉換的程序,如果不是,則會導致失敗。

PNG文件的8個字節是:89 50 4E 47 0D 0A 1A 0A,由於它們包含Unix換行符和Windows換行符 - 因此程序進行自動轉換會自動使PNG失效。 PNG Signature rationale

所以看來這確實是問題;而不是假設Git是問題,請嘗試查看來自Perforce的導入。 Perforce正在進行翻譯,或者最初是在損壞的狀態下進行檢查的,並且沒有任何克隆/更新可以解決原始問題。

+0

我同意 - 我沒有走這條線昨晚思維。 我通過git-p4源文件挖掘並查看它如何將文件從Perforce中提取出來。 原來,它只是做一個p4打印//路徑// // //文件#版本 所以,我在PNG文件上嘗試了這一點,它們看起來很好。 (另外,檢入的文件都很好,這些都不是新東西。) 我目前的猜測是流在Python腳本內部被讀取和寫入的方式正在造成某種損害。 (git-p4是一個python腳本)。 但是,我看不到任何其他地方的報道。讓我覺得這是我的設置中的其他東西。 – 2009-12-08 14:38:36

1

這裏有很多(很)漏泄的抽象層。

首先,perforce服務器可能將文件存儲爲。其次,perforce客戶端可能會損壞換行符。 第三,python腳本可能會損壞換行符(不太可能)。第四,git可能會破壞換行符。

現在,在windows上,只有在窗口上,默認情況下git會自動破壞換行符。 (99%的git社區似乎討厭這種默認設置,但它顯然是windows上唯一明智的默認選項)。

因此,如果您有新行「問題」,我建議您手動調查每個圖層並指定您希望如何處理新行。我建議讓它們明確,而不是自動。

我建議你先調查一下git的配置,因爲windows的默認設置是完全不同的,而git的默認設置在一些版本和一些版本之間是不同的。 (也就是說,msysgit與cygwin不同 - cygwin的git有另一個層的換行符 - cygwin本身)。

享受。

0

確保您的PNG文件在Perforce中設置爲「二進制」類型。我只是遇到了一個隨機二進制文件在Perforce中設置爲「文本」類型的問題。我不確定爲什麼Perforce將該文件導出爲文本,但是它導致了git-p4檢測到該文件該怎麼做的問題。

相關問題