diff entire directory trees with action hooks