示例#1
0
文件: Patch.cs 项目: pdelvo/GitBackup
        public static Patch Compare(IBackupSource source, IBackupChain target)
        {
            Trace.WriteLine("Comparing source to destination", "Patch");

            var result = new Patch(source, target);

            var sourceFiles = source.EnumerateFiles ().ToArray ();

            result.RemovedFiles = target.GetFiles().Where(file => sourceFiles.All(a => a.RelativePath.ToLower() != file.ToLower()));

            result.AddedOrChangedFiles =
                sourceFiles.Where(a => !target.GetFiles().Select(m => m.ToLower()).Contains(a.RelativePath.ToLower()) || target.GetFileSize(a.RelativePath) != a.GetFileSize() || !HashMatches(target, a)).AsParallel ().ToArray ();
            return result;
        }
示例#2
0
 public static void ApplyPatch(this IBackupPrototype prototype, Patch patch)
 {
     patch.ApplyPatch(prototype);
 }