レタスのかわをぜんぶむく

ぜんぶむきます

CUIでSubversionを使う

SubversionCUIで使っていて、
GUIだと出来たけどアレどこいったアレ!
となることが多いのでそれをまとめた。

# urlで指定されたリポジトリをチェックアウトする
$ svn checkout url

# 今いるディレクトリををurlで指定したリポジトリにスイッチする
$ svn switch url

# 現在のディレクトリのリポジトリのURLを確認する
$ svn info

# ワーキングコピーの変更/追加/不明ファイルリストを表示する
$ svn status

# numで指定された件数ログを表示する。
$ svn log --l num

# fileをSubversionの管理対象に追加
$ svn add file

# 現在のディレクトリ以下を更新
$ svn update

# Conflictしたfileを解決済みに設定する
$ svn resolved file

# fileの変更を破棄する
$ svn revert file

# file1, file2, ...をコミットメッセージを設定してコミット
$ svn commit -m 'message' file1 file2 ...

とりあえず、普段使いになりそうなコマンドを上記に列挙。
いつもはだいたい下記のような感じで使っている。

編集分をコミットする場合
# 作業先ブランチが正しいか確認
svn info
# 意図した修正がちゃんと入ってるか確認
svn diff
# 上記全体のログが長い場合、コミットするファイル一覧取得
# '?'から始まるファイルは管理されていない。
# たりないファイルがあればsvn addで追加する。
svn status | grep ^? -v
# コミットのコピペ用にファイル名一覧を出力
svn status | grep ^? -v | awk '{print $2}'
# メッセージを追加してコミット、file1, 2は上記から貼り付け
svn commit -m '' file1 file2 ...
スイッチする場合
# 現在のディレクトリをurlで指定されるリポジトリにスイッチ
$ svn switch url
# (ぶつかってたら) 全部解決したことにする
$ svn resolve -R .
# (ぶつかってたら) 新しいリポジトリを向いているので変更を破棄
$ svn revert -R .
一括でhogeりたい時(追加/削除/変更の破棄)
# 一括追加
$ svn status | grep -e "^?" | awk '{ print $2 }' | xargs svn add
# 一括削除
$ svn status | grep -e "^\!" | awk '{ print $2 }' | xargs svn del
# 一括破棄
$ svn status | grep ^? | awk '{print $2}' | xargs svn revert

ブランチ(という名の)ディレクトリがたくさんあって
その中を縦横無尽にswitchしまくる必要があるのなんか面白い。


そうそう、会社のみんなLinux系あんまりつかわないから
ちょっとしたワンライナ書くだけでドヤ顔できると思ったら

力説しても「はぁ、そうなんですね…」という顔で
「すごいですね」と後輩に言われるの
SE☆CHI☆GA☆RA!
(上記はフィクションであり実在の個人及び団体となんら関係はありません)