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 <art27@cantab.net>tags/v1.12.1
<div class="repository commits"> | <div class="repository commits"> | ||||
{{template "repo/header" .}} | {{template "repo/header" .}} | ||||
<div class="ui container"> | <div class="ui container"> | ||||
<div id="git-graph-container" class="ui segment"> | |||||
<h1>{{.i18n.Tr "repo.commit_graph"}}</h1> | |||||
<div id="rel-container"> | |||||
<canvas id="graph-canvas"> | |||||
<ul id="graph-raw-list"> | |||||
{{ range .Graph }} | |||||
<li><span class="node-relation">{{ .GraphAcii -}}</span></li> | |||||
{{ end }} | |||||
</ul> | |||||
</canvas> | |||||
</div> | |||||
<div id="rev-container"> | |||||
<ul id="rev-list"> | |||||
{{ range .Graph }} | |||||
<li> | |||||
{{ if .OnlyRelation }} | |||||
<span /> | |||||
{{ else }} | |||||
<code id="{{.ShortRev}}"> | |||||
<a href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{.Rev}}">{{ .ShortRev}}</a> | |||||
</code> | |||||
<strong> {{.Branch}}</strong> | |||||
<span>{{RenderCommitMessage .Subject $.RepoLink $.Repository.ComposeMetas}}</span> by | |||||
<span class="author"> | |||||
{{.Author}} | |||||
</span> | |||||
<span class="time">{{.Date}}</span> | |||||
{{ end }} | |||||
</li> | |||||
{{ end }} | |||||
</ul> | |||||
</div> | |||||
</div> | |||||
<div id="git-graph-container" class="ui segment"> | |||||
<h1>{{.i18n.Tr "repo.commit_graph"}}</h1> | |||||
<div id="rel-container"> | |||||
<canvas id="graph-canvas"> | |||||
<ul id="graph-raw-list"> | |||||
{{ range .Graph }} | |||||
<li><span class="node-relation">{{ .GraphAcii -}}</span></li> | |||||
{{ end }} | |||||
</ul> | |||||
</canvas> | |||||
</div> | |||||
<div id="rev-container"> | |||||
<ul id="rev-list"> | |||||
{{ range .Graph }} | |||||
<li> | |||||
{{ if .OnlyRelation }} | |||||
<span /> | |||||
{{ else }} | |||||
<code id="{{.ShortRev}}"> | |||||
<a href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{.Rev}}">{{ .ShortRev}}</a> | |||||
</code> | |||||
<strong> {{.Branch}}</strong> | |||||
<span>{{RenderCommitMessage .Subject $.RepoLink $.Repository.ComposeMetas}}</span> by | |||||
<span class="author">{{.Author}}</span> | |||||
<span class="time">{{.Date}}</span> | |||||
{{ end }} | |||||
</li> | |||||
{{ end }} | |||||
</ul> | |||||
</div> | |||||
</div> | |||||
</div> | </div> | ||||
</div> | </div> | ||||
{{template "base/paginate" .}} | {{template "base/paginate" .}} |
for (i = 0; i < l; i++) { | for (i = 0; i < l; i++) { | ||||
midStr = rawGraphList[i].replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); | midStr = rawGraphList[i].replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); | ||||
midStr = midStr.replace(/(--)|(-\.)/g,'-') | |||||
maxWidth = Math.max(midStr.replace(/(_|\s)/g, '').length, maxWidth); | maxWidth = Math.max(midStr.replace(/(_|\s)/g, '').length, maxWidth); | ||||
row = midStr.split(''); | row = midStr.split(''); | ||||
return (val !== ' ' && val !== '_'); | return (val !== ' ' && val !== '_'); | ||||
}).length; | }).length; | ||||
// do some clean up | |||||
if (flows.length > condenseCurrentLength) { | |||||
flows.splice(condenseCurrentLength, flows.length - condenseCurrentLength); | |||||
} | |||||
colomnIndex = 0; | colomnIndex = 0; | ||||
// a little inline analysis and draw process | // a little inline analysis and draw process | ||||
continue; | continue; | ||||
} | } | ||||
// inline interset | |||||
// inline intersect | |||||
if ((colomn === '_' || colomn === '/') | if ((colomn === '_' || colomn === '/') | ||||
&& currentRow[colomnIndex - 1] === '|' | && currentRow[colomnIndex - 1] === '|' | ||||
&& currentRow[colomnIndex - 2] === '_') { | && currentRow[colomnIndex - 2] === '_') { | ||||
color = flows[colomnIndex].color; | color = flows[colomnIndex].color; | ||||
switch (colomn) { | switch (colomn) { | ||||
case '-': | |||||
case '_': | case '_': | ||||
drawLineRight(x, y, color); | drawLineRight(x, y, color); | ||||
y -= config.unitSize; | y -= config.unitSize; | ||||
} | } | ||||
// do some clean up | |||||
if (flows.length > condenseCurrentLength) { | |||||
flows.splice(condenseCurrentLength, flows.length - condenseCurrentLength); | |||||
} | |||||
}; | }; | ||||
init(); | init(); |