rcs使い方メモ

# rcsについて
* めっちゃ古い
* 軽い
* シンプル

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

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

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

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

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

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

```bash
$ mkdir RCS
```

### ファイルを登録(初回のみ)
 
```bash
$ 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
```

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

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

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

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

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

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

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

```bash
$ 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を見てみます。

```bash
$ 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
```

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

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

```bash
$ 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もとれます。

```bash
$ 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

```

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

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

```bash
$ 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でいいです)

```bash
$ 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に戻れると思います。

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