From: Johannes Schindelin Date: Mon, 16 Jun 2008 15:15:12 GMT Subject: Re: [PATCH] Make git reflog expire honour core.sharedRepository. Message-ID: In-Reply-To: <7vhcbuco2w.fsf@gitster.siamese.dyndns.org> Hi, On Sun, 15 Jun 2008, Junio C Hamano wrote: > Pierre Habouzit writes: > > > Signed-off-by: Pierre Habouzit > > --- > > builtin-reflog.c | 1 + > > t/t1301-shared-repo.sh | 15 +++++++++++++++ > > 2 files changed, 16 insertions(+), 0 deletions(-) > > > > Some people like to have logAllRefUpdates even for bare repositories, and if > > shared, git-gc breaks them. > > > > diff --git a/builtin-reflog.c b/builtin-reflog.c > > index 897d1dc..430929f 100644 > > --- a/builtin-reflog.c > > +++ b/builtin-reflog.c > > @@ -308,6 +308,7 @@ static int expire_reflog(const char *ref, const unsigned char *sha1, int unused, > > } else if (cmd->updateref && commit_ref(lock)) { > > status |= error("Couldn't set %s", lock->ref_name); > > } > > + adjust_shared_perm(log_file); > > Why is it sane to do this unconditionally, instead of putting in another > else or something? Because adjust_shared_perm() checks for shared_repository, and returns when there is nothing to do. IMO this is a sane convention, since you _never_ want to do this unconditionally anyway, and you avoid a lot of identical "if () adjust()" constructs. Ciao, Dscho