Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #48461
| References | (6 earlier) <CAN8CLg=sN8oF6hxPNojF1nyfhw8HXAXr-unsy_wX_=ks6BvaGA@mail.gmail.com> <mailman.3359.1371275633.3114.python-list@python.org> <roy-DB7870.10161515062013@news.panix.com> <CAPTjJmreNJ0acuG=GAr186pMST7h5G6_Y1osz=Pj2L=DC6RyFw@mail.gmail.com> <CAMw+j7JJtt-oU8j7eOmE3E6ySX7GyqOEzxSSui0qH5iu6mpbKg@mail.gmail.com> |
|---|---|
| Date | 2013-06-16 12:39 -0400 |
| Subject | Re: Version Control Software |
| From | Jason Swails <jason.swails@gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.3447.1371400774.3114.python-list@python.org> (permalink) |
[Multipart message — attachments visible in raw view] - view raw
On Sun, Jun 16, 2013 at 9:30 AM, Chris “Kwpolska” Warrick <
kwpolska@gmail.com> wrote:
> On Sun, Jun 16, 2013 at 1:14 AM, Chris Angelico <rosuav@gmail.com> wrote:
> > Hmm. ~/cpython/.hg is 200MB+, but ~/pike/.git is only 86MB. Does
> > Mercurial compress its content? A tar.gz of each comes down, but only
> > to ~170MB and ~75MB respectively, so I'm guessing the bulk of it is
> > already compressed. But 200MB for cpython seems like a lot.
>
> Next time, do a more fair comparison.
>
> I created an empty git and hg repository, and created a file promptly
> named “file” with DIGIT ONE (0x31; UTF-8/ASCII–encoded) and commited
> it with “c1” as the message, then I turned it into “12” and commited
> as “c2” and did this one more time, making the file “123” at commit
> named “c3”.
>
> [kwpolska@kwpolska-lin .hg@default]% cat * */* */*/* 2>/dev/null | wc -c
> 1481
> [kwpolska@kwpolska-lin .git@master]% cat * */* */*/* */*/*/* 2>/dev/null
> | wc -c
> 16860 ← WRONG!
>
> There is just one problem with this: an empty git repository starts at
> 15216 bytes, due to some sample hooks. Let’s remove them and try
> again:
>
> [kwpolska@kwpolska-lin .git@master]% rm hooks/*
> [kwpolska@kwpolska-lin .git@master]% cat * */* */*/* */*/*/* */*/*/*
> 2>/dev/null | wc -c
> 2499
>
> which is a much more sane number. This includes a config file (in the
> ini/configparser format) and such. According to my maths skils (or
> rather zsh’s skills), new commits are responsible for 1644 bytes in
> the git repo and 1391 bytes in the hg repo.
>
This is not a fair comparison, either. If we want to do a fair comparison
pertinent to this discussion, let's convert the cpython mercurial
repository into a git repository and allow the git repo to repack the diffs
the way it deems fit.
I'm using the git-remote-hg.py script [
https://github.com/felipec/git/blob/fc/master/contrib/remote-helpers/git-remote-hg.py]
to clone a mercurial repo into a native git repo. Then, in one of the rare
cases, using git gc --aggressive. [1]
The result:
Git:
cpython_git/.git $ du -h --max-depth=1
40K ./hooks
145M ./objects
20K ./logs
24K ./refs
24K ./info
146M .
Mercurial:
cpython/.hg $ du -h --max-depth=1
209M ./store
20K ./cache
209M .
And to help illustrate the equivalence of the two repositories:
Git:
cpython_git $ git log | head; git log | tail
commit 78f82bde04f8b3832f3cb6725c4bd9c8d705d13b
Author: Brett Cannon <brett@python.org>
Date: Sat Jun 15 23:24:11 2013 -0400
Make test_builtin work when executed directly
commit a7b16f8188a16905bbc1d49fe6fd940078dd1f3d
Merge: 346494a af14b7c
Author: Gregory P. Smith <greg@krypto.org>
Date: Sat Jun 15 18:14:56 2013 -0700
Author: Guido van Rossum <guido@python.org>
Date: Mon Sep 10 11:15:23 1990 +0000
Warning about incompleteness.
commit b5e5004ae8f54d7d5ddfa0688fc8385cafde0e63
Author: Guido van Rossum <guido@python.org>
Date: Thu Aug 9 14:25:15 1990 +0000
Initial revision
Mercurial:
cpython $ hg log | head; hg log | tail
changeset: 84163:5b90da280515
bookmark: master
tag: tip
user: Brett Cannon <brett@python.org>
date: Sat Jun 15 23:24:11 2013 -0400
summary: Make test_builtin work when executed directly
changeset: 84162:7dee56b6ff34
parent: 84159:5e8b377942f7
parent: 84161:7e06a99bb821
user: Guido van Rossum <guido@python.org>
date: Mon Sep 10 11:15:23 1990 +0000
summary: Warning about incompleteness.
changeset: 0:3cd033e6b530
branch: legacy-trunk
user: Guido van Rossum <guido@python.org>
date: Thu Aug 09 14:25:15 1990 +0000
summary: Initial revision
They both appear to have the same history. In this particular case, it
seems that git does a better job in terms of space management, probably due
to the fact that it doesn't store duplicate copies of identical source code
that appears in different files (it tracks content, not files).
That being said, from what I've read both git and mercurial have their
advantages, both in the performance arena and the features/usability arena
(I only know how to really use git). I'd certainly take a DVCS over a
centralized model any day.
All the best,
Jason
[1] I know I just posted in this thread about --aggressive being bad, but
the packing from the translation was horrible --> the translated git repo
was ~2 GB in size. An `aggressive' repacking was necessary to allow git to
decide how to pack the diffs.
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Version Control Software cutems93 <ms2597@cornell.edu> - 2013-06-12 16:27 -0700
Re: Version Control Software Mark Janssen <dreamingforward@gmail.com> - 2013-06-12 16:36 -0700
Re: Version Control Software Joel Goldstick <joel.goldstick@gmail.com> - 2013-06-12 19:52 -0400
Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-13 10:04 +1000
Re: Version Control Software Tim Chase <python.list@tim.thechases.com> - 2013-06-12 21:41 -0500
Re: Version Control Software Ben Finney <ben+python@benfinney.id.au> - 2013-06-13 12:30 +1000
Re: Version Control Software rusi <rustompmody@gmail.com> - 2013-06-13 04:54 -0700
Re: Version Control Software Grant Edwards <invalid@invalid.invalid> - 2013-06-13 17:06 +0000
Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-14 07:26 +1000
Re: Version Control Software Grant Edwards <invalid@invalid.invalid> - 2013-06-13 21:53 +0000
Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-14 07:59 +1000
Re: Version Control Software Zero Piraeus <schesis@gmail.com> - 2013-06-13 18:20 -0400
Re: Version Control Software Terry Reedy <tjreedy@udel.edu> - 2013-06-13 20:09 -0400
Re: Version Control Software Fábio Santos <fabiosantosart@gmail.com> - 2013-06-13 23:15 +0100
Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-14 08:17 +1000
Re: Version Control Software Benjamin Kaplan <benjamin.kaplan@case.edu> - 2013-06-13 15:24 -0700
Re: Version Control Software Neil Hodgson <nhodgson@iinet.net.au> - 2013-06-14 08:53 +1000
Re: Version Control Software Tim Chase <python.list@tim.thechases.com> - 2013-06-12 21:48 -0500
Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-12 22:51 -0400
Re: Version Control Software Rui Maciel <rui.maciel@gmail.com> - 2013-06-13 13:43 +0100
Re: Version Control Software cutems93 <ms2597@cornell.edu> - 2013-06-12 23:00 -0700
Re: Version Control Software rusi <rustompmody@gmail.com> - 2013-06-12 23:43 -0700
Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-13 07:08 -0400
Re: Version Control Software MRAB <python@mrabarnett.plus.com> - 2013-06-13 12:26 +0100
Re: Version Control Software rusi <rustompmody@gmail.com> - 2013-06-13 04:46 -0700
Re: Version Control Software Anssi Saari <as@sci.fi> - 2013-06-14 15:06 +0300
Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-14 08:32 -0400
Re: Version Control Software Grant Edwards <invalid@invalid.invalid> - 2013-06-14 14:24 +0000
Re: Version Control Software Dave Angel <davea@davea.name> - 2013-06-14 16:55 -0400
Re: Version Control Software Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-06-14 20:26 -0400
Re: Version Control Software Tim Delaney <timothy.c.delaney@gmail.com> - 2013-06-15 15:39 +1000
Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-15 15:53 +1000
Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-15 10:16 -0400
Re: Version Control Software Giorgos Tzampanakis <giorgos.tzampanakis@gmail.com> - 2013-06-15 15:29 +0000
Re: Version Control Software Dan Sommers <dan@tombstonezero.net> - 2013-06-15 18:29 +0000
Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-16 09:01 +1000
Re: Version Control Software Tim Delaney <timothy.c.delaney@gmail.com> - 2013-06-16 07:49 +1000
Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-16 09:14 +1000
Re: Version Control Software rusi <rustompmody@gmail.com> - 2013-06-15 20:55 -0700
Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-16 14:13 +1000
Re: Version Control Software Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-16 05:20 +0000
Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-16 15:29 +1000
Re: Version Control Software Terry Reedy <tjreedy@udel.edu> - 2013-06-16 05:15 -0400
Re: Version Control Software Chris Angelico <rosuav@gmail.com> - 2013-06-16 19:51 +1000
Re: Version Control Software Chris “Kwpolska” Warrick <kwpolska@gmail.com> - 2013-06-16 15:30 +0200
Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-16 09:50 -0400
Re: Version Control Software Lele Gaifax <lele@metapensiero.it> - 2013-06-16 17:48 +0200
Re: Version Control Software Terry Reedy <tjreedy@udel.edu> - 2013-06-16 13:02 -0400
Re: Version Control Software Jason Swails <jason.swails@gmail.com> - 2013-06-16 12:39 -0400
Re: Version Control Software Serhiy Storchaka <storchaka@gmail.com> - 2013-06-13 10:20 +0300
Re: Version Control Software Tim Chase <python.list@tim.thechases.com> - 2013-06-13 07:34 -0500
Re: Version Control Software Roy Smith <roy@panix.com> - 2013-06-13 08:52 -0400
csiph-web