[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 - もぎゃろぐ
カテゴリ:

トラックバック(0)

このブログ記事を参照しているブログ一覧: [linux]なんでもsvnで管理する

このブログ記事に対するトラックバックURL: http://mogya.com/mt/mt-tb.cgi/532

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、 もぎゃが 2008年3月14日 18:36に書いたブログ記事です。

ひとつ前のブログ記事は「 [確定申告]なんでも経費申告しておいた方が得になるらしい。 」です。

次のブログ記事は「 [EE]日本語ランゲージパック 」です。

最近のコンテンツは インデックスページ で見られます。過去に書かれたものは アーカイブのページ で見られます。

Powered by
Movable Type