4

ここで他の人から掘り下げて助けた後umask、gitの設定に問題があることがわかりました。私が達成したいのは、サーバーでチェックアウトされているすべての git リポジトリで、umask設定がデフォルトで 0002 になることです。すべての post-receive フックでこれを構成する必要はありません...デフォルトですumask。どうすればそれを達成できますか?

私のリポジトリはgit、サーバー上のユーザーで ssh にログインすることでアップロードされます。設定を確認するとumask、これはすでに正しい設定に設定されています。

root@server:~# su git 
git@server:~$ umask
0002

ただし、umask > /tmp/debug.logpost-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 経由でチェックアウトしたファイルで、明らかに異なるアクセス許可を使用しています。umaskgit ユーザーの .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
4

2 に答える 2

2

したがって、私がジトライトを使用していることは重要であることがわかりました. なんで?gitolite 構成には、新しいファイルの umask を指示する設定があるためです。奇妙なことに、以前の gitolite インストールではこの設定を変更する必要はありませんでしたが、おそらくデフォルトが変更されています。いずれにせよ、これが私が最終的にそれを整理した方法です:

ファイルを開き~/.gitolite.rcます。

次の行を見つけます。

$REPO_UMASK = 0077;

そして、選択した設定に変更します。たとえば、次のようになります。

$REPO_UMASK = 0002;

その後、ようやくうまくいきました!

于 2016-08-06T07:31:26.353 に答える