ここで他の人から掘り下げて助けた後umask
、gitの設定に問題があることがわかりました。私が達成したいのは、サーバーでチェックアウトされているすべての git リポジトリで、umask
設定がデフォルトで 0002 になることです。すべての post-receive フックでこれを構成する必要はありません...デフォルトですumask
。どうすればそれを達成できますか?
私のリポジトリはgit
、サーバー上のユーザーで ssh にログインすることでアップロードされます。設定を確認するとumask
、これはすでに正しい設定に設定されています。
root@server:~# su git
git@server:~$ umask
0002
ただし、umask > /tmp/debug.log
post-receive フックを挿入すると、そのファイルにumask
は 0077が表示されます。これが異なる原因は何ですか?
ルートサーバーにも同じものがあり、リポジトリをチェックアウトするときにumask
なぜ異なるのかわかりません。umask
ユーザーに変更してgit
ファイルを作成すると、すべてうまくいきます。
git@server:~$ touch newfile
git@server:~$ ls -la
total 8
-rw-rw-r-- 1 git git 0 Aug 6 02:17 newfile
-rw------- 1 git git 0 Aug 6 02:16 post
newfile
は私が作成したばかりのpost
ファイルです。ファイルは git 経由でチェックアウトしたファイルで、明らかに異なるアクセス許可を使用しています。umask
git ユーザーの .bashrcにも追加しましたが、役に立ちませんでした。
git@server:~$ cat ~/.bashrc
export LANGUAGE="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LC_TYPE="en_US.UTF-8"
umask 0002
価値のあるものとして、私は gitolite を使用してリポジトリを管理しています。
そして、これは私が使用する受信後フック スクリプトの例です。
#!/bin/sh
export GIT_WORK_TREE=/home/user/www/
git checkout -f