{"thread":{"id":"17018","subject":"Error: unable to unlink ... when using \"git gc\"","startedAt":"2009-01-06T07:00:52Z","lastAt":"2009-01-07T19:46:32Z","messageCount":17,"participants":["Johnny Lee","Jeff King","Junio C Hamano","Sitaram Chamarty","Matthieu Moy","Boyd Stephen Smith Jr."],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"99425","messageId":"488807870901052300y57f59b90rdc03cc47c790b416@mail.gmail.com","threadId":"17018","inReplyTo":null,"subject":"Error: unable to unlink ... when using \"git gc\"","fromName":"Johnny Lee","fromEmail":"johnnylee194@gmail.com","sentAt":"2009-01-06T07:00:52Z","receivedAt":"2009-01-06T07:00:52Z","isPatch":false,"sender":{"key":"johnnylee194@gmail.com","avatar":"https://gravatar.com/avatar/88def25aef325f1ca5607d6009a3f9663fcc2db6adfa93f7bd999c098710189f?d=mp&s=160"},"body":"Hello Everyone,\n\nI'm new in git, and when I was practicing the tutorial:\nhttp://www.kernel.org/pub/software/scm/git/docs/everyday.html\n\nI've had a problem when using \"git gc\"\n\nHere is the log:\ngit@tomato:~/golf$ git gc\nGenerating pack...\nDone counting 121847 objects.\nDeltifying 121847 objects...\n 100% (121847/121847) done\nWriting 121847 objects...\n 100% (121847/121847) done\nTotal 121847 (delta 62587), reused 121184 (delta 62253)\nPack pack-44320b247756067835f5e4a789c7eb5bcc5266c3 created.\nerror: unable to unlink .git/objects/16/b14f5da9e2fcd6f3f38cc9e584cef2f3c90ebe\nerror: unable to unlink .git/objects/a1/f6672f6e5bd90acf16a43fea774ca655a3ab1e\nerror: unable to unlink .git/objects/a8/5cca5b91cf77e8df731827849308ef6dae4536\nerror: unable to unlink .git/objects/ae/64c9d0ea558e403acf139f690c804212d490be\nerror: unable to unlink .git/objects/b3/a4c72ea70a3bb43b1819a0a74268870849a21d\nerror: unable to unlink .git/objects/db/5ec507a2ed86169e4a31bba1d95067c4f3fac4\nerror: unable to unlink .git/objects/ef/65ed2454b8dcbf8837595d8881ca42898a491c\nerror: unable to unlink .git/objects/fb/92c37ccc8bdbf3c70bc3afaf8261cedbc92d71\nRemoving unused objects 100%...\nDone.\n\nWhile I'm looking at these \"unable to unlink\" files, it seems they are\nread only:\ngit@tomato:~/golf$ ls -l .git/objects/16/\ntotal 4\n-r--r--r-- 1 johnny johnny 26 2009-01-05 09:25\nb14f5da9e2fcd6f3f38cc9e584cef2f3c90ebe\n\nIs there anything wrong here?\n\nBTW. I've used git fsck with/without --full, it works fine and no\nerror is reported.\n\nThanks for your consideration,\nJohnny\n\n-- \nwe all have our crosses to bear\n"},{"id":"99426","messageId":"20090106072253.GA9920@coredump.intra.peff.net","threadId":"17018","inReplyTo":"488807870901052300y57f59b90rdc03cc47c790b416@mail.gmail.com","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2009-01-06T07:22:54Z","receivedAt":"2009-01-06T07:22:54Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Jan 06, 2009 at 03:00:52PM +0800, Johnny Lee wrote:\n\n> While I'm looking at these \"unable to unlink\" files, it seems they are\n> read only:\n> git@tomato:~/golf$ ls -l .git/objects/16/\n> total 4\n> -r--r--r-- 1 johnny johnny 26 2009-01-05 09:25\n> b14f5da9e2fcd6f3f38cc9e584cef2f3c90ebe\n> \n> Is there anything wrong here?\n\nIt is normal for objects to be read-only. However, permission to unlink\na file comes from its directory permission. Is .git/objects/16 writable\nby you?\n\n-Peff\n"},{"id":"99427","messageId":"20090106080300.GA10079@coredump.intra.peff.net","threadId":"17018","inReplyTo":"488807870901052352w585da727r6d4a1e4ca4238cab@mail.gmail.com","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2009-01-06T08:03:00Z","receivedAt":"2009-01-06T08:03:00Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"[re-adding git@vger; please keep discussion on-list so everyone can\nbenefit from the result]\n\nOn Tue, Jan 06, 2009 at 03:52:12PM +0800, Johnny Lee wrote:\n\n> Thanks Peff, I've checked the permission of .git/objects/16, it's\n> created by another user and thus I have no permission to remove it.\n> \n> In fact, this is coming from a previous bad practice on setting up a\n> collaboration repository on a SSH server, here is what I've done so\n> far:\n> [...]\n> 7. Then the user \"git\" has changed mode for all the files under .git\n> to writable.\n> \n> 8. This time, user \"johnny\" can push successfully.\n\nIf you are going to have multiple users sharing a repository, generally\nthey should be in the same group and the core.sharedrepository config\noption should be set (see \"git help config\", or the \"shared\" option to\ngit-init).\n\nI've never used that personally, though. I have always just used POSIX\nACLs, with a default ACL on each directory giving access to everyone.\nE.g. (off the top of my head):\n\n  for user in user1 user2 user3; do\n    setfacl -R -m u:$user:rwX -m d:u:$user:rwX /path/to/repo\n  done\n\n-Peff\n"},{"id":"99428","messageId":"488807870901060009i2f9f8b3dnb6be4b416d3b1318@mail.gmail.com","threadId":"17018","inReplyTo":"20090106080300.GA10079@coredump.intra.peff.net","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Johnny Lee","fromEmail":"johnnylee194@gmail.com","sentAt":"2009-01-06T08:09:16Z","receivedAt":"2009-01-06T08:09:16Z","isPatch":false,"sender":{"key":"johnnylee194@gmail.com","avatar":"https://gravatar.com/avatar/88def25aef325f1ca5607d6009a3f9663fcc2db6adfa93f7bd999c098710189f?d=mp&s=160"},"body":"Ooops, forgot to cc to the mailing list.\n\nThanks for your sharing Peff, I'm going to check these stuffs out and\nget back with any findings.\n\nRegards,\nJohnny\n\nOn Tue, Jan 6, 2009 at 4:03 PM, Jeff King <peff@peff.net> wrote:\n> [re-adding git@vger; please keep discussion on-list so everyone can\n> benefit from the result]\n>\n> On Tue, Jan 06, 2009 at 03:52:12PM +0800, Johnny Lee wrote:\n>\n>> Thanks Peff, I've checked the permission of .git/objects/16, it's\n>> created by another user and thus I have no permission to remove it.\n>>\n>> In fact, this is coming from a previous bad practice on setting up a\n>> collaboration repository on a SSH server, here is what I've done so\n>> far:\n>> [...]\n>> 7. Then the user \"git\" has changed mode for all the files under .git\n>> to writable.\n>>\n>> 8. This time, user \"johnny\" can push successfully.\n>\n> If you are going to have multiple users sharing a repository, generally\n> they should be in the same group and the core.sharedrepository config\n> option should be set (see \"git help config\", or the \"shared\" option to\n> git-init).\n>\n> I've never used that personally, though. I have always just used POSIX\n> ACLs, with a default ACL on each directory giving access to everyone.\n> E.g. (off the top of my head):\n>\n>  for user in user1 user2 user3; do\n>    setfacl -R -m u:$user:rwX -m d:u:$user:rwX /path/to/repo\n>  done\n>\n> -Peff\n>\n\n\n\n-- \nwe all have our crosses to bear\n"},{"id":"99452","messageId":"7vy6xohkt2.fsf@gitster.siamese.dyndns.org","threadId":"17018","inReplyTo":"488807870901052300y57f59b90rdc03cc47c790b416@mail.gmail.com","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-01-06T08:59:21Z","receivedAt":"2009-01-06T08:59:21Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\"Johnny Lee\" <johnnylee194@gmail.com> writes:\n\n> While I'm looking at these \"unable to unlink\" files, it seems they are\n> read only:\n> git@tomato:~/golf$ ls -l .git/objects/16/\n> total 4\n> -r--r--r-- 1 johnny johnny 26 2009-01-05 09:25\n> b14f5da9e2fcd6f3f38cc9e584cef2f3c90ebe\n\n\nCheck \"ls -ld .git/objects/16\" and see if it is owned by you and writable\nby you.\n\nIn sane POSIX filesystem semantics, it should not pose with problem with\nrespect to removal that a file is unwritable.\n\nWhat counts is the writability of the parent directory.\n"},{"id":"99454","messageId":"488807870901060118y2dbc7430ocea5cf9ce4bca3c7@mail.gmail.com","threadId":"17018","inReplyTo":"7vy6xohkt2.fsf@gitster.siamese.dyndns.org","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Johnny Lee","fromEmail":"johnnylee194@gmail.com","sentAt":"2009-01-06T09:18:21Z","receivedAt":"2009-01-06T09:18:21Z","isPatch":false,"sender":{"key":"johnnylee194@gmail.com","avatar":"https://gravatar.com/avatar/88def25aef325f1ca5607d6009a3f9663fcc2db6adfa93f7bd999c098710189f?d=mp&s=160"},"body":"Thanks for your consideration Junio,\n\nPeff has already helped me to figure out the root cause of this error\nis a possible bad practice on collaboration work.\n\nHere I attached the previous mail.\n\n>>>>>>\nThanks Peff, I've checked the permission of .git/objects/16, it's\ncreated by another user and thus I have no permission to remove it.\n\nIn fact, this is coming from a previous bad practice on setting up a\ncollaboration repository on a SSH server, here is what I've done so\nfar:\n1. I have a server tomato, which has two users: \"git\" and \"johnny\"\n\n2. User \"git\" has cloned a repository from elsewhere as ~git/golf/.git\n\n3. User \"johnny\" has cloned this repository from git on another\nmachine, using command:\ngit clone johnny@tomato:~git/golf/.git localgit\n\n4. It works fine, and user \"johnny\" has made some local commits and\nwants to push the changes to git's repository, so he uses:\ngit push\n\n5. But it's reported some errors about permissions, like:\nerror: Unable to append to logs/refs/heads/cupcake: Permission denied\nerror: Unable to append to logs/refs/remotes/origin/cupcake: Permission denied\nerror: Unable to append to logs/refs/remotes/origin/cupcake: Permission denied\nng refs/heads/cupcake failed to write\nng refs/remotes/origin/HEAD failed to write\nng refs/remotes/origin/cupcake failed to write\nerror: failed to push to 'johnny@tomato:~git/golf/.git'\n\n6. That's normal, since the ~git/golf/.git is created by user \"git\",\nand user \"johnny\" can't write it.\n\n7. Then the user \"git\" has changed mode for all the files under .git\nto writable.\n\n8. This time, user \"johnny\" can push successfully.\n\n9. But as you can see here, some files are created by user \"johnny\",\nand thus user \"git\" can't write them.\n\nIt seems not a good practice for collaboration work, would you please\nshare your experiences with us?\n\nThanks very much and regards,\nJohnny\n\nOn Tue, Jan 6, 2009 at 4:59 PM, Junio C Hamano <gitster@pobox.com> wrote:\n> \"Johnny Lee\" <johnnylee194@gmail.com> writes:\n>\n>> While I'm looking at these \"unable to unlink\" files, it seems they are\n>> read only:\n>> git@tomato:~/golf$ ls -l .git/objects/16/\n>> total 4\n>> -r--r--r-- 1 johnny johnny 26 2009-01-05 09:25\n>> b14f5da9e2fcd6f3f38cc9e584cef2f3c90ebe\n>\n>\n> Check \"ls -ld .git/objects/16\" and see if it is owned by you and writable\n> by you.\n>\n> In sane POSIX filesystem semantics, it should not pose with problem with\n> respect to removal that a file is unwritable.\n>\n> What counts is the writability of the parent directory.\n>\n\n\n\n-- \nwe all have our crosses to bear\n"},{"id":"99463","messageId":"slrngm6hoj.n4a.sitaramc@sitaramc.homelinux.net","threadId":"17018","inReplyTo":"20090106080300.GA10079@coredump.intra.peff.net","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Sitaram Chamarty","fromEmail":"sitaramc@gmail.com","sentAt":"2009-01-06T11:57:07Z","receivedAt":"2009-01-06T11:57:07Z","isPatch":false,"sender":{"key":"sitaramc@gmail.com","avatar":"https://avatars.githubusercontent.com/u/43316?v=4"},"body":"On 2009-01-06, Jeff King <peff@peff.net> wrote:\n> If you are going to have multiple users sharing a repository, generally\n> they should be in the same group and the core.sharedrepository config\n> option should be set (see \"git help config\", or the \"shared\" option to\n> git-init).\n>\n> I've never used that personally, though. I have always just used POSIX\n> ACLs, with a default ACL on each directory giving access to everyone.\n> E.g. (off the top of my head):\n>\n>   for user in user1 user2 user3; do\n>     setfacl -R -m u:$user:rwX -m d:u:$user:rwX /path/to/repo\n>   done\n\nIf you're not worried about the finer-grained access control\nthat acl(5) gives you, just do what \"git init\n--shared=group\" does:\n\n    git config core.sharedrepository 1 # as mentioned above\n    chmod g+ws .git\n\nNow set the group to something (I use \"gitpushers\" ;-)\n\n    chgrp -R gitpushers .git\n\namd make sure all your users are part of that group.\n\nWorks fine for small teams...\n"},{"id":"99470","messageId":"vpq3afwd0o6.fsf@bauges.imag.fr","threadId":"17018","inReplyTo":"488807870901060118y2dbc7430ocea5cf9ce4bca3c7@mail.gmail.com","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Matthieu Moy","fromEmail":"matthieu.moy@imag.fr","sentAt":"2009-01-06T13:27:53Z","receivedAt":"2009-01-06T13:27:53Z","isPatch":false,"sender":{"key":"git@matthieu-moy.fr","avatar":"https://avatars.githubusercontent.com/u/14709?v=4"},"body":"\"Johnny Lee\" <johnnylee194@gmail.com> writes:\n\n> Thanks for your consideration Junio,\n>\n> Peff has already helped me to figure out the root cause of this error\n> is a possible bad practice on collaboration work.\n>\n> Here I attached the previous mail.\n\nSee core.sharedRepository in man git-config or\nhttp://www.kernel.org/pub/software/scm/git/docs/git-config.html\n\n-- \nMatthieu\n"},{"id":"99473","messageId":"488807870901060705m49419ec1he14aace5caaa3d89@mail.gmail.com","threadId":"17018","inReplyTo":"slrngm6hoj.n4a.sitaramc@sitaramc.homelinux.net","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Johnny Lee","fromEmail":"johnnylee194@gmail.com","sentAt":"2009-01-06T15:05:17Z","receivedAt":"2009-01-06T15:05:17Z","isPatch":false,"sender":{"key":"johnnylee194@gmail.com","avatar":"https://gravatar.com/avatar/88def25aef325f1ca5607d6009a3f9663fcc2db6adfa93f7bd999c098710189f?d=mp&s=160"},"body":"Copy that.\n\nThanks Sitaram.\n\nWe also plan to do it in this way, just a small wondering that it\nlooks a kind of workaround instead of a more graceful solution.\n\nRegards,\nJohnny\n\nOn Tue, Jan 6, 2009 at 7:57 PM, Sitaram Chamarty <sitaramc@gmail.com> wrote:\n> On 2009-01-06, Jeff King <peff@peff.net> wrote:\n>> If you are going to have multiple users sharing a repository, generally\n>> they should be in the same group and the core.sharedrepository config\n>> option should be set (see \"git help config\", or the \"shared\" option to\n>> git-init).\n>>\n>> I've never used that personally, though. I have always just used POSIX\n>> ACLs, with a default ACL on each directory giving access to everyone.\n>> E.g. (off the top of my head):\n>>\n>>   for user in user1 user2 user3; do\n>>     setfacl -R -m u:$user:rwX -m d:u:$user:rwX /path/to/repo\n>>   done\n>\n> If you're not worried about the finer-grained access control\n> that acl(5) gives you, just do what \"git init\n> --shared=group\" does:\n>\n>    git config core.sharedrepository 1 # as mentioned above\n>    chmod g+ws .git\n>\n> Now set the group to something (I use \"gitpushers\" ;-)\n>\n>    chgrp -R gitpushers .git\n>\n> amd make sure all your users are part of that group.\n>\n> Works fine for small teams...\n>\n> --\n> To unsubscribe from this list: send the line \"unsubscribe git\" in\n> the body of a message to majordomo@vger.kernel.org\n> More majordomo info at  http://vger.kernel.org/majordomo-info.html\n>\n\n\n\n-- \nwe all have our crosses to bear\n"},{"id":"99478","messageId":"slrngm6uf5.vuo.sitaramc@sitaramc.homelinux.net","threadId":"17018","inReplyTo":"488807870901060705m49419ec1he14aace5caaa3d89@mail.gmail.com","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Sitaram Chamarty","fromEmail":"sitaramc@gmail.com","sentAt":"2009-01-06T15:33:57Z","receivedAt":"2009-01-06T15:33:57Z","isPatch":false,"sender":{"key":"sitaramc@gmail.com","avatar":"https://avatars.githubusercontent.com/u/43316?v=4"},"body":"On 2009-01-06, Johnny Lee <johnnylee194@gmail.com> wrote:\n\n> On Tue, Jan 6, 2009 at 7:57 PM, Sitaram Chamarty <sitaramc@gmail.com> wrote:\n\n>> If you're not worried about the finer-grained access control\n>> that acl(5) gives you, just do what \"git init\n>> --shared=group\" does:\n>>\n>>    git config core.sharedrepository 1 # as mentioned above\n>>    chmod g+ws .git\n>>\n>> Now set the group to something (I use \"gitpushers\" ;-)\n>>\n>>    chgrp -R gitpushers .git\n>>\n>> amd make sure all your users are part of that group.\n\n> We also plan to do it in this way, just a small wondering that it\n> looks a kind of workaround instead of a more graceful solution.\n\nI wouldn't consider it a workaround.  It uses normal Unix\npermissions the way they were designed to, including setgid\nfor directories.\n\nActually, I am yet to come up with a situation where I\nactually needed ACLs, though they are more generalised, and\nfine-grained.\n\nAnd the maint is all eminently scriptable.\n"},{"id":"100976","messageId":"20090107055947.GA22616@coredump.intra.peff.net","threadId":"17018","inReplyTo":"slrngm6uf5.vuo.sitaramc@sitaramc.homelinux.net","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Jeff King","fromEmail":"peff@peff.net","sentAt":"2009-01-07T05:59:47Z","receivedAt":"2009-01-07T05:59:47Z","isPatch":false,"sender":{"key":"peff@peff.net","avatar":"https://avatars.githubusercontent.com/u/45925?v=4"},"body":"On Tue, Jan 06, 2009 at 03:33:57PM +0000, Sitaram Chamarty wrote:\n\n> > We also plan to do it in this way, just a small wondering that it\n> > looks a kind of workaround instead of a more graceful solution.\n> \n> I wouldn't consider it a workaround.  It uses normal Unix\n> permissions the way they were designed to, including setgid\n> for directories.\n\nYes, I think core.sharedrepository is the \"official\" way to do this, so\nit is definitely not a workaround.\n\n> Actually, I am yet to come up with a situation where I\n> actually needed ACLs, though they are more generalised, and\n> fine-grained.\n\nI like ACLs mainly because you don't have to bug root to change\npermissions (like you do to get them to create or modify a group).\n\n-Peff\n"},{"id":"99546","messageId":"200901070027.21721.bss@iguanasuicide.net","threadId":"17018","inReplyTo":"slrngm6hoj.n4a.sitaramc@sitaramc.homelinux.net","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Boyd Stephen Smith Jr.","fromEmail":"bss@iguanasuicide.net","sentAt":"2009-01-07T06:27:17Z","receivedAt":"2009-01-07T06:27:17Z","isPatch":false,"sender":{"key":"bss@iguanasuicide.net","avatar":"https://gravatar.com/avatar/84b95eeff194b816c1568b1339e63e4b229825298664a9037b9f1ec713ead1e3?d=mp&s=160"},"body":"On Tuesday 06 January 2009, Sitaram Chamarty <sitaramc@gmail.com> wrote \nabout 'Re: Error: unable to unlink ... when using \"git gc\"':\n>On 2009-01-06, Jeff King <peff@peff.net> wrote:\n>> If you are going to have multiple users sharing a repository, generally\n>> they should be in the same group and the core.sharedrepository config\n>> option should be set (see \"git help config\", or the \"shared\" option to\n>> git-init).\n>If you're not worried about the finer-grained access control\n>that acl(5) gives you, just do what \"git init\n>--shared=group\" does:\n>\n>    git config core.sharedrepository 1 # as mentioned above\n>    chmod g+ws .git\n>\n>Now set the group to something (I use \"gitpushers\" ;-)\n>\n>    chgrp -R gitpushers .git\n>\n>amd make sure all your users are part of that group.\n>\n>Works fine for small teams...\n\nISTR this breaking here when someone on the team had a umask like 077 and \nwas using file:// or ssh:// to push.  I tended up \"fixing\" things with a \ncronjob, (which is a bit of a hack) IIRC.\n-- \nBoyd Stephen Smith Jr.                     ,= ,-_-. =. \nbss@iguanasuicide.net                     ((_/)o o(\\_))\nICQ: 514984 YM/AIM: DaTwinkDaddy           `-'(. .)`-' \nhttp://iguanasuicide.net/                      \\_/     \n"},{"id":"99568","messageId":"slrngm92hr.72d.sitaramc@sitaramc.homelinux.net","threadId":"17018","inReplyTo":"200901070027.21721.bss@iguanasuicide.net","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Sitaram Chamarty","fromEmail":"sitaramc@gmail.com","sentAt":"2009-01-07T10:55:56Z","receivedAt":"2009-01-07T10:55:56Z","isPatch":false,"sender":{"key":"sitaramc@gmail.com","avatar":"https://avatars.githubusercontent.com/u/43316?v=4"},"body":"On 2009-01-07, Boyd Stephen Smith Jr. <bss@iguanasuicide.net> wrote:\n> On Tuesday 06 January 2009, Sitaram Chamarty <sitaramc@gmail.com> wrote=20\n\n>>    chmod g+ws .git\n>>\n>>Now set the group to something (I use \"gitpushers\" ;-)\n>>\n>>    chgrp -R gitpushers .git\n\n> ISTR this breaking here when someone on the team had a umask like 077 and=20\n> was using file:// or ssh:// to push.  I tended up \"fixing\" things with a=20\n> cronjob, (which is a bit of a hack) IIRC.\n\nThat doesn't sound right.  \"git help init\" says:\n - 0xxx: 0xxx is an octal number and each file will have mode 0xxx\n - 0xxx will override users umask(2) value, and thus, users\n   with a safe umask (0077) can use this option\n - 0660 is equivalent to group.\n\nSo when you say \"group\", you're saying \"0660\", and when you\nsay \"0660\", you're overriding users umask value.\n\nI sorta-kinda tested it (some output of the \"find|xargs ls\"\nis snipped for brevity):\n\n    $ mkdir umt;cd umt\n    $ umask         \n    0022                                 \n    $ git init --shared=group\n    Initialized empty shared Git repository in /home/sitaram/t/umt/.git/\n    (reverse-i-search)`find': sfind f|ack .git|map -x du -sk |sort -n\n    $ find . -type d|xargs ls -ald     \n    drwxr-xr-x 3 sitaram sitaram 4096 2009-01-07 15:59 .             \n    drwxrwsr-x 7 sitaram sitaram 4096 2009-01-07 15:59 ./.git        \n\n    $ dummy_commit                   \n    Created initial commit afb2645: file-30824 at Wed Jan  7 15:59:23 IST 2009\n     1 files changed, 1 insertions(+), 0 deletions(-)\n     create mode 100644 file-30824\n    $ find . -type d|xargs ls -ald\n    drwxr-xr-x 3 sitaram sitaram 4096 2009-01-07 15:59 .\n    drwxrwsr-x 9 sitaram sitaram 4096 2009-01-07 15:59 ./.git\n    drwxrwsr-x 2 sitaram sitaram 4096 2009-01-07 15:59 ./.git/objects/a7\n    drwxrwsr-x 2 sitaram sitaram 4096 2009-01-07 15:59 ./.git/objects/af\n    drwxrwsr-x 2 sitaram sitaram 4096 2009-01-07 15:59 ./.git/objects/ca\n\n    $ umask 077\n    $ jeeves dummy_commit\n    Created commit 232f157: file-3025 at Wed Jan  7 15:59:36 IST 2009\n     1 files changed, 1 insertions(+), 0 deletions(-)\n     create mode 100644 file-3025\n    $ find . -type d|xargs ls -ald\n    drwxr-xr-x  3 sitaram sitaram 4096 2009-01-07 15:59 .\n    drwxrwsr-x  9 sitaram sitaram 4096 2009-01-07 15:59 ./.git\n    drwxrws---  2 sitaram sitaram 4096 2009-01-07 15:59 ./.git/objects/23\n    drwxrwsr-x  2 sitaram sitaram 4096 2009-01-07 15:59 ./.git/objects/a7\n    drwxrws---  2 sitaram sitaram 4096 2009-01-07 15:59 ./.git/objects/a8\n    drwxrwsr-x  2 sitaram sitaram 4096 2009-01-07 15:59 ./.git/objects/af\n    drwxrws---  2 sitaram sitaram 4096 2009-01-07 15:59 ./.git/objects/c7\n    drwxrwsr-x  2 sitaram sitaram 4096 2009-01-07 15:59 ./.git/objects/ca\n"},{"id":"99573","messageId":"slrngm980v.72d.sitaramc@sitaramc.homelinux.net","threadId":"17018","inReplyTo":"slrngm92hr.72d.sitaramc@sitaramc.homelinux.net","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Sitaram Chamarty","fromEmail":"sitaramc@gmail.com","sentAt":"2009-01-07T12:29:19Z","receivedAt":"2009-01-07T12:29:19Z","isPatch":false,"sender":{"key":"sitaramc@gmail.com","avatar":"https://avatars.githubusercontent.com/u/43316?v=4"},"body":"On 2009-01-07, Sitaram Chamarty <sitaramc@gmail.com> wrote:\n>     $ dummy_commit                   \n>     $ jeeves dummy_commit\n\nerr, helper functions.  Should have mentioned.\n\nI do a lot of playing around with git :-)\n"},{"id":"99588","messageId":"200901070948.34117.bss@iguanasuicide.net","threadId":"17018","inReplyTo":"slrngm92hr.72d.sitaramc@sitaramc.homelinux.net","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Boyd Stephen Smith Jr.","fromEmail":"bss@iguanasuicide.net","sentAt":"2009-01-07T15:48:33Z","receivedAt":"2009-01-07T15:48:33Z","isPatch":false,"sender":{"key":"bss@iguanasuicide.net","avatar":"https://gravatar.com/avatar/84b95eeff194b816c1568b1339e63e4b229825298664a9037b9f1ec713ead1e3?d=mp&s=160"},"body":"On Wednesday 2009 January 07 04:55:56 you wrote:\n> On 2009-01-07, Boyd Stephen Smith Jr. <bss@iguanasuicide.net> wrote:\n> > On Tuesday 06 January 2009, Sitaram Chamarty <sitaramc@gmail.com>\n> > wrote=20\n> >\n> >>    chmod g+ws .git\n> >>\n> >>Now set the group to something (I use \"gitpushers\" ;-)\n> >>\n> >>    chgrp -R gitpushers .git\n> >\n> > ISTR this breaking here when someone on the team had a umask like 077\n> > and=20 was using file:// or ssh:// to push.  I tended up \"fixing\" things\n> > with a=20 cronjob, (which is a bit of a hack) IIRC.\n>\n> That doesn't sound right.  \"git help init\" says:\n>  - 0xxx: 0xxx is an octal number and each file will have mode 0xxx\n>  - 0xxx will override users umask(2) value, and thus, users\n>    with a safe umask (0077) can use this option\n>  - 0660 is equivalent to group.\n>\n> So when you say \"group\", you're saying \"0660\", and when you\n> say \"0660\", you're overriding users umask value.\n\nVery good then.  It is from when I was significantly less experienced in using \ngit and managing repos, so I may have forgotten to use the correct options OR \nit could just have been the version of git I was using (1.4.4.4, IIRC) -- \nstill using that in at least one place, as it is the current version in \nDebian Etch.\n\nIt's good to know it works properly now, if all the right switches are set.\n-- \nBoyd Stephen Smith Jr.                     ,= ,-_-. =. \nbss@iguanasuicide.net                     ((_/)o o(\\_))\nICQ: 514984 YM/AIM: DaTwinkDaddy           `-'(. .)`-' \nhttp://iguanasuicide.net/                      \\_/     \n"},{"id":"100977","messageId":"slrngm9rdm.gcv.sitaramc@sitaramc.homelinux.net","threadId":"17018","inReplyTo":"200901070948.34117.bss@iguanasuicide.net","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Sitaram Chamarty","fromEmail":"sitaramc@gmail.com","sentAt":"2009-01-07T18:00:22Z","receivedAt":"2009-01-07T18:00:22Z","isPatch":false,"sender":{"key":"sitaramc@gmail.com","avatar":"https://avatars.githubusercontent.com/u/43316?v=4"},"body":"On 2009-01-07, Boyd Stephen Smith Jr. <bss@iguanasuicide.net> wrote:\n\n> On Wednesday 2009 January 07 04:55:56 you wrote:\n>> So when you say \"group\", you're saying \"0660\", and when you\n>> say \"0660\", you're overriding users umask value.\n\n> it could just have been the version of git I was using (1.4.4.4, IIRC) --=20\n> still using that in at least one place, as it is the current version in=20\n> Debian Etch.\n\n1.4.4.4 is 2 years and 2 days old today!  [I've heard\nstories about Debian, but never thought it was this\nconservative!]\n\nand I think this was fixed in 06cbe85, last April.\n"},{"id":"99606","messageId":"200901071346.41658.bss@iguanasuicide.net","threadId":"17018","inReplyTo":"slrngm9rdm.gcv.sitaramc@sitaramc.homelinux.net","subject":"Re: Error: unable to unlink ... when using \"git gc\"","fromName":"Boyd Stephen Smith Jr.","fromEmail":"bss@iguanasuicide.net","sentAt":"2009-01-07T19:46:32Z","receivedAt":"2009-01-07T19:46:32Z","isPatch":false,"sender":{"key":"bss@iguanasuicide.net","avatar":"https://gravatar.com/avatar/84b95eeff194b816c1568b1339e63e4b229825298664a9037b9f1ec713ead1e3?d=mp&s=160"},"body":"On Wednesday 2009 January 07 12:00:22 Sitaram Chamarty wrote:\n> On 2009-01-07, Boyd Stephen Smith Jr. <bss@iguanasuicide.net> wrote:\n> > On Wednesday 2009 January 07 04:55:56 you wrote:\n> >> So when you say \"group\", you're saying \"0660\", and when you\n> >> say \"0660\", you're overriding users umask value.\n> >\n> > it could just have been the version of git I was using (1.4.4.4, IIRC)\n> > -- still using that in at least one place, as it is the current\n> > version in Debian Etch.\n>\n> 1.4.4.4 is 2 years and 2 days old today!  [I've heard\n> stories about Debian, but never thought it was this\n> conservative!]\n\nOnce a stable is released, no new versions of packages come in, only \nbackported bug and security fixes.  The pre-release freeze also limits new \nversions from being considered.  Lenny should be out RSN, so I can move up to \n1.5.6.5. :)\n\n$ apt-cache policy git-core\ngit-core:\n  Installed: 1:1.4.4.4-4\n  Candidate: 1:1.4.4.4-4\n  Version table:\n     1:1.6.0.6-1 0\n        300 http://localhost experimental/main Packages\n     1:1.5.6.5-2 0\n        700 http://localhost testing/main Packages\n        500 http://localhost unstable/main Packages\n     1:1.5.6.5-1~bpo40+1 0\n        800 http://localhost etch-backports/main Packages\n *** 1:1.4.4.4-4 0\n        900 http://localhost stable/main Packages\n        100 /var/lib/dpkg/status\n     1:1.4.4.4-2.1+etch1 0\n        900 http://localhost stable/updates/main Packages\n-- \nBoyd Stephen Smith Jr.                     ,= ,-_-. =. \nbss@iguanasuicide.net                     ((_/)o o(\\_))\nICQ: 514984 YM/AIM: DaTwinkDaddy           `-'(. .)`-' \nhttp://iguanasuicide.net/                      \\_/     \n"}]}