prune_remote(): exit early if there are no stale references
Aside from making the logic clearer, this avoids a call to warn_dangling_symrefs(), which always does a for_each_rawref() iteration. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael Haggerty committed
Nov 25, 2014 at 09:02 UTC
16d4fa3d9667ca28a519c46c1b1c752a848a693c
1 file changed
+21
-18
builtin/remote.c
+21
-18
@@ -1325,25 +1325,28 @@ static int prune_remote(const char *remote, int dry_run)
1325
memset(&states, 0, sizeof(states));
1326
get_remote_ref_states(remote, &states, GET_REF_STATES);
1327
1328
- if (states.stale.nr) {
1329
- printf_ln(_("Pruning %s"), remote);
1330
- printf_ln(_("URL: %s"),
1331
- states.remote->url_nr
1332
- ? states.remote->url[0]
1333
- : _("(no URL)"));
1334
-
1335
- delete_refs = xmalloc(states.stale.nr * sizeof(*delete_refs));
1336
- for (i = 0; i < states.stale.nr; i++)
1337
- delete_refs[i] = states.stale.items[i].util;
1338
- if (!dry_run) {
1339
- struct strbuf err = STRBUF_INIT;
1340
- if (repack_without_refs(delete_refs, states.stale.nr,
1341
- &err))
1342
- result |= error("%s", err.buf);
1343
- strbuf_release(&err);
1344
- }
1345
- free(delete_refs);
1328
+ if (!states.stale.nr) {
1329
+ free_remote_ref_states(&states);
1330
+ return 0;
1331
+ }
1332
+
1333
+ printf_ln(_("Pruning %s"), remote);
1334
+ printf_ln(_("URL: %s"),
1335
+ states.remote->url_nr
1336
+ ? states.remote->url[0]
1337
+ : _("(no URL)"));
1338
+
1339
+ delete_refs = xmalloc(states.stale.nr * sizeof(*delete_refs));
1340
+ for (i = 0; i < states.stale.nr; i++)
1341
+ delete_refs[i] = states.stale.items[i].util;
1342
+ if (!dry_run) {
1343
+ struct strbuf err = STRBUF_INIT;
1344
+ if (repack_without_refs(delete_refs, states.stale.nr,
1345
+ &err))
1346
+ result |= error("%s", err.buf);
1347
+ strbuf_release(&err);
1348
}
1349
+ free(delete_refs);
1350
1351
for (i = 0; i < states.stale.nr; i++) {
1352
const char *refname = states.stale.items[i].util;