Check response of git push from shell script
if [ -z "$(git status --porcelain)" ]; then
and that works fine. This is the expression I have tried but this one doesn’t work, in fact it errors:
- Get commit history after date (since/after parameter)
- Passing variable to command in git filter-branch (when reducing repo size by removing old binaries)
- How do I pipe something from the command line to a new Github gist?
- multiple commands are not working in git post-receive
- Nothing happens with a `git pull`
- Multiple git pull in one folder containing multiple repository
if [ "$(git push --porcelain)" -eq "Done" ]; then
Done: integer expression expected
When I run
git push --porcelain from the command line, the output is
Done. Does this mean I should be checking for that text in my condition?
If I do the previous comparison, that doesn’t work either, I get the same error:
1 file changed, 309 insertions(+) Current branch master is up to date. Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 3.59 KiB | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) bash: [: To https://github.com/blah... refs/heads/master:refs/heads/master 88aff43..cf0c97c Done: integer expression expected
2 Solutions collect form web for “Check response of git push from shell script”
Your condition check should have been something like:-
#!/bin/bash if [[ "$(git push --porcelain)" == *"Done"* ]] then echo "git push was successful!" fi
-eq is for integer comparisons,
== is for string comparisons. The following illustrates the difference.
[[ 00 -eq 0 ]] && echo "zero is zero, regardless of its representation" [[ 00 = 0 ]] || echo "00 and 0 are two different strings"
git push returns a zero exit code on success, and non-zero on failure.
So you can write:
if git push then echo "git push succeeded" else echo "git push failed" fi