Handle multiple merges in gitgraph.js (#11996)

* Handle multiple merges in gitgraph.js

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 <art27@cantab.net>

* Update web_src/js/vendor/gitgraph.js
pull/11145/head^2
zeripath 4 years ago committed by GitHub
parent d31a9c544f
commit a07cc0df76
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      templates/repo/graph.tmpl
  2. 15
      web_src/js/vendor/gitgraph.js

@ -25,9 +25,7 @@
</code>
<strong> {{.Branch}}</strong>
<span>{{RenderCommitMessage .Subject $.RepoLink $.Repository.ComposeMetas}}</span> by
<span class="author">
{{.Author}}
</span>
<span class="author">{{.Author}}</span>
<span class="time">{{.Date}}</span>
{{ end }}
</li>

@ -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();

Loading…
Cancel
Save