Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit 6346098

Browse files
Merge branch 'fixes/application-cache-initial-times' into fixes/split-status-cache
2 parents a66bd28 + 92b65da commit 6346098

File tree

4 files changed

+76
-66
lines changed

4 files changed

+76
-66
lines changed

src/GitHub.Api/Git/ManagedCacheExtensions.cs

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/GitHub.Api/Git/Repository.cs

Lines changed: 55 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -111,31 +111,31 @@ public ITask ReleaseLock(string file, bool force)
111111
public void CheckLogChangedEvent(CacheUpdateEvent cacheUpdateEvent)
112112
{
113113
var managedCache = cacheContainer.GitLogCache;
114-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
114+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
115115

116116
Logger.Trace("Check GitLogCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
117-
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
117+
cacheUpdateEvent.UpdatedTime, raiseEvent);
118118

119119
if (raiseEvent)
120120
{
121121
var dateTimeOffset = managedCache.LastUpdatedAt;
122-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
122+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
123123
HandleGitLogCacheUpdatedEvent(updateEvent);
124124
}
125125
}
126126

127127
public void CheckStatusChangedEvent(CacheUpdateEvent cacheUpdateEvent)
128128
{
129129
var managedCache = cacheContainer.GitStatusCache;
130-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
130+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
131131

132132
Logger.Trace("Check GitStatusCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
133-
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
133+
cacheUpdateEvent.UpdatedTime, raiseEvent);
134134

135135
if (raiseEvent)
136136
{
137137
var dateTimeOffset = managedCache.LastUpdatedAt;
138-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
138+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
139139
HandleGitStatusCacheUpdatedEvent(updateEvent);
140140
}
141141
}
@@ -158,32 +158,31 @@ public void CheckCurrentBranchAndRemoteChangedEvent(CacheUpdateEvent cacheUpdate
158158
private void CheckRepositoryInfoCacheEvent(CacheUpdateEvent cacheUpdateEvent)
159159
{
160160
var managedCache = cacheContainer.RepositoryInfoCache;
161-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
161+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
162162

163163
Logger.Trace("Check RepositoryInfoCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
164-
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
164+
cacheUpdateEvent.UpdatedTime, raiseEvent);
165165

166166
if (raiseEvent)
167167
{
168168
var dateTimeOffset = managedCache.LastUpdatedAt;
169-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
169+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset};
170170
HandleRepositoryInfoCacheUpdatedEvent(updateEvent);
171171
}
172172
}
173173

174174
public void CheckLocksChangedEvent(CacheUpdateEvent cacheUpdateEvent)
175175
{
176-
CacheUpdateEvent cacheUpdateEvent1 = cacheUpdateEvent;
177176
var managedCache = cacheContainer.GitLocksCache;
178-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent1);
177+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
179178

180179
Logger.Trace("Check GitLocksCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
181-
cacheUpdateEvent1.UpdatedTimeString ?? "[NULL]", raiseEvent);
180+
cacheUpdateEvent.UpdatedTime, raiseEvent);
182181

183182
if (raiseEvent)
184183
{
185184
var dateTimeOffset = managedCache.LastUpdatedAt;
186-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
185+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
187186
HandleGitLocksCacheUpdatedEvent(updateEvent);
188187
}
189188
}
@@ -238,15 +237,15 @@ public bool Equals(IRepository other)
238237
private void CheckBranchCacheEvent(CacheUpdateEvent cacheUpdateEvent)
239238
{
240239
var managedCache = cacheContainer.BranchCache;
241-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
240+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
242241

243242
Logger.Trace("Check BranchCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
244-
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
243+
cacheUpdateEvent.UpdatedTime, raiseEvent);
245244

246245
if (raiseEvent)
247246
{
248247
var dateTimeOffset = managedCache.LastUpdatedAt;
249-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
248+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
250249
HandleBranchCacheUpdatedEvent(updateEvent);
251250
}
252251
}
@@ -283,7 +282,7 @@ private void CacheContainer_OnCacheInvalidated(CacheType cacheType)
283282

