2011-08-16 3 views
1

主にWindows環境でPHPアプリケーションを開発し、テキストのソースファイルをPC/ANSIに保存しました。クロスプラットフォーム開発(PC、Mac、Linux)にはどのようなエンコードを使用しますか?

しかし、今ではMacプラットフォームを使用している開発者が参加しており、マシンに「パッチ」を作成する問題が発生しています。彼はすべての変更を行い、ない場合:

svn diff > patchfile.patch 

彼は、ソースコードファイルの各々および全ての行が(明らかにケースをイマイチた)変更されたことを示すパッチファイルを生成します。

私がように、テストANSIファイルを保存しようとした:彼は変更を行うとのsvn diffを>パッチファイルを実行したときに、これらの例すべてについて

PC/UTF-8 (using Notepad++ "Encoding > Convert to UTF-8 without BOM") 
PC/UTF-8 (using Notepad++ "Encoding > Encode in UTF-8 without BOM") 

PC/UTF-8 (using UTFCast Express which I writes the BOM by default) 
PC/UTF-8 (using Notepad++ "Encoding > Convert to UTF-8" - which writes the BOM) 

と同様に。パッチは、すべての行が変更されたかのようにすべての行を出力します。

[我々は、同様に、最後の3のために「のsvn diffの-x -p> patchfile.patch」やってみました - いいえ違い】なお

を、最後の2つのオプションで生成されたファイルがANSIとして表示し続けます私のPCマシンで。どちらもファイルをまったく変更していないようで、DOSプロンプトから 'fc'(ファイル比較)を行っても違いはありません。

クロスプラットフォーム開発にはどのようなエンコードを使用しますか?

答えて

5

文字エンコードの問題ではなく、行末の問題です。 WindowsはCR-LF(13/10)を使用し、Macは現在(UNIXスタイル)LFのみを使用しています(10)。

サブバージョンプロパティsvn:eol-style = nativeを適切なファイルに設定すると、正常に動作します。

+0

こんにちはdavmac - これはSVNクライアント側またはサーバーで設定されていますか?どのようにSVNリポジトリ全体が「ネイティブ」エンコーディングを使用するように設定することができますか? – siliconpi

+0

プロパティをクライアント側で設定し、リポジトリにコミットします。 http://subversion.apache.org/faq.html#auto-propsおよびhttp://svnbook.red-bean.com/en/1.6/svn.advanced.propsを参照してください。html(特に "Automatic Property Setting"の下で) – davmac

0

Windowsでは、 "\ r \ n"(改行/改行)の行末を使用します。

OS/XはUNIXの "\ n"文字を使用します。

前のOS9は "\ r"でした。

あなたがすべてのファイルを扱っていない限り、なぜあなたがプロジェクトの英語のスピーカーであれば、ソースコードのUTF-8文字エンコーディングが必要なのか分かりません。

あなたのMacデベロッパは、残りの人と互換性があるように、PC行のエンディングを使用するようエディタを設定してください。エディタは正しい行の終わりを認識し、既存のファイルに正しいものを使用しますが、新しいファイルはOSのデフォルトを使用するように設定されていることがあります。

flipは、行末の文字をあるOSから別のOSに変換するクロスプラットフォームのコマンドラインツールです。

+0

あなたが間違った行末が見つかった場合、コミット後のフックでフリップを実行するようにsvnを設定することもできますが、これを実行しないように注意したいと思うでしょうバイナリが破損する可能性があります。 – gview

+0

我々は、最終的にも私たちのソースコードで使用される特別な '拡張'文字セットを持っています。 – siliconpi

関連する問題