mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-06-25 20:34:59 +00:00
71 lines
1.7 KiB
C#
71 lines
1.7 KiB
C#
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace SourceGit.Commands
|
|
{
|
|
public class Stash : Command
|
|
{
|
|
public Stash(string repo)
|
|
{
|
|
WorkingDirectory = repo;
|
|
Context = repo;
|
|
}
|
|
|
|
public bool Push(string message)
|
|
{
|
|
Args = ["stash", "push", "-m", message];
|
|
return Exec();
|
|
}
|
|
|
|
public bool Push(List<Models.Change> changes, string message)
|
|
{
|
|
Args = ["stash", "push", "-m", message, "--"];
|
|
var needAdd = new List<Models.Change>();
|
|
foreach (var c in changes)
|
|
{
|
|
Args.Add(c.Path);
|
|
|
|
if (c.WorkTree == Models.ChangeState.Added || c.WorkTree == Models.ChangeState.Untracked)
|
|
{
|
|
needAdd.Add(c);
|
|
if (needAdd.Count > 10)
|
|
{
|
|
new Add(WorkingDirectory, needAdd).Exec();
|
|
needAdd.Clear();
|
|
}
|
|
}
|
|
}
|
|
if (needAdd.Count > 0)
|
|
{
|
|
new Add(WorkingDirectory, needAdd).Exec();
|
|
needAdd.Clear();
|
|
}
|
|
|
|
return Exec();
|
|
}
|
|
|
|
public bool Apply(string name)
|
|
{
|
|
Args = ["stash", "apply", "-q", name];
|
|
return Exec();
|
|
}
|
|
|
|
public bool Pop(string name)
|
|
{
|
|
Args = ["stash", "pop", "-q", name];
|
|
return Exec();
|
|
}
|
|
|
|
public bool Drop(string name)
|
|
{
|
|
Args = ["stash", "drop", "-q", name];
|
|
return Exec();
|
|
}
|
|
|
|
public bool Clear()
|
|
{
|
|
Args = ["stash", "clear"];
|
|
return Exec();
|
|
}
|
|
}
|
|
}
|