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));