284283
private void CacheContainer_OnCacheUpdated(CacheType cacheType, DateTimeOffset offset)
285284
{
286-
var cacheUpdateEvent = new CacheUpdateEvent { UpdatedTimeString = offset.ToString() };
285+
var cacheUpdateEvent = new CacheUpdateEvent { UpdatedTime = offset };
287286
switch (cacheType)
288287
{
289288
case CacheType.BranchCache:
@@ -587,15 +586,15 @@ public User(ICacheContainer cacheContainer)
587586
public void CheckUserChangedEvent(CacheUpdateEvent cacheUpdateEvent)
588587
{
589588
var managedCache = cacheContainer.GitUserCache;
590-
var raiseEvent = managedCache.IsLastUpdatedTimeDifferent(cacheUpdateEvent);
589+
var raiseEvent = managedCache.LastUpdatedAt != cacheUpdateEvent.UpdatedTime;
591590

592591
Logger.Trace("Check GitUserCache CacheUpdateEvent Current:{0} Check:{1} Result:{2}", managedCache.LastUpdatedAt,
593-
cacheUpdateEvent.UpdatedTimeString ?? "[NULL]", raiseEvent);
592+
cacheUpdateEvent.UpdatedTime, raiseEvent);
594593

595594
if (raiseEvent)
596595
{
597596
var dateTimeOffset = managedCache.LastUpdatedAt;
598-
var updateEvent = new CacheUpdateEvent { UpdatedTimeString = dateTimeOffset.ToString() };
597+
var updateEvent = new CacheUpdateEvent { UpdatedTime = dateTimeOffset };
599598
HandleUserCacheUpdatedEvent(updateEvent);
600599
}
601600
}
@@ -642,7 +641,7 @@ private void GitUserCacheOnCacheUpdated(DateTimeOffset timeOffset)
642641
{
643642
HandleUserCacheUpdatedEvent(new CacheUpdateEvent
644643
{
645-
UpdatedTimeString = timeOffset.ToString()
644+
UpdatedTime = timeOffset
646645
});
647646
}
648647

@@ -654,7 +653,7 @@ private void GitUserCacheOnCacheInvalidated()
654653

655654
private void HandleUserCacheUpdatedEvent(CacheUpdateEvent cacheUpdateEvent)
656655
{
657-
Logger.Trace("GitUserCache Updated {0}", cacheUpdateEvent.UpdatedTimeString);
656+
Logger.Trace("GitUserCache Updated {0}", cacheUpdateEvent.UpdatedTime);
658657
Changed?.Invoke(cacheUpdateEvent);
659658
}
660659

@@ -682,6 +681,39 @@ private void UpdateUserAndEmail()
682681
[Serializable]
683682
public struct CacheUpdateEvent
684683
{
685-
public string UpdatedTimeString;
684+
[NonSerialized] private DateTimeOffset? updatedTimeValue;
685+
public string updatedTimeString;
686+
687+
public DateTimeOffset UpdatedTime
688+
{
689+
get
690+
{
691+
if (!updatedTimeValue.HasValue)
692+
{
693+
DateTimeOffset result;
694+
if (DateTimeOffset.TryParseExact(updatedTimeString, Constants.Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
695+
{
696+
updatedTimeValue = result;
697+
}
698+
else
699+
{
700+
UpdatedTime = DateTimeOffset.MinValue;
701+
}
702+
}
703+
704+
return updatedTimeValue.Value;
705+
}
706+
set
707+
{
708+
updatedTimeValue = value;
709+
UpdatedTimeString = value.ToString(Constants.Iso8601Format);
710+
}
711+
}
712+
713+
public string UpdatedTimeString
714+
{
715+
get { return updatedTimeString; }
716+
private set { updatedTimeString = value; }
717+
}
686718
}
687719
}

src/GitHub.Api/GitHub.Api.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@
103103
<Compile Include="Application\Organization.cs" />
104104
<Compile Include="Cache\CacheInterfaces.cs" />
105105
<Compile Include="Extensions\ListExtensions.cs" />
106-
<Compile Include="Git\ManagedCacheExtensions.cs" />
107106
<Compile Include="Git\Tasks\GitLfsVersionTask.cs" />
108107
<Compile Include="Git\Tasks\GitVersionTask.cs" />
109108
<Compile Include="Git\ValidateGitInstallResult.cs" />

src/UnityExtension/Assets/Editor/GitHub.Unity/ApplicationCache.cs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ public DateTimeOffset LastUpdatedAt
210210
}
211211
else
212212
{
213-
lastUpdatedAtValue = DateTimeOffset.MinValue;
213+
LastUpdatedAt = DateTimeOffset.MinValue;
214214
}
215215
}
216216

@@ -238,7 +238,7 @@ public DateTimeOffset LastVerifiedAt
238238
}
239239
else
240240
{
241-
lastVerifiedAtValue = DateTimeOffset.MinValue;
241+
LastVerifiedAt = DateTimeOffset.MinValue;
242242
}
243243
}
244244

