Copy a directory to a temp directory temporarily to perform mutations, to then copy it back. If any exceptions are raised within the block, the changes will not be copied back.
Daniel Inkpen
MIT