[ Home on 246net ] [ Git index ]
Gitを使いながら、気付いたことなどをメモしていくページ。
Gitでは、コミットメッセージの書き方に習慣・お作法があります。
1行目 | コミットでの変更内容の要約 | ASCII50文字(日本語25文字)くらいに収める |
2行目 | 空行 | |
3行目以降 | 変更理由を詳しく書く | 時制は現在形、箇条書きでも文章でもOK ASCII72文字(日本語36文字)で折り返し |
Linuxマシンを各種サーバー用途で使用しているときに、設定ファイルを必要に応じて変更する作業が発生します。たとえば、利用者の異動等によるLinuxユーザーアカウント、Webサーバー/Samba等の認証ユーザーの追加削除などです。
また、新しいサーバー機能を導入しようとする際の動作確認で設定ファイルを試行錯誤的に変更する作業もあります。
ソフトウェア開発のように本格的な変更管理の使用が分かっていると、あらかじめリポジトリを構築して備えるのですが、ちょっとした設定ファイルの場合、リポジトリを用意し設定ファイルを管理下に置くのが手間で、適当な拡張子でバックアップをとったりあるいは設定ファイル内をコメントアウトだらけにしてしまいます。
例えば、日付拡張子で変更を残している場合、ディレクトリが次のようになってしまいます。
hosts hosts.20120401 hosts.20120408 hosts.20120628 hosts.20120703 hosts.20121001 hosts.20121018 hosts.20121112 hosts.20121227 hosts.20130109
設定ファイル内にコメントを駆使していたりすると・・・
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # 2012.7.4 セグメント変更のためコメントアウト # 192.168.3.1 musai # 2012/6/29 マシン追加 # 192.168.3.2 papua # 2012.7.4 新しいセグメント 172.21.0.1 musai 172.21.0.2 papua 172.21.0.3 zanzibar # 2012/10/17 マシン追加 # 172.21.0.4 pazock # 2013.1.9 マシン移動 172.22.0.2 pazpck
ぐっちゃりで読むのが苦痛です。
UNIXマシンがワークステーションと呼ばれ、数百万円以上する高級な計算機だった時代、設定ファイルをバージョン管理ツールRCS(SystemV系ならsccs)で管理していた伝説のUNIX管理者が存在していました。ファイル単位で履歴管理する初期のバージョン管理ツールですが、外にリポジトリ/作業ディレクトリを必要とせず、設定ファイル管理にはそれなりに活用できました。
しかし、その技は伝承されることが少なく、しだいに設定ファイル管理は上述の暗黒時代を迎えたのです。
Subversinが全盛となったとき、設定ファイルをSubversionで管理する猛者も現れましたが、別途リポジトリ用ディレクトリと作業ディレクトリを作成し、作業ディレクトリに置かれたファイルを設定ファイルの本来の場所からシンボリックリンクとするといった運用になるので、RCSより複雑になり、そもそもRCSでもバージョン管理しないのにそれより複雑ならなおさら使わないという悪循環になってしまいます。
今更RCSというのもやる気がでないし、Subversionは前述の問題を含んでいるし、というときに、Gitはリポジトリと作業ディレクトリを外だししないで済むというのででは使ってみようというものです。
とりあえず、管理する設定ファイルは/etc以下であるので、まず/etcにGitリポジトリを作ってみます。
# git init --shared Initialized empty shared Git repository in /etc/.git/ # chgrp -R wheel .git #
設定ファイルをインデックスに登録し、それからローカルリポジトリにコミットします。
$ git add krb5.conf $ git commit ...
以降、設定ファイルを修正したら、インデックスに登録し、コミットします。これで少なくとも履歴管理ができるようになりました。