note, there's still another hidden dependency related to this: even though we pass a repo to transport_push() we still use is_bare_repository() which pretty much assumes the_repository (and some other global state). Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- builtin/push.c | 3 ++- transport.c | 7 ++++--- transport.h | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/builtin/push.c b/builtin/push.c index d09a42062c..efb3e38a8d 100644 --- a/builtin/push.c +++ b/builtin/push.c @@ -355,7 +355,8 @@ static int push_with_options(struct transport *transport, struct refspec *rs, if (verbosity > 0) fprintf(stderr, _("Pushing to %s\n"), transport->url); - err = transport_push(transport, rs, flags, &reject_reasons); + err = transport_push(the_repository, transport, + rs, flags, &reject_reasons); if (err != 0) { fprintf(stderr, "%s", push_get_color(PUSH_COLOR_ERROR)); error(_("failed to push some refs to '%s'"), transport->url); diff --git a/transport.c b/transport.c index f4ffbd96cb..b86b2b12c6 100644 --- a/transport.c +++ b/transport.c @@ -1105,7 +1105,8 @@ static int run_pre_push_hook(struct transport *transport, return ret; } -int transport_push(struct transport *transport, +int transport_push(struct repository *repo, + struct transport *transport, struct refspec *rs, int flags, unsigned int *reject_reasons) { @@ -1172,7 +1173,7 @@ int transport_push(struct transport *transport, oid_array_append(&commits, &ref->new_oid); - if (!push_unpushed_submodules(&the_index, + if (!push_unpushed_submodules(repo->index, &commits, transport->remote, rs, @@ -1197,7 +1198,7 @@ int transport_push(struct transport *transport, oid_array_append(&commits, &ref->new_oid); - if (find_unpushed_submodules(&the_index, + if (find_unpushed_submodules(repo->index, &commits, transport->remote->name, &needs_pushing)) { diff --git a/transport.h b/transport.h index 9baeca2d7a..f2ee7c4f49 100644 --- a/transport.h +++ b/transport.h @@ -223,7 +223,8 @@ void transport_set_verbosity(struct transport *transport, int verbosity, #define REJECT_FETCH_FIRST 0x08 #define REJECT_NEEDS_FORCE 0x10 -int transport_push(struct transport *connection, +int transport_push(struct repository *repo, + struct transport *connection, struct refspec *rs, int flags, unsigned int * reject_reasons); -- 2.19.1.647.g708186aaf9