4

したがって、git-p4 を使用して問題なく p4 からインポートできます。すべてが機能しているように見えますが、PNG ファイル (およびおそらく他のファイル) が破損しています。

gitattributes と行末の問題について読んだことがありますが、最終結果を変えるものは何もないようです。壊れた画像。

私の属性ファイルは次のとおりです: *.png バイナリ

何か案は?私が理解しているように、gitは、この助けがなくてもpngがバイナリファイルであることを理解するのに十分スマートであるはずです。

これは、p4-git が Perforce からファイルを取得する方法と関係がありますか?

更新: これは Windows 上にあります。大事なことだろうと忘れていました。

4

3 に答える 3

6

PNGファイル形式には、変換を終了し、そうでない場合は失敗を引き起こすプログラムを探すように特別に設計されたヘッダーがあります。

PNGファイルの8バイトは次のとおりです。89504E47 0D 0A 1A 0A、特にUnixの改行とWindowsの改行が含まれているために選択されます。したがって、自動変換を実行するプログラムはPNGを自動的に無効にします。PNG署名の理論的根拠

したがって、これは確かに問題のようです。Gitが問題であると想定するのではなく、Perforceからのインポートを調べてみてください。PERFORCEが変換を実行しているか、最初に破損した状態でチェックインされており、クローン作成/更新を行っても元の問題は修正されません。

于 2009-12-08T09:34:08.827 に答える
2

ここには、(非常に)漏れやすい抽象化の複数のレイヤーがあります。

まず、perforceサーバーがファイルを保存している可能性があるものがあります。次に、perforce クライアントが改行をマングリングしている可能性があります。第 3 に、Python スクリプトが改行をマングリングしている可能性があります (ありそうにありません)。第 4 に、git が改行を壊している可能性があります。

現在、ウィンドウ上でのみ、git はデフォルトで改行を自動的にマングルします。(git コミュニティの 99% はこのデフォルトを嫌っているようですが、Windows で適切な唯一のデフォルト オプションであることは明らかです)。

その結果、改行の「問題」がある場合は、各レイヤーを手動で調査し、改行をどのように処理するかを正確に指定することをお勧めします。自動ではなく明示的にすることをお勧めします。

Windowsのデフォルトはかなり異なり、gitのデフォルトはバージョンやビルドによって異なるため、最初にgitの構成を調査することをお勧めします。(つまり、msysgit は cygwin とは異なります。cygwin の git には、改行マングリングの別の層があります。つまり、cygwin 自体です)。

楽しみ。

于 2010-02-02T03:25:31.703 に答える
0

PerforceでPNGファイルが「バイナリ」タイプに設定されていることを確認してください。Perforceでランダムバイナリファイルが「テキスト」タイプに設定されているという問題が発生しました。なぜ Perforce がそのファイルをテキストとして抽出したのかはわかりませんが、git-p4 がそのファイルをどう処理するかを検出する際に問題が発生していました。

于 2010-02-18T17:07:56.723 に答える