[darcs-users] Return value of hooks

Ben Franksen ben.franksen at online.de
Thu May 29 21:47:41 UTC 2014

Dmitry Bogatov wrote:
> It seems, that I can set {pre,post} -hooks for record command, but
> I cannot find a way to use their exit status.

Well, darcs commands fail immediately if the pre-hook failed. They also 
"fail" (that is, return the same exit code) if the post-hook failed.

However, this is of no use to you, since the pre-hook is run before the 
command even starts asking you which changes you want to record. And the 
post-hook may fail, and darcs may return the same exit code, but now it is 
too late: the changes to the repository are already made, and darcs does not 
roll back these changes.

> What I want, is get `darcs record` to ask me to choose chunks, apply
> them, run test and refuse to record, if it fails. Is it possible?

That is, you want a post-hook that, if it fails, causes darcs to roll back 
any changes it might have made.

> PS. Sorry for possible duplicate

I don't think this came up before. It would be a nice feature, but it would 
also need some serious re-factoring to implement it.

As for work-arounds:

There is darcs unrecord. You can wrap your post-hook into a script that 
checks for the failure, then unrecords the patch that just got recorded. If 
you want to make this more fail-safe, add a pre-hook that creates a tag with 
some unique name, then in case of a post-hook failure, unrecord everything 
up to and including this tag.

"Make it so they have to reboot after every typo." -- Scott Adams

More information about the darcs-users mailing list