diff --git a/src/Commands/Remote.cs b/src/Commands/Remote.cs index 46aa37e3..f2e8d09e 100644 --- a/src/Commands/Remote.cs +++ b/src/Commands/Remote.cs @@ -32,9 +32,17 @@ return Exec(); } - public bool SetURL(string name, string url) + public string GetURL(string name, bool isPush) { - Args = $"remote set-url {name} {url}"; + Args = "remote get-url" + (isPush ? " --push " : " ") + name; + + var rs = ReadToEnd(); + return rs.IsSuccess ? rs.StdOut.Trim() : string.Empty; + } + + public bool SetURL(string name, string url, bool isPush) + { + Args = "remote set-url" + (isPush ? " --push " : " ") + $"{name} {url}"; return Exec(); } } diff --git a/src/ViewModels/EditRemote.cs b/src/ViewModels/EditRemote.cs index 0a514324..912c7991 100644 --- a/src/ViewModels/EditRemote.cs +++ b/src/ViewModels/EditRemote.cs @@ -118,11 +118,15 @@ namespace SourceGit.ViewModels if (_remote.URL != _url) { - var succ = new Commands.Remote(_repo.FullPath).SetURL(_name, _url); + var succ = new Commands.Remote(_repo.FullPath).SetURL(_name, _url, false); if (succ) _remote.URL = _url; } + var pushURL = new Commands.Remote(_repo.FullPath).GetURL(_name, true); + if (pushURL != _url) + new Commands.Remote(_repo.FullPath).SetURL(_name, _url, true); + SetProgressDescription("Post processing ..."); new Commands.Config(_repo.FullPath).Set($"remote.{_name}.sshkey", _useSSH ? SSHKey : null);