Webtech Walker

svnコマンドの覚え書き

メインPCにMacを使うようになってsvnもコマンドラインで使っているのですが、たまにしか使わないコマンドはすぐ忘れてしまうのでメモっときます。

svnの管理下から除外する

キャッシュや設定ファイルなどの、svnの管理下に置きたくないファイルやディレクトリを指定します。cacheディレクトリ以下の全ファイルをsvnの管理下から除外したい場合は 

svn propset svn:ignore '*' ./cache

のように指定します。

外部定義を設定する

複数の作業プロジェクトの中で共通したディレクトリを共有したりするときにはsvn:externalsを設定します。

例えばプロジェクトが以下のようなディレクトリ構成になっていたとして

/project
  ├front
  | ├web
  | ├app
  | └lib
  |
  └admin
      ├web
      ├app
      └lib

libをfrontとadminで共有したいときにはadminのカレントディレクトに移動して

svn propset svn:externals "lib http://code.webtech-walker.com/svn/project/front/lib" .

とします。

複数設定する場合はsvn propsetで改行区切りでもできますが、下記のようにsvn propeditにエディタを指定して設定することも可能です。(上のsvn:ignoreも同じ)

svn propedit svn:externals . --editor-cmd=vi

設定したものは下記コマンドで確認できます。

svn proplist -v

ブランチを作成する

svn copyコマンドでブランチを作成します。

svn copy http://code.webtech-walker.com/svn/trunk http://code.webtech-walker.com/svn/branches -m "コミットログ"

ブランチをマージする

trunkをチェックアウトしているディレクトリに移動して

cd <svn_dir>/trunk

ブランチを作成したリビジョンから最新のリビジョンまでをマージします。ブランチを作成したときのリビジョンが仮に100だとしたら、以下のようにします。

svn merge -r 100:HEAD http://code.webtech-walker.com/svn/branches .

この時点ではまだコミットはしていないので、確認してOKならコミットします。

一括でadd/delする

一括でsvn addする場合は

svn st | grep '^?' | awk '{ print $2 }' | xargs svn add

をaliasで指定してたんですが、addの場合は

svn add * --force 

でできるみたいですね。ちなみに削除済みのファイルを一括でsvn delする場合は

svn del * --force 

とすると存在するファイルやディレクトリが削除されるので

svn st | grep '^!' | awk '{ print $2 }' | xargs svn delete

とかしないとダメっぽい。

このエントリーをはてなブックマークに追加