無為空間
むいむい(´ω`*)
Entries
TortoiseGit 1.6.5(with msysGit 1.7.4)の使い勝手を調べていたときのお話。

この状態から

piyoブランチをmasterブランチのHEADにrebaseしようとしたら

「add piyo.txt」のコミットが消えた。
rebaseの使い方を誤ったのだろうか?
いずれにせよ、このおかしな歴史は元に戻さなければならない。
shift+コンテクストメニューでReflogを出す。


何か表示がおかしい気がするが……

Refを指定したらすっきりした。

piyo{1}を選び、「add piyo.txt」の頃にresetする。
これで無事、rebaseする前の状態に戻ることができた。
さて、この「rebaseするとコミットが消える」現象。
TortoiseGitのIssuesの方にも「時々起こる問題」として何件か上がっているが、最終的には「Issue 512: Git sync lose local commits (remote update, fetch and rebase)」にて
The issue always occurred on single-core machines, or when manually setup affinity mask of TortoiceProc to one core.
「シングルコアのマシンなら確実に起こる」というコメントと共にパッチが上げられていた。
シングルコアとは、なるほど今時のマシンでは発症しにくそうな不具合である。
では、このパッチを適用したバイナリを入れて再度rebaseしてみよう。


今度は期待通りの歴史になることが確認された。
echo foo bar echo ほげ ふが
Windows XP SP3でこのようなバッチファイルを「文字コードはShift JIS」「改行コードはCRLF」で作って実行すると
C:\>echo foo bar foo bar C:\>echo ほげ ふが ほげ ふが
問題なく動作するが、改行コードをLFにすると
C:\>echo foo bar foo bar C:\>ほげ ふが 'ほげ' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
実行時に2バイト文字の数だけ?文字が消失してしまう。
逆にバッチファイルの中身が1バイト文字だけであれば
echo foo bar echo ホゲ フガ
改行コードがLFでも正常に動作する
C:\>echo foo bar foo bar C:\>echo ホゲ フガ ホゲ フガ
っぽい。