enhance: ensure sourcegit_rebase_jobs.json only being used when orig-head and onto are both matched

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-04-18 12:49:19 +08:00
parent 75b4a4b294
commit 413669741d
No known key found for this signature in database
4 changed files with 35 additions and 36 deletions

View file

@ -105,8 +105,6 @@ namespace SourceGit.ViewModels
public RebaseInProgress(Repository repo) : base(repo.FullPath, "rebase")
{
_gitDir = repo.GitDir;
HeadName = File.ReadAllText(Path.Combine(repo.GitDir, "rebase-merge", "head-name")).Trim();
if (HeadName.StartsWith("refs/heads/"))
HeadName = HeadName.Substring(11);
@ -129,34 +127,14 @@ namespace SourceGit.ViewModels
public override bool Continue()
{
var succ = new Commands.Command()
return new Commands.Command()
{
WorkingDirectory = _repo,
Context = _repo,
Editor = Commands.Command.EditorType.RebaseEditor,
Args = $"rebase --continue",
}.Exec();
if (succ)
{
var jobsFile = Path.Combine(_gitDir, "sourcegit_rebase_jobs.json");
var rebaseMergeHead = Path.Combine(_gitDir, "REBASE_HEAD");
var rebaseMergeFolder = Path.Combine(_gitDir, "rebase-merge");
var rebaseApplyFolder = Path.Combine(_gitDir, "rebase-apply");
if (File.Exists(jobsFile))
File.Delete(jobsFile);
if (File.Exists(rebaseMergeHead))
File.Delete(rebaseMergeHead);
if (Directory.Exists(rebaseMergeFolder))
Directory.Delete(rebaseMergeFolder);
if (Directory.Exists(rebaseApplyFolder))
Directory.Delete(rebaseApplyFolder);
}
return succ;
}
private string _gitDir;
}
public class RevertInProgress : InProgressContext

View file

@ -162,6 +162,8 @@ namespace SourceGit.ViewModels
var saveFile = Path.Combine(_repo.GitDir, "sourcegit_rebase_jobs.json");
var collection = new Models.InteractiveRebaseJobCollection();
collection.OrigHead = _repo.CurrentBranch.Head;
collection.Onto = On.SHA;
for (int i = Items.Count - 1; i >= 0; i--)
{
var item = Items[i];
@ -178,9 +180,6 @@ namespace SourceGit.ViewModels
return Task.Run(() =>
{
var succ = new Commands.InteractiveRebase(_repo.FullPath, On.SHA).Use(log).Exec();
if (succ)
File.Delete(saveFile);
log.Complete();
Dispatcher.UIThread.Invoke(() => _repo.SetWatcherEnabled(true));
return succ;