fix(dashboard.xaml.cs): 对于 SUBMODULE ,如果发现 HEAD 出于游离状态,这自动切换到找的第一个有效分支

This commit is contained in:
ZCShou 2020-07-29 20:57:19 +08:00
parent aa017d5f2f
commit 728b4dd879
2 changed files with 11 additions and 2 deletions

View file

@ -927,7 +927,7 @@ namespace SourceGit.Git {
public void UpdateSubmodule() { public void UpdateSubmodule() {
isWatcherDisabled = true; isWatcherDisabled = true;
var errs = RunCommand("submodule update", null); var errs = RunCommand("submodule update --rebase --remote", null);
if (errs != null) { if (errs != null) {
App.RaiseError(errs); App.RaiseError(errs);
} else { } else {

View file

@ -204,6 +204,8 @@ namespace SourceGit.UI {
} }
private void UpdateBranches(bool force = true) { private void UpdateBranches(bool force = true) {
bool IsDetached = false;
Git.Branch branch = null;
Task.Run(() => { Task.Run(() => {
var branches = repo.Branches(force); var branches = repo.Branches(force);
var remotes = repo.Remotes(true); var remotes = repo.Remotes(true);
@ -222,7 +224,8 @@ namespace SourceGit.UI {
foreach (var b in branches) { foreach (var b in branches) {
if (b.IsLocal) { if (b.IsLocal) {
MakeBranchNode(b, localBranchNodes, folders, states, "locals"); MakeBranchNode(b, localBranchNodes, folders, states, "locals");
branch = b;
} else if (!string.IsNullOrEmpty(b.Remote)) { } else if (!string.IsNullOrEmpty(b.Remote)) {
RemoteNode remote = null; RemoteNode remote = null;
@ -240,6 +243,10 @@ namespace SourceGit.UI {
} }
MakeBranchNode(b, remote.Children, folders, states, "remotes"); MakeBranchNode(b, remote.Children, folders, states, "remotes");
} else {
/// 对于 SUBMODULE HEAD 出于游离状态detached on commit id
/// 此时,分支既不是 本地分支,也不是远程分支
IsDetached = b.IsCurrent;
} }
} }
@ -264,6 +271,8 @@ namespace SourceGit.UI {
localBranchTree.ItemsSource = localBranchNodes; localBranchTree.ItemsSource = localBranchNodes;
remoteBranchTree.ItemsSource = remoteNodes; remoteBranchTree.ItemsSource = remoteNodes;
}); });
if (IsDetached && branch != null) repo.Checkout(branch.Name);
}); });
} }