@@ -264,7 +264,7 @@ public DateTimeOffset InitializedAt
264264
}
265265
else
266266
{
267-
initializedAtValue = DateTimeOffset.MinValue;
267+
InitializedAt = DateTimeOffset.MinValue;
268268
}
269269
}
270270

@@ -414,9 +414,9 @@ public ConfigRemoteDictionary(IDictionary<string, ConfigRemote> dictionary)
414414
[Location("cache/repoinfo.yaml", LocationAttribute.Location.LibraryFolder)]
415415
sealed class RepositoryInfoCache : ManagedCacheBase<RepositoryInfoCache>, IRepositoryInfoCache
416416
{
417-
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString();
418-
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString();
419-
[SerializeField] private string firstInitializedAtString = DateTimeOffset.MinValue.ToString();
417+
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
418+
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
419+
[SerializeField] private string firstInitializedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
420420
[SerializeField] private GitRemote gitRemote;
421421
[SerializeField] private GitBranch gitBranch;
422422

@@ -501,9 +501,9 @@ sealed class BranchCache : ManagedCacheBase<BranchCache>, IBranchCache
501501
public static readonly ConfigBranch DefaultConfigBranch = new ConfigBranch();
502502
public static readonly ConfigRemote DefaultConfigRemote = new ConfigRemote();
503503

504-
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString();
505-
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString();
506-
[SerializeField] private string initializedAtString = DateTimeOffset.MinValue.ToString();
504+
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
505+
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
506+
[SerializeField] private string initializedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
507507

508508
[SerializeField] private ConfigBranch gitConfigBranch;
509509
[SerializeField] private ConfigRemote gitConfigRemote;
@@ -774,9 +774,9 @@ public override TimeSpan DataTimeout
774774
[Location("cache/gitlog.yaml", LocationAttribute.Location.LibraryFolder)]
775775
sealed class GitLogCache : ManagedCacheBase<GitLogCache>, IGitLogCache
776776
{
777-
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString();
778-
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString();
779-
[SerializeField] private string initializedAtString = DateTimeOffset.MinValue.ToString();
777+
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
778+
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
779+
[SerializeField] private string initializedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
780780
[SerializeField] private List<GitLogEntry> log = new List<GitLogEntry>();
781781

782782
public GitLogCache() : base(true)
@@ -833,9 +833,9 @@ public override TimeSpan DataTimeout
833833
[Location("cache/gitstatus.yaml", LocationAttribute.Location.LibraryFolder)]
834834
sealed class GitStatusCache : ManagedCacheBase<GitStatusCache>, IGitStatusCache
835835
{
836-
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString();
837-
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString();
838-
[SerializeField] private string initializedAtString = DateTimeOffset.MinValue.ToString();
836+
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
837+
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
838+
[SerializeField] private string initializedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
839839
[SerializeField] private GitStatus status;
840840

841841
public GitStatusCache() : base(true)
@@ -892,9 +892,9 @@ public override TimeSpan DataTimeout
892892
[Location("cache/gitlocks.yaml", LocationAttribute.Location.LibraryFolder)]
893893
sealed class GitLocksCache : ManagedCacheBase<GitLocksCache>, IGitLocksCache
894894
{
895-
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString();
896-
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString();
897-
[SerializeField] private string initializedAtString = DateTimeOffset.MinValue.ToString();
895+
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
896+
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
897+
[SerializeField] private string initializedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
898898
[SerializeField] private List<GitLock> gitLocks = new List<GitLock>();
899899

900900
public GitLocksCache() : base(true)
@@ -951,9 +951,9 @@ public override TimeSpan DataTimeout
951951
[Location("cache/gituser.yaml", LocationAttribute.Location.LibraryFolder)]
952952
sealed class GitUserCache : ManagedCacheBase<GitUserCache>, IGitUserCache
953953
{
954-
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString();
955-
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString();
956-
[SerializeField] private string initializedAtString = DateTimeOffset.MinValue.ToString();
954+
[SerializeField] private string lastUpdatedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
955+
[SerializeField] private string lastVerifiedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
956+
[SerializeField] private string initializedAtString = DateTimeOffset.MinValue.ToString(Constants.Iso8601Format);
957957
[SerializeField] private string gitName;
958958
[SerializeField] private string gitEmail;
959959

0 commit comments

Comments
 (0)