tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

error: insufficient permission for adding an object to repository database ./objects的なエラーが出る

はじめに

git使い始めたばかりでわからないことも多いのでとにかく対応内容をメモ

エラー内容

git pushしようとするとタイトルのエラーが出る。
こんな感じ

[hoge@hoge]# git push
Enter passphrase for key '/home/hoge/.ssh/id_rsa':
Counting objects: 24, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (17/17), done.
Writing objects: 100% (17/17), 1.54 KiB, done.
Total 17 (delta 10), reused 0 (delta 0)
error: insufficient permission for adding an object to repository database ./objects

fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To git:/x/hoge.git
&#160;! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'git:/x/hoge.git'

ぐぐってたらこんな感じのが出てきた
http://yaman256.blog47.fc2.com/blog-entry-1190.html

よくわからないなりに対応してみる
リポジトリパーミッションが怪しいということでgitサーバに入っていろいろ確認

# cd test/hoge.git
# ll
drwxrwsr-x   7 hoge         hoge 4096 Nov 12 11:26 ./
drwxrwxr-x  75 hoge         hoge 4096 Nov 28 09:29 ../
-rwxrwxr-x   1 hoge         hoge   23 Jul 30 19:28 HEAD*
drwxrwxr-x   2 hoge         hoge 4096 Jul 30 19:28 branches/
-rwxrwxr-x   1 hoge         hoge  126 Jul 30 19:52 config*
-rwxrwxr-x   1 hoge         hoge   73 Jul 30 19:28 description*
drwxrwxr-x   2 hoge         hoge 4096 Jul 30 20:12 hooks/
drwxrwxr-x   2 hoge         hoge 4096 Nov 12 11:26 info/
drwxrwxr-x 260 hoge         hoge 4096 Nov 13 18:53 objects/
-rw-rw-r--   1 hoge         hoge   85 Nov 12 11:26 packed-refs
drwxrwxr-x   4 hoge         hoge 4096 Jul 30 19:28 refs/

# cd objects/
# ll
drwxrwxrwx 107 hoge          hoge  4096 Dec  6 21:32 ./
drwxr-xr-x   7 hoge          hoge  4096 Dec  6 18:05 ../
drwxrwxrwx   2 hoge          hoge  4096 Nov 26 22:19 01/
…
drwxrwxrwx   2 hoge          hoge  4096 Dec  3 22:59 f9/
drwxrwsr-x   2 root          wheel 4096 Dec  6 21:05 fe/
drwxrwxrwx   2 hoge          hoge  4096 Nov  6 19:15 info/
drwxrwxrwx   2 hoge          hoge  4096 Nov 22 22:17 pack/

root権限でpushしちゃったやつが原因?と思ったので
とりあえずobjects以下をすべてchown hoge:hoge

次にpushしてみたら成功!
と、思いきや、他の人がpushできない。。。と

もう一度確認すると

# cd objects/
# ll
drwxrwxrwx 107 hoge          hoge  4096 Dec  6 21:32 ./
drwxr-xr-x   7 hoge          hoge  4096 Dec  6 18:05 ../
drwxrwxrwx   2 hoge          hoge  4096 Nov 26 22:19 01/
…
drwxrwxrwx   2 hoge          hoge  4096 Dec  3 22:59 f9/
drwxrwsr-x   2 hoge          hoge  4096 Dec  6 21:05 fe/
drwxr-xr-x   2 geho          geho  4096 Nov  6 19:15 info/
drwxrwxrwx   2 hoge          hoge  4096 Nov 22 22:17 pack/

drwxr-xr-xのせい?と思ってchmod 777してみるも最初のpusuだけ成功して、他の人がやるとまたダメっぽい

さらにぐぐってみるとこんなのが出てきたので
今度はgit configを直してみることに
http://criticallog.thornet.net/2010/01/07/sharing-your-git-repository/
http://d.hatena.ne.jp/kuma8/20110115/1295100616

# cd cd test/hoge.git
# vi config
----vi
[core]
        repositoryformatversion = 0
        filemode = true
        bare = true
        sharedrepository = group←追加(もともとなかった
[receive]
        denyNonFastforwards = true←追加(もともとなかった
----vi

としてみると、push成功!denyNonFastforwards = trueについてはなぜか入れないとできなかったけどなぜか忘れました。


エラーからぐぐったらあまり出てこなかったけど、sharedrepositoryでぐぐると結構出てきますね。
http://d.hatena.ne.jp/kuma8/20110115/1295100616
http://d.hatena.ne.jp/suer/20090218
リポジトリをチーム(グループ)で共有する設定が必要ということのようです。