[darcs-users] domains: a proposal for composing repositories

Nils Decker darcs at ndecker.de
Tue Jan 31 21:55:27 UTC 2006


Hello,

i had an idea that is a lot like yours but would require much deeper changes 
in darcs, but anyway here it is:

Every patch in a repo has path translation that consists of a prefix that is 
removed from every path in the patch and a prefix that is added to every 
path. If a file/directory path does not begin with the removed prefix it is 
silently ignored. The translation is local to the repo that contains the 
patch.
A patch that depends on another patch inherits this translation. A patch can 
not depend on patches with different translations.  Tags might be allowed to 
depend on any patch.
A new repo begins with with a patch that creates the root of the repo.  When 
this patch is pulled into another repo with a translation it becomes the 
adddir for the path it is pulled to.
When pulling a patch that has no dependencies the translation can be 
specified.

This allows "mounting" any part of a repo anywhere into another repo while 
allowing patches to flow in any direction.

Mockup:
# repo with some files
darcs pull ../darcs --remove-prefix manual --add-prefix darcs-manual
# now there is a new directory "darcs-manual" with the files of the darcs
# "manual" directory
darcs add darcs-manual/newfile
darcs add otherfile
darcs record
# the record can not record both files into one patch because one depends on 
# the adddir "manual" translated to "darcs-manual" and the other on the adddir
# of the repo root that has a different translation (none).
darcs apply < some patch to darcs
# because the patch depends on the darcs root patch it inherits the 
# translation

  Nils




More information about the darcs-users mailing list