From 82b843a5ab15b3563a7f31d5ef57ea12ec035685 Mon Sep 17 00:00:00 2001 From: zeripath Date: Sun, 21 Jun 2020 16:08:25 +0100 Subject: [PATCH] Handle multiple merges in gitgraph.js (#11996) (#12000) Backport #11996 There is a bug in web_src/js/vendor/gitgraph.js whereby it fails to handle multiple merges in a single commit correctly. This PR adds changes to make this work. Fix #11981 Signed-off-by: Andrew Thornton --- templates/repo/graph.tmpl | 64 +++++++++++++++++------------------ web_src/js/vendor/gitgraph.js | 15 ++++---- 2 files changed, 39 insertions(+), 40 deletions(-) diff --git a/templates/repo/graph.tmpl b/templates/repo/graph.tmpl index 5f4d9f1d6..493ac7a69 100644 --- a/templates/repo/graph.tmpl +++ b/templates/repo/graph.tmpl @@ -2,39 +2,37 @@
{{template "repo/header" .}}
-
-

{{.i18n.Tr "repo.commit_graph"}}

-
- -
    - {{ range .Graph }} -
  • {{ .GraphAcii -}}
  • - {{ end }} -
-
-
-
-
    - {{ range .Graph }} -
  • - {{ if .OnlyRelation }} - - {{ else }} - - {{ .ShortRev}} - - {{.Branch}} - {{RenderCommitMessage .Subject $.RepoLink $.Repository.ComposeMetas}} by - - {{.Author}} - - {{.Date}} - {{ end }} -
  • - {{ end }} -
-
-
+
+

{{.i18n.Tr "repo.commit_graph"}}

+
+ +
    + {{ range .Graph }} +
  • {{ .GraphAcii -}}
  • + {{ end }} +
+
+
+
+
    + {{ range .Graph }} +
  • + {{ if .OnlyRelation }} + + {{ else }} + + {{ .ShortRev}} + + {{.Branch}} + {{RenderCommitMessage .Subject $.RepoLink $.Repository.ComposeMetas}} by + {{.Author}} + {{.Date}} + {{ end }} +
  • + {{ end }} +
+
+
{{template "base/paginate" .}} diff --git a/web_src/js/vendor/gitgraph.js b/web_src/js/vendor/gitgraph.js index 12d7a2edd..0a780c1eb 100644 --- a/web_src/js/vendor/gitgraph.js +++ b/web_src/js/vendor/gitgraph.js @@ -65,7 +65,7 @@ export default function gitGraph(canvas, rawGraphList, config) { for (i = 0; i < l; i++) { midStr = rawGraphList[i].replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); - + midStr = midStr.replace(/(--)|(-\.)/g,'-') maxWidth = Math.max(midStr.replace(/(_|\s)/g, '').length, maxWidth); row = midStr.split(''); @@ -343,11 +343,6 @@ export default function gitGraph(canvas, rawGraphList, config) { return (val !== ' ' && val !== '_'); }).length; - // do some clean up - if (flows.length > condenseCurrentLength) { - flows.splice(condenseCurrentLength, flows.length - condenseCurrentLength); - } - colomnIndex = 0; // a little inline analysis and draw process @@ -362,7 +357,7 @@ export default function gitGraph(canvas, rawGraphList, config) { continue; } - // inline interset + // inline intersect if ((colomn === '_' || colomn === '/') && currentRow[colomnIndex - 1] === '|' && currentRow[colomnIndex - 2] === '_') { @@ -380,6 +375,7 @@ export default function gitGraph(canvas, rawGraphList, config) { color = flows[colomnIndex].color; switch (colomn) { + case '-': case '_': drawLineRight(x, y, color); @@ -416,6 +412,11 @@ export default function gitGraph(canvas, rawGraphList, config) { y -= config.unitSize; } + + // do some clean up + if (flows.length > condenseCurrentLength) { + flows.splice(condenseCurrentLength, flows.length - condenseCurrentLength); + } }; init();