diff --git a/__tests__/git.spec.js b/__tests__/git.spec.js index 5669168c..e098ce07 100644 --- a/__tests__/git.spec.js +++ b/__tests__/git.spec.js @@ -317,6 +317,18 @@ describe('Git', function() { expect(commandMsg).toBe('C6\n'); }); }); + + it('range between branches', function() { + runCommand(SETUP + 'git rev-list left..right', function(commandMsg) { + expect(commandMsg).toBe('C5\nC4\n'); + }); + }); + + it('range between commits', function() { + runCommand(SETUP + 'git rev-list C3..C5', function(commandMsg) { + expect(commandMsg).toBe('C5\nC4\n'); + }); + }); }); }); diff --git a/src/js/git/index.js b/src/js/git/index.js index a780426f..036f9db4 100644 --- a/src/js/git/index.js +++ b/src/js/git/index.js @@ -3079,6 +3079,18 @@ function RevisionRange(engine, specifiers) { this.processSpecifiers(specifiers); } +var rangeRegex = /^(.*)\.\.(.*)$/; + +RevisionRange.prototype.processAsRange = function(specifier) { + var match = specifier.match(rangeRegex); + if(!match) { + return false; + } + this.tipsToExclude.push(match[1]); + this.tipsToInclude.push(match[2]); + return true; +}; + RevisionRange.prototype.processAsExclusion = function(specifier) { if(!specifier.startsWith('^')) { return false; @@ -3095,6 +3107,7 @@ RevisionRange.prototype.processAsInclusion = function(specifier) { RevisionRange.prototype.processSpecifiers = function(specifiers) { var self = this; var processors = [ + this.processAsRange, this.processAsExclusion ];