diff --git a/src/git.js b/src/git.js index bb2aaad2..0beace03 100644 --- a/src/git.js +++ b/src/git.js @@ -1070,6 +1070,8 @@ GitEngine.prototype.merge = function(targetSource, currentLocation) { var msg = 'Merge ' + this.resolveName(targetSource) + ' into ' + this.resolveName(currentLocation); + // since we specify parent 1 as the first parent, it is the "main" parent + // and the node will be displayed below that branch / commit / whatever var commit = this.makeCommit( [parent1, parent2], null, @@ -1493,6 +1495,11 @@ var Commit = Backbone.Model.extend({ gitVisuals.addEdge(this.get('id'), parent.get('id')); }, + isMainParent: function(parent) { + var index = this.get('parents').indexOf(parent); + return index === 0; + }, + initialize: function() { this.validateAtInit(); this.addNodeToVisuals(); diff --git a/src/visuals.js b/src/visuals.js index 89688299..63ce2703 100644 --- a/src/visuals.js +++ b/src/visuals.js @@ -279,8 +279,12 @@ GitVisuals.prototype.calcWidth = function() { GitVisuals.prototype.maxWidthRecursive = function(commit) { var childrenTotalWidth = 0; _.each(commit.get('children'), function(child) { - var childWidth = this.maxWidthRecursive(child); - childrenTotalWidth += childWidth; + // only include this if we are the "main" parent of + // this child + if (child.isMainParent(commit)) { + var childWidth = this.maxWidthRecursive(child); + childrenTotalWidth += childWidth; + } }, this); var maxWidth = Math.max(1, childrenTotalWidth); @@ -326,7 +330,7 @@ GitVisuals.prototype.calcDepth = function() { var maxDepth = this.calcDepthRecursive(this.rootCommit, 0); if (maxDepth > 15) { // issue warning - // TODO + console.warn('graphics are degrading from too many layers'); } var depthIncrement = this.getDepthIncrement(maxDepth); @@ -405,10 +409,10 @@ GitVisuals.prototype.calcDepthRecursive = function(commit, depth) { var children = commit.get('children'); var maxDepth = depth; - for (var i = 0; i < children.length; i++) { - var d = this.calcDepthRecursive(children[i], depth + 1); + _.each(children, function(child) { + var d = this.calcDepthRecursive(child, depth + 1); maxDepth = Math.max(d, maxDepth); - } + }, this); return maxDepth; // TODO for merge commits, a specific fancy schamncy "main" commit line