* git-merge fails when trying to merge from a tag @ 2005-12-13 17:55 Carl Baldwin 2005-12-13 19:21 ` Junio C Hamano 0 siblings, 1 reply; 3+ messages in thread From: Carl Baldwin @ 2005-12-13 17:55 UTC (permalink / raw) To: git Greetings, I just tried to merge using a tag object. I expected this to work just fine since the tag refers to a commit object and is therefore committish. The very same merge command except with '^{}' appended to the tag name to select the commit object worked just fine. Below you'll find some interesting output. Cheers, Carl PS I used git-bisect for the first time this morning. I was VERY impressed. Anyway, on to the output... % git --version git version 0.99.9m % git merge "Merging release-0.3.1" HEAD refs/tags/release-0.3.1 Trying really trivial in-index merge... fatal: Merge requires file-level merging Nope. Merging HEAD with refs/tags/release-0.3.1 Merging: df17837d378c5ee07a26c97ac1bfc3fb3f7bacbb Fix test of string f2aa1e01ae0f1b0ea9354f2ea2c7444b5efc8ac5 Merging release-0.2.1 found 1 common ancestor(s): 43c6310a463aee1c2cbd882b81a596e429bc7f6c Commit msg Auto-merging scripts/config.sh fatal: 4c29c70d1d290807c2757eabaefb607b8fd7b595 is not a valid 'commit' object % git-cat-file tag 4c29c70d1d290807c2757eabaefb607b8fd7b595 object f2aa1e01ae0f1b0ea9354f2ea2c7444b5efc8ac5 type commit tag release-0.3.1 tagger Carl N. Baldwin <carl@ecbaldwin.net> 1134493064 -0700 ... (The rest of the tag object looks just as you'd expect) % git checkout -f # To reset changes done by failed merge % git merge "Merging release-0.3.1" HEAD refs/tags/release-0.3.1^{} Trying really trivial in-index merge... fatal: Merge requires file-level merging Nope. Merging HEAD with refs/tags/release-0.3.1^{} Merging: df17837d378c5ee07a26c97ac1bfc3fb3f7bacbb Fix test of string f2aa1e01ae0f1b0ea9354f2ea2c7444b5efc8ac5 Merging release-0.2.1 found 1 common ancestor(s): 43c6310a463aee1c2cbd882b81a596e429bc7f6c Commit msg Auto-merging scripts/config.sh Merge 5612809ea11c9709e3a5282f8002c1f993e127d6, made by recursive. scripts/config.sh | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Carl Baldwin Systems VLSI Laboratory Hewlett Packard Company MS 88 work: 970 898-1523 3404 E. Harmony Rd. work: Carl.N.Baldwin@hp.com Fort Collins, CO 80525 home: Carl@ecBaldwin.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: git-merge fails when trying to merge from a tag 2005-12-13 17:55 git-merge fails when trying to merge from a tag Carl Baldwin @ 2005-12-13 19:21 ` Junio C Hamano 2005-12-14 0:00 ` Carl Baldwin 0 siblings, 1 reply; 3+ messages in thread From: Junio C Hamano @ 2005-12-13 19:21 UTC (permalink / raw) To: Carl Baldwin; +Cc: git Carl Baldwin <cnb@fc.hp.com> writes: > I just tried to merge using a tag object. Thanks for the report. > % git merge "Merging release-0.3.1" HEAD refs/tags/release-0.3.1 Once I considered changing commit-tree to take any committish after -p, but thought the command is a low level primitive and the user should know what he is doing, but apparently, git-merge does not know what it is doing ;-). In fact, I never use "merge" myself, and haven't noticed this breakage until now (you would notice that the Everyday document never talks about "git merge"). Instead, I always do this: $ git pull . tag release-0.3.1 But you are right. It is advertised as the end-user command and demonstrated in the tutorial. How about this patch? I haven't looked at what (old) git-resolve and git-octopus commands do --- they may need similar parameter massaging. -- >8 -- [PATCH] allow merging any committish Although "git-merge" is advertised as the end-user level command (instead of being a "git-pull" backend), it was not prepared to take tag objects that point at commits and barfed when fed one. Sanitize the input while we validate them, for which we already have a loop. Signed-off-by: Junio C Hamano <junkio@cox.net> --- diff --git a/git-merge.sh b/git-merge.sh index a221daa..d25ae4b 100755 --- a/git-merge.sh +++ b/git-merge.sh @@ -97,11 +97,14 @@ head=$(git-rev-parse --verify "$1"^0) || shift # All the rest are remote heads +remoteheads= for remote do - git-rev-parse --verify "$remote"^0 >/dev/null || + remotehead=$(git-rev-parse --verify "$remote"^0) || die "$remote - not something we can merge" + remoteheads="${remoteheads}$remotehead " done +set x $remoteheads ; shift case "$#" in 1) ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: git-merge fails when trying to merge from a tag 2005-12-13 19:21 ` Junio C Hamano @ 2005-12-14 0:00 ` Carl Baldwin 0 siblings, 0 replies; 3+ messages in thread From: Carl Baldwin @ 2005-12-14 0:00 UTC (permalink / raw) To: Junio C Hamano; +Cc: git On Tue, Dec 13, 2005 at 11:21:19AM -0800, Junio C Hamano wrote: > Carl Baldwin <cnb@fc.hp.com> writes: > > > I just tried to merge using a tag object. > > Thanks for the report. > > > % git merge "Merging release-0.3.1" HEAD refs/tags/release-0.3.1 > > Once I considered changing commit-tree to take any committish > after -p, but thought the command is a low level primitive and > the user should know what he is doing, but apparently, git-merge > does not know what it is doing ;-). > > In fact, I never use "merge" myself, and haven't noticed this > breakage until now (you would notice that the Everyday document > never talks about "git merge"). Instead, I always do this: > > $ git pull . tag release-0.3.1 I've done this also. Personally, I feel a little more in control with a fetch, merge, tag type of flow. Maybe its just me but I couldn't get used to pull doing it all for me so I like to split the operation so that I can easily run a diff-tree between the two if I want after performing the fetch. While we're on the subject. It might be nice if merge behaved a little more like pull (without the fetch of course). At the moment, I've got to give merge three arguments whereas pull is happy with just one of them. So, sometimes I would like to type this % git merge <head> much like one would type % git pull . <head> Rather than typing % git merge "Message" HEAD <head> But, this might not be an easy API change to make. I suppose I could just type 'git pull . <head>' and be satisfied but my thought process tells be that I'm merging branches rather than pulling so I usually don't think about it. I'm really just typing my stream of thought at this point so I'll wrap it up. Thanks, Carl > But you are right. It is advertised as the end-user > command and demonstrated in the tutorial. > > How about this patch? I haven't looked at what (old) > git-resolve and git-octopus commands do --- they may need > similar parameter massaging. > > -- >8 -- > [PATCH] allow merging any committish > > Although "git-merge" is advertised as the end-user level command > (instead of being a "git-pull" backend), it was not prepared to > take tag objects that point at commits and barfed when fed one. > Sanitize the input while we validate them, for which we already > have a loop. > > Signed-off-by: Junio C Hamano <junkio@cox.net> > --- > diff --git a/git-merge.sh b/git-merge.sh > index a221daa..d25ae4b 100755 > --- a/git-merge.sh > +++ b/git-merge.sh > @@ -97,11 +97,14 @@ head=$(git-rev-parse --verify "$1"^0) || > shift > > # All the rest are remote heads > +remoteheads= > for remote > do > - git-rev-parse --verify "$remote"^0 >/dev/null || > + remotehead=$(git-rev-parse --verify "$remote"^0) || > die "$remote - not something we can merge" > + remoteheads="${remoteheads}$remotehead " > done > +set x $remoteheads ; shift > > case "$#" in > 1) > > -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Carl Baldwin Systems VLSI Laboratory Hewlett Packard Company MS 88 work: 970 898-1523 3404 E. Harmony Rd. work: Carl.N.Baldwin@hp.com Fort Collins, CO 80525 home: Carl@ecBaldwin.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2005-12-14 0:00 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2005-12-13 17:55 git-merge fails when trying to merge from a tag Carl Baldwin 2005-12-13 19:21 ` Junio C Hamano 2005-12-14 0:00 ` Carl Baldwin
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.