Skip writing a temporary file if the file contents are unchanged
Better error reporting if templating program fails
Better error reporting/handling if file creation, mv, or chmod fail
Quiet logs by not outputting "Creating output..." line twice (debug & loud)
What issues does this PR fix or reference?
In both Linux and WSL, I saw many temporary files created in the form .template.nnnn.nnnnn appear in my yadm managed directory. It was pretty common, sometimes happening several times in one day.
Previous Behavior
See above.
New Behavior
The new code skips regenerating the alt file if its contents have not changed. While this means we now read the old alt file before rewriting it, the vast majority of the time the contents are unchanged, so this extra read is offset by the skipped write and move.
While there is a small amount of time between reading the alt file, and rewriting it, the chance of a race condition inside this window is small, as yadm should be the only program running against these files.
What does this PR do?
Improvements include:
What issues does this PR fix or reference?
In both Linux and WSL, I saw many temporary files created in the form
.template.nnnn.nnnnn
appear in my yadm managed directory. It was pretty common, sometimes happening several times in one day.Previous Behavior
See above.
New Behavior
The new code skips regenerating the alt file if its contents have not changed. While this means we now read the old alt file before rewriting it, the vast majority of the time the contents are unchanged, so this extra read is offset by the skipped write and move.
While there is a small amount of time between reading the alt file, and rewriting it, the chance of a race condition inside this window is small, as yadm should be the only program running against these files.
Have tests been written for this change?
No. The existing tests should be sufficient as we aren't adding new functions or new logic.
Have these commits been signed with GnuPG?
Yes!
Please review yadm's Contributing Guide for best practices.