覚書:ソースのマージにkdiff3は使うとハマる事があるよorz

こんにちは、mi2yo4です。

気がつけば、ほぼ10月の最終日。
このブログも実に1ヶ月以上更新されていませんでした。

更新が滞っていた理由は…社内の仕事がいわゆるピークを迎えているからなんですね。

思えば一昨年、去年はこの時期に次世代農業EXPOなどの展示会に出展していました。
今年は出展してしなかった、のに忙しいのには理由があります。

  • あぐりログの新しい機能のリリース
  • ログBOX本格量産化に向けた、ある意味自動化機能の追加

と、大きなトピックが2つあったんですね。

ソースコードのマージに気をつける

今日はあぐりログの新しい機能、CO2大気校正に関して、少しハマってしまった事をかいてみます。
どういう内容かと言うと…タイトルを見れば判るかもしれませんが…

「ソースコードの更新でハマった所があったため、一部動作がおかしかった所があるよ!」

というお話です。

弊社のソースコード管理

弊社でのソースコード管理はMercurialを主に使っています。
Windows環境ですと、GUIフロントエンドにはTortoiseHGがメジャーなので、それを使っています。

ソースコード上で衝突が起こる→マージツールで解消

そのような環境で、弊社内のメンバーがあぐりログのソースコードを日々開発しています。
そうすると、「同じファイルを複数のメンバーが同時に編集してしまう(コンフリクト)」という事が、いずれかのタイミングで起こってしまいます。

そんな際にはマージツールの登場です。2つのソースコードファイルを比較表示して、最終的に一つのファイルに最新の状態として保存します。
いつもはこれで解決していましたが、今回は少し様子が違いました。

今回はマージツールにTortoiseHgに標準で付いてくるkdiff3を使ったのですが、それが間違いの元とは…

結論から言えば、日本語を内部に含むファイルをマージすると、文字化けを起こして正常なソースコードとしては認識されなくなります(=壊れたファイル)。

今回はマージした結果の確認を充分にしていなかったため、壊れたファイルをアップロード→画面上で文字化けといった状況を生み出してしまいましたorz
(もちろん現在では修正されていますが)

マージツールはMeldを使います

kdiff3は文字化けを引き起こすので、他のツールを選択する必要があります。
そこでMeldを社内で使うことにしてみました。

他にもWinMergeなどの選択肢もあったのですが、WinMergeはその名の示す通りWindowsでしか動作せず、たまにLinux・気分でMacを使う私にはちょっと選択できないかなぁ、とw
(後はkdiff3を日本語対応のものに変更する、などなど)

まとめ

いかがだったでしょうか?
先週のリリースの際に起こった文字化け現象はこんな所が影響していたのでしたorz

Meldの動作自体は以前から使っていて日本語も無事問題なく使えますし、なかなかいいツールではないかなと思います。
これで文字化けを恐れず、コンフリクトが起こった際には「ばんばん」マージさせる事が出来そうです。

それではまた!