git : 「unable to determine upstream svn information from head history. perhaps the repository is empty」
今日のはまった。
git svn でやってきてた trunk ブランチにワークブランチから merge して、Egit経由の commit -amend でコメント直してコミットログを整えていって、を繰り返し。
さて git svn dcommit 。とすると。
unable to determine upstream svn information from head history. perhaps the repository is empty
('A`)ah...
ググったり「git-core でエラーっす」ってメッセージから調べると、 git svn 〜 は git rev-list --first-parent --pretty=medium の出力をもとに、svn リポジトリをトラックしているらしく、各コミットの first-parent が svn に commit されたコミットを指していないと動かない模様。
Egit で git commit --amend 相当の操作をすると、 parent の順序が入れ替わることがあるので、それをトラックできなくなってた模様。
なので、再度 Egit で git commit --amend をやってやると、再び順序が入れ替わり dcommit できるようになりましたとさ。
コマンドらいんからの git commit --amend では、この親コミットの順序入れ替わりはでないので、 Egit 使ったとき限定の特殊例なのかもしれない。
「unable to determine upstream 〜」のエラーは別の理由でも出る場合はあるようなので、原因の一例として参考まで。
参考: git/libexec/git-core の sub working_head_info