[darcs-users] Fwd: Towards a conflict-free revision control system.
Max Battcher
me at worldmaker.net
Wed Jan 21 01:25:56 UTC 2009
Trent W. Buck wrote:
> Kari Hoijarvi <hoijarvi at seas.wustl.edu> writes:
>
>> Dan Pascu wrote:
>> Program is stored as a tree, and the IDE pretty prints it, the way you
>> choose to.
>
> I believe Smalltalk and Factor do something like this.
>
> To handle arbitrary source formats in this way (which is what Darcs
> would need to do), you need two steps:
>
> - a READ procedure, which converts the working tree into a normal
> form. For example, a C language READ might utilize gccxml, and a
> ReStructured Text READ would use rst2xml.
>
> - a SHOW procedure, which converts the internal representation (normal
> form) to something the user can edit without going insane.
>
> Each user can then customize SHOW so that the working tree uses their
> preferred "style", e.g. literal tabs vs. spaces.
>
> This is a non-trivial task to implement. In particular, if your READ
> procedure has a bug, you can easily get completely screwed. I spoke
> once to someone who tried to use lint (with svn, IIRC) for this purpose,
> and they discovered that it would break some of their more complex cpp
> macros.
... and then there is the fun that David Roundy liked to point out: how
many of us program in complete compilable (and thus
deconstructable/reconstructable) code *all the time*? What if you want
to save a non-working fragment in progress? What if you make a tiny
mistake and the file fails to parse correctly?
You need either extremely hardened parsers that can withstand and well
recover from error... or separate patch types/source control systems
for works in progress versus tested/compiled files...
--
--Max Battcher--
http://worldmaker.net
More information about the darcs-users
mailing list