From: Frantisek Hrbata <frantisek@hrbata.com>
To: git@vger.kernel.org
Cc: "Frantisek Hrbata" <frantisek@hrbata.com>,
"Josh Steadmon" <steadmon@google.com>,
"Jonathan Tan" <jonathantanmy@google.com>,
"Junio C Hamano" <gitster@pobox.com>,
"Brandon Williams" <bwilliams.eng@gmail.com>,
"Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>,
"Ævar Arnfjörð Bjarmason" <avarab@gmail.com>
Subject: [PATCH v3 1/3] transport: remove unnecessary indenting in transport_push()
Date: Fri, 20 May 2022 14:49:50 +0200 [thread overview]
Message-ID: <20220520124952.2393299-2-frantisek@hrbata.com> (raw)
In-Reply-To: <20220520124952.2393299-1-frantisek@hrbata.com>
Remove the big indented block for transport_push() check in transport vtable
and let's just return error immediately. Hopefully this makes the code
more readable.
Signed-off-by: Frantisek Hrbata <frantisek@hrbata.com>
---
transport.c | 234 ++++++++++++++++++++++++++--------------------------
1 file changed, 118 insertions(+), 116 deletions(-)
diff --git a/transport.c b/transport.c
index 3d64a43ab3..0b9c5a427d 100644
--- a/transport.c
+++ b/transport.c
@@ -1276,146 +1276,148 @@ int transport_push(struct repository *r,
struct refspec *rs, int flags,
unsigned int *reject_reasons)
{
+ struct ref *remote_refs;
+ struct ref *local_refs;
+ int match_flags = MATCH_REFS_NONE;
+ int verbose = (transport->verbose > 0);
+ int quiet = (transport->verbose < 0);
+ int porcelain = flags & TRANSPORT_PUSH_PORCELAIN;
+ int pretend = flags & TRANSPORT_PUSH_DRY_RUN;
+ int push_ret, ret, err;
+ struct transport_ls_refs_options transport_options =
+ TRANSPORT_LS_REFS_OPTIONS_INIT;
+
*reject_reasons = 0;
if (transport_color_config() < 0)
return -1;
- if (transport->vtable->push_refs) {
- struct ref *remote_refs;
- struct ref *local_refs = get_local_heads();
- int match_flags = MATCH_REFS_NONE;
- int verbose = (transport->verbose > 0);
- int quiet = (transport->verbose < 0);
- int porcelain = flags & TRANSPORT_PUSH_PORCELAIN;
- int pretend = flags & TRANSPORT_PUSH_DRY_RUN;
- int push_ret, ret, err;
- struct transport_ls_refs_options transport_options =
- TRANSPORT_LS_REFS_OPTIONS_INIT;
-
- if (check_push_refs(local_refs, rs) < 0)
- return -1;
+ if (!transport->vtable->push_refs)
+ return 1;
- refspec_ref_prefixes(rs, &transport_options.ref_prefixes);
+ local_refs = get_local_heads();
- trace2_region_enter("transport_push", "get_refs_list", r);
- remote_refs = transport->vtable->get_refs_list(transport, 1,
- &transport_options);
- trace2_region_leave("transport_push", "get_refs_list", r);
+ if (check_push_refs(local_refs, rs) < 0)
+ return -1;
- transport_ls_refs_options_release(&transport_options);
+ refspec_ref_prefixes(rs, &transport_options.ref_prefixes);
- if (flags & TRANSPORT_PUSH_ALL)
- match_flags |= MATCH_REFS_ALL;
- if (flags & TRANSPORT_PUSH_MIRROR)
- match_flags |= MATCH_REFS_MIRROR;
- if (flags & TRANSPORT_PUSH_PRUNE)
- match_flags |= MATCH_REFS_PRUNE;
- if (flags & TRANSPORT_PUSH_FOLLOW_TAGS)
- match_flags |= MATCH_REFS_FOLLOW_TAGS;
+ trace2_region_enter("transport_push", "get_refs_list", r);
+ remote_refs = transport->vtable->get_refs_list(transport, 1,
+ &transport_options);
+ trace2_region_leave("transport_push", "get_refs_list", r);
- if (match_push_refs(local_refs, &remote_refs, rs, match_flags))
- return -1;
+ transport_ls_refs_options_release(&transport_options);
- if (transport->smart_options &&
- transport->smart_options->cas &&
- !is_empty_cas(transport->smart_options->cas))
- apply_push_cas(transport->smart_options->cas,
- transport->remote, remote_refs);
+ if (flags & TRANSPORT_PUSH_ALL)
+ match_flags |= MATCH_REFS_ALL;
+ if (flags & TRANSPORT_PUSH_MIRROR)
+ match_flags |= MATCH_REFS_MIRROR;
+ if (flags & TRANSPORT_PUSH_PRUNE)
+ match_flags |= MATCH_REFS_PRUNE;
+ if (flags & TRANSPORT_PUSH_FOLLOW_TAGS)
+ match_flags |= MATCH_REFS_FOLLOW_TAGS;
- set_ref_status_for_push(remote_refs,
- flags & TRANSPORT_PUSH_MIRROR,
- flags & TRANSPORT_PUSH_FORCE);
+ if (match_push_refs(local_refs, &remote_refs, rs, match_flags))
+ return -1;
- if (!(flags & TRANSPORT_PUSH_NO_HOOK))
- if (run_pre_push_hook(transport, remote_refs))
- return -1;
+ if (transport->smart_options &&
+ transport->smart_options->cas &&
+ !is_empty_cas(transport->smart_options->cas))
+ apply_push_cas(transport->smart_options->cas,
+ transport->remote, remote_refs);
- if ((flags & (TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND |
- TRANSPORT_RECURSE_SUBMODULES_ONLY)) &&
- !is_bare_repository()) {
- struct ref *ref = remote_refs;
- struct oid_array commits = OID_ARRAY_INIT;
-
- trace2_region_enter("transport_push", "push_submodules", r);
- for (; ref; ref = ref->next)
- if (!is_null_oid(&ref->new_oid))
- oid_array_append(&commits,
- &ref->new_oid);
-
- if (!push_unpushed_submodules(r,
- &commits,
- transport->remote,
- rs,
- transport->push_options,
- pretend)) {
- oid_array_clear(&commits);
- trace2_region_leave("transport_push", "push_submodules", r);
- die(_("failed to push all needed submodules"));
- }
+ set_ref_status_for_push(remote_refs,
+ flags & TRANSPORT_PUSH_MIRROR,
+ flags & TRANSPORT_PUSH_FORCE);
+
+ if (!(flags & TRANSPORT_PUSH_NO_HOOK))
+ if (run_pre_push_hook(transport, remote_refs))
+ return -1;
+
+ if ((flags & (TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND |
+ TRANSPORT_RECURSE_SUBMODULES_ONLY)) &&
+ !is_bare_repository()) {
+ struct ref *ref = remote_refs;
+ struct oid_array commits = OID_ARRAY_INIT;
+
+ trace2_region_enter("transport_push", "push_submodules", r);
+ for (; ref; ref = ref->next)
+ if (!is_null_oid(&ref->new_oid))
+ oid_array_append(&commits,
+ &ref->new_oid);
+
+ if (!push_unpushed_submodules(r,
+ &commits,
+ transport->remote,
+ rs,
+ transport->push_options,
+ pretend)) {
oid_array_clear(&commits);
trace2_region_leave("transport_push", "push_submodules", r);
+ die(_("failed to push all needed submodules"));
}
+ oid_array_clear(&commits);
+ trace2_region_leave("transport_push", "push_submodules", r);
+ }
- if (((flags & TRANSPORT_RECURSE_SUBMODULES_CHECK) ||
- ((flags & (TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND |
- TRANSPORT_RECURSE_SUBMODULES_ONLY)) &&
- !pretend)) && !is_bare_repository()) {
- struct ref *ref = remote_refs;
- struct string_list needs_pushing = STRING_LIST_INIT_DUP;
- struct oid_array commits = OID_ARRAY_INIT;
-
- trace2_region_enter("transport_push", "check_submodules", r);
- for (; ref; ref = ref->next)
- if (!is_null_oid(&ref->new_oid))
- oid_array_append(&commits,
- &ref->new_oid);
-
- if (find_unpushed_submodules(r,
- &commits,
- transport->remote->name,
- &needs_pushing)) {
- oid_array_clear(&commits);
- trace2_region_leave("transport_push", "check_submodules", r);
- die_with_unpushed_submodules(&needs_pushing);
- }
- string_list_clear(&needs_pushing, 0);
+ if (((flags & TRANSPORT_RECURSE_SUBMODULES_CHECK) ||
+ ((flags & (TRANSPORT_RECURSE_SUBMODULES_ON_DEMAND |
+ TRANSPORT_RECURSE_SUBMODULES_ONLY)) &&
+ !pretend)) && !is_bare_repository()) {
+ struct ref *ref = remote_refs;
+ struct string_list needs_pushing = STRING_LIST_INIT_DUP;
+ struct oid_array commits = OID_ARRAY_INIT;
+
+ trace2_region_enter("transport_push", "check_submodules", r);
+ for (; ref; ref = ref->next)
+ if (!is_null_oid(&ref->new_oid))
+ oid_array_append(&commits,
+ &ref->new_oid);
+
+ if (find_unpushed_submodules(r,
+ &commits,
+ transport->remote->name,
+ &needs_pushing)) {
oid_array_clear(&commits);
trace2_region_leave("transport_push", "check_submodules", r);
+ die_with_unpushed_submodules(&needs_pushing);
}
+ string_list_clear(&needs_pushing, 0);
+ oid_array_clear(&commits);
+ trace2_region_leave("transport_push", "check_submodules", r);
+ }
- if (!(flags & TRANSPORT_RECURSE_SUBMODULES_ONLY)) {
- trace2_region_enter("transport_push", "push_refs", r);
- push_ret = transport->vtable->push_refs(transport, remote_refs, flags);
- trace2_region_leave("transport_push", "push_refs", r);
- } else
- push_ret = 0;
- err = push_had_errors(remote_refs);
- ret = push_ret | err;
-
- if (!quiet || err)
- transport_print_push_status(transport->url, remote_refs,
- verbose | porcelain, porcelain,
- reject_reasons);
-
- if (flags & TRANSPORT_PUSH_SET_UPSTREAM)
- set_upstreams(transport, remote_refs, pretend);
-
- if (!(flags & (TRANSPORT_PUSH_DRY_RUN |
- TRANSPORT_RECURSE_SUBMODULES_ONLY))) {
- struct ref *ref;
- for (ref = remote_refs; ref; ref = ref->next)
- transport_update_tracking_ref(transport->remote, ref, verbose);
- }
+ if (!(flags & TRANSPORT_RECURSE_SUBMODULES_ONLY)) {
+ trace2_region_enter("transport_push", "push_refs", r);
+ push_ret = transport->vtable->push_refs(transport, remote_refs, flags);
+ trace2_region_leave("transport_push", "push_refs", r);
+ } else
+ push_ret = 0;
+ err = push_had_errors(remote_refs);
+ ret = push_ret | err;
+
+ if (!quiet || err)
+ transport_print_push_status(transport->url, remote_refs,
+ verbose | porcelain, porcelain,
+ reject_reasons);
+
+ if (flags & TRANSPORT_PUSH_SET_UPSTREAM)
+ set_upstreams(transport, remote_refs, pretend);
+
+ if (!(flags & (TRANSPORT_PUSH_DRY_RUN |
+ TRANSPORT_RECURSE_SUBMODULES_ONLY))) {
+ struct ref *ref;
+ for (ref = remote_refs; ref; ref = ref->next)
+ transport_update_tracking_ref(transport->remote, ref, verbose);
+ }
- if (porcelain && !push_ret)
- puts("Done");
- else if (!quiet && !ret && !transport_refs_pushed(remote_refs))
- fprintf(stderr, "Everything up-to-date\n");
+ if (porcelain && !push_ret)
+ puts("Done");
+ else if (!quiet && !ret && !transport_refs_pushed(remote_refs))
+ fprintf(stderr, "Everything up-to-date\n");
- return ret;
- }
- return 1;
+ return ret;
}
const struct ref *transport_get_remote_refs(struct transport *transport,
--
2.35.1
next prev parent reply other threads:[~2022-05-20 12:50 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-20 8:17 [PATCH] transport: free local and remote refs in transport_push() Frantisek Hrbata
2022-05-20 8:40 ` Ævar Arnfjörð Bjarmason
2022-05-20 8:56 ` Frantisek Hrbata
2022-05-20 10:35 ` [PATCH v2 0/2] fix memory leaks " Frantisek Hrbata
2022-05-20 10:35 ` [PATCH v2 1/2] transport: remove unnecessary indenting " Frantisek Hrbata
2022-05-20 11:24 ` Ævar Arnfjörð Bjarmason
2022-05-20 11:53 ` Frantisek Hrbata
2022-05-20 10:35 ` [PATCH v2 2/2] transport: free local and remote refs " Frantisek Hrbata
2022-05-20 12:49 ` [PATCH v3 0/3] fix memory leaks " Frantisek Hrbata
2022-05-20 12:49 ` Frantisek Hrbata [this message]
2022-05-20 12:49 ` [PATCH v3 2/3] transport: unify return values and exit point from transport_push() Frantisek Hrbata
2022-05-20 12:49 ` [PATCH v3 3/3] transport: free local and remote refs in transport_push() Frantisek Hrbata
2022-05-27 20:22 ` [PATCH v3 0/3] fix memory leaks " Josh Steadmon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220520124952.2393299-2-frantisek@hrbata.com \
--to=frantisek@hrbata.com \
--cc=avarab@gmail.com \
--cc=bwilliams.eng@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=jonathantanmy@google.com \
--cc=pclouds@gmail.com \
--cc=steadmon@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).