diff --git a/src/Models/Watcher.cs b/src/Models/Watcher.cs index 928951ca..ccdc645f 100644 --- a/src/Models/Watcher.cs +++ b/src/Models/Watcher.cs @@ -157,7 +157,7 @@ namespace SourceGit.Models if (string.IsNullOrEmpty(e.Name)) return; - var name = e.Name.Replace("\\", "/"); + var name = e.Name.Replace('\\', '/').TrimEnd('/'); if (name.Contains("fsmonitor--daemon/", StringComparison.Ordinal) || name.EndsWith(".lock", StringComparison.Ordinal) || name.StartsWith("lfs/", StringComparison.Ordinal)) @@ -205,7 +205,7 @@ namespace SourceGit.Models if (string.IsNullOrEmpty(e.Name)) return; - var name = e.Name.Replace("\\", "/"); + var name = e.Name.Replace('\\', '/').TrimEnd('/'); if (name.Equals(".git", StringComparison.Ordinal) || name.StartsWith(".git/", StringComparison.Ordinal) || name.EndsWith("/.git", StringComparison.Ordinal)) diff --git a/src/ViewModels/DiffContext.cs b/src/ViewModels/DiffContext.cs index 5258f164..828a2d59 100644 --- a/src/ViewModels/DiffContext.cs +++ b/src/ViewModels/DiffContext.cs @@ -128,7 +128,7 @@ namespace SourceGit.ViewModels if (count <= 3) { var submoduleDiff = new Models.SubmoduleDiff(); - var submoduleRoot = $"{_repo}/{_option.Path}".Replace("\\", "/"); + var submoduleRoot = $"{_repo}/{_option.Path}".Replace('\\', '/').TrimEnd('/'); isSubmodule = true; for (int i = 1; i < count; i++) { diff --git a/src/ViewModels/Launcher.cs b/src/ViewModels/Launcher.cs index 4c0714df..004b6a0a 100644 --- a/src/ViewModels/Launcher.cs +++ b/src/ViewModels/Launcher.cs @@ -421,7 +421,7 @@ namespace SourceGit.ViewModels foreach (var page in Pages) { - var id = page.Node.Id.Replace("\\", "/"); + var id = page.Node.Id.Replace('\\', '/').TrimEnd('/'); if (id == pageId) { page.Notifications.Add(notification); diff --git a/src/ViewModels/Preferences.cs b/src/ViewModels/Preferences.cs index 2fcbb0cf..31bc7bdb 100644 --- a/src/ViewModels/Preferences.cs +++ b/src/ViewModels/Preferences.cs @@ -455,9 +455,7 @@ namespace SourceGit.ViewModels public RepositoryNode FindOrAddNodeByRepositoryPath(string repo, RepositoryNode parent, bool shouldMoveNode) { - var normalized = repo.Replace('\\', '/'); - if (normalized.EndsWith("/")) - normalized = normalized.TrimEnd('/'); + var normalized = repo.Replace('\\', '/').TrimEnd('/'); var node = FindNodeRecursive(normalized, RepositoryNodes); if (node == null) diff --git a/src/ViewModels/Repository.cs b/src/ViewModels/Repository.cs index 0d22677c..e20669e1 100644 --- a/src/ViewModels/Repository.cs +++ b/src/ViewModels/Repository.cs @@ -30,7 +30,7 @@ namespace SourceGit.ViewModels { if (value != null) { - var normalized = value.Replace('\\', '/'); + var normalized = value.Replace('\\', '/').TrimEnd('/'); SetProperty(ref _fullpath, normalized); } else @@ -499,7 +499,7 @@ namespace SourceGit.ViewModels { // For worktrees, we need to watch the $GIT_COMMON_DIR instead of the $GIT_DIR. var gitDirForWatcher = _gitDir; - if (_gitDir.Replace("\\", "/").IndexOf("/worktrees/", StringComparison.Ordinal) > 0) + if (_gitDir.Replace('\\', '/').IndexOf("/worktrees/", StringComparison.Ordinal) > 0) { var commonDir = new Commands.QueryGitCommonDir(_fullpath).Result(); if (!string.IsNullOrEmpty(commonDir)) @@ -1387,7 +1387,7 @@ namespace SourceGit.ViewModels return; var root = Path.GetFullPath(Path.Combine(_fullpath, submodule)); - var normalizedPath = root.Replace("\\", "/"); + var normalizedPath = root.Replace('\\', '/').TrimEnd('/'); var node = Preferences.Instance.FindNode(normalizedPath); if (node == null) diff --git a/src/ViewModels/RepositoryNode.cs b/src/ViewModels/RepositoryNode.cs index f609879b..c65d1dbd 100644 --- a/src/ViewModels/RepositoryNode.cs +++ b/src/ViewModels/RepositoryNode.cs @@ -13,7 +13,7 @@ namespace SourceGit.ViewModels get => _id; set { - var normalized = value.Replace('\\', '/'); + var normalized = value.Replace('\\', '/').TrimEnd('/'); SetProperty(ref _id, normalized); } } diff --git a/src/ViewModels/ScanRepositories.cs b/src/ViewModels/ScanRepositories.cs index 743fcf27..833a1402 100644 --- a/src/ViewModels/ScanRepositories.cs +++ b/src/ViewModels/ScanRepositories.cs @@ -46,11 +46,11 @@ namespace SourceGit.ViewModels Dispatcher.UIThread.Invoke(() => { - var normalizedRoot = rootDir.FullName.Replace("\\", "/").TrimEnd('/'); + var normalizedRoot = rootDir.FullName.Replace('\\', '/').TrimEnd('/'); foreach (var f in found) { - var parent = new DirectoryInfo(f.Path).Parent!.FullName.Replace("\\", "/").TrimEnd('/'); + var parent = new DirectoryInfo(f.Path).Parent!.FullName.Replace('\\', '/').TrimEnd('/'); if (parent.Equals(normalizedRoot, StringComparison.Ordinal)) { Preferences.Instance.FindOrAddNodeByRepositoryPath(f.Path, null, false); @@ -93,7 +93,7 @@ namespace SourceGit.ViewModels CallUIThread(() => ProgressDescription = $"Scanning {subdir.FullName}..."); - var normalizedSelf = subdir.FullName.Replace("\\", "/").TrimEnd('/'); + var normalizedSelf = subdir.FullName.Replace('\\', '/').TrimEnd('/'); if (_managed.Contains(normalizedSelf)) continue; @@ -103,7 +103,7 @@ namespace SourceGit.ViewModels var test = new Commands.QueryRepositoryRootPath(subdir.FullName).ReadToEnd(); if (test.IsSuccess && !string.IsNullOrEmpty(test.StdOut)) { - var normalized = test.StdOut.Trim().Replace("\\", "/").TrimEnd('/'); + var normalized = test.StdOut.Trim().Replace('\\', '/').TrimEnd('/'); if (!_managed.Contains(normalized)) outs.Add(new FoundRepository(normalized, false)); } diff --git a/src/ViewModels/WorkingCopy.cs b/src/ViewModels/WorkingCopy.cs index 6469b564..ac6d9486 100644 --- a/src/ViewModels/WorkingCopy.cs +++ b/src/ViewModels/WorkingCopy.cs @@ -780,7 +780,7 @@ namespace SourceGit.ViewModels byParentFolder.IsVisible = !isRooted; byParentFolder.Click += (_, e) => { - var dir = Path.GetDirectoryName(change.Path)!.Replace("\\", "/"); + var dir = Path.GetDirectoryName(change.Path)!.Replace('\\', '/').TrimEnd('/'); Commands.GitIgnore.Add(_repo.FullPath, dir + "/"); e.Handled = true; }; @@ -802,7 +802,7 @@ namespace SourceGit.ViewModels byExtensionInSameFolder.IsVisible = !isRooted; byExtensionInSameFolder.Click += (_, e) => { - var dir = Path.GetDirectoryName(change.Path)!.Replace("\\", "/"); + var dir = Path.GetDirectoryName(change.Path)!.Replace('\\', '/').TrimEnd('/'); Commands.GitIgnore.Add(_repo.FullPath, $"{dir}/*{extension}"); e.Handled = true; };