mirror of
https://github.com/sourcegit-scm/sourcegit
synced 2025-05-23 13:14:59 +00:00
refactor: rewrite submodule to support IsDirty
state (#339)
This commit is contained in:
parent
eb441852b0
commit
1fe2be11a7
10 changed files with 110 additions and 19 deletions
|
@ -1,4 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
@ -70,6 +71,16 @@ namespace SourceGit.Models
|
|||
}
|
||||
}
|
||||
|
||||
public void UpdateSubmodules(List<Submodule> submodules)
|
||||
{
|
||||
lock (_lockSubmodule)
|
||||
{
|
||||
_submodules.Clear();
|
||||
foreach (var submodule in submodules)
|
||||
_submodules.Add(submodule.Path);
|
||||
}
|
||||
}
|
||||
|
||||
public void MarkBranchDirtyManually()
|
||||
{
|
||||
_updateBranch = DateTime.Now.ToFileTime() - 1;
|
||||
|
@ -168,7 +179,7 @@ namespace SourceGit.Models
|
|||
return;
|
||||
|
||||
var name = e.Name.Replace("\\", "/");
|
||||
if (name.StartsWith("modules", StringComparison.Ordinal))
|
||||
if (name.StartsWith("modules", StringComparison.Ordinal) && name.EndsWith("HEAD", StringComparison.Ordinal))
|
||||
{
|
||||
_updateSubmodules = DateTime.Now.AddSeconds(1).ToFileTime();
|
||||
}
|
||||
|
@ -201,6 +212,19 @@ namespace SourceGit.Models
|
|||
var name = e.Name.Replace("\\", "/");
|
||||
if (name == ".git" || name.StartsWith(".git/", StringComparison.Ordinal))
|
||||
return;
|
||||
|
||||
lock (_submodules)
|
||||
{
|
||||
foreach (var submodule in _submodules)
|
||||
{
|
||||
if (name.StartsWith(submodule, StringComparison.Ordinal))
|
||||
{
|
||||
_updateSubmodules = DateTime.Now.AddSeconds(1).ToFileTime();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_updateWC = DateTime.Now.AddSeconds(1).ToFileTime();
|
||||
}
|
||||
|
||||
|
@ -214,5 +238,8 @@ namespace SourceGit.Models
|
|||
private long _updateSubmodules = 0;
|
||||
private long _updateStashes = 0;
|
||||
private long _updateTags = 0;
|
||||
|
||||
private object _lockSubmodule = new object();
|
||||
private List<string> _submodules = new List<string>();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue