diff --git a/src/Commands/Branch.cs b/src/Commands/Branch.cs index 21210238..660a5daa 100644 --- a/src/Commands/Branch.cs +++ b/src/Commands/Branch.cs @@ -36,7 +36,7 @@ return cmd.Exec(); } - public static bool Delete(string repo, string name) + public static bool DeleteLocal(string repo, string name) { var cmd = new Command(); cmd.WorkingDirectory = repo; @@ -44,5 +44,25 @@ cmd.Args = $"branch -D {name}"; return cmd.Exec(); } + + public static bool DeleteRemote(string repo, string remote, string name) + { + var cmd = new Command(); + cmd.WorkingDirectory = repo; + cmd.Context = repo; + + var sshKey = new Config(repo).Get($"remote.{remote}.sshkey"); + if (!string.IsNullOrEmpty(sshKey)) + { + cmd.Args = $"-c core.sshCommand=\"ssh -i '{sshKey}'\" "; + } + else + { + cmd.Args = "-c credential.helper=manager "; + } + + cmd.Args += $"push {remote} --delete {name}"; + return cmd.Exec(); + } } } diff --git a/src/Commands/Push.cs b/src/Commands/Push.cs index b3e4814a..0aac37a5 100644 --- a/src/Commands/Push.cs +++ b/src/Commands/Push.cs @@ -33,31 +33,6 @@ namespace SourceGit.Commands Args += $"{remote} {local}:{remoteBranch}"; } - /// - /// Only used to delete a remote branch!!!!!! - /// - /// - /// - /// - public Push(string repo, string remote, string branch) - { - WorkingDirectory = repo; - Context = repo; - TraitErrorAsOutput = true; - - var sshKey = new Config(repo).Get($"remote.{remote}.sshkey"); - if (!string.IsNullOrEmpty(sshKey)) - { - Args = $"-c core.sshCommand=\"ssh -i '{sshKey}'\" "; - } - else - { - Args = "-c credential.helper=manager "; - } - - Args += $"push {remote} --delete {branch}"; - } - public Push(string repo, string remote, string tag, bool isDelete) { WorkingDirectory = repo; diff --git a/src/ViewModels/DeleteBranch.cs b/src/ViewModels/DeleteBranch.cs index b5151e97..52a04d93 100644 --- a/src/ViewModels/DeleteBranch.cs +++ b/src/ViewModels/DeleteBranch.cs @@ -52,14 +52,17 @@ namespace SourceGit.ViewModels { if (Target.IsLocal) { - Commands.Branch.Delete(_repo.FullPath, Target.Name); + Commands.Branch.DeleteLocal(_repo.FullPath, Target.Name); if (_alsoDeleteTrackingRemote && TrackingRemoteBranch != null) - new Commands.Push(_repo.FullPath, TrackingRemoteBranch.Remote, TrackingRemoteBranch.Name).Exec(); + { + SetProgressDescription("Deleting tracking remote branch..."); + Commands.Branch.DeleteRemote(_repo.FullPath, TrackingRemoteBranch.Remote, TrackingRemoteBranch.Name); + } } else { - new Commands.Push(_repo.FullPath, Target.Remote, Target.Name).Exec(); + Commands.Branch.DeleteRemote(_repo.FullPath, Target.Remote, Target.Name); } CallUIThread(() => _repo.SetWatcherEnabled(true));