mirror of
https://github.com/sourcegit-scm/sourcegit.git
synced 2024-12-23 20:47:25 -08:00
enhance: exec git command directly instead of call methods from WorkingCopy (#330)
This commit is contained in:
parent
dc32c3e95d
commit
f8bc48c49c
1 changed files with 45 additions and 57 deletions
|
@ -1147,27 +1147,22 @@ namespace SourceGit.Views
|
||||||
if (!selection.HasChanges)
|
if (!selection.HasChanges)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
var repoView = this.FindAncestorOfType<Repository>();
|
||||||
|
if (repoView == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var repo = repoView.DataContext as ViewModels.Repository;
|
||||||
|
if (repo == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
repo.SetWatcherEnabled(false);
|
||||||
|
|
||||||
if (!selection.HasLeftChanges)
|
if (!selection.HasLeftChanges)
|
||||||
{
|
{
|
||||||
var workcopyView = this.FindAncestorOfType<WorkingCopy>();
|
new Commands.Add(repo.FullPath, [change]).Exec();
|
||||||
if (workcopyView == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var workcopy = workcopyView.DataContext as ViewModels.WorkingCopy;
|
|
||||||
workcopy?.StageChanges(new List<Models.Change> { change });
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var repoView = this.FindAncestorOfType<Repository>();
|
|
||||||
if (repoView == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var repo = repoView.DataContext as ViewModels.Repository;
|
|
||||||
if (repo == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
repo.SetWatcherEnabled(false);
|
|
||||||
|
|
||||||
var tmpFile = Path.GetTempFileName();
|
var tmpFile = Path.GetTempFileName();
|
||||||
if (change.WorkTree == Models.ChangeState.Untracked)
|
if (change.WorkTree == Models.ChangeState.Untracked)
|
||||||
{
|
{
|
||||||
|
@ -1186,10 +1181,10 @@ namespace SourceGit.Views
|
||||||
|
|
||||||
new Commands.Apply(diff.Repo, tmpFile, true, "nowarn", "--cache --index").Exec();
|
new Commands.Apply(diff.Repo, tmpFile, true, "nowarn", "--cache --index").Exec();
|
||||||
File.Delete(tmpFile);
|
File.Delete(tmpFile);
|
||||||
|
|
||||||
repo.MarkWorkingCopyDirtyManually();
|
|
||||||
repo.SetWatcherEnabled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
repo.MarkWorkingCopyDirtyManually();
|
||||||
|
repo.SetWatcherEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnUnstageChunk(object sender, RoutedEventArgs e)
|
private void OnUnstageChunk(object sender, RoutedEventArgs e)
|
||||||
|
@ -1210,27 +1205,25 @@ namespace SourceGit.Views
|
||||||
if (!selection.HasChanges)
|
if (!selection.HasChanges)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
var repoView = this.FindAncestorOfType<Repository>();
|
||||||
|
if (repoView == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var repo = repoView.DataContext as ViewModels.Repository;
|
||||||
|
if (repo == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
repo.SetWatcherEnabled(false);
|
||||||
|
|
||||||
if (!selection.HasLeftChanges)
|
if (!selection.HasLeftChanges)
|
||||||
{
|
{
|
||||||
var workcopyView = this.FindAncestorOfType<WorkingCopy>();
|
if (change.DataForAmend != null)
|
||||||
if (workcopyView == null)
|
new Commands.UnstageChangesForAmend(repo.FullPath, [change]).Exec();
|
||||||
return;
|
else
|
||||||
|
new Commands.Reset(repo.FullPath, [change]).Exec();
|
||||||
var workcopy = workcopyView.DataContext as ViewModels.WorkingCopy;
|
|
||||||
workcopy?.UnstageChanges(new List<Models.Change> { change });
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var repoView = this.FindAncestorOfType<Repository>();
|
|
||||||
if (repoView == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var repo = repoView.DataContext as ViewModels.Repository;
|
|
||||||
if (repo == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
repo.SetWatcherEnabled(false);
|
|
||||||
|
|
||||||
var treeGuid = new Commands.QueryStagedFileBlobGuid(diff.Repo, change.Path).Result();
|
var treeGuid = new Commands.QueryStagedFileBlobGuid(diff.Repo, change.Path).Result();
|
||||||
var tmpFile = Path.GetTempFileName();
|
var tmpFile = Path.GetTempFileName();
|
||||||
if (change.Index == Models.ChangeState.Added)
|
if (change.Index == Models.ChangeState.Added)
|
||||||
|
@ -1242,10 +1235,10 @@ namespace SourceGit.Views
|
||||||
|
|
||||||
new Commands.Apply(diff.Repo, tmpFile, true, "nowarn", "--cache --index --reverse").Exec();
|
new Commands.Apply(diff.Repo, tmpFile, true, "nowarn", "--cache --index --reverse").Exec();
|
||||||
File.Delete(tmpFile);
|
File.Delete(tmpFile);
|
||||||
|
|
||||||
repo.MarkWorkingCopyDirtyManually();
|
|
||||||
repo.SetWatcherEnabled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
repo.MarkWorkingCopyDirtyManually();
|
||||||
|
repo.SetWatcherEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDiscardChunk(object sender, RoutedEventArgs e)
|
private void OnDiscardChunk(object sender, RoutedEventArgs e)
|
||||||
|
@ -1266,27 +1259,22 @@ namespace SourceGit.Views
|
||||||
if (!selection.HasChanges)
|
if (!selection.HasChanges)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
var repoView = this.FindAncestorOfType<Repository>();
|
||||||
|
if (repoView == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var repo = repoView.DataContext as ViewModels.Repository;
|
||||||
|
if (repo == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
repo.SetWatcherEnabled(false);
|
||||||
|
|
||||||
if (!selection.HasLeftChanges)
|
if (!selection.HasLeftChanges)
|
||||||
{
|
{
|
||||||
var workcopyView = this.FindAncestorOfType<WorkingCopy>();
|
Commands.Discard.Changes(repo.FullPath, [change]);
|
||||||
if (workcopyView == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var workcopy = workcopyView.DataContext as ViewModels.WorkingCopy;
|
|
||||||
workcopy?.Discard(new List<Models.Change> { change });
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var repoView = this.FindAncestorOfType<Repository>();
|
|
||||||
if (repoView == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var repo = repoView.DataContext as ViewModels.Repository;
|
|
||||||
if (repo == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
repo.SetWatcherEnabled(false);
|
|
||||||
|
|
||||||
var tmpFile = Path.GetTempFileName();
|
var tmpFile = Path.GetTempFileName();
|
||||||
if (change.Index == Models.ChangeState.Added)
|
if (change.Index == Models.ChangeState.Added)
|
||||||
{
|
{
|
||||||
|
@ -1305,10 +1293,10 @@ namespace SourceGit.Views
|
||||||
|
|
||||||
new Commands.Apply(diff.Repo, tmpFile, true, "nowarn", "--reverse").Exec();
|
new Commands.Apply(diff.Repo, tmpFile, true, "nowarn", "--reverse").Exec();
|
||||||
File.Delete(tmpFile);
|
File.Delete(tmpFile);
|
||||||
|
|
||||||
repo.MarkWorkingCopyDirtyManually();
|
|
||||||
repo.SetWatcherEnabled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
repo.MarkWorkingCopyDirtyManually();
|
||||||
|
repo.SetWatcherEnabled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue