diff --git a/__tests__/git.spec.js b/__tests__/git.spec.js index cca87973..f1756b6e 100644 --- a/__tests__/git.spec.js +++ b/__tests__/git.spec.js @@ -82,6 +82,13 @@ describe('Git', function() { '{"branches":{"main":{"target":"C1","id":"main"},"side":{"target":"C1","id":"side"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"}},"HEAD":{"target":"side","id":"HEAD"}}' ); }); + + it('to a branch with --create option', function() { + return expectTreeAsync( + 'git switch --create side', + '{"branches":{"main":{"target":"C1","id":"main"},"side":{"target":"C1","id":"side"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"}},"HEAD":{"target":"side","id":"HEAD"}}' + ); + }); }); it('Rebases', function() { diff --git a/src/js/git/commands.js b/src/js/git/commands.js index 7508f3e2..62976dd1 100644 --- a/src/js/git/commands.js +++ b/src/js/git/commands.js @@ -923,23 +923,26 @@ var commandConfig = { regex: /^git +switch($|\s)/, options: [ '-c', + '--create', '-' ], execute: function(engine, command) { var generalArgs = command.getGeneralArgs(); var commandOptions = command.getOptionsMap(); - var args = null; - if (commandOptions['-c']) { - // the user is really trying to just make a - // branch and then switch to it. so first: - args = commandOptions['-c'].concat(generalArgs); - command.twoArgsImpliedHead(args, '-c'); + { + let createOption = commandOptions['-c'] ? commandOptions['-c'] : commandOptions['--create']; + if (createOption) { + // the user is really trying to just make a + // branch and then switch to it. so first: + var args = createOption.concat(generalArgs) + command.twoArgsImpliedHead(args, '-c'); - var validId = engine.validateBranchName(args[0]); - engine.branch(validId, args[1]); - engine.checkout(validId); - return; + var validId = engine.validateBranchName(args[0]); + engine.branch(validId, args[1]); + engine.checkout(validId); + return; + } } if (commandOptions['-']) {