summaryrefslogtreecommitdiff
path: root/transport.c
diff options
context:
space:
mode:
authorBrandon Williams <bmwill@google.com>2018-05-16 22:58:17 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-05-17 21:19:44 (GMT)
commit306f22dbc8f43feeed735905276c48a96c63b9e5 (patch)
treecf0de85a759a09f07417f2e2e3d29553a22faceb /transport.c
parentaa40289ce9438890368aa1c667d1ed6e3184213c (diff)
downloadgit-306f22dbc8f43feeed735905276c48a96c63b9e5.zip
git-306f22dbc8f43feeed735905276c48a96c63b9e5.tar.gz
git-306f22dbc8f43feeed735905276c48a96c63b9e5.tar.bz2
transport: convert transport_push to take a struct refspec
Convert 'transport_push()' to take a 'struct refspec' as a parameter instead of an array of strings which represent refspecs. Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'transport.c')
-rw-r--r--transport.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/transport.c b/transport.c
index 181db4d..a89f177 100644
--- a/transport.c
+++ b/transport.c
@@ -1093,11 +1093,11 @@ static int run_pre_push_hook(struct transport *transport,
}
int transport_push(struct transport *transport,
- int refspec_nr, const char **refspec, int flags,
+ struct refspec *rs, int flags,
unsigned int *reject_reasons)
{
*reject_reasons = 0;
- transport_verify_remote_names(refspec_nr, refspec);
+ transport_verify_remote_names(rs->raw_nr, rs->raw);
if (transport_color_config() < 0)
return -1;
@@ -1111,16 +1111,14 @@ int transport_push(struct transport *transport,
int porcelain = flags & TRANSPORT_PUSH_PORCELAIN;
int pretend = flags & TRANSPORT_PUSH_DRY_RUN;
int push_ret, ret, err;
- struct refspec tmp_rs = REFSPEC_INIT_PUSH;
struct argv_array ref_prefixes = ARGV_ARRAY_INIT;
int i;
- if (check_push_refs(local_refs, refspec_nr, refspec) < 0)
+ if (check_push_refs(local_refs, rs->raw_nr, rs->raw) < 0)
return -1;
- refspec_appendn(&tmp_rs, refspec, refspec_nr);
- for (i = 0; i < tmp_rs.nr; i++) {
- const struct refspec_item *item = &tmp_rs.items[i];
+ for (i = 0; i < rs->nr; i++) {
+ const struct refspec_item *item = &rs->items[i];
const char *prefix = NULL;
if (item->dst)
@@ -1143,7 +1141,6 @@ int transport_push(struct transport *transport,
&ref_prefixes);
argv_array_clear(&ref_prefixes);
- refspec_clear(&tmp_rs);
if (flags & TRANSPORT_PUSH_ALL)
match_flags |= MATCH_REFS_ALL;
@@ -1155,7 +1152,7 @@ int transport_push(struct transport *transport,
match_flags |= MATCH_REFS_FOLLOW_TAGS;
if (match_push_refs(local_refs, &remote_refs,
- refspec_nr, refspec, match_flags)) {
+ rs->raw_nr, rs->raw, match_flags)) {
return -1;
}
@@ -1186,7 +1183,7 @@ int transport_push(struct transport *transport,
if (!push_unpushed_submodules(&commits,
transport->remote,
- refspec, refspec_nr,
+ rs->raw, rs->raw_nr,
transport->push_options,
pretend)) {
oid_array_clear(&commits);