sourcegit/src/Commands/Push.cs

71 lines
2.3 KiB
C#
Raw Normal View History

using System;
2021-04-29 05:05:55 -07:00
namespace SourceGit.Commands {
public class Push : Command {
public Push(string repo, string local, string remote, string remoteBranch, bool withTags, bool force, bool track, Action<string> onProgress) {
WorkingDirectory = repo;
Context = repo;
2021-04-29 05:05:55 -07:00
TraitErrorAsOutput = true;
_outputHandler = onProgress;
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 --progress --verbose ";
2021-04-29 05:05:55 -07:00
if (withTags) Args += "--tags ";
if (track) Args += "-u ";
if (force) Args += "--force-with-lease ";
Args += $"{remote} {local}:{remoteBranch}";
}
/// <summary>
/// Only used to delete a remote branch!!!!!!
/// </summary>
/// <param name="repo"></param>
/// <param name="remote"></param>
/// <param name="branch"></param>
2021-04-29 05:05:55 -07:00
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}";
2021-04-29 05:05:55 -07:00
}
public Push(string repo, string remote, string tag, bool isDelete) {
WorkingDirectory = repo;
Context = repo;
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 ";
2021-04-29 05:05:55 -07:00
if (isDelete) Args += "--delete ";
Args += $"{remote} refs/tags/{tag}";
}
protected override void OnReadline(string line) {
_outputHandler?.Invoke(line);
2021-04-29 05:05:55 -07:00
}
private Action<string> _outputHandler = null;
2021-04-29 05:05:55 -07:00
}
}