From: "Shawn O. Pearce" <spearce@spearce.org>
To: Theodore Tso <tytso@mit.edu>
Cc: Junio C Hamano <junkio@cox.net>, git <git@vger.kernel.org>
Subject: Re: git push to a non-bare repository
Date: Sun, 18 Mar 2007 22:56:03 -0400 [thread overview]
Message-ID: <20070319025603.GG20658@spearce.org> (raw)
In-Reply-To: <20070319024744.GD11371@thunk.org>
Theodore Tso <tytso@mit.edu> wrote:
> On Sun, Mar 18, 2007 at 10:21:43PM -0400, Shawn O. Pearce wrote:
> > Junio C Hamano <junkio@cox.net> wrote:
> > > Theodore Tso <tytso@mit.edu> writes:
> > >
> > > > Is it at all possible to figure out <commit-id-before-the-push>? It
> > > > seems the answer is no, and I suspect that's a bug.
> > >
> > > Doesn't update hook get pre- and post- commit object name?
> >
> > Yes, and the same is true in the new post-receive hook.
>
> In my comments, I was observing that *after* the push had succeeded,
> there was no way to find the commit-id-before-the-push, since neither
> the reflog nor ORIG_HEAD is getting updated. Is there a good reason
> why not? Would you accept a patch which caused the reflog and
> possibly ORIG_HEAD to be updated on the remote side of the push?
The reflog does update if the log file exists during a push (err,
actually during receive-pack). Or if core.logAllRefUpdates is set
to true. Now this isn't the default in a bare repository, but it
should be the default in a repository with a working directory.
So the case we are talking about should be seeing the reflog update.
> When I was talking about a hook to enforce the BitKeeper semantics,
> the question is whether we have enough to enforce the following:
>
> * Only accept the push if it will result in a fast-forward
> merge (and if not, tell the user to do a git pull, merge
> locally, and then redo the git push)
Yes, the update hook can detect this. Actually receive-pack by
default rejects *all* non-fast-forward pushes, even if the client
side uses --force.
> * Only accept the push if there are no locally modified files
> that would be affected when the working directory is
> updated to reflect the new HEAD
The update hook could also perform this check; test if the ref
being updated is the current branch, and if so, verify the index and
working directory is clean. That's a simple run of git-symbolic-ref
(to get the current branch) and git-runstatus (to check the index
and working directory), is it not?
If git-runstatus exits to indicate the tree is clean (nothing to
commit) then a simple `read-tree -m -u HEAD $new` should update
the working directory and index, right?
--
Shawn.
next prev parent reply other threads:[~2007-03-19 2:56 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-18 17:31 git push to a non-bare repository Matthieu Moy
2007-03-18 19:47 ` Junio C Hamano
2007-03-18 21:51 ` Sam Vilain
2007-03-18 22:01 ` Jakub Narebski
2007-03-18 22:18 ` Junio C Hamano
2007-03-19 2:00 ` Theodore Tso
2007-03-19 1:55 ` Junio C Hamano
2007-03-19 2:21 ` Shawn O. Pearce
2007-03-19 2:47 ` Theodore Tso
2007-03-19 2:56 ` Shawn O. Pearce [this message]
2007-03-19 3:21 ` Theodore Tso
2007-03-19 3:53 ` Shawn O. Pearce
2007-03-19 4:08 ` Nicolas Pitre
2007-03-19 6:25 ` Theodore Tso
2007-03-19 6:44 ` Junio C Hamano
2007-03-19 15:20 ` Nicolas Pitre
2007-03-19 15:16 ` Nicolas Pitre
2007-03-19 23:58 ` Sam Vilain
2007-03-20 0:49 ` Junio C Hamano
2007-03-20 0:54 ` Junio C Hamano
2007-03-19 3:33 ` Theodore Tso
2007-03-19 3:47 ` Shawn O. Pearce
2007-03-19 4:14 ` Junio C Hamano
2007-03-19 9:19 ` Matthieu Moy
2007-03-19 10:01 ` Jakub Narebski
2007-03-21 17:20 ` Neil Schemenauer
2007-03-19 12:44 ` Sergio Callegari
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=20070319025603.GG20658@spearce.org \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=tytso@mit.edu \
/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.