-
-
Notifications
You must be signed in to change notification settings - Fork 933
Raise exception when git push fails #621
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I have the same issue. An exception should be raised instead.
|
This might be related to a change in the |
Is problem that it's eating the exception here https://github.com/gitpython-developers/GitPython/blob/master/git/remote.py#L702 Should always raise an exception, warning text also references fetch instead of push. |
Is this still an issue? The links provided don't refer to a specific commit, thus the lines shift and make it hard to find the point you refer to, in retrospective. Thank you. |
@Byron i think @David-Green was referring to this Line 702 in 2b3c16c
|
This has also been an issue for me using 2.1.5: But in fact I want this to be an exception. It does look like the following lines that are the problem (at line 730 in the current master: |
Sorry to pile on, but this just bit my team today too. We were moving a few hundred repos, and a few of them failed to push with mirror to the new remote, yet the script exited successfully with no errors but never actually pushed the repo. Trying to push with command line gives us "error: failed to push some refs to..." |
I got bitten by this too while trying to automate git push.
|
Do you think fixing this would be possible for one of the people having been bitten by this? |
Also been bitten by this recently...reviving! |
I have had to use some very serious checking to detect and handle failed pushes with gitpython==2.1.11 and it's bonkers that I had to try so hard. |
Agree. Errors should be reported as exceptions. |
Also was just bit by this issue. |
* GitPython doesn't raise an exception if a failure occurs when pushing to the remote. Handling the error based on the push flags. See also: gitpython-developers/GitPython#621 Bug: T233183 Change-Id: I0e52940691080baf95fa4b2da9328e4557ad395f
Also was just bit by this issue. |
As a general question: What about submitting a PR with a new |
List-like, so that it's backward compatible. But it has a new method raise_on_error, that throws an exception if anything failed to push. Related to gitpython-developers#621
List-like, so that it's backward compatible. But it has a new method raise_on_error, that throws an exception if anything failed to push. Related to gitpython-developers#621
List-like, so that it's backward compatible. But it has a new method raise_on_error, that throws an exception if anything failed to push. Related to gitpython-developers#621
List-like, so that it's backward compatible. But it has a new method raise_on_error, that throws an exception if anything failed to push. Related to #621
In case someone else stumbles on this very strange behaviour, and doesn't immediately dive into Sjord's commits (mentioned in this issue, above this comment): That landed in 3.1.25, and the tutorial has an example: # push and pull behaves similarly to `git push|pull`
origin.pull()
origin.push() # attempt push, ignore errors
origin.push().raise_if_error() # push and raise error if it fails |
For some reason, the |
In case someone needs to work with a slightly older version (e.g. 3.1.14, available in Debian 11), here's something that seems to do the trick for me (keeping in mind raising a generic origin.pull(rebase=True)
# Workaround for missing origin.push().raise_if_error() in 3.1.14
# (see https://github.com/gitpython-developers/GitPython/issues/621):
pushinfolist = origin.push()
for pi in pushinfolist: # pylint: disable=invalid-name
for flag in [pi.REJECTED, pi.REMOTE_REJECTED, pi.REMOTE_FAILURE, pi.ERROR]:
if pi.flags & flag:
raise Exception("error flag %d set" % flag) Caveat: I had to hardcode which flags look like errors I should care about; not sure how stable it is going to be across releases. |
Thanks for sharing! The flags should not change across releases as breaking changes are generally avoided. |
inspired by: gitpython-developers/GitPython#621 (comment) Change-Id: I98570930ac54aea57f7e632ff6599aa51d5f45d9
Having to perform bit operations on
flags
is very unintuitive. The command line git client fails when push fails.The text was updated successfully, but these errors were encountered: