* 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 新規作成