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

** リポジトリ構成 [#bc349aeb]

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

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

** コマンド [#f35db204]
*** checkout [#s8505257]
リポジトリをローカル環境へ払い出します。

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

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

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

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

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

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

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

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

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

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

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

----
** 履歴 [#r24059da]
- 2019/07/11 : bokupi 新規作成

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS