トップ «前の日記(2009/06/19 (金) ) 最新 次の日記(2009/06/21 (日) )» 編集 RSS feed

HsbtDiary


2009/06/20 (土) [長年日記]

[git][git-svn][svn] git で svn リポジトリを扱うのに一苦労

昨日作った tdiary の git リポジトリで加えた変更を sf.net の svn リポジトリに反映させようと思ったんだけど、これがまた一筋縄には行かなかった。

何かぐぐる先生の検索結果では、git svn init (clone) したリポジトリなら dcommit で svn 側に反映できるということが書いてあったんだけど、どうにも自分の環境でやってみるとうまくいかない。以下、やってみたこと。

リモートの trunk を指定して branch 作成、切り替えてから master からマージ、dcommit。typester さんの fast-forward mergeによるとデフォルト設定の merge では dcommit で面白くない動作になるみたいなので --no-ff をつけて実行してみる

git br -b svn/trunk trunk
git co svn/trunk
git merge --no-ff master
git svn dcommit

とやってみると変更点が発生していないだか、svnの情報が取れないとか言われる

Unable to determine upstream SVN information from HEAD history.

Using Git with SVNによると、.git/config の svn-remote に設定を追加しないと駄目とか書いてあったので、確認してみると svn init で自動設定されたものは確かにある。

ここで一度 svn init したもので dcommit するのはあきらめて、pure git なリポジトリに svn-remote を追加する方法で dcommit する方法を試してみた。

git clone git@github.com:hsbt/tdiary.git

.git/config に以下のエントリを追加

[svn-remote "sourceforge/trunk"]
       url = http://tdiary.svn.sourceforge.net/svnroot/tdiary/trunk
       fetch = :refs/remotes/sourceforge/trunk

この後に fetch して ブランチを作成。後は svn init した時と同じように作業する

git svn fetch sourceforge/trunk
git br -b svn/trunk remotes/sourceforge/trunk
git co svn/trunk
git merge --no-ff master
git svn dcommit

これで sf.net 側にコミットすることができた。

うーん、wassr だと svn init したところから dcommit できたという報告もあるので、何かが違うのかなあ。gitこわい。

[git][git-svn][svn] git svn dcommit で使われる commit log

dcommit するまで、勘違いしていたんだけど svn 側にコミットログとして使われるのは master で commit した時のログではなくて、svn/trunk に commit した時のログだけなんだね。なので、単純 merge だと sf.net 側には Merge from 〜というログばかりが残ってしまってイマイチな感じ。

この辺は --no-commit オプションを使って、回避できるみたい

git merge --no-ff --no-commit master
git commit -a -m "changelog"
git svn dcommit

ただ、毎回指定するのはだるくてしょうがないので .git/config に以下のエントリを追加してデフォルトのオプションを変更しておく

[branch "svn/trunk"]
       mergeoptions = --no-ff --no-commit

しばらくはこの方法で github をメインにしてやってみるつもり。

[Life] 今日のめしうま

SANY0008

毛を刈ったあとのアルパカの画像を見て、えこりん村リベンジを決行するか考えたり何だり。本日のメニュー

  • レタスとアスパラの豚肉巻き
  • ひじきとタマネギの炒め物
  • 野菜の中華風あんかけ
  • アスパラのチーズ焼き

レタスの豚肉巻きはクックパッドの1位になっていた料理だけど、かなり美味しかった。ごちそうさまー。