たまにしかやらないのでいつも思い出せない。 今日はメモっておこう。 作りきってリリースするつもりだったので 作成途中でソースを大量にコミット。が、 割り込み作業やら、スケジュール変更やら何やらで、 まだ完成してないのに、今すぐ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/f