なんかの Log

良い感じで投げっぱなしにしてみせる。

Cygwin上のGitでp4mergeを使うとinvalid fileになった

Gitのコマンドで四苦八苦。

CygwinのGitでdiffを使うとデフォルトはとっても簡素な表示なのでいいのないかなぁと探してみました。最初はKDiff3というのを使ってみたのですが、2バイト文字がよくないらしいので断念。次にp4mergeというのが人気らしいのでインストール。設定の参考サイトは以下。

Using p4merge as a git mergetool | [ andy.mcintosh ]

mergeはそのままいけたのですが、p4diffのシェルスクリプトがうまく動かない。エラーでinvalid fileに。コードを転載させてもらいます。

#!/bin/sh
[ $# -eq 7 ] && /usr/local/bin/p4merge "$2" "$5"

$2を出力してみると/tmp/{一時ファイル}という出力。一時ファイルは普通にテキストで開けるのでなんでだろうと調べるとUNIXパス表記だから無効になるらしい。Windowsパスに直したらいけるかな?ということで修正してみた。

追記 2011-05-16 23:19
リンク元眺めてたら突っ込みあったので直しておきます。

#!/bin/sh
HEAD='C:\cygwin\tmp\'
TEMP=`echo -n "$2" | cut -c 6-`
[ $# -eq 7 ] && p4merge $HEAD$TEMP "$5"

cut じゃなくて「cygpath --windows」だと、もっと楽じゃないかな?

引用元
ということなので、修正版。

#!/bin/sh
[ $# -eq 7 ] && p4merge `cygpath -w "$2"` `cygpath -w "$5"`

使えればということで。ファイルの改行コードはLF(UNIX)で。