やる事
- git clone,pull,pushで作成されるファイルのパーミションを設定する。
動機
サーバ上でにある設定ファイルを、数人がそれぞれのアカウントで編集しgitを用いて共有していました。
その設定ファイルにはパスワードを書かざるを得ないものでした。
そういう状況で、ある日あることに気づきました。
自分はpullしてからパーミションを変更して他の人から読めないようにしていた(そういうシェルスクリプトを書いていた)のですが、
他の人はそうではないようです。
非常に困るのでルールを決めたいのですが、編集メンバーも毎年変わってしまうため、あまり複雑な約束事をしたくありません。
そもそもgitで管理している間は、設定ファイルにパスワードを書くな、という指摘もあると思いますが、
ここでは、ファイル作成時のデフォルトのパーミションを設定することにしました。
その設定ファイルにはパスワードを書かざるを得ないものでした。
そういう状況で、ある日あることに気づきました。
自分はpullしてからパーミションを変更して他の人から読めないようにしていた(そういうシェルスクリプトを書いていた)のですが、
他の人はそうではないようです。
非常に困るのでルールを決めたいのですが、編集メンバーも毎年変わってしまうため、あまり複雑な約束事をしたくありません。
そもそもgitで管理している間は、設定ファイルにパスワードを書くな、という指摘もあると思いますが、
ここでは、ファイル作成時のデフォルトのパーミションを設定することにしました。
設定
git-config の manページ中にcore.sharedRepositoryについての説明があります。
これを読むと、gitを用いて新たなファイルが作成される場合のパーミションはumask値から決まります。
それを上書きするには、core.sharedRepository=0600などと設定すれば良いです。
ここではumaskの形式ではないことに注意しましょう。
このためには例えば、.git/configの、[core]というところに次の行を追加します。
以上で新しく作成されるファイルのパーミションについては、気をつかう必要がなくなりました。
ただし、すでに作成されたファイルのパーミションは変更されないので、自分でパーミションを変更しましょう。
$ man git-config
これを読むと、gitを用いて新たなファイルが作成される場合のパーミションはumask値から決まります。
それを上書きするには、core.sharedRepository=0600などと設定すれば良いです。
ここではumaskの形式ではないことに注意しましょう。
このためには例えば、.git/configの、[core]というところに次の行を追加します。
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true sharedRepository = 0600 (<=この行を追加)
以上で新しく作成されるファイルのパーミションについては、気をつかう必要がなくなりました。
ただし、すでに作成されたファイルのパーミションは変更されないので、自分でパーミションを変更しましょう。
0 件のコメント:
コメントを投稿