Add git switch --create

This commit is contained in:
kazzna 2023-09-19 13:45:02 +09:00
parent 8a3dd90e35
commit 2edc86e9a0
2 changed files with 20 additions and 10 deletions

View file

@ -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() {

View file

@ -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['-']) {