Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR does two things:
git_remote_callbacks.push_negotiation
to Python code (viaRemoteCallbacks
).connect
argument toRemote.ls_remotes()
. This lets you tellls_remote
to skip its default connection step, which is harmful if callingls_remotes
fromRemoteCallbacks.push_negotiation
.Some background info:
My use case is to implement an equivalent of
git push --force-with-lease
. To achieve this, I needpush_negotiation
which is called right before the transfer actually begins.My negotiation callback uses
Remote.ls_remotes
to determine whether the repo has stale information about the remote branch to force-push to, in which case the push should be rejected.However,
Remote.ls_remotes
currently forces a new connection to the remote. This invalidates the existing connection that was set up by the push - causing the push fail. So, this PR also lets you tellls_remotes
to not override the current connection (by passingconnect=False
).