2021-05-26 03:43:28 -07:00
|
|
|
using System;
|
2021-04-29 05:05:55 -07:00
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Text;
|
|
|
|
|
|
|
|
namespace SourceGit.Commands {
|
|
|
|
/// <summary>
|
|
|
|
/// 检出
|
|
|
|
/// </summary>
|
|
|
|
public class Checkout : Command {
|
2021-05-26 03:43:28 -07:00
|
|
|
private Action<string> handler = null;
|
2021-04-29 05:05:55 -07:00
|
|
|
|
|
|
|
public Checkout(string repo) {
|
|
|
|
Cwd = repo;
|
|
|
|
}
|
|
|
|
|
2021-05-26 03:43:28 -07:00
|
|
|
public bool Branch(string branch, Action<string> onProgress) {
|
|
|
|
Args = $"checkout --progress {branch}";
|
|
|
|
TraitErrorAsOutput = true;
|
|
|
|
handler = onProgress;
|
2021-04-29 05:05:55 -07:00
|
|
|
return Exec();
|
|
|
|
}
|
|
|
|
|
|
|
|
public bool Branch(string branch, string basedOn) {
|
|
|
|
Args = $"checkout -b {branch} {basedOn}";
|
|
|
|
return Exec();
|
|
|
|
}
|
|
|
|
|
|
|
|
public bool File(string file, bool useTheirs) {
|
|
|
|
if (useTheirs) {
|
|
|
|
Args = $"checkout --theirs -- \"{file}\"";
|
|
|
|
} else {
|
|
|
|
Args = $"checkout --ours -- \"{file}\"";
|
|
|
|
}
|
|
|
|
|
|
|
|
return Exec();
|
|
|
|
}
|
|
|
|
|
|
|
|
public bool Files(List<string> files) {
|
|
|
|
StringBuilder builder = new StringBuilder();
|
2021-04-29 06:22:17 -07:00
|
|
|
builder.Append("checkout -f -q --");
|
2021-04-29 05:05:55 -07:00
|
|
|
foreach (var f in files) {
|
|
|
|
builder.Append(" \"");
|
|
|
|
builder.Append(f);
|
|
|
|
builder.Append("\"");
|
|
|
|
}
|
|
|
|
Args = builder.ToString();
|
|
|
|
return Exec();
|
|
|
|
}
|
2021-05-26 03:43:28 -07:00
|
|
|
|
|
|
|
public override void OnReadline(string line) {
|
|
|
|
handler?.Invoke(line);
|
|
|
|
}
|
2021-04-29 05:05:55 -07:00
|
|
|
}
|
|
|
|
}
|