バージョン管理
rcs

rcsについて

  • めっちゃ古い
  • 軽い
  • シンプル

そんな感じのバージョン管理用のソフトです。

バージョン管理ソフトについて

特定のファイルを編集するときに、例えば以下のようにバージョンをつけておきたい場合があります。
 1. メモ_20101212.txt
 2. メモ_20101213.txt
 3. メモ_20101214.txt

上記の様なアホな管理をしないようにするためのツールがバージョン管理ソフトです。

gitでいいじゃんというあなたに

gitでいいと思いますが、「リポジトリ作るほどじゃないけど、ちょっとしたファイルの管理をしたい」「git入ってない環境だけど管理したい」といった、まれなようでよくあるケースで使えます。

使い方

以下は使用例です。大体以下ぐらいがわかっていればなんとかなります。

履歴保存用フォルダを作る

履歴保存用のフォルダを予め作っておきます。
(※作っておかないと、ファイルと同じディレクトリに"ファイル名,v"というファイルが出来ます)

$ mkdir RCS

ファイルを登録(初回のみ)

$ ci -u テスト.txt
テスト.txt,v  <--  テスト.txt
enter description, terminated with single '.' or end of file:
NOTE: This is NOT the log message!
>> テスト用ファイルです
>> .
initial revision: 1.1
done

上記で、ファイルの登録が完了しました。

ファイルを書き込み可能(編集状態)にする

ファイルをチェックアウトして、書き込みできるようにします。

$ co -l テスト.txt
テスト.txt,v  -->  テスト.txt
revision 1.1 (locked)
done

これで修正できるようになるので、あとは適当に修正しましょう。

修正後のファイルをチェックイン(登録)する

修正後のファイルを登録しましょう。

$ ci -u テスト.txt
テスト.txt,v  <--  テスト.txt
new revision: 1.2; previous revision: 1.1
enter log message, terminated with single '.' or end of file:
>> 書き込みしました。
>> .
done

">>"のあとにコメントを入力できます。
入力を終えたいときは"."だけを入力しましょう("."はコメントに入りません)
これで、修正後のファイルが登録できました。

修正のdiffをみる

チェックアウトした状態で、変更のdiffを見てみます。

$ co -l テスト.txt
テスト.txt,v  -->  テスト.txt
revision 1.2 (locked)
done
$ echo "NYAA"  >> テスト.txt
$ rcsdiff テスト.txt
===================================================================
RCS file: テスト.txt,v
retrieving revision 1.2
diff -r1.2 テスト.txt
1a2
> NYAA

こんな感じで、修正箇所を見ることができます。

修正履歴をみる

修正履歴をみてみましょう

$ rlog テスト.txt

RCS file: テスト.txt,v
Working file: テスト.txt
head: 1.2
branch:
locks: strict
        fumi-san: 1.2
access list:
symbolic names:
keyword substitution: kv
total revisions: 2;     selected revisions: 2
description:
テスト用ファイルです
----------------------------
revision 1.2    locked by: fumi-san;
date: 2017/09/08 13:48:10;  author: fumi-san;  state: Exp;  lines: +1 -0
書き込みしました。
----------------------------

revision 1.1
date: 2017/09/08 13:45:20;  author: fumi-san;  state: Exp;
Initial revision
=============================================================================

こんな感じで、チェックインした際のログを確認できます。
また、各revision間のdiffもとれます。

$ rcsdiff -r1.1 -r1.2 テスト.txt
===================================================================
RCS file: テスト.txt,v
retrieving revision 1.1
retrieving revision 1.2
diff -r1.1 -r1.2
0a1
> TESTTESTTESTTEST

これで、チェックインした際にどのような修正を入れたか確認が出来ます。

特定バージョンのチェックアウト

とりあえず修正ある場合はチェックインして、それからバージョン指定でチェックアウトします。

$ ci -u テスト.txt
テスト.txt,v  <--  テスト.txt
new revision: 1.3; previous revision: 1.2
enter log message, terminated with single '.' or end of file:
>> 登録
>> .
done
$ co -l -r1.1 テスト.txt
テスト.txt,v  -->  テスト.txt
revision 1.1 (locked)
done

これで特定revisionのファイルを取り出せます。

もとに戻すときは以下のようにすればなんとかなります。
(※checkout時に上書きの確認が出ますが、問題なければyでいいです)

$ co -l テスト.txt
テスト.txt,v  -->  テスト.txt
revision 1.1 (locked)
writable テスト.txt exists; remove it? [ny](n):  y
done
$ rcs -u1.1 テスト.txt
RCS file: テスト.txt,v
1.1 unlocked
done

これで、正常にもとのrevisionに戻れると思います。

最後に

メモ代わりなのでざっくりした書き方になってしまいました。
上記のように、2・3コマンドを覚えるだけで楽に使えるので、
軽くバージョン管理ツールをつかってみたい人はぜひ使ってみてください。