@@ -12,7 +12,7 @@ public Models.Branch Target
1212 }
1313
1414 [ Required ( ErrorMessage = "Branch name is required!!!" ) ]
15- [ RegularExpression ( @"^[\w\-/\.#]+$" , ErrorMessage = "Bad branch name format!" ) ]
15+ [ RegularExpression ( @"^[\w \-/\.#]+$" , ErrorMessage = "Bad branch name format!" ) ]
1616 [ CustomValidation ( typeof ( RenameBranch ) , nameof ( ValidateBranchName ) ) ]
1717 public string Name
1818 {
@@ -32,9 +32,10 @@ public static ValidationResult ValidateBranchName(string name, ValidationContext
3232 {
3333 if ( ctx . ObjectInstance is RenameBranch rename )
3434 {
35+ var fixedName = rename . FixName ( name ) ;
3536 foreach ( var b in rename . _repo . Branches )
3637 {
37- if ( b . IsLocal && b != rename . Target && b . Name == name )
38+ if ( b . IsLocal && b != rename . Target && b . Name == fixedName )
3839 {
3940 return new ValidationResult ( "A branch with same name already exists!!!" ) ;
4041 }
@@ -46,7 +47,8 @@ public static ValidationResult ValidateBranchName(string name, ValidationContext
4647
4748 public override Task < bool > Sure ( )
4849 {
49- if ( _name == Target . Name )
50+ var fixedName = FixName ( _name ) ;
51+ if ( fixedName == Target . Name )
5052 return null ;
5153
5254 _repo . SetWatcherEnabled ( false ) ;
@@ -55,7 +57,7 @@ public override Task<bool> Sure()
5557 return Task . Run ( ( ) =>
5658 {
5759 var oldName = Target . FullName ;
58- var succ = Commands . Branch . Rename ( _repo . FullPath , Target . Name , _name ) ;
60+ var succ = Commands . Branch . Rename ( _repo . FullPath , Target . Name , fixedName ) ;
5961 CallUIThread ( ( ) =>
6062 {
6163 if ( succ )
@@ -65,7 +67,7 @@ public override Task<bool> Sure()
6567 if ( filter . Type == Models . FilterType . LocalBranch &&
6668 filter . Pattern . Equals ( oldName , StringComparison . Ordinal ) )
6769 {
68- filter . Pattern = $ "refs/heads/{ _name } ";
70+ filter . Pattern = $ "refs/heads/{ fixedName } ";
6971 break ;
7072 }
7173 }
@@ -78,6 +80,15 @@ public override Task<bool> Sure()
7880 } ) ;
7981 }
8082
83+ private string FixName ( string name )
84+ {
85+ if ( ! name . Contains ( ' ' ) )
86+ return name ;
87+
88+ var parts = name . Split ( ' ' , StringSplitOptions . RemoveEmptyEntries ) ;
89+ return string . Join ( "-" , parts ) ;
90+ }
91+
8192 private readonly Repository _repo ;
8293 private string _name ;
8394 }
0 commit comments