repository: Prevent custom hooks data loss
Currently custom hooks are not synced to disk after either extraction to
the temporary directory or being moved into the repository. This could
lead to unexpected data loss if the host were to crash. This change uses
safe.Syncer
to recursively fync
the custom custom hooks directory
after extraction and after relocation into the Git repository.