git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Jeff King <peff@peff.net>
Cc: Sergio Callegari <sergio.callegari@gmail.com>,
	Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	git@vger.kernel.org
Subject: Re: disallowing push to currently checked-out branch
Date: Mon, 16 Feb 2009 15:23:00 -0800	[thread overview]
Message-ID: <7vhc2uezl7.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20090216224330.GA23764@sigill.intra.peff.net> (Jeff King's message of "Mon, 16 Feb 2009 17:43:30 -0500")

Jeff King <peff@peff.net> writes:

>   1. How can we improve this situation?

The situation you described is all about "don't allow a push that is NOT
CONTROLLED BY YOU and that can interfere with what you are doing into a
live repository", and you are right, we have operations that deliberately
detach the HEAD and expect nobody mucks with the branch.

But is this something even worth considering about in the same context as
the denyCurrentBranch?  The same thing can happen even if you are not
detaching HEAD.

For example, I sometimes end up with an ugly series on a branch, whose
endpoint is a good looking tree.  And a refactoring I would want to do
would be too cumbersome for the interactive rebase (I could do it, but the
machinery does not help as much as it would for a simpler case).  In such
a case, often I would just say:

	$ git branch -f goal
        $ git reset --hard master
        : repeat from here until "diff HEAD goal" becomes empty
        ... cherry-pick $a_commit_in_goal_branch, or
        ... edit "show $a_commit_in_goal_branch" output and apply, or
        ... edit the files in place.
        ... make a commit, perhaps using -c $a_commit_in_goal_branch
	: repeat up to here

I would not push into this repository to update the branch "goal" while I
am doing this, as it will obviously screw up the whole process.  I think
it is the same thing that you would not push from elsewhere to update the
branch you are in the middle of interactively rebasing.  Mucking with the
same repository from two different places at the same time, when you know
there can be only one version of a work tree that is checked out, is
simply insane.

It's just a common sense thing.  What denyCurrentBranch protects you from
is a push from elsewhere *while* you are not there, and then next day,
getting confused by what such a push did in the receiving repository.  In
that scenario, you are not mucking with the receiving repository from two
places at the same time, but still you can get your repository into a
confusing state, and it is worth protecting new people from.

Obviously you can tell receive-pack to refuse pushing into a non-bare
repository, with a "I know what I am doing" configuration, but I think at
that point the whole "you could break things this way, so let's prevent a
new user from making such mistake" goes into the realm of absurdity.

  reply	other threads:[~2009-02-16 23:24 UTC|newest]

Thread overview: 91+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-15 21:31 [RFC - draft] List of proposed future changes that are backward incompatible Junio C Hamano
2009-02-15 21:48 ` Junio C Hamano
2009-02-15 22:56   ` Jakub Narebski
2009-02-15 23:39     ` Junio C Hamano
2009-02-15 23:20 ` Heikki Orsila
2009-02-16  0:04   ` disallowing push to currently checked-out branch Jeff King
2009-02-16  1:33     ` david
2009-02-16  1:47       ` david
2009-02-16  1:30         ` Julian Phillips
2009-02-16  4:01         ` Jeff King
2009-02-16  8:33         ` Daniel Barkalow
2009-02-16  8:51           ` Junio C Hamano
2009-02-16 10:17             ` Sergio Callegari
2009-02-16 13:58               ` Jeff King
2009-02-16 17:13                 ` Sergio Callegari
2009-02-16 17:33                   ` Matthieu Moy
2009-02-16 17:43                   ` Johannes Schindelin
2009-02-16 18:48                     ` Jay Soffian
2009-02-16 20:02                       ` Johannes Schindelin
2009-02-16 21:12                         ` Jay Soffian
2009-02-16 21:15                           ` Johannes Schindelin
2009-02-16 22:28                             ` Jay Soffian
2009-02-16 22:52                               ` Jeff King
2009-02-17  5:53                                 ` Jay Soffian
2009-02-17 11:28                                   ` PUSH_HEAD, was " Johannes Schindelin
2009-02-17 17:29                                     ` Jay Soffian
2009-02-17 19:48                                       ` Jeff King
2009-02-17 22:20                                       ` Junio C Hamano
2009-02-17 22:42                                         ` Jay Soffian
2009-02-17 22:54                                       ` Johannes Schindelin
2009-02-16 19:24                     ` Sergio Callegari
2009-02-16 20:09                       ` Johannes Schindelin
2009-02-16 21:42                         ` Jay Soffian
2009-02-17  0:07                         ` Sergio Callegari
2009-02-17  0:18                           ` Johannes Schindelin
2009-02-17  0:41                             ` Sergio Callegari
2009-02-17  0:56                               ` Johannes Schindelin
2009-02-17  1:18                                 ` Junio C Hamano
2009-02-17  0:57                               ` Junio C Hamano
2009-02-16 21:43                       ` Junio C Hamano
2009-02-16 22:43                         ` Jeff King
2009-02-16 23:23                           ` Junio C Hamano [this message]
2009-02-17  0:23                             ` Jeff King
2009-02-17  0:43                               ` Junio C Hamano
2009-02-17  1:29                                 ` Jeff King
2009-02-16  3:50       ` Jeff King
2009-02-16  5:05         ` david
2009-02-16  4:05           ` Jeff King
2009-02-16  5:18             ` david
2009-02-16  4:37               ` Jeff King
2009-02-16  5:55                 ` david
2009-02-16  5:06                   ` Jeff King
2009-02-16 10:53                     ` Johannes Schindelin
2009-02-16 10:50                   ` dashed commands, was " Johannes Schindelin
2009-02-15 23:53 ` [RFC - draft] List of proposed future changes that are backward incompatible david
2009-02-15 23:01   ` Johannes Schindelin
2009-02-15 23:36     ` Junio C Hamano
2009-02-16  0:14     ` david
2009-02-15 23:18       ` Johannes Schindelin
2009-02-16  0:38         ` david
2009-02-16  0:29           ` Junio C Hamano
2009-02-16 10:23           ` Johannes Schindelin
2009-02-16 15:33             ` david
2009-02-16 14:40               ` Sverre Rabbelier
2009-02-16  0:02       ` disallowing push to currently checked-out branch Jeff King
2009-02-16 10:06         ` Sergio Callegari
2009-02-15 23:01   ` [RFC - draft] List of proposed future changes that are backward incompatible Jakub Narebski
2009-02-15 23:15     ` Johannes Schindelin
2009-02-15 23:38       ` Jakub Narebski
2009-02-16  0:35       ` david
2009-02-16  0:07   ` send-email sending shallow threads by default Jeff King
2009-02-16  0:09     ` Pieter de Bie
2009-02-16  2:43       ` Jeff King
2009-02-16  2:55         ` Brian Gernhardt
2009-02-16  9:56         ` Wincent Colaiuta
2009-02-16  7:55     ` SZEDER Gábor
2009-02-16 10:38     ` Martin Mares
2009-02-17  8:34       ` Andreas Ericsson
2009-02-17  9:06         ` Martin Mares
2009-02-17 19:28           ` Jeff King
2009-02-20  3:03             ` Eric W. Biederman
2009-02-20  3:26               ` Jeff King
2009-02-20  4:13                 ` Eric W. Biederman
2009-02-17  8:30     ` Andreas Ericsson
2009-02-16  1:27   ` [RFC - draft] List of proposed future changes that are backward incompatible Sitaram Chamarty
2009-02-16  8:04   ` Björn Steinbrink
2009-02-16  8:49     ` Junio C Hamano
2009-02-16  9:07       ` Björn Steinbrink
2009-02-16  2:42 ` [RFC - draft #2] " Junio C Hamano
2009-02-16  3:20   ` Jeff King
2009-02-16 21:10   ` Jakub Narebski

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=7vhc2uezl7.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    --cc=sergio.callegari@gmail.com \
    /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).