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

Re: [PATCH] A new merge stragety 'subtree'.

From
Shawn O. Pearce <spearce@spearce.org>
Date
Feb 17, 2007, 07:14 UTC
Message-ID
<20070217071425.GD27864@spearce.org>
In-Reply-To
<7vfy95y2n9.fsf@assigned-by-dhcp.cox.net>
Junio C Hamano <junkio@cox.net> wrote:
Show 15 quoted lines
> For normal merge strategies, if you are on branch A and merge
> branch B into it, what you will get is exactly the same as what
> you would get by merging branch A while being on branch A
> (modulo the direction of conflict markers).  With the subtree
> merge, it is not the case anymore.  If I pull from git-gui.git,
> the resulting tree look like git.git with Shawn's updates.  If
> Shawn pulls from git.git, even after I did some changes on my
> own to git-gui subdirectory, bypassing his tree, he will get a
> merged result pertaining to git-gui.git repository
> (i.e. git-gui/ subdirectory of what I have).  This way, we can
> continue merging from each other.
> 
> Although I do not plan to commit anything in git-gui/ part of my
> tree myself, bypassing Shawn, it is nice to know that it will
> not introduce problems down the road.

This does actually cause a problem if you merge a git.git commit into git-gui.git (by stripping the git-gui/ part off). The problem is the entire git.git history would then become the second parent of the git-gui.git merge commit, and suddenly the git-gui.git repository increases by >11 MiB in size... ;-)

With regards to maintaining git-gui: I'll apply all patches to my tree and do testing there, then ask Junio to merge a tagged release over to git.git for inclusion in the next git release.

To avoid pulling the entire git.git history into git-gui, I'd ask that anyone bypassing me (e.g. if I'm being horribly unresponsive one week) checkout the git-gui branch from git.git, apply the change(s) there, then merge that branch into git.git using the subtree strategy. This way I can later fast-forward git-gui.git to the fixed commit, without sucking in more than I bargained for.

For example:
	git log -n1 -- git-gui
	# copy the second parent...
	git checkout -b fixgg <secondparent>
	# do fixes...
	git checkout master
	git merge -s subtree fixgg

Then I can later obtain `fixgg` from the merge commit in git.git and update git-gui.git, without sucking in git.git's objects.

-- 
Shawn.
Previous: Junio C HamanoNext: Junio C Hamano
Message 2 of 9 in “A new merge stragety 'subtree'.”
  1. A new merge stragety 'subtree'.Junio C Hamano, Feb 17, 2007
  2. Shawn O. PearceFeb 17, 2007
  3. Junio C HamanoFeb 17, 2007
  4. Shawn O. PearceFeb 17, 2007
  5. Junio C HamanoFeb 17, 2007
  6. Shawn O. PearceFeb 17, 2007
  7. Junio C HamanoFeb 17, 2007
  8. Shawn O. PearceFeb 17, 2007
  9. Junio C HamanoFeb 17, 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.