[ Home on 246net ] [ Git index ]

Gitを使うときのメモ

Gitを使いながら、気付いたことなどをメモしていくページ。

最初にしておくこと

ユーザー情報の登録

改行コード変換

その他便利な設定

ローカルリポジトリの作成時

コミット時

インデックスに登録されたファイルがコミット対象

コミットメッセージの書き方

Gitでは、コミットメッセージの書き方に習慣・お作法があります。

1行目 コミットでの変更内容の要約  ASCII50文字(日本語25文字)くらいに収める 
2行目  空行  
3行目以降  変更理由を詳しく書く 時制は現在形、箇条書きでも文章でもOK
ASCII72文字(日本語36文字)で折り返し

コミット間違えたのでやり直したい

履歴

ケーススタディ

Linuxの各種設定ファイルを変更管理する

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管理者は、設定ファイルをバージョン管理していた

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
...

以降、設定ファイルを修正したら、インデックスに登録し、コミットします。これで少なくとも履歴管理ができるようになりました。