Hi,
On Thu, 16 Nov 2006, Linus Torvalds wrote:
On Thu, 16 Nov 2006, Johannes Schindelin wrote:
quoted
- a terrible UI.
Why? We _do_ have the temporary branch. It's called FETCH_HEAD.
It is a terrible UI, because it was not that obvious to me. And I consider
myself not a git newbie.
Besides, it is not really a temporary branch. If it was, the pull would
_not_ download all these objects again, would it?
quoted
_Also_, git-pull not storing the fetched branches at least temporarily
often annoyed me: the pull did not work, and the SHA1 was so far away I
could not even scroll to it.
Again, why didn't you use FETCH_HEAD?
Because I am a Jar-HEAD?
If the user doesn't give us a head to write to, we clearly MUST NOT write
to any long-term branch. That would be a _horrible_ mistake.
I was _not_ suggesting a long-term branch. Just a way to do-what-i-want
and not waste bandwidth.
And your "solution" is obviously totally unusable. git ABSOLUTELY MUST NOT
overwrite any existing branches unless explicitly told to do so by the
user.
Guess three times why I did not post the patches.
But the real problem is not necessarily the behaviour; it is the obscure
fashion of the behaviour. You may not understand that problem, because you
were there from the beginning. You saw the big-bang and how all the
quarks formed all of a sudden, and how matter and eventually planets
and suns came into being.
But others (me included) were not there. Or they did not really watch. And
now they see all these creatures, and plants, and bacteria, and they do
not understand how these are all connected, because of that. And now they
think "wow that must have been some intelligent design, and really a
miracle, and I cannot understand how it works." But that is not true
(the latter part of course).
There is something to be said about the simplicity of Mercurial. It's
inner workings may suck, but people get easily attracted by it.
I do not claim we should imitate Mercurial, or even hide the index (even
if I sometimes wonder if the index is not just a clever way to accelerate
commits, and nothing more).
So I really don't see your point.
A lot of the complaints seem to not be about the interfaces, but about
people not _understanding_ and knowing what the interfaces do.
But the interfaces should be usable interfaces! They should _explain_ what
they do. Other software does so, it can't be _that_ hard.
git merge "$(git fmt-merge-msg < .git/FETCH_HEAD)" HEAD FETCH_HEAD
I find that quite easy to understand. Why? Because I happen to _know_ the
syntax of -merge and -fmt-merge-msg. For similar reasons I _understand_
why -pull behaves like it does. But others don't; they will shudder and
then run.
Maybe it is not important that -pull fetches all objects all over again.
But it _is_ important to make things like merging branches (local or
remote) trivial. It _is_ important to make the user experience be fun.
Ciao,
Dscho