5

私はubuntuサーバーでgitをセットアップし、ローカルリポジトリをサーバーにプッシュしていて、以下のエラーが発生しました。2つのフォルダーのアクセス許可を変更すると、機能します。git init --bareセットアップ時に、作成された権限だけで機能しない理由を理解したいだけです。また777、これらのフォルダーに最適なアクセス許可はありますか?これを修正するより合法的な方法はありますか?

最初のエラー:

error: insufficient permission for adding an object to repository database ./objects

最初の解決策:

sudo chmod 777 objects/

2番目のエラー:

fatal: Unable to create '/srv/git/example.com.git/refs/heads/master.lock': Permission denied

2番目の解決策:

sudo chmod 777 refs/heads/
4

2 に答える 2

11

ランニング

$ git init --shared=0777 --bare

あなたがやりたいことをする必要があります。

http://git-scm.com/docs/git-initから

または、サーバーにopensshサーバーをセットアップし、ユーザーにsshを介してこのリポジトリにアクセスさせることもできます。

于 2012-06-22T18:06:38.830 に答える
4

777パーミッションを使用したいというのは非常に悪い兆候です。あなたは何か間違ったことをしている。

何よりもまず、すでに提案したように、gitoliteの使用を検討してください。

1人または2人の寄稿者に対して1つまたは2つを超えるリポジトリがない可能性が高い場合、特にこれまでに作業したことがない場合は、gitoliteがオーバーヘッドに見える可能性があります。(しかし、私はまだそれを使用することをお勧めします。)

gitoliteを使用する前に、このスクリプトを使用して共有gitリポジトリを作成しました。使い方:

  1. (特定のリポジトリの)すべてのGitリポジトリユーザーは同じグループに属している必要があります。
  2. リポジトリのディレクトリは、このグループが所有している必要があります。
  3. スティッキーグループビットはこのディレクトリに設定する必要があります(ファイルに設定しないように注意してください)。これにより、ユーザーがコンテンツをコミットするときにグループが保持されます。
  4. Gitリポジトリは--shared、グループ書き込み権限を付与するために、オプションで初期化する必要があります。
于 2012-06-23T06:58:54.297 に答える