たまにしかやらないのでいつも思い出せない。
今日はメモっておこう。
作りきってリリースするつもりだったので 作成途中でソースを大量にコミット。が、 割り込み作業やら、スケジュール変更やら何やらで、 まだ完成してないのに、今すぐSVNのソースをWebサーバに適用せねばならないシチュエーション、たまにそんな事ありませんか?
しかも他の人が修正した分だけ適用しなきゃならん状況です。
もちろん、現状、Trunkには僕の作成中のソースもたくさんあがっているからそのソースだけ除外して、それ以外をWebサーバに適用するのです。面倒きわまりない!
① コマンド svn log で表示したコミットログを目視で確認しながら、あげちゃぁだめよのソースをピックアップ。
svn log -v -r1234:HEAD
※ rev1234が自分が手を入れる直前のrevision
これだとすべてのログがでるので自分の物だけにしぼるため、
テキストに吐き出そう。
svn log -v -r1234:HEAD > svnLog.txt
そして、自分のコミット以外の情報を除去。svn log って名前で絞り込むオプションってないのかしら?
② ①でピックアップしたソースが自分がコミットした後に他のメンバーがコミットしていないか確認。
面倒だけど、ファイル一個ずつ svn log でコミットログを確認。
svn log -r1234:HEAD /aaa/bbb/file.php
ここで他のメンバーの名前が出てきたら、revision をメモっておく。
※次に行う作業でローカルのソースが上書きされるのでバックアップをとっておく。
➡他のメンバーも直していたら、svn merge ③へ
➡自分だけが直していたら、svn export ④へ
③rev 1235 で僕が直していて、rev 1239 で他のメンバーが直していたら、
svn merge -r1235:1234 /aaa/bbb/file.php
これで1235 の変更が 1234 に戻ります。
こうすると1239の変更は戻ったりしません。
④rev 1236 , 1240 で自分だけが直している場合、
svn export -r1234 /aaa/bbbb/file.php /aaa/bbbb/file.php
とやって対応前のソースで現在のソースを上書きします。
こんな感じに対応。
svn diff とやると見事に対応した部分が戻るように差分がでます。
差分をちゃんと確認してコミット。
ちなみに、rev 1241 で僕がなおして、rev 1242 で 他の人がなおして、rev 1245 でまた僕がなおしたなんてソースがあると、 楽にロールバックするにはどうすればいいの?って感じです。rev1234 に戻したあと、1242をマージかな?
そんなケースが出たときにまた。
ちなみにもっとスマートな方法ありましたら是非教えてくださいませ。
今日はメモっておこう。
作りきってリリースするつもりだったので 作成途中でソースを大量にコミット。が、 割り込み作業やら、スケジュール変更やら何やらで、 まだ完成してないのに、今すぐSVNのソースをWebサーバに適用せねばならないシチュエーション、たまにそんな事ありませんか?
しかも他の人が修正した分だけ適用しなきゃならん状況です。
もちろん、現状、Trunkには僕の作成中のソースもたくさんあがっているからそのソースだけ除外して、それ以外をWebサーバに適用するのです。面倒きわまりない!
① コマンド svn log で表示したコミットログを目視で確認しながら、あげちゃぁだめよのソースをピックアップ。
svn log -v -r1234:HEAD
※ rev1234が自分が手を入れる直前のrevision
これだとすべてのログがでるので自分の物だけにしぼるため、
テキストに吐き出そう。
svn log -v -r1234:HEAD > svnLog.txt
そして、自分のコミット以外の情報を除去。svn log って名前で絞り込むオプションってないのかしら?
② ①でピックアップしたソースが自分がコミットした後に他のメンバーがコミットしていないか確認。
面倒だけど、ファイル一個ずつ svn log でコミットログを確認。
svn log -r1234:HEAD /aaa/bbb/file.php
ここで他のメンバーの名前が出てきたら、revision をメモっておく。
※次に行う作業でローカルのソースが上書きされるのでバックアップをとっておく。
➡他のメンバーも直していたら、svn merge ③へ
➡自分だけが直していたら、svn export ④へ
③rev 1235 で僕が直していて、rev 1239 で他のメンバーが直していたら、
svn merge -r1235:1234 /aaa/bbb/file.php
これで1235 の変更が 1234 に戻ります。
こうすると1239の変更は戻ったりしません。
④rev 1236 , 1240 で自分だけが直している場合、
svn export -r1234 /aaa/bbbb/file.php /aaa/bbbb/file.php
とやって対応前のソースで現在のソースを上書きします。
こんな感じに対応。
svn diff とやると見事に対応した部分が戻るように差分がでます。
差分をちゃんと確認してコミット。
ちなみに、rev 1241 で僕がなおして、rev 1242 で 他の人がなおして、rev 1245 でまた僕がなおしたなんてソースがあると、 楽にロールバックするにはどうすればいいの?って感じです。rev1234 に戻したあと、1242をマージかな?
そんなケースが出たときにまた。
ちなみにもっとスマートな方法ありましたら是非教えてくださいませ。
コメント
コメントを投稿