void PreviewTarget(IDXVcsRepository repository, string file, string vcsFile, int leftVersion = 0, int rightVersion = 0, bool compareWithCurrent = true) { string leftFile = Path.GetTempFileName(); string rightFile = Path.GetTempFileName(); try { if (leftVersion > 0) { repository.Get(vcsFile, leftFile, leftVersion); } else { repository.GetLatestVersion(vcsFile, leftFile); } if (compareWithCurrent) { CopyFileContent(file, rightFile); } else if (rightVersion > 0) { repository.Get(vcsFile, rightFile, rightVersion); } else { repository.GetLatestVersion(vcsFile, rightFile); } LaunchDiffTool(leftFile, rightFile); } finally { File.Delete(leftFile); File.Delete(rightFile); } }
void PreviewTarget(IDXVcsRepository repository, string vcsFile, string file) { string tmpVcsFile = Path.GetTempFileName(); try { repository.GetLatestVersion(vcsFile, tmpVcsFile); LaunchDiffTool(tmpVcsFile, file); } finally { File.Delete(tmpVcsFile); } }
public MergeState MergeChanges(DXVcsBranch currentBranch, string filePath, string mergePath, bool showPreview) { try { IDXVcsRepository repository = DXVcsRepositoryFactory.Create(Port.VcsServer); string tmpOriginalFile = Path.GetTempFileName(); string vcsOriginalPath = Port.GetRelativePath(filePath); string vcsTargetFile = mergePath == null?GetMergeVcsPathByOriginalPath(filePath, currentBranch) : Port.GetRelativePath(mergePath, currentBranch); try { repository.GetLatestVersion(vcsOriginalPath, tmpOriginalFile); string tmpTargetFile = string.Empty; try { tmpTargetFile = repository.GetFileWorkingPath(vcsTargetFile); } catch (Exception e) { Logger.AddError("MergeCommand. Target file error.", e); return(MergeState.TargetFileError); } if (string.IsNullOrEmpty(tmpTargetFile)) { Logger.AddError("MergeCommand. Target file path is empty."); return(MergeState.TargetFileError); } try { repository.CheckOutFile(vcsTargetFile, tmpTargetFile, string.Empty); } catch (Exception e) { Logger.AddError("MergeCommand. Check out file error.", e); return(MergeState.CheckOutFileError); } var diff = new FileDiff(); if (!diff.Merge(tmpOriginalFile, filePath, tmpTargetFile)) { return(MergeState.Conflict); } if (showPreview) { PreviewTarget(repository, vcsTargetFile, tmpTargetFile); } } finally { File.Delete(tmpOriginalFile); } } catch { return(MergeState.UnknownError); } return(MergeState.Success); }
public bool UndoCheckout(string filePath) { string vcsFilePath = Port.GetRelativePath(filePath); try { IDXVcsRepository repository = DXVcsRepositoryFactory.Create(Port.VcsServer); repository.UndoCheckout(vcsFilePath, filePath); repository.GetLatestVersion(vcsFilePath, filePath); FileInfo info = new FileInfo(filePath); info.IsReadOnly = true; } catch { return(true); } return(false); }
void PreviewTarget(IDXVcsRepository repository, string file, string vcsFile, string targetFile, bool isNew) { string tmpFile = Path.GetTempFileName(); try { if (!isNew) { repository.GetLatestVersion(vcsFile, tmpFile); } else { CopyFileContent(file, tmpFile); } LaunchDiffTool(tmpFile, targetFile); } finally { File.Delete(tmpFile); } }