Skip to content

Sort the network graph both by commit date and topographically

What does this MR do?

  • Previously (!10936 (merged)), we sorted commits for the network graph by date, which seemed to work okay.

  • The one edge case where this failed was when multiple commits have the same commit date (for example: when a range of commits are cherry picked with a single command, they all have the same commit date [and different author dates]).

  • Commits with the same commit date would be sorted arbitrarily, and usually break the network graph.

  • This commit solves the problem by both sorting by date, and by sorting topographically (parents aren't displayed until all their children are displayed)

A more detailed explanation is present here: https://gitlab.com/gitlab-org/gitlab-ce/issues/30973#note_28706230

Are there points in the code the reviewer needs to double check?

  • The spec added in graph_spec runs in quadratic time, but I thought this was okay because it deals with a small number of items. Please feel free to disagree. :)
  • Are there any cases where the network graph might break even with this dual sorting strategy?

Screenshots (if relevant)

Before

Selection_012

After

Selection_013

What are the relevant issue numbers?

Closes #30973 (closed)

Tasks

  • Investigation
    • Reproduce the issue
    • Does it happen on 9.0.0 as well
    • What about earlier versions?
  • Implementation
  • Tests
    • Added
    • Passing
  • Meta
    • CHANGELOG entry created
    • API support added
    • Branch has no merge conflicts with master
    • Squashed related commits together
    • Added screenshots
    • Check for clean merge with EE
    • Documentation added/updated
  • Review
    • Reviewer
    • Maintainer
  • Wait for merge

Merge request reports