-
2020-07-28
更新。Subversion環境に移行。
1. 背景
RCSを使ってスクリプトをバージョン管理していたけど、ファイルも増えて来たのでCVS環境に切り替える。作業メモを記す。
2. 状況
- リポジトリのパスはローカルになるが、実態は
MEGA
というフリーのストレージサービス。OneDriveもあるけど、利用頻度にしばりのあるMEGAを使う。 - 登録対象のディレクトリ配下には管理対象とならないテキストファイルがある。
3. 参考ページ
- http://www.gfd-dennou.org/arch/cc-env/cvs/old_2005-11-08/basic/cvs-usage1.htm
- https://www.ne.jp/asahi/hishidama/home/tech/cvs/command.html
- https://nxmnpg.lemoda.net/ja/5/cvs
- https://nxmnpg.lemoda.net/ja/1/cvs#11
4. 管理対象のディレクトリ
- tools/ 諸々のスクリプトを置く.今回の管理対象.
- cron/ 自動実行のスクリプトを置く.
- TASK_NAME/ 関連スクリプトが複数ある場合に作成する
- .temp/ 実行時の中間ファイルを置く.ファイルは管理対象外.
- .data/ 実行後のファイルを置く.ファイルは管理対象外.
- TASK_NAME/ 関連スクリプトが複数ある場合に作成する
- cron/ 自動実行のスクリプトを置く.
- logs/ ログファイルを置く.管理対象外.
5. 手順
リポジトリ初期化
$ export CVSROOT="/cygdrive/c/Users/USERNAME/MEGA/MACHINE_NAME/cvs_repository"
$ cvs init
IMPORT前の準備
管理対象外にするファイルのために.cvsignoreを作成する。
IMPORT
$ cd tools
$ cvs import -m "My Script Files" tools BRANCH_1 RELEAS_1_1
- カレントディレクト以下にあるファイルが登録される.
-
.cvsignore
で指定されているファイルは無私される.
-
- オプションについて
-
tools
${CVSROOT}以下に作成されるディレクトリ名 -
BRANCH_1
ベンダータグと説明されているけど、最初のブランチタグっぽい -
RELEAS_1_1
リリースタグ
-
CHECKOUT
※tools
はホームディレクト直下にある
$ cd
$ cvs checkout tools
$ cvs checkout tools/cron
$ cvs checkout tools/cron/TASK_NAME
$ cvs checkout tools/cron/TASK_NAME/.data
$ cvs checkout tools/cron/TASK_NAME/.temp
- 既にディレクトリがある場所に重ねるように
cvs checkout
を実行 - 何もなければ一回で全てcheckoutされる
6. 日常的に使うコマンド
先ずは設定(~/.cvsrc)
cvs -q
作業状況の確認、他所で登録された更新の反映
cvs update
- subversionから見ると、cvsは「他所の更新を確認する」「他所の更新を反映する」がコマンドとして分かれていない。
変更内容の登録
cvs commit -m "コメント"
7. 雑記
importのベンタータグについて
そういえば「import」で使う各引数の説明を見つけた
https://nxmnpg.lemoda.net/ja/1/cvs
`cvs import' を使うことで外部の供給元 (例えばソースベンダ) からのソース配布物 全体をあなたのソースリポジトリのディレクトリへ取り込めます。 最初のリポジトリの作成と、外部の供給元からのモジュールへの 大規模な更新の両方にこのコマンドを使うことができます。
ここまでの説明ではよく分からなかった。
外部からのソースは第一レベルの ブランチ、デフォルトでは 1.1.1に保存されます。 以降の更新は このブランチのリーフになります。 例えば、最初に import したソース集合からのファイルはリビジョン 1.1.1.1になり、 次の import による更新でファイルはリビジョン 1.1.1.2になり、以下同様に続きます。
ここまで読んで、改めて import
の説明を読んでやっと分かった。
import が想定している状況
- 他社製のソースコードをもらってcvs importで登録
- 自社で開発を進める
- その後、他社から更新版をもらう
- ベンダータグを使って
cvs checkout -r VENDOR_TAG
を実行 - この環境で更新版を受け入れ、cvs commitを実行する
- CURRENTブランチでVENDOR_TAGとの差分を確認して適宜判断
- …
通常は「他社製=自分」なのでピンと来なかったというわけです。