情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

コードを比較したら全行変更有りと表示されたとき このエントリーを含むはてなブックマーク

eclipseのCompare With(比較, svn diff)でソースコードの比較を行おうとしたところ、変更箇所が指摘されるはずが、ソースコード全体(全行)に変更があると表示されてしまいました。

ソースコードを二つ表示して目で見て比較してみると、変更が本当に加えられている場所はほんの一部で、全部変更なんてあり得ません。ましてや、プログラムのソースファイルの場合、全く違うファイルを比較したとしても、中括弧だけの行などが同じ行として認識されて、全行変更なんて状態にはまずなりません。

原因・対策

こうなってしまったときは、おそらく原理上、改行コードの不一致しか考えられません。eclipseで言えば、改行コード(Line Delimiters)の設定がWindowsならCR+LF、UnixならLFを改行と認識します。つまり、改行コードがWindowsのファイルとUnixのファイルでeclipseのcompare withを行ってしまうと、一方には必ずCRがあり、一方には全くCRが無いので、全行不一致という結果になってしまうわけです。

対策は簡単で、片方の改行コードを変更してしまえばOKです。たとえば、プロジェクト丸ごと改行コードを特定の物にしてしまいたい場合は、「File>Convert File Delimiters To」で、改行コードをどれにしたいかを指定し、一括変更が出来ます。

また、新規ファイル作成時に改行コードを適切に変更するためには、プロジェクトを右クリックして「Property」を選択し、「Resource」の「New text file line delimiter」で指定することが出来ます。新規ファイル作成時に個別の指定はおそらく出来ないので、ここで指定を確認しておきます。

改行コードを常に特定のものにしたい場合は、eclipseで利用するファイルの標準改行コードを指定しておくことが出来ます。「Window>Preference」の「General>Workspace>New text file line delimiter」から指定します。 ちなみに、 これらの設定にある「Default」とは、OS標準の改行コードのことを指します。

さて、最後に、今利用しているファイルの改行コードを確認・表示したい場合ですが、eclipse上でファイルを右クリックして「Property」の「Resource」を見ると文字コード(Text file encoding)は有るのですが、改行コードが見当たりません。そこで、「Window>Preference>Show whitespace characters」をONにして、空白やTab、そして改行コードもテキストエディタ上で表示するようにしてしまうといいと思います。すると、Compare Withを行ったとき、「あ、改行コードが一致してないな」と、すぐ分かります。改行コードの表示は、二種類の記号が使われ、それぞれCRとLFを表します。つまり、改行部分に2つ記号が表示されていたらCR+LFでWindowsの改行コード、1つしか記号が表示されていなければLFでUnixの改行コードと言うことになります。

まとめ

改行コードは、ファイルを交換したりする際にも見落としがちなので注意しなくてはいけないですね。

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
実用 Subversion 第2版
入門Subversion―Windows/Linux対応

Subversion | コメント:0 | トラックバック:0 | 編集
このエントリーをはてなブックマークに追加 Clip to Evernote

この記事のコメント

コメントの投稿 エントリの新旧に関わらず、極力18時間中に返信します。














この記事のトラックバック

トラックバックURL:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。