久々にsubversionを触ってみた

October 08, 2022

しばらくgitしか使ってこなかったのですが最近久しぶりにsubversionを使う機会があったので、忘れないようにざっとポイントをメモっておきます。

  • リモートリポジトリしかない。gitのようなローカルリポジトリはない。
  • リモートリポジトリにバージョン管理させたいリソースを登録する場合はimportコマンドを使う。これが一番最初に行う作業。
  • gitのようなブランチ、タグの機能はない。その代わり、慣例として各プロジェクトごとにtrunk、tags、branchesというフォルダをルートフォルダに作ってブランチやタグを管理する。
  • commitコマンドでコミットするとすぐにリモートリポジトリに反映される。gitのようにコミットしたあとにプッシュする必要はない。
  • コピー、削除、追加はsvnの対応するコマンドで行う必要がある。
  • 作業フォルダでsvn updateを実行するとリモートリポジトリの内容が反映される。gitのプルと同じようにマージやコンフリクトの検出もされる。
  • 作業フォルダでsvn statusを実行すると変更したファイルや管理外のフォルダが表示される。
  • タグを打ちたい場合はcopyコマンドでtags以下の適当な名前のフォルダにコピーする(以降、変更は加えないこと)。ブランチを作りたい場合も同様にcopyコマンドでbranches以下の適当な名前のフォルダにコピーする(以降、変更してもよい)。
  • コンフリクトすると、svn updateを実行する前に作業フォルダにあったファイル、そのファイルの変更する直前のリビジョンのファイル、リモートリポジトリでのHEADリビジョンのファイルの3つのファイルが生成される。
  • コンフリクトの解決は対象ファイルを編集後にresolvedコマンドを実行する(上記3つのファイルは自動的に削除される)。
  • ブランチからトランクにマージする場合はmergeコマンドを使用する。差分情報が必要となるのでブランチの変更前のリビジョン、変更後のリビジョンを指定する。トランクからブランチの場合も同じ方法でマージ可能。