2011-08-12 21 views
4

チームのためにgitを評価しようとしていますが、要件の1つはトランスポート方法としてHTTPSを使用することです。私はgit-http-backendのドキュメントと新しいスマートHTTPトランスポートを使用してこれを設定するためのいくつかの疎なブログに従っていますが、うまく機能していません。私はそれがおそらく何かばかげたことを知っていますが、私はそれの上に私の脳を無駄にしてしまいました。 gitで本当の知識を前提にしていない、私はかなり新しいツールです。権限が不十分Gitに共有するRepo over Smart HTTP


今私は、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のエラーログは言う:

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

fatal: failed to write object


Apache設定:

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 

しかし、私はまだ同じエラーを取得します。

ありがとう、私はこれに得ることができるすべてのヘルプに非常に感謝します。

+0

これは、Apacheのディレクトリへの書き込みをブロックするSELinuxのことになりました。 – bfos

答えて

1

のこの種の私の同じ問題実行してみてください解決:

git repo-config core.sharedRepository true 

これは私にとっても同様の問題を解決しました。ここに示したよう

core.sharedRepository

If true, the repository is made shareable between several users in a group (making sure all the files and objects are group-writable).

あなたが手順を確認することができます(これは間違いなく、権限/グループの問題です):ドキュメントから

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

+0

ありがとうございますが、残念ながらこれはこのエラーを修正していないようです。 #gitのレポ-config設定core.sharedRepository真 #猫の設定 [コア] \t repositoryformatversion = 0 \tファイルモード=真 \t裸=真 \t sharedRepository =真 – bfos

+0

@bfos - 私の答えを更新しました。 – manojlds

+0

私はここで、これがサーバー上でApacheプロセスユーザー(Apache)の下で起こっていると仮定しています。 $ groups apache = "apache:apache"グループとして同じエラーが発生した場合は、すべての(3)コマンドをApacheで実行してください。私はすべての人にr/w権限をリポジトリ全員に与え、同じエラーを出すようになった! – bfos

1

解決策は、おそらくサーバー上のリポジトリのグループアクセス許可にあります。/opt/gitのに

  1. CD
  2. にsudo chgrpコマンド-R apacheのproject.git

I事Apacheは通常、WWWデータとして実行は、Apacheではないので、グループはまた、

間違っている可能性があります

私が使ってgitosisを使用し、代わりにApacheのサーバーアカウントを通じてアカウントを管理するが、解決策

+0

私はそれらの行に沿って何かでなければならないと思っていますが、仕事をしたくないようです。私が使っているこのディストリビューション(CentOS)は "apache"として動作しています。投稿の 'ls'から、ユーザーとグループの両方が「apache」であることがわかりますが、安全な対策のために、明示的な再帰的chgrpを行いましたが、同じエラーです。ちょっと待たずに、gitosis/gitoliteを使ってこれを設定することは、Atlassian Crowd SSOディレクトリに接続して、うまくいけば次のステップになります。 – bfos

関連する問題