git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Data Integrity & un-Commited Branches

From
Shawn O. Pearce <spearce@spearce.org>
Date
Sep 15, 2007, 07:51 UTC
Message-ID
<20070915075144.GB3099@spearce.org>
In-Reply-To
<20070915073845.GB3782@efreet.light.src>
Jan Hudec <bulb@ucw.cz> wrote:
Show 17 quoted lines
> On Fri, Sep 14, 2007 at 22:51:29 -0400, Shawn O. Pearce wrote:
> > It isn't unreasonable to want Git to save uncommitted work for the
> > current branch and then you switch to another, ending up with a
> > clean working directory when you finally get there.  Today we have
> > git-stash to help you with this, but I'm thinking maybe we want to
> > connect git-checkout with it?
> 
> I think it would be reasonable if it just forced you to decide about it. That
> is reading the documentation, checkout only switches branches if the merge of
> each modified file is trivial and only does 3-way merge if it got -m option.
> 
> It might be reasonable to requre that option for all cases, where there are
> local changes and the branches don't point to the same commit and without it,
> checkout should say something like:
> 
>   Cannot switch branches, because the tree is modified. You can apply the
>   modifications to the target branch by using -m option

The thing there is `git checkout` by default does a switch only if the merge is really trivial. In such cases its probably sane to carry the changes with you to the new branch/parent commit. At worst you can safely carry them right back. Or stash them. But -m does a three-way file merge, which isn't trivial, and can result in conflicts.

So I know that myself and Junio both rely on the default behavior to tell us if a switch is even a good idea right now, or if we should stash the changes and *then* do the switch. Because if you do the switch with -m and there are conflicts you are up a creek with no paddle... and there's a mighty big water fall coming up in 3 feet... 2 feet... oh crap!

Making -m the only way to switch with dirty state is not a feature. Its a regression.

-- 
Shawn.
Previous: Jan HudecNext: Nikodemus Siivola
Message 8 of 12 in “Re: Data Integrity & un-Commited Branches”
  1. Brian Scott DobrovodskySep 15, 2007
  2. Shawn O. PearceSep 15, 2007
  3. Brian Scott DobrovodskySep 15, 2007
  4. Shawn O. PearceSep 15, 2007
  5. Junio C HamanoSep 15, 2007
  6. Brian Scott DobrovodskySep 15, 2007
  7. Jan HudecSep 15, 2007
  8. Shawn O. PearceSep 15, 2007
  9. Nikodemus SiivolaSep 15, 2007
  10. David KastrupSep 15, 2007
  11. Nikodemus SiivolaSep 15, 2007
  12. David KastrupSep 15, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.