]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'tb/rename-remote-progress'
authorJunio C Hamano <gitster@pobox.com>
Thu, 17 Mar 2022 00:53:08 +0000 (17:53 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 17 Mar 2022 00:53:08 +0000 (17:53 -0700)
"git remote rename A B", depending on the number of remote-tracking
refs involved, takes long time renaming them.  The command has been
taught to show progress bar while making the user wait.

* tb/rename-remote-progress:
  builtin/remote.c: show progress when renaming remote references
  builtin/remote.c: parse options in 'rename'

1  2 
builtin/remote.c

index 0142ed09b570efaaa1a973a6bd4d724e64052825,950e7958d536dbef5bf4e65ae20faca1ff32f4ae..5f4cde9d784e310e939dc7952e4096e45f60cbb7
@@@ -764,17 -775,24 +775,26 @@@ static int mv(int argc, const char **ar
         * the new symrefs.
         */
        for_each_ref(read_remote_branches, &rename);
+       if (show_progress) {
+               /*
+                * Count symrefs twice, since "renaming" them is done by
+                * deleting and recreating them in two separate passes.
+                */
+               progress = start_progress(_("Renaming remote references"),
+                                         rename.remote_branches->nr + rename.symrefs_nr);
+       }
        for (i = 0; i < remote_branches.nr; i++) {
                struct string_list_item *item = remote_branches.items + i;
 -              int flag = 0;
 +              struct strbuf referent = STRBUF_INIT;
  
 -              read_ref_full(item->string, RESOLVE_REF_READING, NULL, &flag);
 -              if (!(flag & REF_ISSYMREF))
 +              if (refs_read_symbolic_ref(get_main_ref_store(the_repository), item->string,
 +                                         &referent))
                        continue;
                if (delete_ref(NULL, item->string, NULL, REF_NO_DEREF))
                        die(_("deleting '%s' failed"), item->string);
 +
 +              strbuf_release(&referent);
+               display_progress(progress, ++refs_renamed_nr);
        }
        for (i = 0; i < remote_branches.nr; i++) {
                struct string_list_item *item = remote_branches.items + i;