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

Re: Help breaking up a large merge.

From
Johannes Sixt <j.sixt@viscovery.net>
Date
Sep 18, 2008, 16:41 UTC
Message-ID
<48D284BE.5040107@viscovery.net>
In-Reply-To
<20080918152154.GA27019@linode.davidb.org>
David Brown schrieb:
Show 14 quoted lines
> Say we have a tree that we've been working on for a few months.  An
> outside vendor has also been working on the same tree during this
> time, and we need to merge with their work.
> 
> The difficulty I'm having is that there are a lot of conflicts
> resulting from the merge (expected), and it would be nice to somehow
> be able to work on a smaller set of these conflicts at a time.
> 
> Some of the conflicts are caused by a single change in the other tree.
> This is easy to cherry-pick into my tree, resolve, and then test those
> changes independently.
> 
> But other conflicts are caused by groups of commits that are
> interleaved with others.
In a similar situation I was thinking about this approach:
1. Do the merge.
2. Resolve conflicts in an area that can be tested in isolation.
3. Undo all other changes that the merge brought in.
4. Commit.
5. Install a graft that removes the second parent of the merge commit.
6. Rinse and repeat.
7. Finally, remove the grafts, and perhaps collapse the merge commits.
I didn't test this, yet.

Hmm, thinking a bit more about this, 1 and 5 can probably be replaced by a mere 'git merge --squash'.

-- Hannes
Previous: David BrownNext: Avery Pennarun
Message 4 of 6 in “Help breaking up a large merge.”
  1. David BrownSep 18, 2008
  2. Santi BéjarSep 18, 2008
  3. David BrownSep 18, 2008
  4. Johannes SixtSep 18, 2008
  5. Avery PennarunSep 18, 2008
  6. David BrownSep 18, 2008

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.