On 2008.04.09 12:14:28 +0200, Ingo Molnar wrote: > > i just had a rather annoying session with git - here's the dump and > commentary, in case anyone is interested in usability fineprint. > > it was with git-core-1.5.4.3-2.fc8 - so if it's all fixed/improved in > 1.5.5, or if this is blatant user error for which i deserve to be > punished then my apologies! > > usually i just have a single git repo that tracks everything > interesting, but this time i did something i rarely do: i tried to merge > one local tree of mine into another local tree of mine. So i had no > commands (or even concepts) cached in my short-term memory that would > achieve this goal, i just tried the commands that i thought to be > 'obvious', without applying much (or any) IQ to those commands: > > $ cd linux-2.6-sched-devel.git > > $ git-remote add ~/linux-2.6-x86.git > > $ git-remote show x86 > * remote x86 > URL: /home/mingo/linux-2.6-x86.git > New remote branches (next fetch will store in remotes/x86) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ I gues that's key here. The remote was added, but you don't actually have fetched the branches yet. Thus the merge fails, but the pull with the correct syntax succeeded, because it does a fetch first. > base for-akpm for-linus latest master testing > > $ git-merge x86/latest > x86/latest - not something we can merge > > # > # ho hum. Not something 'we' can merge. Do i care? :-) There's no > # actionable reference given to the user about how to resolve this > # problem. So i kept on trying: > # No branch, no merge ;-) > $ git-fetch x86/latest > fatal: 'x86/latest': unable to chdir or not a git archive > fatal: The remote end hung up unexpectedly > > $ git-pull x86/latest > fatal: 'x86/latest': unable to chdir or not a git archive > fatal: The remote end hung up unexpectedly > > # > # hm. two fatal messages, suggesting that there's something really > # wrong while there's nothing wrong. > # The syntax is "git pull <repository> <refspec>" So you're trying to fetch/pull from a repository in "x86/latest", that path doesn't exist and that is pretty fatal as you cannot fetch/pull from a repository that doesn't exist. > what got me going after experimenting around some more was this exact > command: > > $ git-pull x86 latest > > (that fetch+merge went problem-free.) Yeah, correct syntax and pull does the fetch for you. > also, the first natural thing i did was to just type: > > $ git-merge ~/linux-2.6-x86.git/ > > which i naively assumed would sort things out for me and provide some > reasonable default behavior - but instead it just gave an annoyingly > unhelpful error message: > > /home/mingo/linux-2.6-x86.git/ - not something we can merge AFAIK merge cannot handle stuff that's outside your repo. To merge stuff from another repo without adding a remote, you have to use pull (or manually do the fetch+merge dance), ie.: git pull ~/linux-2.6-x86.git latest should do. Björn -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html