2012/07/19

git: core.sharedRepository


やる事

  • git clone,pull,pushで作成されるファイルのパーミションを設定する。

動機

サーバ上でにある設定ファイルを、数人がそれぞれのアカウントで編集しgitを用いて共有していました。
その設定ファイルにはパスワードを書かざるを得ないものでした。
そういう状況で、ある日あることに気づきました。
自分はpullしてからパーミションを変更して他の人から読めないようにしていた(そういうシェルスクリプトを書いていた)のですが、
他の人はそうではないようです。

非常に困るのでルールを決めたいのですが、編集メンバーも毎年変わってしまうため、あまり複雑な約束事をしたくありません。


そもそもgitで管理している間は、設定ファイルにパスワードを書くな、という指摘もあると思いますが、
ここでは、ファイル作成時のデフォルトのパーミションを設定することにしました。

設定

git-config の manページ中にcore.sharedRepositoryについての説明があります。
$ man git-config

これを読むと、gitを用いて新たなファイルが作成される場合のパーミションはumask値から決まります。
それを上書きするには、core.sharedRepository=0600などと設定すれば良いです。
ここではumaskの形式ではないことに注意しましょう。

このためには例えば、.git/configの、[core]というところに次の行を追加します。
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    sharedRepository = 0600  (<=この行を追加)


以上で新しく作成されるファイルのパーミションについては、気をつかう必要がなくなりました。

ただし、すでに作成されたファイルのパーミションは変更されないので、自分でパーミションを変更しましょう。


0 件のコメント:

コメントを投稿