transport: unify return values and exit point from transport_push()

It seems there is no reason to return 1 instead of -1 when push_refs() is not set in transport vtable. Let's unify the error return values and use the done label as a single exit point from transport_push(). Suggested-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Frantisek Hrbata <frantisek@hrbata.com> Reviewed-by: Josh Steadmon <steadmon@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Frantisek Hrbata committed May 20, 2022 at 14:49 UTC 35919bf1ab9d1451547d229f3a11a63c70f385df
1 file changed +10 -8
transport.c
+10 -8
@@ -1276,29 +1276,30 @@ int transport_push(struct repository *r,
1276 struct refspec *rs, int flags,
1277 unsigned int *reject_reasons)
1278 {
1279 - struct ref *remote_refs;
1280 - struct ref *local_refs;
1279 + struct ref *remote_refs = NULL;
1280 + struct ref *local_refs = NULL;
1281 int match_flags = MATCH_REFS_NONE;
1282 int verbose = (transport->verbose > 0);
1283 int quiet = (transport->verbose < 0);
1284 int porcelain = flags & TRANSPORT_PUSH_PORCELAIN;
1285 int pretend = flags & TRANSPORT_PUSH_DRY_RUN;
1286 - int push_ret, ret, err;
1286 + int push_ret, err;
1287 + int ret = -1;
1288 struct transport_ls_refs_options transport_options =
1289 TRANSPORT_LS_REFS_OPTIONS_INIT;
1290
1291 *reject_reasons = 0;
1292
1293 if (transport_color_config() < 0)
1293 - return -1;
1294 + goto done;
1295
1296 if (!transport->vtable->push_refs)
1296 - return 1;
1297 + goto done;
1298
1299 local_refs = get_local_heads();
1300
1301 if (check_push_refs(local_refs, rs) < 0)
1301 - return -1;
1302 + goto done;
1303
1304 refspec_ref_prefixes(rs, &transport_options.ref_prefixes);
1305
@@ -1319,7 +1320,7 @@ int transport_push(struct repository *r,
1320 match_flags |= MATCH_REFS_FOLLOW_TAGS;
1321
1322 if (match_push_refs(local_refs, &remote_refs, rs, match_flags))
1322 - return -1;
1323 + goto done;
1324
1325 if (transport->smart_options &&
1326 transport->smart_options->cas &&
@@ -1333,7 +1334,7 @@ int transport_push(struct repository *r,
1334
1335 if (!(flags & TRANSPORT_PUSH_NO_HOOK))
1336 if (run_pre_push_hook(transport, remote_refs))
1336 - return -1;
1337 + goto done;
1338
1339 if ((flags & (TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND |
1340 TRANSPORT_RECURSE_SUBMODULES_ONLY)) &&
@@ -1417,6 +1418,7 @@ int transport_push(struct repository *r,
1418 else if (!quiet && !ret && !transport_refs_pushed(remote_refs))
1419 fprintf(stderr, "Everything up-to-date\n");
1420
1421 +done:
1422 return ret;
1423 }
1424