Does git return specific return error codes?
Solution 1:
In short, no. You're going to see exit code 1 for errors, and 0 for success.
From a quick grepping of the source, there are some of the expected 127 and 128 for their specific purposes (command not found, errors already reported), and a few unusual codes in a few places, but for run of the mill errors, it's all exit(1)
.
Solution 2:
I set-up a test to fail. This is what I got:
$ git merge newbranch
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
$ echo $?
1
Git returns 0
when it merges correctly, as expected.
Solution 3:
Running git status
on a non-git repo returns 128, not 1, which is helpful in quickly determining whether a git repo exists or not.
Solution 4:
git push --delete origin a_remote_tag_name
This returns 256 if the tag doesn't exist using git version 1.8.3.1
It would be nice to have a consolidated list of specific return codes returned by each command and what they indicate. This might also help prevent changing the return code meanings (which automation scripts might rely on).