From: Junio C Hamano Date: Fri, 21 Oct 2005 05:08:28 GMT Subject: Re: How to create a new branch based on a tag? Message-ID: <7vzmp3319v.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <4359161B.5000808@ust.hk> Ben Lau writes: >>The way you know is as good as it gets. v2.6.11-tree case is >>really an unfortunate special case. >> > What is wrong with the v2.6.11-tree? I just thought it is a duplicate tag > of v2.6.11. They are not *wrong* per-se. They are tags to tree objects without any associated commit history -- that makes them inappropriate to be used as branch heads. Linus or somebody authoritative could do: $ commit=$(echo v2.6.11 | \ git-commit-tree c39ae07f393806ccf406ef966e9a15afc43cc36a) $ git-tag -s -m 'v2.6.11 canonical "fake" commit' v2.6.11fake $commit and tell everybody interested to have: 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 xxxxxxxxxx (where xxxxx... is the value of $commit above) in their info/grafts file. Then we *could* pretend that v2.6.12-rc2's parent is v2.6.11. You could branch off from v2.6.11fake commit and base your development, and later you could merge that into later development history (say, v2.6.14-rc5) if you wanted to. If Linus does something like the above, the graft probably be better done between the current v2.6.12-rc2 based commit history and the corresponding commit in the history resurrected from BKCVS (torvalds/old-2.6-bkcvs.git). Then you could even base your development on top of v2.4.0 ;-). Funnily, v2.6.12-rc2 commit in the current history and BKCVS v2.6.12-rc2 commit in the resurrected history have different tree IDs. I am however not quite sure how useful the above would be, though. EVen between 2.6.11 and 2.6.12-rc2 much have happened, so unless the changes you are making apply to the part that did not change between those two, merge conflict resolution might be quite a chore.