git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Michael Witten <mfwitten@gmail.com>
Cc: Markus Elfring <Markus.Elfring@web.de>, git@vger.kernel.org
Subject: Re: Better cooperation between checkouts and stashing
Date: Mon, 01 Mar 2010 09:23:23 -0800	[thread overview]
Message-ID: <7v1vg4ufas.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <4b8bf32f.0706c00a.26cb.691d@mx.google.com> (Michael Witten's message of "Mon\, 01 Mar 2010 09\:02\:39 -0800 \(PST\)")

>Michael Witten <mfwitten@gmail.com> writes:

> ..., I think you essentially want to implement
> "git checkout" with something like the following (this hack is **not**
> meant as a solution; it is only meant to illustrate what I think is
> Markus Elfring's desire):

Your "checkout" needs a bit better error checking.  For example, you don't
want to "reset --hard" when stash failed for whatever reason.

For performance and cleanliness reasons, it should first try a branch
switch, and only after seeing it fail due to local changes, perform your
stash-unstash magic.  You would probably want to use the usual "stash
save", as you will be consuming the stashed change yourself as its first
user, and "pop" will clear it if things resolve cleanly, or the stash will
be left as the first element to make it easy to re-attempt the conflict
resolution.  No need for stash-id nor special casing of detached HEAD
situation.

And it should do all that only under "-m" option, i.e. when the user
indicated that s/he is willilng to face conflict resolution while
switching.  That would be a genuine improvement compared to the current
system (and I suspect it would be easier to implement).  "checkout -m" so
far has been as bad as "CVS/SVN update" in that it can get you into an
unresolvable mess without a chance to go back and retry.  autostash will
remedy that.

  reply	other threads:[~2010-03-01 17:23 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-01 18:50 Better cooperation between checkouts and stashing Markus Elfring
2010-02-01 20:40 ` Junio C Hamano
2010-02-01 21:57   ` Markus Elfring
2010-02-01 22:44     ` Eugene Sajine
2010-02-02  1:36       ` Petr Baudis
2010-02-02 10:26         ` Markus Elfring
2010-02-02 11:04           ` Petr Baudis
2010-02-09 19:20   ` Markus Elfring
2010-02-09 20:06     ` Junio C Hamano
2010-02-09 21:01       ` Markus Elfring
2010-02-18 17:43       ` Markus Elfring
2010-02-18 20:09         ` Junio C Hamano
2010-02-27 21:33   ` Markus Elfring
2010-02-27 21:51     ` Junio C Hamano
2010-02-28 13:55       ` Markus Elfring
2010-02-28 22:57         ` Michael Witten
2010-03-01 10:50       ` Markus Elfring
2010-03-01 17:02         ` Michael Witten
2010-03-01 17:23           ` Junio C Hamano [this message]
2010-03-01 18:14             ` Michael Witten
2010-03-01 18:29               ` Markus Elfring
2010-03-01 19:44               ` Junio C Hamano
2010-03-01 21:20                 ` Markus Elfring
2010-03-02  1:41                   ` Michael Witten
2010-03-02  9:35                     ` Markus Elfring
2010-03-02 17:50                       ` Junio C Hamano
2010-03-03 15:55                         ` Markus Elfring
2010-03-04  7:46                           ` Michael Witten
2010-03-04 19:55                             ` Markus Elfring
2010-03-02  9:45               ` Markus Elfring
2010-03-02 18:05                 ` Junio C Hamano
2010-03-03 16:00                   ` Markus Elfring
2010-03-17 16:35           ` [PATCH] Clarification for the command "git checkout <branch>" Markus Elfring
2010-03-17 16:44             ` Avery Pennarun
2010-03-17 17:00               ` Markus Elfring
2010-03-17 17:58               ` Junio C Hamano
2010-03-17 18:21                 ` Markus Elfring
2010-03-17 18:37                   ` Junio C Hamano
2010-03-17 18:50                     ` Michael Witten
2010-03-17 19:23                       ` Junio C Hamano
2010-03-18 10:11                 ` Markus Elfring
2010-03-18 16:36                   ` Avery Pennarun
2010-03-18 17:19                     ` Michael Witten
2010-03-18 17:33                       ` Avery Pennarun
2010-03-19  8:28                         ` Markus Elfring
2010-03-19 17:17                           ` Avery Pennarun
2010-03-20  6:00                             ` Markus Elfring
2010-03-19  8:15                       ` Markus Elfring
2010-03-30 15:57                         ` Markus Elfring
2010-03-30 22:13                           ` Junio C Hamano
2010-03-31  3:58                             ` Ramkumar Ramachandra
2010-04-01  4:52                               ` Junio C Hamano
2010-04-01 13:09                                 ` Ramkumar Ramachandra
2010-04-01  6:38                             ` Markus Elfring
2010-04-10 13:30                             ` Markus Elfring
2010-04-10 22:31                               ` Junio C Hamano

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=7v1vg4ufas.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=Markus.Elfring@web.de \
    --cc=git@vger.kernel.org \
    --cc=mfwitten@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).