[linux]なんでもsvnで管理する

サーバをさわるときは、常に信用できない人間が約一名(自分だ!)いるので、どんな作業でも取り返しがつくようにするのが大切です。

ssh上で行った作業のログをとる – もぎゃろぐ

という具合にしてログをとることで、いざというとき何をしていたか振り返ることができるようになるのですが、設定ファイルに変なことを書いた場合、emacsの修正内容はログに残らないので、まだ若干不安が残ります。

そういえば、masuidriveさんは、「コマンドも含め全てのファイルはSubversionで管理」しているのだそうで。



masuidrive on rails » Blog Archive » masuidrive的プロジェクトの方針



こうしておけば、ファイルに変なこと書いても最悪ロールバックできますので、これは大変いいアイデアだと思います。

具体的にどうやるのか今ひとつわからなかったので躊躇していたのですが、今やってみたら簡単にできたので、ご紹介を。

svnは普通に使いこなせる方が対象ですので、そうでない方は勉強してから試してくださいませ。

Subversionの基礎練習

前提:自分の場合、/usr/local/bin/に自作のミニスクリプトをおいています。ファイル名の後ろに日付をつけたバックアップを用意するbkとか、複数ファイルをいっぺんにcatできるcatsとか。

とりあえず、ホームディレクトリあたりにそういうファイルを一式用意してsvnにインポートします。

[daisuke@snares ~/tmp/mogyalet] $ ls
bk  cats  ddiff
[daisuke@snares ~/tmp/mogyalet]$ svn import file:///var/svn/repos/mogyalet -m "initial import"
Adding         cats
Adding         bk
Adding         ddiff

で、/usr/local/bin/に移動してチェックアウトします。

[daisuke@snares ~/tmp] $ cd /usr/local/bin/
[daisuke@snares /usr/local/bin] $ sudo svn co file:///var/svn/repos/mogyalet ./
A  cats
A  bk
A  ddiff
Checked out revision 2.
[daisuke@snares /usr/local/bin] $ ls
addcr  cats   delcr    http@        rblsmtpd  tcpclient      tcpserver
argv0  date@  finger@  mconnect     recordio  tcprules       who@
bk     ddiff  fixcrio  mconnect-io  tcpcat    tcprulescheck

できあがり。bkコマンドをアップデートしたいときには、適当な位置で修正したものをチェックインしたあと、/usr/local/bin/でsudo svn updateとしてやればいいわけです。

以前この話を聞いたときには

疑問なのは、全部のファイルを1モジュールにぶっこむのでしょうか?1コマンド1モジュール?
前者だと取ってくる人がエライことになるので、後者かと思うのですが。そうするとものすごい数のモジュールを 登録することになりますよね。構わないのかなぁ。
あと、適当に名前をつけているとあとで何物かわからないモジュールがたくさんでてきそう。
Re:プロジェクトの始まりはTracから - もぎゃんだいあり。

と思ったのですが、今考えると、リポジトリのパスなんて意識するのはチェックアウトするときだけで。

普段はsvn update しかしないのだから、そんなこと気にする必要がないんですよね。

わからなくなったら、既存のディレクトリに移行してsvn infoで見ることができます。

というわけで、リポジトリ名なんて、file:///var/svn/repos/etc/httpd/conf/とかでいいような気がしてきました。

おまけ:



 実行ファイルをsvnに入れるときは、下記を参考に実行ビットつけておくと便利です。

【CGI・Perl】実行可能な属性をファイルに付加する(svn:executable)

[daisuke@snares ~/tmp/mogyalet]$ svn propset svn:executable ON bk cats ddiff
property 'svn:executable' set on 'bk'
property 'svn:executable' set on 'cats'
property 'svn:executable' set on 'ddiff'
[daisuke@snares ~/tmp/mogyalet]$ svn commit -m "set executable bits"
Sending        bk
Sending        cats
Sending        ddiff
Committed revision 2.

2008-05-10 18:44:44追記
 設定ファイルも管理する方法は、こちらをご覧くださいませ。



[linux]なんでもsvnで管理する2 – もぎゃろぐ

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です