サーバをさわるときは、常に信用できない人間が約一名(自分だ!)いるので、どんな作業でも取り返しがつくようにするのが大切です。
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 – もぎゃろぐ