diff --git a/src/ViewModels/CreateBranch.cs b/src/ViewModels/CreateBranch.cs index 780cb2f03..347997d4c 100644 --- a/src/ViewModels/CreateBranch.cs +++ b/src/ViewModels/CreateBranch.cs @@ -1,10 +1,11 @@ using System; using System.ComponentModel.DataAnnotations; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace SourceGit.ViewModels { - public class CreateBranch : Popup + public partial class CreateBranch : Popup { [Required(ErrorMessage = "Branch name is required!")] [RegularExpression(@"^[\w \-/\.#\+]+$", ErrorMessage = "Bad branch name format!")] @@ -101,7 +102,7 @@ public static ValidationResult ValidateBranchName(string name, ValidationContext { if (!creator._allowOverwrite) { - var fixedName = creator.FixName(name); + var fixedName = FixName(name); foreach (var b in creator._repo.Branches) { if (b.FriendlyName == fixedName) @@ -227,13 +228,12 @@ public override async Task Sure() return true; } - private string FixName(string name) - { - if (!name.Contains(' ')) - return name; + [GeneratedRegex(@"\s+")] + private static partial Regex REG_FIX_NAME(); - var parts = name.Split(' ', System.StringSplitOptions.RemoveEmptyEntries); - return string.Join("-", parts); + private static string FixName(string name) + { + return REG_FIX_NAME().Replace(name, "-"); } private readonly Repository _repo = null; diff --git a/src/ViewModels/RenameBranch.cs b/src/ViewModels/RenameBranch.cs index 7496f2832..33ed378a3 100644 --- a/src/ViewModels/RenameBranch.cs +++ b/src/ViewModels/RenameBranch.cs @@ -1,10 +1,11 @@ using System; using System.ComponentModel.DataAnnotations; +using System.Text.RegularExpressions; using System.Threading.Tasks; namespace SourceGit.ViewModels { - public class RenameBranch : Popup + public partial class RenameBranch : Popup { public Models.Branch Target { @@ -31,7 +32,7 @@ public static ValidationResult ValidateBranchName(string name, ValidationContext { if (ctx.ObjectInstance is RenameBranch rename) { - var fixedName = rename.FixName(name); + var fixedName = FixName(name); foreach (var b in rename._repo.Branches) { if (b.IsLocal && b != rename.Target && b.Name == fixedName) @@ -87,13 +88,12 @@ public override async Task Sure() return succ; } - private string FixName(string name) - { - if (!name.Contains(' ')) - return name; + [GeneratedRegex(@"\s+")] + private static partial Regex REG_FIX_NAME(); - var parts = name.Split(' ', StringSplitOptions.RemoveEmptyEntries); - return string.Join("-", parts); + private static string FixName(string name) + { + return REG_FIX_NAME().Replace(name, "-"); } private readonly Repository _repo;