From: Theodore Tso <tytso@mit.edu>
To: "Shawn O. Pearce" <spearce@spearce.org>
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 23:33:40 -0400 [thread overview]
Message-ID: <20070319033340.GG11371@thunk.org> (raw)
In-Reply-To: <20070319025603.GG20658@spearce.org>
On Sun, Mar 18, 2007 at 10:56:03PM -0400, Shawn O. Pearce wrote:
> > 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.
Ah, so that's controlled by receive.denyNonFastForwards, right? Cool,
I missed that. Thanks!!
Documentation/config.txt doesn't say it defaults to true, but from
your comments that is the default?
> > * 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?
What git-runstatus will allow me to do is to abort if there are any
local modifications, regardless of whether or not they would conflict
with the working tree update. The key phrase in my criteria was no
locally modified files "THAT WOULD BE AFFECTED".
What I could do with BitKeeper is that I could modify some file like
schedule.html on my webserver, and then push a changeset from my
laptop to would update sermons.html, and it would allow the push ---
since it would change the file sermons.html, and not touch
schedule.html.
But if I modified schedule.html on my laptop and then committed it,
and *then* try to push that changeset to the webserver, it would abort
since in order to accept the changeset, it would have to update the
working tree, and that would clash with the locally modified
schedule.html file. At thta point I'd have to login to the webserver,
revert the local modification and bring it back down my laptop and
include it in a proper changeset.
Yeah, I probably shouldn't have ever modified the file locally on the
webserver, but that would sometimes happen when I was in a rush, and
it was nice when it Just Worked.
- Ted
next prev parent reply other threads:[~2007-03-19 3:33 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
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 [this message]
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=20070319033340.GG11371@thunk.org \
--to=tytso@mit.edu \
--cc=git@vger.kernel.org \
--cc=junkio@cox.net \
--cc=spearce@spearce.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).