@@ -800,31 +800,33 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
800
800
} else if (edit_description ) {
801
801
const char * branch_name ;
802
802
struct strbuf branch_ref = STRBUF_INIT ;
803
+ struct strbuf buf = STRBUF_INIT ;
804
+ int ret = 1 ; /* assume failure */
803
805
804
806
if (!argc ) {
805
807
if (filter .detached )
806
808
die (_ ("Cannot give description to detached HEAD" ));
807
809
branch_name = head ;
808
- } else if (argc == 1 )
809
- branch_name = argv [0 ];
810
- else
810
+ } else if (argc == 1 ) {
811
+ strbuf_branchname (& buf , argv [0 ], INTERPRET_BRANCH_LOCAL );
812
+ branch_name = buf .buf ;
813
+ } else {
811
814
die (_ ("cannot edit description of more than one branch" ));
815
+ }
812
816
813
817
strbuf_addf (& branch_ref , "refs/heads/%s" , branch_name );
814
- if (!ref_exists (branch_ref .buf )) {
815
- strbuf_release (& branch_ref );
816
-
817
- if (!argc || !strcmp (head , branch_name ))
818
- return error (_ ("No commit on branch '%s' yet." ),
819
- branch_name );
820
- else
821
- return error (_ ("No branch named '%s'." ),
822
- branch_name );
823
- }
818
+ if (!ref_exists (branch_ref .buf ))
819
+ ret = error ((!argc || !strcmp (head , branch_name ))
820
+ ? _ ("No commit on branch '%s' yet." )
821
+ : _ ("No branch named '%s'." ),
822
+ branch_name );
823
+ else if (!edit_branch_description (branch_name ))
824
+ ret = 0 ; /* happy */
825
+
824
826
strbuf_release (& branch_ref );
827
+ strbuf_release (& buf );
825
828
826
- if (edit_branch_description (branch_name ))
827
- return 1 ;
829
+ return ret ;
828
830
} else if (copy ) {
829
831
if (!argc )
830
832
die (_ ("branch name required" ));
@@ -844,9 +846,15 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
844
846
else
845
847
die (_ ("too many arguments for a rename operation" ));
846
848
} else if (new_upstream ) {
847
- struct branch * branch = branch_get (argv [0 ]);
849
+ struct branch * branch ;
850
+ struct strbuf buf = STRBUF_INIT ;
848
851
849
- if (argc > 1 )
852
+ if (!argc )
853
+ branch = branch_get (NULL );
854
+ else if (argc == 1 ) {
855
+ strbuf_branchname (& buf , argv [0 ], INTERPRET_BRANCH_LOCAL );
856
+ branch = branch_get (buf .buf );
857
+ } else
850
858
die (_ ("too many arguments to set new upstream" ));
851
859
852
860
if (!branch ) {
@@ -866,11 +874,17 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
866
874
dwim_and_setup_tracking (the_repository , branch -> name ,
867
875
new_upstream , BRANCH_TRACK_OVERRIDE ,
868
876
quiet );
877
+ strbuf_release (& buf );
869
878
} else if (unset_upstream ) {
870
- struct branch * branch = branch_get ( argv [ 0 ]) ;
879
+ struct branch * branch ;
871
880
struct strbuf buf = STRBUF_INIT ;
872
881
873
- if (argc > 1 )
882
+ if (!argc )
883
+ branch = branch_get (NULL );
884
+ else if (argc == 1 ) {
885
+ strbuf_branchname (& buf , argv [0 ], INTERPRET_BRANCH_LOCAL );
886
+ branch = branch_get (buf .buf );
887
+ } else
874
888
die (_ ("too many arguments to unset upstream" ));
875
889
876
890
if (!branch ) {
@@ -883,6 +897,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
883
897
if (!branch_has_merge_config (branch ))
884
898
die (_ ("Branch '%s' has no upstream information" ), branch -> name );
885
899
900
+ strbuf_reset (& buf );
886
901
strbuf_addf (& buf , "branch.%s.remote" , branch -> name );
887
902
git_config_set_multivar (buf .buf , NULL , NULL , CONFIG_FLAGS_MULTI_REPLACE );
888
903
strbuf_reset (& buf );
0 commit comments