私のローカルgitから、私は私のプライベートリモートリポジトリ(ssh経由)にプッシュします。ここでは、すべてのファイルをグループ、特に他人のためのアクセスなしで。リモートのgitファイルを所有者r、wのみに許可
私が意味する考えリモコン.git/config
[core]
sharedRepository 0600
でリモートのgit
関連の設定のコンフィグにgitの内部umaskの上書きを設定することで、自分自身を助けることを試みてきました。 "ちょっとチェックアウトするときはいつも、ちょっと親切にして6(ファイル所有者の権限)、0(グループや他の人には全く権限がない)を設定しますか?
gitのバージョンリモート側は2.7.4です。
これはうまくいきませんでした。何度か新しいファイルをリモート(非裸の)git repoにプッシュしました。その他の試み
は、さらに私は、プリ受け取るフックスクリプトでのumaskを設定することができると考えた。スクリプトが正常にプッシュ時に実行されます
#!/bin/bash
umask > /umask.at.pre-receive
umask 0077
exit 0
.git/hooks/pre-receive
コンテンツが、しかし(オブジェクト、.git
フォルダの内容などを含む)すべてのファイルが書き込ま所望の効果は、(グループの権限usetを持つことになるされており、その他)。
更新
(その間に削除されました)いくつかの答えは、問題がcore.sharedRepository
設定は、ローカルでのみ動作していることかもしれないと、(私の理解に)暗示しました。その結果、リモートで電話を受けるときgit push
は、リモート側がcore.sharedRepository
の設定を使用するのを誘発しません。
答えは、チェックアウトする前にファイルを変更できるように、smudge-filtersを調べるように提案されました。 これは、この質問に描かれている問題の部分的な解決策かもしれません。
私は、この方法でファイルモード(ファイルの内容のみ)を変更できないことを発見したため、私は汚れフィルタについて私の答えを削除しました。私はこれに少し戸惑っています。私は現在解決策を探していますが、現時点でGitにそのような機能がないと驚くことはありません。 –
@PatrykObara私はとにかく答えを高く評価しました。 'core.sharedRepository'が" dead-end "になる理由は、この設定がファイルシステムのローカルパーミッションにのみ適用されるからです。 – humanityANDpeace