mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-06-16 16:05:00 +00:00
enhance: only refresh submodules when it is needed (#1344)
Signed-off-by: leo <longshuang@msn.cn>
This commit is contained in:
parent
44c83ef342
commit
1ee7d1184e
4 changed files with 66 additions and 12 deletions
|
@ -2,6 +2,8 @@
|
|||
{
|
||||
public interface IRepository
|
||||
{
|
||||
bool MayHaveSubmodules();
|
||||
|
||||
void RefreshBranches();
|
||||
void RefreshWorktrees();
|
||||
void RefreshTags();
|
||||
|
|
|
@ -50,7 +50,7 @@ namespace SourceGit.Models
|
|||
return true;
|
||||
}
|
||||
|
||||
return url.StartsWith("file://", StringComparison.Ordinal) ||
|
||||
return url.StartsWith("file://", StringComparison.Ordinal) ||
|
||||
url.StartsWith("./", StringComparison.Ordinal) ||
|
||||
url.StartsWith("../", StringComparison.Ordinal) ||
|
||||
Directory.Exists(url);
|
||||
|
|
|
@ -107,7 +107,6 @@ namespace SourceGit.Models
|
|||
{
|
||||
_updateBranch = 0;
|
||||
_updateWC = 0;
|
||||
_updateSubmodules = 0;
|
||||
|
||||
if (_updateTags > 0)
|
||||
{
|
||||
|
@ -115,10 +114,15 @@ namespace SourceGit.Models
|
|||
Task.Run(_repo.RefreshTags);
|
||||
}
|
||||
|
||||
if (_updateSubmodules > 0 || _repo.MayHaveSubmodules())
|
||||
{
|
||||
_updateSubmodules = 0;
|
||||
Task.Run(_repo.RefreshSubmodules);
|
||||
}
|
||||
|
||||
Task.Run(_repo.RefreshBranches);
|
||||
Task.Run(_repo.RefreshCommits);
|
||||
Task.Run(_repo.RefreshWorkingCopyChanges);
|
||||
Task.Run(_repo.RefreshSubmodules);
|
||||
Task.Run(_repo.RefreshWorktrees);
|
||||
}
|
||||
|
||||
|
@ -150,12 +154,13 @@ namespace SourceGit.Models
|
|||
|
||||
private void OnRepositoryChanged(object o, FileSystemEventArgs e)
|
||||
{
|
||||
if (string.IsNullOrEmpty(e.Name) || e.Name.EndsWith(".lock", StringComparison.Ordinal))
|
||||
if (string.IsNullOrEmpty(e.Name))
|
||||
return;
|
||||
|
||||
var name = e.Name.Replace("\\", "/");
|
||||
|
||||
if (name.Contains("fsmonitor--daemon/", StringComparison.Ordinal))
|
||||
if (name.Contains("fsmonitor--daemon/", StringComparison.Ordinal) ||
|
||||
name.EndsWith(".lock", StringComparison.Ordinal) ||
|
||||
name.StartsWith("lfs/", StringComparison.Ordinal))
|
||||
return;
|
||||
|
||||
if (name.StartsWith("modules", StringComparison.Ordinal))
|
||||
|
@ -170,8 +175,8 @@ namespace SourceGit.Models
|
|||
else if (name.Equals("MERGE_HEAD", StringComparison.Ordinal) ||
|
||||
name.Equals("AUTO_MERGE", StringComparison.Ordinal))
|
||||
{
|
||||
_updateSubmodules = DateTime.Now.AddSeconds(1).ToFileTime();
|
||||
_updateWC = DateTime.Now.AddSeconds(1).ToFileTime();
|
||||
if (_repo.MayHaveSubmodules())
|
||||
_updateSubmodules = DateTime.Now.AddSeconds(1).ToFileTime();
|
||||
}
|
||||
else if (name.StartsWith("refs/tags", StringComparison.Ordinal))
|
||||
{
|
||||
|
@ -201,13 +206,12 @@ namespace SourceGit.Models
|
|||
return;
|
||||
|
||||
var name = e.Name.Replace("\\", "/");
|
||||
|
||||
if (name.Equals(".git", StringComparison.Ordinal) ||
|
||||
name.StartsWith(".git/", StringComparison.Ordinal) ||
|
||||
name.EndsWith("/.git", StringComparison.Ordinal))
|
||||
return;
|
||||
|
||||
if (name.StartsWith(".vs/", StringComparison.Ordinal) && name.EndsWith("/.suo", StringComparison.Ordinal))
|
||||
if (name.StartsWith(".vs/", StringComparison.Ordinal))
|
||||
return;
|
||||
|
||||
if (name.Equals(".gitmodules", StringComparison.Ordinal))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue