4

チームのために git を評価しようとしていますが、要件の 1 つは転送方法として HTTPS を使用することです。新しい Smart HTTP トランスポートを使用してこれを設定する方法について、 git-http-backend のドキュメントといくつかのまばらなブログをフォローしようとしましたが、うまくいきません。私はそれがおそらくばかげたことであることを知っていますが、私はそれについて頭を悩ませましたが役に立ちませんでした. git に関する実際の知識を前提としないでください。私はこのツールを初めて使用します。


現在、HTTP 経由で問題なくクローンを作成できますが、プッシュしようとすると、クライアントは次のようになります。

$ git push
Username:
Password:
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 291 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
error: unpack failed: unpack-objects abnormal exit


サーバーのApacheエラーログには次のように書かれています:

エラー: リポジトリ データベース ./objects にオブジェクトを追加するための権限が不十分です

致命的: オブジェクトの書き込みに失敗しました


アパッチ構成:

SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

<Location /git>
        AuthType Basic
        AuthName "Private Git Access"
        Require valid-user
        AuthUserFile /opt/git/passwords
</Location>


明らかに、最初に考えたのはファイルのアクセス許可だったので、簡単にchown -R apache: /opt/gitを実行しました。

# ls -l /opt/git
drwxr-xr-x. 7 apache apache 4096 Aug 12 11:06 project.git

しかし、私はまだ同じエラーが発生します。

ありがとうございます。

4

2 に答える 2

1

解決策は、おそらくサーバー上のリポジトリのグループ権限にあります。

  1. /opt/git に移動
  2. sudo chgrp -R apache project.git

Apacheは通常、Apacheではなくwww-dataとして実行されるため、グループも間違っている可能性があります

私はgitosisを使用し、Apacheの代わりにサーバーアカウントを介してアカウントを管理していますが、この種のソリューションで同じ問題を解決しました

于 2011-08-12T16:04:29.840 に答える
1

実行してみてください:

git repo-config core.sharedRepository true

これは私にとって同様の問題を解決しました。ドキュメントから:

core.sharedRepository

true の場合、リポジトリはグループ内の複数のユーザー間で共有可能になります (すべてのファイルとオブジェクトがグループ書き込み可能であることを確認してください)。

ここに記載されている手順を確認できますか (これは間違いなく権限/グループの問題です):

http://parizek.com/?p=177

于 2011-08-12T16:06:12.163 に答える