private SvnLogArgs CreateSvnLogArgument(string path, RevisionRange revisionRange) { return(new SvnLogArgs(CreateSvnRevisionRangeBy(revisionRange)) { BaseUri = GetPath(path), ThrowOnError = true }); }
public void SetSelection(IEnumerable <WorkItem> items, RevisionRange range) { this._items = items; _range = range; UpdateMenus(range); }
private static RevisionRange[] GetFromTo(SvnRevisionId @from, SvnRevisionId lastRevision, int pageSize) { var result = new List <RevisionRange>(); while (from.Value <= lastRevision.Value) { var fromRevisionId = from; RevisionRange revisionRange; var fromRevision = fromRevisionId; if ((fromRevisionId.Value + pageSize) < lastRevision.Value) { revisionRange = new RevisionRange(fromRevision, new RevisionId { Value = (fromRevisionId.Value + pageSize - 1).ToString() }); } else { revisionRange = new RevisionRange(fromRevision, lastRevision); } result.Add(revisionRange); from = new SvnRevisionId(fromRevisionId.Value + pageSize); } return(result.ToArray()); }
private static SvnRevisionRange CreateSvnRevisionRangeBy(RevisionRange revisionRange) { SvnRevisionId fromChangeset = revisionRange.FromChangeset; SvnRevisionId toChangeSet = revisionRange.ToChangeset; return(new SvnRevisionRange(fromChangeset.Value, toChangeSet.Value)); }
public override string GetDiff(RevisionRange range) { //these are taken from RBTools source code (https://github.com/reviewboard/rbtools/blob/master/rbtools/clients/git.py) const string diffParams = "--no-color --full-index --ignore-submodules --no-ext-diff"; range = (RevisionRange)range.Clone(); //get previous log entry try { string log = Exec("log -n 1 \"{0}^1\"", range.From); IEnumerable <WorkItem> entries = ParseLog(log); WorkItem previous; if (entries == null || (previous = entries.FirstOrDefault()) == null) { throw new ApplicationException("could not get previous entry"); } range.From = previous.ItemId; } catch (ArgumentException) { //that only means that the first entry doesn't have a parent, so let's diff from the master string diff = Exec("diff {0} \"{1}\" master", diffParams, range.To); return(diff); } //execute the real diff string diffText = Exec("diff {0} \"{1}\" \"{2}\"", diffParams, range.From, range.To); return(diffText); //git diff range.to master }
bool ICompareRevisionSecondArg.Belong(RevisionRange revisionRange) { SvnRevisionId fromChangeset = revisionRange.FromChangeset; SvnRevisionId toChangeset = revisionRange.ToChangeset; return(fromChangeset.Value <= _firstArg.Value && _firstArg.Value <= toChangeset.Value); }
private RevisionId GetToRevision(RevisionRange processedRevisionRange, RevisionId newToRevision) { if (RevisionComparer.Is(newToRevision).GreaterThan(processedRevisionRange.ToChangeset)) { return(newToRevision); } return(processedRevisionRange.ToChangeset); }
public RevisionInfo[] GetRevisions(RevisionRange revisionsRange, string path) { _logger.DebugFormat("GET SVN Revisions for {0} [{1}, {2}]", path, revisionsRange.FromChangeset, revisionsRange.ToChangeset); var arg = CreateSvnLogArgument(path, new RevisionRange(revisionsRange.FromChangeset, revisionsRange.ToChangeset)); var tpRevisionInfo = SubversionUtils.ArrayOfSvnRevisionToArrayOfRevisionInfo(GetSvnRevisions(arg, path), this); _logger.DebugFormat("SVN Revisions for {0} [{1}, {2}] is retrieved", path, revisionsRange.FromChangeset, revisionsRange.ToChangeset); return(tpRevisionInfo.ToArray()); }
private RevisionId GetFromRevision(RevisionRange processedRevisionRange, RevisionId newFromRevision) { if (RevisionComparer.Is(StartRevision).LessThan(newFromRevision)) { newFromRevision = StartRevision; } if (RevisionComparer.Is(newFromRevision).LessThan(processedRevisionRange.FromChangeset)) { return(newFromRevision); } return(processedRevisionRange.FromChangeset); }
private void WorkItems_SelectionChanged(object sender, SelectionChangedEventArgs e) { PostReview.IsEnabled = WorkItems.SelectedItems != null && WorkItems.SelectedItems.Count > 0; bool skipped; List <WorkItem> continuous = SelectCoutinuousSelectedItems(out skipped).ToList(); Warning.Visibility = skipped ? Visibility.Visible : Visibility.Collapsed; RevisionRange range = GenericRepository.GetRange(continuous); if (SelectectionChanged != null) { SelectectionChanged(continuous, range); } }
private void UpdateMenus(RevisionRange range) { bool selected = range != null; TopHint.Content = !selected ? null : string.Format(Strings.MyTickets_TopHint, range.From, range.To); MenuUpdateTicketMenu.IsEnabled = selected; if (!selected) { MenuUpdateTicketMenu.Header = Strings.MenuUpdate_NoTickets; } else { string header = string.Format(Strings.MyTickets_UpdateTicketMenu, _range.From, _range.To); MenuUpdateTicketMenu.Header = header; } }
protected void SetStartRevisionBy(RevisionRange[] revisionRanges) { if (revisionRanges.Empty()) { return; } var newFromRevision = RevisionComparer.FindMinFromRevision(revisionRanges); var newToRevision = RevisionComparer.FindMaxToRevision(revisionRanges); var processedRevisionRangeStorage = Storage.Get <RevisionRange>(); var processedRevisionRange = processedRevisionRangeStorage.SingleOrDefault() ?? new RevisionRange(newFromRevision, newToRevision); var newProcessedRevisionRange = new RevisionRange(GetFromRevision(processedRevisionRange, newFromRevision), GetToRevision(processedRevisionRange, newToRevision)); processedRevisionRangeStorage.Clear(); processedRevisionRangeStorage.Add(newProcessedRevisionRange); }
private void PostReview_Click(object sender, RoutedEventArgs e) { bool skipped; List <WorkItem> continuous = SelectCoutinuousSelectedItems(out skipped).ToList(); RevisionRange range = GenericRepository.GetRange(continuous); var review = new Review(); _presenter.ExtractBasicMetadata(continuous, review); var detailWindow = new ReviewDetails(_presenter.GetDetailsTitle(), review, () => IbApplication.CodeRepository.GetDiff(range)); detailWindow.ShowDialog(); if (review.Id != 0) { _presenter.OpenInBrowser(review); } }
public override RevisionInfo[] GetRevisions(RevisionRange revisionRange) { try { SvnRevisionId fromChangeset = revisionRange.FromChangeset; SvnRevisionId toChangeset = revisionRange.ToChangeset; _logger.DebugFormat("Getting revision infos [{0}:{1}]", fromChangeset, toChangeset); var arg = new SvnLogArgs(new SvnRevisionRange(fromChangeset.Value, toChangeset.Value)) { ThrowOnError = true }; return(SubversionUtils.ArrayOfSvnRevisionToArrayOfRevisionInfo(GetSvnRevisions(arg), this).ToArray()); } catch (SvnException e) { throw new VersionControlException(String.Format("Subversion exception: {0}", e.Message), e); } }
public override string GetDiff(RevisionRange range) { long fromRev = long.Parse(range.From) - 1; // -1 is enough to include From branch long toRev = long.Parse(range.To); string diffText; using (var ms = new MemoryStream()) { _svn.Diff( _root, new SvnRevisionRange(fromRev, toRev), ms); ms.Position = 0; diffText = Encoding.UTF8.GetString(ms.ToArray()); } return(diffText); }
protected void OnSearch(object sender, EventArgs e) { StringBuilder redirect = new StringBuilder(); string queryText = NormalizeQuery(_inputQuery.Text); RevisionRange rr = GetRevisionRange(); redirect.Append("Query.aspx"); redirect.Append("?q="); redirect.Append(HttpUtility.UrlEncode(queryText)); if (rr.First != Revision.Head) { redirect.Append("&f="); redirect.Append(rr.First); } if (rr.Last != Revision.Head) { redirect.Append("&l="); redirect.Append(rr.Last); } Context.Response.Redirect(redirect.ToString()); }
protected override RevisionRange[] RetrieveRevisionRanges() { var result = new RevisionRange[0]; if (IsFirstRun) { result = VersionControlSystem.GetFromTillHead(StartRevision, PageSize); } else if (!IsStartRevisionChanged || IsStartRevisionWithinAlreadyProcessedRevisionRange) { var alreadyProcessedRevisionRange = Storage.Get <RevisionRange>().Single(); result = VersionControlSystem.GetAfterTillHead(alreadyProcessedRevisionRange.ToChangeset, PageSize); } else if (IsStartRevisionBehindAlreadyProcessedRevisionRange) { result = VersionControlSystem.GetAfterTillHead(StartRevision, PageSize); } else if (IsStartRevisionBeforeAlreadyProcessedRevisionRange) { var revisionRanges = new List <RevisionRange>(); var alreadyProcessedRevisionRange = Storage.Get <RevisionRange>().Single(); revisionRanges.AddRange(VersionControlSystem.GetFromAndBefore(StartRevision, alreadyProcessedRevisionRange.FromChangeset, PageSize)); revisionRanges.AddRange(VersionControlSystem.GetAfterTillHead(alreadyProcessedRevisionRange.ToChangeset, PageSize)); result = revisionRanges.ToArray(); } if (result.Any()) { Logger.Info("New revisions found"); } return(result); }
public void UpdateTicket(Review r, RevisionRange range) { Task.Factory.StartNew(() => { Exception ex = null; try { _view.UpdateBusyStatus(Strings.MyTickets_Update_GeneratingDiff); string diffText = IbApplication.CodeRepository.GetDiff(range); _view.UpdateBusyStatus(Strings.MyTickets_Update_Diff); IbApplication.RbClient.AttachDiff(r, IbApplication.CodeRepository.RelativeRoot, diffText); IbApplication.RbClient.MakePublic(r); string url = string.Format("{0}r/{1}", IbApplication.RbClient.ServerUri, r.Id); IbApplication.OpenBrowserWindow(url, false); } catch (Exception ex1) { ex = ex1; } _view.FinishTicketUpdate(ex); }); }
public RevisionInfo[] GetRevisions(RevisionRange revisionRange) { return(Revisions.FindAll(x => long.Parse(x.Id.Value) >= long.Parse(revisionRange.FromChangeset.Value) && long.Parse(x.Id.Value) <= long.Parse(revisionRange.ToChangeset.Value)).ToArray()); }
public virtual ICollection<Changeset> Log(Branch branch, RevisionRange revisionRange) { if (branch == null) { throw new ArgumentNullException("branch"); } if (revisionRange == null) { throw new ArgumentNullException("revisionRange"); } _log.DebugCurrent("Getting log of branch '{0}' with range '{1}'", branch, revisionRange); var logArguments = HgArguments .Log() .Verbose() .XmlStyle() .AddRevisionRange(revisionRange) .OnlyBranch(branch) .AddRepository(_repositoryPath); var logResult = ExecuteNonInteractive(logArguments, "read log") .StandardOutput .Trim(); return string.IsNullOrEmpty(logResult) ? Enumerable.Empty<Changeset>().ToList() : _xmlLogParser.GetChangesets(new StringReader(logResult)); }
private void DoVersionDiff_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(FilterCommits.Text)) { TextTip.Content = "需要填写单号,多个单号空格隔开"; return; } if (src.files.Count <= 0) { TextTip.Content = "拖目标文件夹进来,或目标文件夹下没有xls"; return; } Collection <SvnLogEventArgs> logitems; DateTime startDateTime = DateTime.Now.AddDays(-60); DateTime endDateTime = DateTime.Now; var svnRange = new SvnRevisionRange(new SvnRevision(startDateTime), new SvnRevision(endDateTime)); List <SvnRevisionCombo> revisions = new List <SvnRevisionCombo>(); var files = new Dictionary <string, RevisionRange>(); var filter = FilterCommits.Text.Split(" #".ToArray(), StringSplitOptions.RemoveEmptyEntries); var sfilter = string.Join("|", filter); var regfilter = new Regex(sfilter); using (SvnClient client = new SvnClient()) { client.Authentication.SslServerTrustHandlers += delegate(object _sender, SharpSvn.Security.SvnSslServerTrustEventArgs _e) { _e.AcceptedFailures = _e.Failures; _e.Save = true; // Save acceptance to authentication store }; if (client.GetUriFromWorkingCopy(src.root) != null) { SvnInfoEventArgs info; client.GetInfo(src.root, out info); var uri = info.Uri; var rootPath = info.Path; client.GetLog(uri, new SvnLogArgs(svnRange), out logitems); foreach (var logentry in logitems) { var author = logentry.Author; var message = logentry.LogMessage; var date = logentry.Time; var revision = logentry.Revision; if (regfilter.IsMatch(message)) { foreach (var filepath in logentry.ChangedPaths) { var path = filepath.Path; RevisionRange minmax = null; if (!files.TryGetValue(path, out minmax)) { minmax = new RevisionRange() { min = revision, max = revision, file = path }; files[path] = minmax; } if (revision > minmax.max) { minmax.max = revision; } if (revision < minmax.min) { minmax.min = revision; } } } } } } results.Clear(); resultRevisions.Clear(); foreach (var file in files.Keys) { var range = files[file]; var res = new DiffResult <string>(file + "-" + range.min, file + "-" + range.max, DiffStatus.Modified); results.Add(res); resultRevisions.Add(range); } DstDataGrid.refreshData(); SrcDataGrid.refreshData(); }
bool ICompareRevisionSecondArg.Behind(RevisionRange revisionRange) { return(int.Parse(_firstArg.Value) > int.Parse(revisionRange.ToChangeset.Value)); }
bool ICompareRevisionSecondArg.Belong(RevisionRange revisionRange) { return(int.Parse(_firstArg.Value) >= int.Parse(revisionRange.FromChangeset.Value) && int.Parse(_firstArg.Value) <= int.Parse(revisionRange.ToChangeset.Value)); }
public HgArguments AddRevisionRange(RevisionRange revisionRange) { if (revisionRange == null) { throw new ArgumentNullException("revisionRange"); } return revisionRange != RevisionRange.NotSpecified ? Add("--rev", revisionRange.ToString()) : this; }
bool ICompareRevisionSecondArg.Before(RevisionRange revisionRange) { return(int.Parse(_firstArg.Value) < int.Parse(revisionRange.FromChangeset.Value)); }
bool ICompareRevisionSecondArg.Before(RevisionRange revisionRange) { return(_firstArg.Time < ((MercurialRevisionId)revisionRange.FromChangeset).Time); }
public override RevisionInfo[] GetRevisions(RevisionRange revisionRange) { return(_tfsClient.GetRevisions(revisionRange.FromChangeset, revisionRange.ToChangeset)); }
bool ICompareRevisionSecondArg.Behind(RevisionRange revisionRange) { return(_firstArg.Time > ((MercurialRevisionId)revisionRange.ToChangeset).Time); }
bool ICompareRevisionSecondArg.Belong(RevisionRange revisionRange) { return(_firstArg.Time >= ((MercurialRevisionId)revisionRange.FromChangeset).Time && _firstArg.Time <= ((MercurialRevisionId)revisionRange.ToChangeset).Time); }
void WorkLogSelectectionChanged(IEnumerable <WorkItem> items, RevisionRange range) { MyTickets.SetSelection(items, range); }
public abstract string GetDiff(RevisionRange range);
public override RevisionInfo[] GetRevisions(RevisionRange revisionRange) { return(_mercurial.GetRevisions(revisionRange.FromChangeset, revisionRange.ToChangeset)); }