git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Ninivaggi Mattia <mattia.ninivaggi@helsana.ch>
Cc: "git\@vger.kernel.org" <git@vger.kernel.org>
Subject: Re: [Feature- Request] Option to commit after checking out branch command is made
Date: Thu, 16 Nov 2017 09:19:46 +0900	[thread overview]
Message-ID: <xmqqtvxvxefx.fsf@gitster.mtv.corp.google.com> (raw)
In-Reply-To: <670f44c0ac554f2faec5a6112376b015@MSSMAILP06.ads.hel.kko.ch> (Ninivaggi Mattia's message of "Wed, 15 Nov 2017 15:27:18 +0000")

Ninivaggi Mattia <mattia.ninivaggi@helsana.ch> writes:

> 1. I checkout a branch, without having commited first
>     > git checkout dev
> 2. I get this error message:
>     > error: Your local changes to the following files would be overwritten by checkout:
>     > // List of files
>     > // ..
>     > //
>     > Please commit your changes or stash them before you switch branches.
>
> But I would rather prefer a scenario like this:
> ...
> 1. I checkout a branch, without having commited first
>     > git checkout dev
> 2. I get a message like this:
>     > Your local changes to the following files would be overwritten by checkout:
>     > // List of files
>     > // ..
>     > //
>     > Would you want to commit first? (y/n))
>
> IF y --> prompt for commit message and commit automatically

I do not think you want to do this for a few reasons.

 * The "please commit or stash" is merely a suggestion whose primary
   purpose is to silence clueless newbies who would have complained
   "Git said 'error: ... overwritten by checkout' and I do not know
   what to do next; the error message is so unhelpful" otherwise.
   Majority of the time when I see this message, it is because I
   forgot that I was in the middle of doing something (meaning: I am
   far from finished with the changes I was working on), and I would
   not be ready to commit.  I'd rather keep working to get the work
   into a more reasonable shape before committing, or stash the
   changes first if the task I wanted to do on that "dev" branch is
   more urgent and what I was in the middle of doing is lower
   priority.  

   Because of this, I would expect many users (including the ones
   who are right now newbies but will have gained experience to
   become experts in the future) to appreciate "stash before switch"
   a lot more than "commit first before switch".

 * People write scripts that use "git checkout" to switch branches,
   and they rely on the command to fail in this situation, instead
   of going interactive and gets stuck waiting for an input (which
   may never come).  Because of this, the updated behaviour you
   propose must never be the default, and at least must be protected
   behind a flag, something like "git checkout --autostash dev" (or
   "--autocommit", if you insist).  With that, you could do

	[alias]
		co = checkout --autostash

   and train your fingers to say "git co dev".

Of course, you can have a "git-co" script on your $PATH, which runs
"git checkout $1", lets it fail just like it does now, and then does
"git commit", if you really want the behaviour.  Again, you can then
use "git co dev" and you do not have to worry about breaking
people's scripts that depends on "git checkout" to fail without
going interactive.

  reply	other threads:[~2017-11-16  0:19 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-15 15:27 [Feature- Request] Option to commit after checking out branch command is made Ninivaggi Mattia
2017-11-16  0:19 ` Junio C Hamano [this message]
2017-11-16 11:19   ` Ninivaggi Mattia
     [not found]   ` <CAGe7hXBPWvjaKZtz-Zn1az0HrCx=OpxGsghVJhLOBKMu3NJ2zA@mail.gmail.com>
2019-06-03  8:44     ` Fwd: " David Eisner

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqtvxvxefx.fsf@gitster.mtv.corp.google.com \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=mattia.ninivaggi@helsana.ch \
    /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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).