sourcegit/src/Commands/Branch.cs

76 lines
2.2 KiB
C#
Raw Normal View History

namespace SourceGit.Commands
{
public static class Branch
{
public static string ShowCurrent(string repo)
{
var cmd = new Command();
cmd.WorkingDirectory = repo;
cmd.Context = repo;
cmd.Args = $"branch --show-current";
return cmd.ReadToEnd().StdOut.Trim();
}
public static bool Create(string repo, string name, string basedOn)
{
var cmd = new Command();
cmd.WorkingDirectory = repo;
cmd.Context = repo;
cmd.Args = $"branch {name} {basedOn}";
return cmd.Exec();
2021-04-29 05:05:55 -07:00
}
public static bool Rename(string repo, string name, string to)
{
var cmd = new Command();
cmd.WorkingDirectory = repo;
cmd.Context = repo;
cmd.Args = $"branch -M {name} {to}";
return cmd.Exec();
2021-04-29 05:05:55 -07:00
}
public static bool SetUpstream(string repo, string name, string upstream)
{
var cmd = new Command();
cmd.WorkingDirectory = repo;
cmd.Context = repo;
2024-07-09 03:13:15 -07:00
if (string.IsNullOrEmpty(upstream))
cmd.Args = $"branch {name} --unset-upstream";
else
cmd.Args = $"branch {name} -u {upstream}";
2024-07-09 03:13:15 -07:00
return cmd.Exec();
2021-04-29 05:05:55 -07:00
}
public static bool DeleteLocal(string repo, string name)
{
var cmd = new Command();
cmd.WorkingDirectory = repo;
cmd.Context = repo;
cmd.Args = $"branch -D {name}";
return cmd.Exec();
2021-04-29 05:05:55 -07:00
}
public static bool DeleteRemote(string repo, string remote, string name)
{
var cmd = new Command();
cmd.WorkingDirectory = repo;
cmd.Context = repo;
bool exists = new Remote(repo).HasBranch(remote, name);
if (exists)
{
cmd.SSHKey = new Config(repo).Get($"remote.{remote}.sshkey");
cmd.Args = $"push {remote} --delete {name}";
}
else
{
cmd.Args = $"branch -D -r {remote}/{name}";
}
return cmd.Exec();
}
2021-04-29 05:05:55 -07:00
}
}