Skip to content

Commit e09e1bd

Browse files
committed
enhance: re-calculate local changes after branch changed
Signed-off-by: leo <[email protected]>
1 parent e076cbf commit e09e1bd

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

src/Models/Watcher.cs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ private void Tick(object sender)
122122
var now = DateTime.Now.ToFileTime();
123123
var refreshCommits = false;
124124
var refreshSubmodules = false;
125+
var refreshWC = false;
125126

126127
var oldUpdateBranch = Interlocked.Exchange(ref _updateBranch, -1);
127128
if (oldUpdateBranch > 0)
@@ -130,6 +131,7 @@ private void Tick(object sender)
130131
{
131132
refreshCommits = true;
132133
refreshSubmodules = _repo.MayHaveSubmodules();
134+
refreshWC = true;
133135

134136
_repo.RefreshBranches();
135137
_repo.RefreshWorktrees();
@@ -140,13 +142,21 @@ private void Tick(object sender)
140142
}
141143
}
142144

143-
var oldUpdateWC = Interlocked.Exchange(ref _updateWC, -1);
144-
if (oldUpdateWC > 0)
145+
if (refreshWC)
145146
{
146-
if (now > oldUpdateWC)
147-
_repo.RefreshWorkingCopyChanges();
148-
else
149-
Interlocked.CompareExchange(ref _updateWC, oldUpdateWC, -1);
147+
Interlocked.Exchange(ref _updateWC, -1);
148+
_repo.RefreshWorkingCopyChanges();
149+
}
150+
else
151+
{
152+
var oldUpdateWC = Interlocked.Exchange(ref _updateWC, -1);
153+
if (oldUpdateWC > 0)
154+
{
155+
if (now > oldUpdateWC)
156+
_repo.RefreshWorkingCopyChanges();
157+
else
158+
Interlocked.CompareExchange(ref _updateWC, oldUpdateWC, -1);
159+
}
150160
}
151161

152162
if (refreshSubmodules)

0 commit comments

Comments
 (0)