From e430e847ff957e23c9e146197f6ce8690730645e Mon Sep 17 00:00:00 2001 From: leo Date: Thu, 13 Mar 2025 09:49:25 +0800 Subject: [PATCH] enhance: auto convert spaces with dashes while renaming a branch (#1088) Signed-off-by: leo --- src/ViewModels/RenameBranch.cs | 21 ++++++++++++++++----- src/Views/CreateBranch.axaml | 12 ++---------- src/Views/RenameBranch.axaml | 10 +++++++++- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/ViewModels/RenameBranch.cs b/src/ViewModels/RenameBranch.cs index bd0b4664..0679a5b5 100644 --- a/src/ViewModels/RenameBranch.cs +++ b/src/ViewModels/RenameBranch.cs @@ -12,7 +12,7 @@ namespace SourceGit.ViewModels } [Required(ErrorMessage = "Branch name is required!!!")] - [RegularExpression(@"^[\w\-/\.#]+$", ErrorMessage = "Bad branch name format!")] + [RegularExpression(@"^[\w \-/\.#]+$", ErrorMessage = "Bad branch name format!")] [CustomValidation(typeof(RenameBranch), nameof(ValidateBranchName))] public string Name { @@ -32,9 +32,10 @@ namespace SourceGit.ViewModels { if (ctx.ObjectInstance is RenameBranch rename) { + var fixedName = rename.FixName(name); foreach (var b in rename._repo.Branches) { - if (b.IsLocal && b != rename.Target && b.Name == name) + if (b.IsLocal && b != rename.Target && b.Name == fixedName) { return new ValidationResult("A branch with same name already exists!!!"); } @@ -46,7 +47,8 @@ namespace SourceGit.ViewModels public override Task Sure() { - if (_name == Target.Name) + var fixedName = FixName(_name); + if (fixedName == Target.Name) return null; _repo.SetWatcherEnabled(false); @@ -55,7 +57,7 @@ namespace SourceGit.ViewModels return Task.Run(() => { var oldName = Target.FullName; - var succ = Commands.Branch.Rename(_repo.FullPath, Target.Name, _name); + var succ = Commands.Branch.Rename(_repo.FullPath, Target.Name, fixedName); CallUIThread(() => { if (succ) @@ -65,7 +67,7 @@ namespace SourceGit.ViewModels if (filter.Type == Models.FilterType.LocalBranch && filter.Pattern.Equals(oldName, StringComparison.Ordinal)) { - filter.Pattern = $"refs/heads/{_name}"; + filter.Pattern = $"refs/heads/{fixedName}"; break; } } @@ -78,6 +80,15 @@ namespace SourceGit.ViewModels }); } + private string FixName(string name) + { + if (!name.Contains(' ')) + return name; + + var parts = name.Split(' ', StringSplitOptions.RemoveEmptyEntries); + return string.Join("-", parts); + } + private readonly Repository _repo; private string _name; } diff --git a/src/Views/CreateBranch.axaml b/src/Views/CreateBranch.axaml index ec56ff20..b757bd78 100644 --- a/src/Views/CreateBranch.axaml +++ b/src/Views/CreateBranch.axaml @@ -14,15 +14,7 @@ - - - - - - - - - + - + @@ -11,7 +12,7 @@ - + + + + + +