aboutsummaryrefslogtreecommitdiff
path: root/commitquery/node_compare.go
diff options
context:
space:
mode:
Diffstat (limited to 'commitquery/node_compare.go')
-rw-r--r--commitquery/node_compare.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/commitquery/node_compare.go b/commitquery/node_compare.go
new file mode 100644
index 00000000..7ae984dc
--- /dev/null
+++ b/commitquery/node_compare.go
@@ -0,0 +1,25 @@
+package commitquery
+
+import objectid "codeberg.org/lindenii/furgit/object/id"
+
+// Compare compares two internal nodes using merge-base queue ordering.
+func (query *query) compare(left, right nodeIndex) int {
+ leftGeneration := query.effectiveGeneration(left)
+ rightGeneration := query.effectiveGeneration(right)
+
+ switch {
+ case leftGeneration < rightGeneration:
+ return -1
+ case leftGeneration > rightGeneration:
+ return 1
+ }
+
+ switch {
+ case query.nodes[left].commitTime < query.nodes[right].commitTime:
+ return -1
+ case query.nodes[left].commitTime > query.nodes[right].commitTime:
+ return 1
+ }
+
+ return objectid.Compare(query.nodes[left].id, query.nodes[right].id)
+}