From: Andreas Ericsson <ae@op5.se>
To: Finn Arne Gangstad <finnag@pvv.org>
Cc: Junio C Hamano <gitster@pobox.com>,
John Tapsell <johnflux@gmail.com>,
Git Mailing List <git@vger.kernel.org>
Subject: Re: git push
Date: Thu, 05 Mar 2009 09:45:11 +0100 [thread overview]
Message-ID: <49AF9117.1020407@op5.se> (raw)
In-Reply-To: <20090225225826.GA13510@pvv.org>
Finn Arne Gangstad wrote:
> Sorry to people receiving this mail twice, the list ate my first reply
> since it managed to hit the spam-filter (maybe I should take a hint... :)
>
> On Tue, Feb 24, 2009 at 11:01:38PM -0800, Junio C Hamano wrote:
>> [...]
>>
>> But if you are talking about changing the default when "git push" is run
>> without any parameter, I have to say it is a terrible idea, for two
>> reasons, and one is too obvious to state so I wouldn't repeat it and talk
>> only about the other one.
>
> The current default behaviour of git push is very annoying for us at
> least. The current behaviour is _dangerous_ and leads to serious
> problems. It is too easy for someone to write "git push". They hit
> enter too soon, or they write it expecting to get usage
> information. They do not necessarily expect to overwrite random
> branches in a remote repository.
>
> Most git commands are not destructive with no arguments at all, and
> push is the _only_ command that really can screw things up for others,
> so this command in particular should refrain from destructive default
> behaviour.
>
> An example of random branch overwriting:
> $ mkdir a
> $ cd a
> $ git init
> $ echo contents > file
> $ git add file
> $ git commit -m message
> $ cd ..
> $ git clone a b
> $ cd b
> $ git checkout -b gif-support
> $ echo foo > somefile
> $ git add somefile
> $ git commit -m message
> $ ( cd ../a && git branch gif-support) # Assume done by someone else
> $ git checkout master
> $ # <hack away, maybe commit a bit>
> $ git push # <-- OOOPS! pushes gif-support!
>
> Notice that what branches git push ends up pushing is out of your
> control, since new branches can appear in the remote repository at any
> time. This is very unfriendly in our setup with a shared incoming repo.
>
> If developer A creates "gif-support", shares it with developer B, who
> does an additional commit on it to make it print more debug info (but
> has no intent of pushing it anywhere), and A pushes it to the "incoming"
> repo, developer B risks overwriting that with his debug version.
>
git push will never overwrite changes in the remote repo unless you
specify --force. If anyone *blindly* uses --force, they really shouldn't
have write-access to anything so precious as your code repositories.
Worst-case scenario, you commits that were never intended for publication
enter your public wateringhole and needs a revert later on. Big deal.
> It is not realistic to believe that in a big project with many
> developers, no one will ever do the mistake of typing "git push". It
> is also not realistic to believe that everyone will know how to (or
> remember to) configure this away.
>
But it *is* realistic to not assume that they will also use --force
while doing so.
>> If you shoot for the least damage for such people, the sanest default for
>> "git push" would be to do nothing. You *always* say what to push where,
>> then there is no risk of pushing something you did not intend to. Perhaps
>> "push.default = never" configuration may not be such a bad idea?
>
> If "git push" could do nothing at all without configuring anything, that
> would be a big improvement to us.
>
I can buy this, I guess. I always type the remote-name I want to push to
anyways. A sane no-op default would probably be to list the pre-configured
remotes along with a short usage message. I still don't quite see the point
of it.
--
Andreas Ericsson andreas.ericsson@op5.se
OP5 AB www.op5.se
Tel: +46 8-230225 Fax: +46 8-230231
Considering the successes of the wars on alcohol, poverty, drugs and
terror, I think we should give some serious thought to declaring war
on peace.
next prev parent reply other threads:[~2009-03-05 9:06 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-25 6:38 git push John Tapsell
2009-02-25 6:46 ` Jeff King
2009-02-25 7:01 ` Junio C Hamano
2009-02-25 7:09 ` John Tapsell
2009-02-25 7:44 ` Junio C Hamano
2009-02-25 9:02 ` Jeff King
2009-02-25 9:26 ` Junio C Hamano
2009-02-25 9:51 ` Jeff King
2009-02-25 9:08 ` John Tapsell
2009-02-25 9:49 ` Junio C Hamano
2009-02-25 10:06 ` John Tapsell
2009-02-25 9:34 ` Jay Soffian
2009-02-25 9:51 ` Junio C Hamano
2009-02-25 22:58 ` Finn Arne Gangstad
2009-03-05 8:45 ` Andreas Ericsson [this message]
2009-03-05 8:56 ` John Tapsell
2009-03-05 9:44 ` Finn Arne Gangstad
[not found] <CAJmx4Nxh_WzkO-S=SN9E=aODCrfs+QCig4sT+Q8eQ+Pv1hB2+w@mail.gmail.com>
2012-03-19 16:24 ` Kevin O'Brien
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=49AF9117.1020407@op5.se \
--to=ae@op5.se \
--cc=finnag@pvv.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johnflux@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).