mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	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
This commit is contained in:
		@@ -2,39 +2,37 @@
 | 
				
			|||||||
<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">
 | 
							<div id="git-graph-container" class="ui segment">
 | 
				
			||||||
		  <h1>{{.i18n.Tr "repo.commit_graph"}}</h1>
 | 
								<h1>{{.i18n.Tr "repo.commit_graph"}}</h1>
 | 
				
			||||||
	    <div id="rel-container">
 | 
								<div id="rel-container">
 | 
				
			||||||
	      <canvas id="graph-canvas">
 | 
									<canvas id="graph-canvas">
 | 
				
			||||||
		<ul id="graph-raw-list">
 | 
										<ul id="graph-raw-list">
 | 
				
			||||||
    		  {{ range .Graph }}
 | 
											{{ range .Graph }}
 | 
				
			||||||
		  <li><span class="node-relation">{{ .GraphAcii -}}</span></li>
 | 
												<li><span class="node-relation">{{ .GraphAcii -}}</span></li>
 | 
				
			||||||
  		  {{ end }}
 | 
											{{ end }}
 | 
				
			||||||
		</ul>
 | 
										</ul>
 | 
				
			||||||
	      </canvas>
 | 
									</canvas>
 | 
				
			||||||
	    </div>
 | 
								</div>
 | 
				
			||||||
	    <div id="rev-container">
 | 
								<div id="rev-container">
 | 
				
			||||||
	      <ul id="rev-list">
 | 
									<ul id="rev-list">
 | 
				
			||||||
		{{ range .Graph }}
 | 
										{{ range .Graph }}
 | 
				
			||||||
		<li>
 | 
											<li>
 | 
				
			||||||
		  {{ if .OnlyRelation }}
 | 
												{{ if .OnlyRelation }}
 | 
				
			||||||
		  <span />
 | 
													<span />
 | 
				
			||||||
		  {{ else }}
 | 
												{{ else }}
 | 
				
			||||||
		  <code id="{{.ShortRev}}">
 | 
													<code id="{{.ShortRev}}">
 | 
				
			||||||
		    <a href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{.Rev}}">{{ .ShortRev}}</a>
 | 
														<a href="{{AppSubUrl}}/{{$.Username}}/{{$.Reponame}}/commit/{{.Rev}}">{{ .ShortRev}}</a>
 | 
				
			||||||
		  </code>
 | 
													</code>
 | 
				
			||||||
		  <strong> {{.Branch}}</strong>
 | 
													<strong> {{.Branch}}</strong>
 | 
				
			||||||
		  <span>{{RenderCommitMessage .Subject $.RepoLink $.Repository.ComposeMetas}}</span> by
 | 
													<span>{{RenderCommitMessage .Subject $.RepoLink $.Repository.ComposeMetas}}</span> by
 | 
				
			||||||
		  <span class="author">
 | 
													<span class="author">{{.Author}}</span>
 | 
				
			||||||
		    {{.Author}}
 | 
													<span class="time">{{.Date}}</span>
 | 
				
			||||||
		  </span>
 | 
												{{ end }}
 | 
				
			||||||
		  <span class="time">{{.Date}}</span>
 | 
											</li>
 | 
				
			||||||
		  {{ end }}
 | 
										{{ end }}
 | 
				
			||||||
		</li>
 | 
									</ul>
 | 
				
			||||||
		{{ end }}
 | 
								</div>
 | 
				
			||||||
	      </ul>
 | 
							</div>
 | 
				
			||||||
	    </div>
 | 
					 | 
				
			||||||
	  </div>
 | 
					 | 
				
			||||||
	</div>
 | 
						</div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
{{template "base/paginate" .}}
 | 
					{{template "base/paginate" .}}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										15
									
								
								web_src/js/vendor/gitgraph.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								web_src/js/vendor/gitgraph.js
									
									
									
									
										vendored
									
									
								
							@@ -65,7 +65,7 @@ export default function gitGraph(canvas, rawGraphList, config) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    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('');
 | 
				
			||||||
@@ -343,11 +343,6 @@ export default function gitGraph(canvas, rawGraphList, config) {
 | 
				
			|||||||
        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
 | 
				
			||||||
@@ -362,7 +357,7 @@ export default function gitGraph(canvas, rawGraphList, config) {
 | 
				
			|||||||
          continue;
 | 
					          continue;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // inline interset
 | 
					        // inline intersect
 | 
				
			||||||
        if ((colomn === '_' || colomn === '/')
 | 
					        if ((colomn === '_' || colomn === '/')
 | 
				
			||||||
          && currentRow[colomnIndex - 1] === '|'
 | 
					          && currentRow[colomnIndex - 1] === '|'
 | 
				
			||||||
          && currentRow[colomnIndex - 2] === '_') {
 | 
					          && currentRow[colomnIndex - 2] === '_') {
 | 
				
			||||||
@@ -380,6 +375,7 @@ export default function gitGraph(canvas, rawGraphList, config) {
 | 
				
			|||||||
        color = flows[colomnIndex].color;
 | 
					        color = flows[colomnIndex].color;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        switch (colomn) {
 | 
					        switch (colomn) {
 | 
				
			||||||
 | 
					          case '-':
 | 
				
			||||||
          case '_':
 | 
					          case '_':
 | 
				
			||||||
            drawLineRight(x, y, color);
 | 
					            drawLineRight(x, y, color);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -416,6 +412,11 @@ export default function gitGraph(canvas, rawGraphList, config) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      y -= config.unitSize;
 | 
					      y -= config.unitSize;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // do some clean up
 | 
				
			||||||
 | 
					    if (flows.length > condenseCurrentLength) {
 | 
				
			||||||
 | 
					      flows.splice(condenseCurrentLength, flows.length - condenseCurrentLength);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  init();
 | 
					  init();
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user