授業の課題をCで書いて提出しないといけなかったので、最悪なバージョン管理システムを作りました。
システムプログラミング基礎で発表した最悪なバージョン管理システムの詳細です https://t.co/mHth1drYaj
— いとお (@i315) 2016, 1月 16
日付ベースのバージョン管理であれば、誰でもファイルを覗くことができるでしょう。上司がバージョン管理システムなんて使いたくないと言っているような職場でも安心して使えますね。
Date version control で dvn
です。QWERTY配列では s と d は隣同士にあり svn
と打とうとするとタイプミスを誘発しやすいため、それを狙ったコマンド名にしています。
流れ
% dvn dvn - Date version control Usage: dvn init dvn commit [message] [file] dvn log
dvn init
でカレントディレクトリに.dvn
ディレクトリを作るdvn commit
でコミットしたいファイルとメッセージを指定してコミットdvn log
でコミットログを参照
コミット間の差分は、diff を使って頑張るという感じです。ディレクトリ同士で diff を取ればそれっぽくなります。
まとめ
作ってみてわかったのが、日付によるバージョン管理は人類を破滅させるのことにつながりかねないのでやめたほうがいいですねということです。
% dvn init Initialized dvn repository. Recommend: Initial commit `dvn commit 'Initial' *` % ls -a ./ ../ .dvn/ % echo "foo" > a % dvn commit 'Add a' a Commit 2016-01-16T16:16:58+0900: Add a % tree -a .dvn .dvn └── 2016-01-16T16:16:58+0900 ├── .dvn.metadata └── a 1 directory, 2 files % echo "bar" >> a % dvn commit 'Update a' a Commit 2016-01-16T16:17:20+0900: Update a % dvn log 2016-01-16T16:16:58+0900: Add a 2016-01-16T16:17:20+0900: Update a % tree -a .dvn .dvn ├── 2016-01-16T16:16:58+0900 │ ├── .dvn.metadata │ └── a └── 2016-01-16T16:17:20+0900 ├── .dvn.metadata └── a 2 directories, 4 files % colordiff -r -u .dvn/2016-01-16T16:16:58+0900 .dvn/2016-01-16T16:17:20+0900 diff -r -u .dvn/2016-01-16T16:16:58+0900/.dvn.metadata .dvn/2016-01-16T16:17:20+0900/.dvn.metadata --- .dvn/2016-01-16T16:16:58+0900/.dvn.metadata 2016-01-16 16:16:58.000000000 +0900 +++ .dvn/2016-01-16T16:17:20+0900/.dvn.metadata 2016-01-16 16:17:20.000000000 +0900 @@ -1 +1 @@ -Add a \ No newline at end of file +Update a \ No newline at end of file diff -r -u .dvn/2016-01-16T16:16:58+0900/a .dvn/2016-01-16T16:17:20+0900/a --- .dvn/2016-01-16T16:16:58+0900/a 2016-01-16 16:16:58.000000000 +0900 +++ .dvn/2016-01-16T16:17:20+0900/a 2016-01-16 16:17:20.000000000 +0900 @@ -1 +1,2 @@ foo +bar