[darcs-devel] darcs patch: Fix issue 185: don't combine AddFile and RmFile in the...

Lele Gaifax lele at nautilus.homeip.net
Sat Aug 19 17:24:02 PDT 2006


lele at nautilus.homeip.net wrote:
> hunk ./PatchViewing.lhs 173
> -              | f == f' = combine ((f,a.+a',b.+b',r+r',isd,c||c'):ss)
> +              -- Don't combine AddFile and RmFile: (maybe an old revision of) darcs
> +              -- allows a single patch to add and remove the same file, see issue 185
> +              | f == f' && (a.+b' /= -1) && (a'.+b /= -1) = combine ((f,a.+a',b.+b',r+r',isd,c||c'):ss)

It turns out that this patch does not do exactly what I intended. It 
prevents more combinations than needed/wanted. My previous attempt was 
right, where I used a more explicit condition:

     f == f' && (a /= -1 || b' /= -1) && (a' /= -1 || b /= -1)

that covers *only* AddFile and RmFile, so that I get this output:

$ ./darcs changes --match "hash 
20050606193150-891bb-dad36762ac41517fe0a9136ea14fff32b2930f0d.gz" --summ 
--repo=http://www.carpetcode.org/~darcs/carpet-stable-3
Mon Jun  6 21:31:50 CEST 2005  Erik Schnetter <schnetter at aei.mpg.de>
   * CarpetWeb: Update web pages

   Update the web pages.
   Explain stable and development versions better.
   Update darcs binaries and documentation.

     A ./Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz
     R ./Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz
     R ./Carpet/CarpetWeb/doc/darcs-1.0.2.ps.gz
     A ./Carpet/CarpetWeb/doc/darcs-1.0.3.ps.gz
     M ./Carpet/CarpetWeb/get-carpet-darcs.html -68 +128
     M ./Carpet/CarpetWeb/index.html -56 +17
     M ./Carpet/CarpetWeb/olds.html -1 +22
     M ./Carpet/CarpetWeb/work-with-darcs.html -4 +4

while with the patch I sent I get this:

Mon Jun  6 21:31:50 CEST 2005  Erik Schnetter <schnetter at aei.mpg.de>
   * CarpetWeb: Update web pages

   Update the web pages.
   Explain stable and development versions better.
   Update darcs binaries and documentation.

     A ./Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz
     R ./Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz
     M ./Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz
     R ./Carpet/CarpetWeb/doc/darcs-1.0.2.ps.gz
     M ./Carpet/CarpetWeb/doc/darcs-1.0.2.ps.gz
     A ./Carpet/CarpetWeb/doc/darcs-1.0.3.ps.gz
     M ./Carpet/CarpetWeb/doc/darcs-1.0.3.ps.gz
     M ./Carpet/CarpetWeb/get-carpet-darcs.html -68 +128
     M ./Carpet/CarpetWeb/index.html -56 +17
     M ./Carpet/CarpetWeb/olds.html -1 +22
     M ./Carpet/CarpetWeb/work-with-darcs.html -4 +4

which is clearly wrong.

Now the question is: what's better, amending my change and resend a new 
patch, or recording this fix a sending an additional patch with the 
correct condition?

ciao, lele.




More information about the darcs-devel mailing list