From: Matthias Kestenholz <lists@irregular.ch>
To: Junio C Hamano <junkio@cox.net>
Cc: git@vger.kernel.org
Subject: Re: Bug encountered while comitting
Date: Sat, 25 Mar 2006 02:15:27 +0100 [thread overview]
Message-ID: <20060325011527.GA23600@spinlock.ch> (raw)
In-Reply-To: <7vacbfzc3u.fsf@assigned-by-dhcp.cox.net>
* Junio C Hamano (junkio@cox.net) wrote:
> Matthias Kestenholz <lists@irregular.ch> writes:
>
> > The PHP script created directories under .git/objects which were
> > only writable by www-data. There were other directories which were
> > owned by user mk and group www-data, and they were group writable.
> >
> > So, I had write access to only a part of the .git directory.
>
> core.sharedrepository perhaps?
>
> While it probably is not a good idea to have you in www-data, it
> appears that is essentially you will end up doing, because PHP
> scripts that may _create_ new directories better not to have
> privilege to give newly created directories away to you (busting
> your quota), so they will be owned by www-data.www-data and for
> you to be able to write into it you either need to be www-data
> user or in www-data group, with core.sharedrepostiory set.
>
Thanks for your answer; I did not know about this option (I should
probably re-read all the docs).
Anyway, I think git should never corrupt a repository, even if it
does not have the write permissions it needs.
The following commands were sufficient to create a corrupt
repository with git (v1.2.4-1, debian package):
$ git-init-db
$ echo test > file
$ git-update-index --add file ; git commit -m 'message'
repeat (f.e. 10 times):
$ echo test >> file
$ git-update-index file ; git commit -m 'message'
$ sudo chown root .git/objects/*
repeat the modification and commit commands until you get a message
similar to the following:
unable to write sha1 filename .git/objects/90/b33..: Permission denied
fatal: 90b33... is not a valid 'tree' object
unable to write sha1 filename .git/objects/ba/fe4..: Permission denied
error: file: failed to insert into database
fatal: Unable to process file file
etc...
The result of this all is: refs/heads/master might now point to a
non-existant commit object. Every git command now errors out with:
fatal: bad tree object HEAD
and git-log shows no output (probably since it does not find a
commit to begin with)
git-commit should abort as soon as it encounters an error and not
update HEAD.
Thanks,
Matthias
(Note: To find the last valid commit object, I could just scan the
objects directory for the recently modified files and write the sha1
value to refs/heads/master, so I had no data loss.)
--
:wq
next prev parent reply other threads:[~2006-03-25 1:16 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-03-24 18:39 Bug encountered while comitting Matthias Kestenholz
2006-03-24 19:34 ` Andreas Ericsson
2006-03-25 1:15 ` Matthias Kestenholz
2006-03-24 22:55 ` Junio C Hamano
2006-03-25 1:15 ` Matthias Kestenholz [this message]
2006-03-25 6:17 ` Junio C Hamano
2006-03-25 10:23 ` Matthias Kestenholz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060325011527.GA23600@spinlock.ch \
--to=lists@irregular.ch \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.