Beispiel #1
0
 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);            
 }
Beispiel #2
0
 /// <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;
 }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 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)
         );
     }
 }
Beispiel #5
0
        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();
            }            
        }