[darcs-users] Colin Walters blogs on Arch changesets vs Darcs

Anthony Towns aj at azure.humbug.org.au
Mon Nov 22 04:51:46 UTC 2004


David Roundy wrote:
> On Sun, Nov 21, 2004 at 06:23:53PM +1000, Anthony Towns wrote:
>>Because users suck, you need to do some authentication too, so we want 
>>the manifest file to look like:
>>  [TAG DARCSHIVE-0.4
>>  aj at azure.humbug.org.au**20041121035651]
>>  **
>>  adf2acdc15c84a905189346934ecca1b 490 ./BUGS
>>  284ede192494b511a58bfeabd71e4c0f 589 ./darcs-scp
>>  80c439f2fc9119c6f5165da872da73de 473 ./darcs-ssh
>>  dd145a47eebf7c23e5c00e739e4cfc71 6622 ./darcshive
>>  854585c02722ee0b639b363acdf3be3b 409 ./darcshive.cgi
>>  1692159f74ff844afe729c6097c7dcd7 1724 ./README
> Hmmmm.  This is interesting, in that it sounds a lot like one of Juliusz's
> ideas for spiffing up Current, which is to store hashes of all the files in
> _darcs/current, rather than the files themselves.  His idea was that we
> could then generate from patches the actual file contents, when needed
> (which could be more than a tad expensive).

Yup. I guess there are two key questions:

   * What about previous history/patches to whatever version the user
     wanted to patch?

   * What's the most pleasant format for getting this stuff to users?

(Actually I thought there was a third, but I can't think of it now)

Shipping a simple MANIFEST file seems fairly pleasant -- if you include 
the generated files too and sign it, it works for authentication as well 
as making it easy for users to turn themselves into developers; but otoh 
shipping a skeletal _darcs/ tree means you could at least include a full 
inventory which might come in handy.

(Another alternative, if this is important, would be to have a ChangeLog 
format that can be turned back into an inventory directly)

Oh, that's the third issue: keeping darcs as simple as possible internally.

 > I'm imagining the command being a flag
> to optimize:  darcs optimize --from-hashed-current, or somesuch.  It could
> accept a tarball optionally as an argument, to get the "clean" sources.

Hrm, I'd find "optimize" to be an odd command to be using; "init" or 
"get" would make more sense to me if I'm somewhere I can't yet "record". 
YMMV, IMHO, FWIW, blahblahblah.

> darcs optimize --from-hashed-tarball ../darcs-hive-0.5.tar.gz

Does darcs really want to deal with variations like .tar.gz, .tar.bz2, 
.zip, .srpm, .hqx? Hrm, I guess "darcs dist" already implies darcs has 
to deal with tarballs in some sense, though.

   tar xzvf darcs-hive-0.4.tar.gz
   cd darcs-hive-0.4
   less darcshive.cgi
   # <expletives>
   vi darcshive.cgi
   # much better!

   darcs init --from-manifest ./MANIFEST \
       --initial-record-from ../darcs-hive-0.4.tar.gz

   darcs record -m 'fix stupid bugs'
   darcs send

versus

   ...
   # much better!

   cd ..
   mv darcs-hive-0.4 darcs-hive-0.4aj
   tar xzvf darcs-hive-0.4.tar.gz
   cd darcs-hive-0.4
   darcs init --from-manifest ./MANIFEST
   cp -a ../darcs-hive-0.4aj/* ./

   darcs record -m 'fix stupid bugs'
   darcs send

(The cases are the same if you darcs-ify your working directory before 
making any changes, of course)

> The question would be how to generate the tarball in the first place.  If
> you use darcs dist, this is pretty easy.  But alas, there are good reasons
> for using automake, for example, and I'm not sure how we could make it
> really straightforward to convince automake to generate the appropriate
> _darcs.

You could call it "_darcs-skel" or something, to make it clear that you 
need to use "darcs init --from-skel" before you can use record. Then you 
can make "_darcs-skel" a Makefile target too. Maybe.

> I think I'm going in circles (I almost caught my tail!), so I'll stop now.

Sure, it's quite a triumph when you do, but it sure is hard to get the 
taste out of your mouth afterwards.

Hrm, bonus MANIFEST feature: if you send someone a tarball of something 
you're working on, that you haven't tagged yet, and suddenly find 
they're sending you useful features, you can go back to it, tag it, 
create a MANIFEST, and send it to them. Well, you could do the same 
thing with a darcs-skel directory, but a text file's easier to bounce 
around after the fact.

Cheers,
aj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 155 bytes
Desc: OpenPGP digital signature
Url : http://lists.osuosl.org/pipermail/darcs-users/attachments/20041122/8c9b6e33/attachment.pgp 


More information about the darcs-users mailing list