refactor: query branch head after operation finished to avoid branch head mismatch

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-05-23 09:40:15 +08:00
parent 9fb8af51ff
commit c112549b69
No known key found for this signature in database
5 changed files with 25 additions and 17 deletions

View file

@ -80,9 +80,16 @@ namespace SourceGit.ViewModels
log.Complete(); log.Complete();
var upstream = _repo.CurrentBranch?.Upstream;
var upstreamHead = string.Empty;
if (!string.IsNullOrEmpty(upstream))
upstreamHead = new Commands.QueryRevisionByRefName(_repo.FullPath, upstream.Substring(13)).Result();
CallUIThread(() => CallUIThread(() =>
{ {
_repo.NavigateToBranchDelayed(_repo.CurrentBranch?.Upstream); if (!string.IsNullOrEmpty(upstreamHead))
_repo.NavigateToCommitDelayed(upstreamHead);
_repo.MarkFetched(); _repo.MarkFetched();
_repo.SetWatcherEnabled(true); _repo.SetWatcherEnabled(true);
}); });

View file

@ -33,11 +33,14 @@ namespace SourceGit.ViewModels
{ {
new Commands.Fetch(_repo.FullPath, Local, Upstream).Use(log).Exec(); new Commands.Fetch(_repo.FullPath, Local, Upstream).Use(log).Exec();
log.Complete(); log.Complete();
var changedLocalBranchHead = new Commands.QueryRevisionByRefName(_repo.FullPath, Local.Name).Result();
CallUIThread(() => CallUIThread(() =>
{ {
_repo.NavigateToBranchDelayed(Upstream.FullName); _repo.NavigateToCommitDelayed(changedLocalBranchHead);
_repo.SetWatcherEnabled(true); _repo.SetWatcherEnabled(true);
}); });
return true; return true;
}); });
} }

View file

@ -64,9 +64,10 @@ namespace SourceGit.ViewModels
new Commands.Merge(_repo.FullPath, _sourceName, Mode.Arg).Use(log).Exec(); new Commands.Merge(_repo.FullPath, _sourceName, Mode.Arg).Use(log).Exec();
log.Complete(); log.Complete();
var head = new Commands.QueryRevisionByRefName(_repo.FullPath, "HEAD").Result();
CallUIThread(() => CallUIThread(() =>
{ {
_repo.NavigateToBranchDelayed(_repo.CurrentBranch?.FullName); _repo.NavigateToCommitDelayed(head);
_repo.SetWatcherEnabled(true); _repo.SetWatcherEnabled(true);
}); });
return true; return true;

View file

@ -164,9 +164,10 @@ namespace SourceGit.ViewModels
log.Complete(); log.Complete();
var head = new Commands.QueryRevisionByRefName(_repo.FullPath, "HEAD").Result();
CallUIThread(() => CallUIThread(() =>
{ {
_repo.NavigateToBranchDelayed(_repo.CurrentBranch?.FullName); _repo.NavigateToCommitDelayed(head);
_repo.SetWatcherEnabled(true); _repo.SetWatcherEnabled(true);
}); });

View file

@ -922,17 +922,17 @@ namespace SourceGit.ViewModels
} }
} }
public void NavigateToCommitDelayed(string sha)
{
_navigateToCommitDelayed = sha;
}
public void NavigateToCurrentHead() public void NavigateToCurrentHead()
{ {
if (_currentBranch != null) if (_currentBranch != null)
NavigateToCommit(_currentBranch.Head); NavigateToCommit(_currentBranch.Head);
} }
public void NavigateToBranchDelayed(string branch)
{
_navigateToBranchDelayed = branch;
}
public void ClearHistoriesFilter() public void ClearHistoriesFilter()
{ {
_settings.HistoriesFilters.Clear(); _settings.HistoriesFilters.Clear();
@ -1189,15 +1189,11 @@ namespace SourceGit.ViewModels
BisectState = _histories.UpdateBisectInfo(); BisectState = _histories.UpdateBisectInfo();
if (!string.IsNullOrEmpty(_navigateToBranchDelayed)) if (!string.IsNullOrEmpty(_navigateToCommitDelayed))
{ NavigateToCommit(_navigateToCommitDelayed);
var branch = _branches.Find(x => x.FullName == _navigateToBranchDelayed);
if (branch != null)
NavigateToCommit(branch.Head);
}
} }
_navigateToBranchDelayed = string.Empty; _navigateToCommitDelayed = string.Empty;
}); });
} }
@ -2937,6 +2933,6 @@ namespace SourceGit.ViewModels
private Models.BisectState _bisectState = Models.BisectState.None; private Models.BisectState _bisectState = Models.BisectState.None;
private bool _isBisectCommandRunning = false; private bool _isBisectCommandRunning = false;
private string _navigateToBranchDelayed = string.Empty; private string _navigateToCommitDelayed = string.Empty;
} }
} }