引用符つきのパスと CRLF の改行
Windows の改行(CRLF)と、非 ASCII 文字を含むため引用符で囲まれたパスの例です。展開せずそのままの文字で突き合わせます。
入力
A の git diff --name-status の出力
M "caf\303\251.txt"
B の git diff --name-status の出力
M "caf\303\251.txt"
結果
エラー 0 件・警告 0 件・情報 2 件
指摘(エラー・警告・情報)
- 情報 "caf\303\251.txt" パスが引用符で囲まれています(git の core.quotePath による表記)。展開せずそのままの文字で比べています。
- 情報 全体 --name-status のファイル名と状態だけを比べています。同じファイルを両方で変えていても、変更の中身(行)が衝突するかは判定しません。
| A の変更ファイル | 1 件 |
|---|---|
| B の変更ファイル | 1 件 |
| 両方で同じ状態 | 1 件 |
| 両方で状態が違う | 0 件 |
| A のみ | 0 件 |
| B のみ | 0 件 |
比較表
| パス | A | B | 区分 |
|---|---|---|---|
| "caf\303\251.txt" | M(変更) | M(変更) | 両方で同じ状態 |
検算(この結果になる理由)
どちらも同じ引用符つきの文字列で、状態も M なので「両方で同じ状態」です。CRLF と末尾の空行は無視されます。引用符つきのパスであることは情報として知らせます。
判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。
このツールの制約
- --name-status の出力はファイル名と状態だけで、変更された行の内容は含みません。同じファイルを両方で変えていても、行が衝突するかどうかは判定できません。
- パスは新しい側のキーで突き合わせるため、片方で名前変更、もう片方で旧パスを変更した場合は、別のパスとして並びます。警告の対象にならないことがあります。
- git の core.quotePath による引用符つきのパスは展開せず、そのままの文字で比べます。-z の出力(NUL 区切り)には対応していません。
ご利用にあたって
- この比較は衝突の見当をつけるためのものです。実際の衝突はマージしてみないと分かりません。
- ブランチ名・ファイル名は端末の外へ送信されませんが、貼り付ける画面の取り扱いには注意してください。