public void Execute(IEnumerable<FileCompare> files, IMergeOperation mergeOp) { try { var output = new StringBuilder(); ExecCmd("hg", "status", mergeOp.MergePath(""), output); var statuses = GetStatus(output.ToString()); WorkingDirStatus status; var toProcess = files.Where(f => f.ResolutionStatus == MergeStatus.TakeLocal || f.ResolutionStatus == MergeStatus.TakeRemote) .ToArray(); FileCompare file; for (var i = 0; i < toProcess.Length; i++ ) { file = toProcess[i]; var path = mergeOp.MergePath(file.Path); if (file.ResolutionStatus == MergeStatus.TakeLocal) { if (file.InLocal == FileStatus.DoesntExist) { if (File.Exists(path)) File.Delete(path); } else { if (statuses.ContainsKey(file.Path)) { Directory.CreateDirectory(Path.GetDirectoryName(path)); using (var write = new FileStream(path, FileMode.Create, FileAccess.Write)) { mergeOp.GetLocal(file.Path).CopyTo(write); } } } } else { if (File.Exists(path)) File.Delete(path); if (file.InRemote != FileStatus.DoesntExist) { Directory.CreateDirectory(Path.GetDirectoryName(path)); using (var write = new FileStream(path, FileMode.Create, FileAccess.Write)) { mergeOp.GetRemote(file.Path).CopyTo(write); } } } OnProgressChanged("Processing files...", ((i + 1) * 100) / toProcess.Length); } OnActionComplete(); } catch (Exception ex) { OnActionComplete(ex); } }
public void Execute(IEnumerable <FileCompare> files, IMergeOperation mergeOp) { try { var output = new StringBuilder(); ExecCmd("hg", "status", mergeOp.MergePath(""), output); var statuses = GetStatus(output.ToString()); WorkingDirStatus status; var toProcess = files.Where(f => f.ResolutionStatus == MergeStatus.TakeLocal || f.ResolutionStatus == MergeStatus.TakeRemote) .ToArray(); FileCompare file; for (var i = 0; i < toProcess.Length; i++) { file = toProcess[i]; var path = mergeOp.MergePath(file.Path); if (file.ResolutionStatus == MergeStatus.TakeLocal) { if (file.InLocal == FileStatus.DoesntExist) { if (File.Exists(path)) { File.Delete(path); } } else { if (statuses.ContainsKey(file.Path)) { Directory.CreateDirectory(Path.GetDirectoryName(path)); using (var write = new FileStream(path, FileMode.Create, FileAccess.Write)) { mergeOp.GetLocal(file.Path).CopyTo(write); } } } } else { if (File.Exists(path)) { File.Delete(path); } if (file.InRemote != FileStatus.DoesntExist) { Directory.CreateDirectory(Path.GetDirectoryName(path)); using (var write = new FileStream(path, FileMode.Create, FileAccess.Write)) { mergeOp.GetRemote(file.Path).CopyTo(write); } } } OnProgressChanged("Processing files...", ((i + 1) * 100) / toProcess.Length); } OnActionComplete(); } catch (Exception ex) { OnActionComplete(ex); } }