[darcs-users] [patch304] Reduce DarcsFlag usage in Darcs.Patch and Darcs.Repository

Petr Rockai me at mornfall.net
Sat Jul 17 14:25:19 UTC 2010


Eric Kow <kowey at darcs.net> writes:

> On Fri, Jul 16, 2010 at 22:56:47 +0200, Petr Rockai wrote:
> Are you sure?
>
> While I agree with your characterisation of how the modified
> makeScriptsExecutable (optionally constrained by patch sequence), I was
> saying that the new approach is almost imperceptibly looser because it
> affects the shebang file whether or not the patches in question actually
> touch the shebang line whereas the old approach only fires on hunk line
> 1 patches that add a shebang.  At least, that's how I understand the
> implications of the change.  I'm personally happy either way and I think
> users won't even notice.  Just checking that we have a shared understanding.

Oh, I see what you mean now. Interestingly enough, the code could be
fairly easily (although at a performance cost) adapted to do what was
the original intention (the "optimum" case below).

To enumerate the behaviours:

- old code (apply does the +x-ing): files that go through a shebang
  stage end up +x regardless of the final state of the file
  (i.e. non-shebang working files may be executable as a result)

- new code (we check every touched file for shebangs): files that are
  touched that were previously non-executable but have a shebang become
  executable (but we get rid of the above bug)

- optimum: files that get a shebang added by this patchset (i.e. they
  have shebang at the end of the sequence, and not before the patchset)
  and no other

I don't think it's worth losing any more sleep, though. :)

>> Right, we ought and I wanted to, but GHC gave me super-mysterious error
>> about constraints (even though I believe that with the about
>> non-irrelevant change to Patchy, the contexts all match up, GHC
>> disagrees and wants Conflict added to some contexts... I have no idea
>> why. I'll look into it in a bit...)
>
> Is it because of these instances?
>
> src/Darcs/Patch/Viewing.hs:instance (Conflict p, Patchy p) => Patchy (FL p)
> src/Darcs/Patch/Viewing.hs:instance (Conflict p, Patchy p) => Patchy (RL p)

Bingo. Good catch.


More information about the darcs-users mailing list