

Dulwich: Pure Python implementation of git - DanielRibeiro
http://samba.org/~jelmer/dulwich/

======
koenigdavidmj
Github's hg-git plugin ( <http://hg-git.github.com/> ) is built with this, and
so manages to avoid a dependency on the git binaries.

~~~
dborowitz
Incidentally, the second most frequent contributor to hg-git after schacon is
Augie Fackler, one of the Google engineers who helped with Google Code's git
implementation (and also a frequent hg hacker).

~~~
mvzink
A few months ago, I was at a talk at Google Chicago with two of the original
creators of Subversion (Ben Collins-Sussman and Brian Fitzpatrick). After
profuse apologies, they said everyone in the room should switch from git to
hg, and that people who still used git just didn't realize how much it sucks.
Then I realized why Google released hg support before git support :P

~~~
dimatura
What didn't they like about Git?

~~~
self
At the time they evaluated hg and git, hg had better http protocol support.

~~~
thesz
And that's all?

Security, speed, all that's don't outweight http protocol support?

~~~
durin42
The http protocol was definitely the dealbreaker. That said, if you think hg
is less secure than git you've bought into some FUD (the models are so similar
it's almost silly, and the security quality is identical). The speed
differences between hg and git aren't perceivable for the bulk of projects,
even at sizes larger than most corporate repositories I've heard of. There are
some operations that are faster for git (notably history rewriting), and
others that are faster for hg (notably blame and per-file log). The two
systems are very similar and just make some slightly different tradeoffs.

~~~
thesz
As far as I can tell, all changesets in Git are summed by SHA-1. The sum is
also an ID for the changeset. You cannot change a changeset without modifying
its' SHA-1 sum. This design make Git secure from tampering.

The ID for Hg changesets are some 48-bit numbers, like fb43b575b296. I do not
think that this size is safe enough.

~~~
durin42
Mercurial prints the first 12 bytes of the hexlified sha1 by default, but
everything is recorded using the full sha1, and can be referenced as such. You
can view the full sha1 in a number of ways, the easiest would be "hg log
--limit 1 --debug".

------
simonw
This is the library that Google used for Google Code's git support.

------
swombat
Dulwich is a real town in the South of London, with a relatively large school
called Dulwich College, where I studied. A bit spooked to see a library named
after it...

~~~
brendn
"Dulwich is the place where Mr. and Mrs. Git live in one of the Monty Python
sketches." (<http://pypi.python.org/pypi/dulwich>)

------
glenjamin
Does anyone know what the performance of this on windows (maybe with PyPy?) is
compared to MSys Git or Cygwin.

If it's pretty good there should be some mileage in making a reasonable git
client for windows based on this.

~~~
nuclear_eclipse
That's exactly what I was thinking of when seeing this. It could prove
fruitful for getting a "Tortoise" interface for git that's both easy to
maintain and doesn't rely on clunky bits like msysgit.

------
uriel
What i would like to see is an Hg implementation in Go.

~~~
andrewflnr
Why, exactly? It sounds like an oddly interesting idea to me, too, but I'm not
sure why and I'd like to hear your reasons.

~~~
thristian
The recently-announced fork of the Plan 9 operating system, 9front, keeps it
source in a Mercurial repository, and includes a Go compiler in the base
operating system (which makes sense, since the creators of Plan 9 are also
pretty much the creators of Go). I guess a Mercurial port to Go would make
life a lot easier there.

------
sitkack
I don't know why this makes me so happy.

------
morphir
python is like china. By making a shameless copy for them self to use.

