Subversion Commands

はじめに

業務で10年近くSubversionを使ってきましたが、gitへ移行しそうなので、これまでのSubversionによる開発感覚を備忘録として残しておきます。

リポジトリ構成

Subversionは構成に対する自由度が高いですが、慣例として下記の構成で使うのが一般的です。

branches開発ブランチ
tags動作が保証されるスナップショット
trunkメインライン

コマンド

checkout

リポジトリをローカル環境へ払い出します。

update

ローカル環境にあるバージョン管理対象のファイルを、更新します。-r オプションでリビジョン番号を指定できます。-r 指定なしの場合は、最新(head)リビジョンとなります。

add

ローカル環境にあるファイルを、バージョン管理対象に追加します。

commit

ローカル環境の変更を、リポジトリに反映します。-m オプションでコミットログを記入できます。-m 指定なしの場合は、関連付けたエディタが起動するので、そこでコミットログを記述できます。

status

ローカル環境の状態を確認できます。リポジトリとの差分のあるファイルや、コンフリクトの発生など。

log

リポジトリのコミットログを見れます。--limit で最大出力数を指定します。-v で詳細な情報まで見れます。

mkdir

リポジトリ上にディレクトリを作成します。commit操作も内包します。空のディレクトリを作りたい場合に使います。

copy

リポジトリ上にあるディレクトリやファイルを、リポジトリ上の別の場所にコピーします。commit操作も内包します。ブランチの作成や、タグの作成で利用します。

merge

ローカル環境に対して、リポジトリ上にある更新差分をマージします。マージの方法はSubversionのシステム内の仕組みで自動的に行なわれます。上手くマージできない場合は、コンフリクトとなります。その場合は、衝突部分が新旧記述された状態になるので、手動でマージを行なう必要があります。

なお、Subversionによるマージはファイルの中身の差分だけではなく、svn:mergeプロパティによる履歴も参照されます。そのため、ファイルの中身だけ見ると、問題なくマージされそうなのに、一切マージされないことがあります。これはマージしようとしている範囲が、マージ先であるローカル環境上では、svn:mergeプロパティ上既にマージ済みだと言う場合です。svn:mergeプロパティと実際のマージ状況が食い違っている、壊れた状態です。svnの仕組みを介さずに行われたマージ作業などが原因です。Subversionに不慣れなユーザーがいるチーム環境だと、発生する可能性のある問題です。

reintegrateオプションは、ブランチした内容をブランチ元へマージする際に使います。以降そのブランチは使用不可になります(使ってはいけない)。ブランチの正しい使い方ですが、再統合の意味を理解せずにただのmergeと同じ感覚だと問題を起こしますので注意。

resolved

コンフリクトを手動で解決した場合は、そのことをsubversionに教えてあげる必要があります。そのためのコマンドです。


履歴


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-11 (木) 09:03:29