code_review: commit b969ac161a

- The return code of `AutoRemoveInvalidNode`  is never used
- It's not necessary to sort all nodes after re-scan default clone dir. Because `FindOrAddNodeByRepositoryPath` makes sure added node is ordered
- Add a new parameter `save` to `FindOrAddNodeByRepositoryPath` method, and disable it while scanning. Instead, we will save it after scan finished.

Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
leo 2025-06-05 21:27:19 +08:00
parent b969ac161a
commit 464fe74580
No known key found for this signature in database
2 changed files with 7 additions and 16 deletions

View file

@ -453,17 +453,12 @@ namespace SourceGit.ViewModels
}); });
} }
public void SortAllNodes()
{
SortNodesRecursive(RepositoryNodes);
}
public RepositoryNode FindNode(string id) public RepositoryNode FindNode(string id)
{ {
return FindNodeRecursive(id, RepositoryNodes); return FindNodeRecursive(id, RepositoryNodes);
} }
public RepositoryNode FindOrAddNodeByRepositoryPath(string repo, RepositoryNode parent, bool shouldMoveNode) public RepositoryNode FindOrAddNodeByRepositoryPath(string repo, RepositoryNode parent, bool shouldMoveNode, bool save = true)
{ {
var normalized = repo.Replace('\\', '/').TrimEnd('/'); var normalized = repo.Replace('\\', '/').TrimEnd('/');
@ -478,11 +473,11 @@ namespace SourceGit.ViewModels
IsRepository = true, IsRepository = true,
}; };
AddNode(node, parent, true); AddNode(node, parent, save);
} }
else if (shouldMoveNode) else if (shouldMoveNode)
{ {
MoveNode(node, parent, true); MoveNode(node, parent, save);
} }
return node; return node;
@ -514,13 +509,12 @@ namespace SourceGit.ViewModels
{ {
var container = FindNodeContainer(node, RepositoryNodes); var container = FindNodeContainer(node, RepositoryNodes);
SortNodes(container); SortNodes(container);
Save(); Save();
} }
public bool AutoRemoveInvalidNode() public void AutoRemoveInvalidNode()
{ {
return RemoveInvalidRepositoriesRecursive(RepositoryNodes); RemoveInvalidRepositoriesRecursive(RepositoryNodes);
} }
public void Save() public void Save()

View file

@ -53,20 +53,17 @@ namespace SourceGit.ViewModels
var parent = new DirectoryInfo(f.Path).Parent!.FullName.Replace('\\', '/').TrimEnd('/'); var parent = new DirectoryInfo(f.Path).Parent!.FullName.Replace('\\', '/').TrimEnd('/');
if (parent.Equals(normalizedRoot, StringComparison.Ordinal)) if (parent.Equals(normalizedRoot, StringComparison.Ordinal))
{ {
Preferences.Instance.FindOrAddNodeByRepositoryPath(f.Path, null, false); Preferences.Instance.FindOrAddNodeByRepositoryPath(f.Path, null, false, false);
} }
else if (parent.StartsWith(normalizedRoot, StringComparison.Ordinal)) else if (parent.StartsWith(normalizedRoot, StringComparison.Ordinal))
{ {
var relative = parent.Substring(normalizedRoot.Length).TrimStart('/'); var relative = parent.Substring(normalizedRoot.Length).TrimStart('/');
var group = FindOrCreateGroupRecursive(Preferences.Instance.RepositoryNodes, relative); var group = FindOrCreateGroupRecursive(Preferences.Instance.RepositoryNodes, relative);
Preferences.Instance.FindOrAddNodeByRepositoryPath(f.Path, group, false); Preferences.Instance.FindOrAddNodeByRepositoryPath(f.Path, group, false, false);
} }
} }
Preferences.Instance.AutoRemoveInvalidNode(); Preferences.Instance.AutoRemoveInvalidNode();
// Sort & Save unconditionally after a complete rescan.
Preferences.Instance.SortAllNodes();
Preferences.Instance.Save(); Preferences.Instance.Save();
Welcome.Instance.Refresh(); Welcome.Instance.Refresh();