public static void Equal(ISyncPoint expected, ISyncPoint actual) { Assert.Equal(expected.Id, actual.Id); Assert.Equal(expected.MultiFileSystemSnapshotId, actual.MultiFileSystemSnapshotId); DictionaryAssert.Equal(expected.FilterConfigurations, actual.FilterConfigurations); }
/// <summary> /// Determine the id of the next sync point to be stored /// </summary> int GetNextSyncPointId(ISyncPoint currentSyncPoint) { // currentSyncPoint may be null return currentSyncPoint?.Id + 1 ?? 1; }
IMultiFileSystemDiff GetDiff(IMultiFileSystemHistoryService historyService, ISyncPoint syncPoint, IMultiFileSystemChangeFilter filter) { var fromSnapshotId = syncPoint?.MultiFileSystemSnapshotId; var toSnapshotId = historyService.LatestSnapshot.Id; var diff = fromSnapshotId == null ? historyService.GetChanges(toSnapshotId) : historyService.GetChanges(fromSnapshotId, toSnapshotId); return new FilteredMultiFileSystemDiff(diff, filter); }
bool WasFilterModified(IEnumerable<SyncFolder> syncFolders, ISyncPoint lastSyncPoint) { if (lastSyncPoint == null) { return false; } else { var filters = lastSyncPoint.FilterConfigurations; return syncFolders.Any(folder => !filters.ContainsKey(folder.Name) || !filters[folder.Name].Equals(folder.Filter) ); } }
public void AddItem(ISyncPoint state) { if (state == null) { throw new ArgumentNullException(nameof(state)); } if (ItemExists(state.Id)) { throw new DuplicateSyncPointException(state.Id); } // create synchronization state branch if necessary EnsureBranchExists(); var directory = new Directory(null, s_DirectoryName) { d => new SyncPointStateFile(d, state) }; using (var workingDirectory = new TemporaryWorkingDirectory(GitGroup.Repository.Info.Path, BranchName.ToString())) { var localItemCreator = new LocalItemCreator(); localItemCreator.CreateDirectory(directory, workingDirectory.Location); workingDirectory.Commit($"{nameof(GitSyncPointService)}: Added SyncPoint {state.Id}"); workingDirectory.Push(); } }