That's only a _bug_ in your implementation of the synonym for
"svn diff" which blindly used "git diff HEAD".
"git diff HEAD" is not a synonym for "svn diff" when HEAD does
not exist yet, because you are asking "please give me a diff
between the tree in the HEAD commit and my working tree files
through the index". So if you are doing "git-svnish-diff"
Porcelain script, it should notice that HEAD does not exist yet
and take an appropriate action. We do something similar in
git-status; the porcelain notices and acts differently when HEAD
is not there yet.
This "there is no HEAD yet" is not related to the index, but I
am skeptical about trying to hide the index from the end user.
You can make some things map more naturally to systems like SVN
and CVS than other things. For example, Nico's proposal to
always use remote tracking branches and defaulting to use
refs/remotes/ would be a way to match UI of pull/push to another
existing system and that would work well (I am not agreeing to
the change to make 'pull' not to do the merge which would break
existing users -- I am just saying that the result would be self
consistent). But things that have difference at the concept
level, I suspect no clever mapping to hide the differences would
work well.
The index is quite central to the way git works at the concept
level, and I think it is doing disservice to the end user to try
hiding it forever from them and failing to do so, rather than
being honest and teaching them the concept upfront.
But me thinking so does not necessarily mean you are forbidden
from trying. Your efforts may result in a system where the
index is totally invisible and the end user never has to know
about it.
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html