From 2866be53aa712fb270621ae2f7d496f33ff973ff Mon Sep 17 00:00:00 2001 From: Peter Cottle Date: Sun, 17 Nov 2013 14:28:39 -0800 Subject: [PATCH] Resolves #146 not taking into account tags when comparing --- src/js/graph/treeCompare.js | 21 +++++++++++++++++++-- src/js/util/debug.js | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/js/graph/treeCompare.js b/src/js/graph/treeCompare.js index 503630b1..fa2c7e19 100644 --- a/src/js/graph/treeCompare.js +++ b/src/js/graph/treeCompare.js @@ -79,7 +79,10 @@ TreeCompare.compareAllBranchesWithinTreesAndHEAD = function(treeA, treeB) { treeA = this.convertTreeSafe(treeA); treeB = this.convertTreeSafe(treeB); - return treeA.HEAD.target == treeB.HEAD.target && this.compareAllBranchesWithinTrees(treeA, treeB); + // also compare tags!! for just one level + return treeA.HEAD.target == treeB.HEAD.target && + this.compareAllBranchesWithinTrees(treeA, treeB) && + this.compareAllTagsWithinTrees(treeA, treeB); }; TreeCompare.compareAllBranchesWithinTrees = function(treeA, treeB) { @@ -99,6 +102,14 @@ TreeCompare.compareAllBranchesWithinTrees = function(treeA, treeB) { return result; }; +TreeCompare.compareAllTagsWithinTrees = function(treeA, treeB) { + treeA = this.convertTreeSafe(treeA); + treeB = this.convertTreeSafe(treeB); + this.reduceTreeFields([treeA, treeB]); + + return _.isEqual(treeA.tags, treeB.tags); +}; + TreeCompare.compareBranchesWithinTrees = function(treeA, treeB, branches) { var result = true; _.each(branches, function(branchName) { @@ -321,12 +332,17 @@ TreeCompare.reduceTreeFields = function(trees) { 'id', 'rootCommit' ]; - var commitSortFields = ['children', 'parents']; var branchSaveFields = [ 'target', 'id', 'remoteTrackingBranchID' ]; + var tagSaveFields = [ + 'target', + 'id' + ]; + + var commitSortFields = ['children', 'parents']; // for backwards compatibility, fill in some fields if missing var defaults = { remoteTrackingBranchID: null @@ -372,6 +388,7 @@ TreeCompare.reduceTreeFields = function(trees) { _.each(trees, function(tree) { saveOnly(tree, 'commits', commitSaveFields, commitSortFields); saveOnly(tree, 'branches', branchSaveFields); + saveOnly(tree, 'tags', tagSaveFields); tree.HEAD = { target: tree.HEAD.target, diff --git a/src/js/util/debug.js b/src/js/util/debug.js index efdd2e79..7769e08d 100644 --- a/src/js/util/debug.js +++ b/src/js/util/debug.js @@ -19,6 +19,7 @@ var toGlobalize = { MultiView: require('../views/multiView'), ZoomLevel: require('../util/zoomLevel'), VisBranch: require('../visuals/visBranch'), + TreeCompare: require('../graph/treeCompare'), Level: require('../level'), Sandbox: require('../sandbox/'), GitDemonstrationView: require('../views/gitDemonstrationView'),