Commit e22ffb42 by Pierre-Olivier Latour

Fixed update_tips callback called for failed pushed references

The current implementation does not set 'fire_callback' back to 0 for failed updates so the callback still fires.

Instead of adding yet another condition check to set 'fire_callback' to 0 if needed, considering this function should be a no-op for failed updates anyway, the best fix is to simplify its logic to check upfront if the update is a failed one.
parent fe21d708
......@@ -180,6 +180,10 @@ int git_push_update_tips(git_push *push)
git_vector_foreach(&push->status, i, status) {
int fire_callback = 1;
/* Skip unsuccessful updates which have non-empty messages */
if (status->msg)
continue;
/* Find the corresponding remote ref */
fetch_spec = git_remote__matching_refspec(push->remote, status->ref);
if (!fetch_spec)
......@@ -198,8 +202,6 @@ int git_push_update_tips(git_push *push)
if (j == push->specs.length)
continue;
/* If this ref update was successful (ok, not ng), it will have an empty message */
if (status->msg == NULL) {
/* Update the remote ref */
if (git_oid_iszero(&push_spec->loid)) {
error = git_reference_lookup(&remote_ref, push->remote->repo, git_buf_cstr(&remote_ref_name));
......@@ -213,7 +215,6 @@ int git_push_update_tips(git_push *push)
git_buf_cstr(&remote_ref_name), &push_spec->loid, 1,
"update by push");
}
}
if (error < 0) {
if (error != GIT_ENOTFOUND)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment