I don't know Mercurial, but I know git pretty well.
I can't remember any post hinting at a problem with regard to git's
safety.
Git is very conservative about data. In fact, even if you fsck up royally,
chances are very good that you recover without losing any data (which was
stored in the repo).
Of course, a "rm -rf ." will hurt in any case.
I don't know what posts you mean.
In any case, if performance is an issue for you, you should keep your
repository packed (with new Git, you should call "git gc" every once in a
while).
No idea.
Git's index is a staging area. Every VCS has it, but most hide it. One of
the moments where Git's index really shines is merge conflicts: you can
inspect _just_ the conflicts by calling "git diff".
Objects names were the hash of the _compressed_ contents. Now it's the
uncompressed contents (which allows you to change the compression
parameters without any hassle). This was _looong_ time ago.
No idea about Mercurial, but you can clone using hard links with the
--local option.
There is still a script called git-relink, which can hard link
unpacked objects of two object databases, but since we usually keep
everything packed nowadays, I deem this obsolete.
Of course, the better way is to use --shared with clone, so that a
"virtual hard link" is set up: The alternates mechanism of Git is set up
such that you reuse (even new) objects from the alternate repository.
I am not a fan of Python. I think that all the Perl hackers of old days
migrated to Python, because the code _looks_ nicer. But it's the same old
crap.
That said, nothing (least of which, me) hinders you reimplementing Git in
Python. The performance critical parts are in the revision walking, and
the diff machinery.
The revision walking is not really reentrant (yet), so you would have to
fix that up a little before being able to link it natively.
Usually not. I do it all the time (keep the branches in the same repo).
You _have_ to fetch it to merge it (this operation, fetch & merge, is
called pull with Git), but there is no difference if the branch
to-be-merged is local or remote. In fact, branches are not supposed to be
"local" or "remote". You can _have_ them where you want. And you can tell
if two branches are identical by the object name of their tip.
Hth,
Dscho
-
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