write all those errors into a text file
Those are not always error, considering most Git commands outputs information message on stderr, as I mentioned here:
stderr as it is just informative messages, not to be consumed by machines.
If it better to test the exit status of the command and email both stdout and stderr if said exit status differs from 0
Plus, you are doing two redirections: >
followed by >
: the second one would recreate /tmp/stderr-contents-sync_git_repositories.txt
: that second redirection should be >>
, not >
.
So:
git fetch --prune-tags github-fetch master > tmp 2>&1 || cat tmp > '/tmp/stderr-contents-sync_git_repositories.txt'
git push github master > tmp 2>&1 || cat tmp >> '/tmp/stderr-contents-sync_git_repositories.txt'
Here I override a tmp
file on each command (with their stdout/stderr), and if that command fails, I write to, or I append to /tmp/stderr-contents-sync_git_repositories.txt
.
This is easier than your edit, where you redirect both commands to a file, even if one of them might have failed.
That is why I do cmd1 || cat >> file
: the >>
part only runs if cmd1
fails.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…