[darcs-users] darcs patch: Hide the inefficient "darcs put" command.

Trent W. Buck trentbuck at gmail.com
Sat Dec 6 16:03:34 UTC 2008

On Sat, Dec 06, 2008 at 05:37:43PM +0200, Dan Pascu wrote:
>> Except that for the most common case, a local branch, get is
>> bi-directional, and more efficient that the currently
>> implementation of put.  Using darcs' repository as an example:
> I think you are comparing apples with oranges here. You issues a
> lazy get which only took the pristine tree, while put took and
> applied all patches

OK, then let's compare it without laziness (even though it is a local
branch, and I *want* laziness).  There's still an order of magnitude
difference between get and put:

    $ time darcs get --complete --repodir $PWD.branch1 $PWD
    Copying patches, to get lazy repository hit ctrl-C...
    Finished getting.

    real    0m18.255s
    user    0m8.629s
    sys     0m3.728s

    $ time darcs put $PWD.branch2
    Merging them 3414/7011
    Writing pristine 205/236
    Optimizing inventory 3575/7011
    Writing inventory 1/1 :
    Synchronizing pristine 203/236
    Finished applying...
    Put successful.

    real    4m49.517s
    user    3m23.681s
    sys     0m35.830s

> IMO, it's less useful to have a lazy put (maybe it should be there
> for symmetry), because the use target for put is a bit different
> from get.  [...] Put OTOH, is mostly used to setup a central
> repository for syncing between multiple disconnected developers.

Surely put is mostly used that way BECAUSE that's the only case for
which get is not a superior alternative.  If put actually did
something significant, it would actually BE symmetrical with get and
it would be useful to use it for local lazy branches.

More information about the darcs-users mailing list