git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Error: unable to unlink ... when using "git gc"

From
Johnny Lee <johnnylee194@gmail.com>
Date
Jan 6, 2009, 09:18 UTC
Message-ID
<488807870901060118y2dbc7430ocea5cf9ce4bca3c7@mail.gmail.com>
In-Reply-To
<7vy6xohkt2.fsf@gitster.siamese.dyndns.org>
Thanks for your consideration Junio,

Peff has already helped me to figure out the root cause of this error is a possible bad practice on collaboration work.

Here I attached the previous mail.
>>>>>>

Thanks Peff, I've checked the permission of .git/objects/16, it's created by another user and thus I have no permission to remove it.

In fact, this is coming from a previous bad practice on setting up a
collaboration repository on a SSH server, here is what I've done so
far:
1. I have a server tomato, which has two users: "git" and "johnny"
2. User "git" has cloned a repository from elsewhere as ~git/golf/.git
3. User "johnny" has cloned this repository from git on another
machine, using command:
git clone johnny@tomato:~git/golf/.git localgit
4. It works fine, and user "johnny" has made some local commits and
wants to push the changes to git's repository, so he uses:
git push
5. But it's reported some errors about permissions, like:
error: Unable to append to logs/refs/heads/cupcake: Permission denied
error: Unable to append to logs/refs/remotes/origin/cupcake: Permission denied
error: Unable to append to logs/refs/remotes/origin/cupcake: Permission denied
ng refs/heads/cupcake failed to write
ng refs/remotes/origin/HEAD failed to write
ng refs/remotes/origin/cupcake failed to write
error: failed to push to 'johnny@tomato:~git/golf/.git'
6. That's normal, since the ~git/golf/.git is created by user "git",
and user "johnny" can't write it.
7. Then the user "git" has changed mode for all the files under .git
to writable.
8. This time, user "johnny" can push successfully.
9. But as you can see here, some files are created by user "johnny",
and thus user "git" can't write them.

It seems not a good practice for collaboration work, would you please share your experiences with us?

Thanks very much and regards, Johnny

On Tue, Jan 6, 2009 at 4:59 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 18 quoted lines
> "Johnny Lee" <johnnylee194@gmail.com> writes:
>
>> While I'm looking at these "unable to unlink" files, it seems they are
>> read only:
>> git@tomato:~/golf$ ls -l .git/objects/16/
>> total 4
>> -r--r--r-- 1 johnny johnny 26 2009-01-05 09:25
>> b14f5da9e2fcd6f3f38cc9e584cef2f3c90ebe
>
>
> Check "ls -ld .git/objects/16" and see if it is owned by you and writable
> by you.
>
> In sane POSIX filesystem semantics, it should not pose with problem with
> respect to removal that a file is unwritable.
>
> What counts is the writability of the parent directory.
>
-- 
we all have our crosses to bear
Previous: Junio C HamanoNext: Matthieu Moy
Message 4 of 17 in “Error: unable to unlink ... when using "git gc"”
  1. Johnny LeeJan 6, 2009
  2. Jeff KingJan 6, 2009
  3. Junio C HamanoJan 6, 2009
  4. Johnny LeeJan 6, 2009
  5. Matthieu MoyJan 6, 2009
  6. Jeff KingJan 6, 2009
  7. Johnny LeeJan 6, 2009
  8. Sitaram ChamartyJan 6, 2009
  9. Johnny LeeJan 6, 2009
  10. Sitaram ChamartyJan 6, 2009
  11. Jeff KingJan 7, 2009
  12. Boyd Stephen Smith Jr.Jan 7, 2009
  13. Sitaram ChamartyJan 7, 2009
  14. Sitaram ChamartyJan 7, 2009
  15. Boyd Stephen Smith Jr.Jan 7, 2009
  16. Sitaram ChamartyJan 7, 2009
  17. Boyd Stephen Smith Jr.Jan 7, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.