Version control systems
Duncan Coutts
duncan.coutts at worc.ox.ac.uk
Tue Aug 12 08:17:25 EDT 2008
On Mon, 2008-08-11 at 14:29 +0200, Thomas Schilling wrote:
> On 11 Aug 2008, at 13:00, Duncan Coutts wrote:
> > It's not clear to me that we've really bothered to find out. The last
> > evaluation in relation to ghc that I'm aware of was prior to the 2.0
> > release. My impression is that we've all complained about the darcs v1
> > problems (justly) but spent the most effort investigating things other
> > than darcs v2 which would be the easiest to upgrade to and not have
> > the
> > problems of using two different systems for ghc vs other libs.
>
> I converted the ghc repo to darcs2 (locally):
>
> Getting file local history:
>
> * darcs changes --last 20 compiler/main/HscTypes.lhs
>
> very quick but prints only two patches
>
> * darcs changes compiler/hsSyn/HsTypes.lhs
>
> 1m22s (16s for the second time)
Interesting that you get so much variance between runs. I get 32s user
time first time and 30s the second.
In this test darcs 2 is faster that darcs 1 on v1 format repos and darcs
2 is faster on v2 format repos than on v1 format, though only by a few
seconds.
At a guess, the issue here is that darcs is not indexing those changes
per-file, which is why --last 20 doesn't give the last 20 for that file
and why asking for all changes takes so long. Perhaps if it did cache
this info per-file it'd help with annotate too.
> Git <1s
>
> * darcs get ghc2 ghc-test (creating a *local* branch)
>
> real 13m25.365s
> user 0m14.677s
> sys 0m29.541s
>
> (at least it seems it actually worked, though)
That's an order of magnitude different to what I see:
$ time darcs2 get ghc2 ghc-test
Copying patches, to get lazy repository hit ctrl-C...
Finished getting.
real 0m21.428s
user 0m11.221s
sys 0m1.380s
Note that this is much faster in the darcs v2 format than darcs 2 using
the darcs v1 format:
$ time darcs2 get ghc ghc-test1
Finished getting.
real 1m51.959s
user 1m15.449s
sys 0m11.877s
However darcs v1 is faster still:
$ time darcs1 get ghc ghc-test1_
Copying patch 19084 of 19084... done.
Finished getting.
real 0m8.851s
user 0m3.668s
sys 0m0.708s
It doesn't seem to spend any time applying the patches, unlike what
darcs 2 is doing for v1 or v2 formats.
Though in any case, one doesn't need to darcs get locally since one can
use cp -a right?
> git clone ghc g2 (the slow method of creating a local branch)
>
> real 0m6.742s
> user 0m0.335s
> sys 0m0.652s
>
> * I haven't tested a remote pull yet. At 80 Kb/s, it should take
> about 15min to clone via Git (70 MB). A test of darcs would be
> interesting.
We'll be testing this for the code.h.o conversion. We'll keep you
posted.
Duncan
More information about the Glasgow-haskell-users
mailing list