diff --git a/__tests__/git.spec.js b/__tests__/git.spec.js index 526b90ef..8b1040f9 100644 --- a/__tests__/git.spec.js +++ b/__tests__/git.spec.js @@ -105,6 +105,22 @@ describe('Git', function() { '{"branches":{"main":{"target":"C1","id":"main"},"side":{"target":"C0","id":"side"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"}},"HEAD":{"target":"C0","id":"HEAD"}}' ); }); + + it('to a branch with --force-create option', function() { + return expectTreeAsync( + 'git switch --force-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"}}', + '{"branches":{"main":{"target":"C1","id":"main"},"side":{"target":"C0","id":"side"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"}},"HEAD":{"target":"main","id":"HEAD"}}' + ); + }); + + it('to a branch with --force-create option and given base branch', function() { + return expectTreeAsync( + 'git switch --force-create side main', + '{"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"}}', + '{"branches":{"main":{"target":"C1","id":"main"},"side":{"target":"C0","id":"side"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"}},"HEAD":{"target":"C0","id":"HEAD"}}' + ); + }); }); it('Rebases', function() { diff --git a/src/js/git/commands.js b/src/js/git/commands.js index 29de9ee1..ea27a278 100644 --- a/src/js/git/commands.js +++ b/src/js/git/commands.js @@ -925,6 +925,7 @@ var commandConfig = { '-c', '--create', '-C', + '--force-create', '-' ], execute: function(engine, command) { @@ -947,11 +948,12 @@ var commandConfig = { } { - let fc = '-C'; - let fcOption = commandOptions[fc]; + let sfc = '-C'; + let lfc = '--force-create'; + let fcOption = commandOptions[sfc] ? commandOptions[sfc] : commandOptions[lfc]; if (fcOption) { let args = fcOption.concat(generalArgs); - command.twoArgsImpliedHead(args, fc); + command.twoArgsImpliedHead(args, sfc); let validId = engine.validateBranchName(args[0]); engine.forceBranch(validId, args[1]);