Add git switch -C

This commit is contained in:
kazzna 2023-09-19 13:45:26 +09:00
parent 2edc86e9a0
commit 86bf7c7a71
2 changed files with 33 additions and 2 deletions

View file

@ -89,6 +89,22 @@ 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"}}' '{"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 -C option', function() {
return expectTreeAsync(
'git switch -C 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 -C option and given base branch', function() {
return expectTreeAsync(
'git switch -C 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() { it('Rebases', function() {

View file

@ -924,6 +924,7 @@ var commandConfig = {
options: [ options: [
'-c', '-c',
'--create', '--create',
'-C',
'-' '-'
], ],
execute: function(engine, command) { execute: function(engine, command) {
@ -935,16 +936,30 @@ var commandConfig = {
if (createOption) { if (createOption) {
// the user is really trying to just make a // the user is really trying to just make a
// branch and then switch to it. so first: // branch and then switch to it. so first:
var args = createOption.concat(generalArgs) let args = createOption.concat(generalArgs)
command.twoArgsImpliedHead(args, '-c'); command.twoArgsImpliedHead(args, '-c');
var validId = engine.validateBranchName(args[0]); let validId = engine.validateBranchName(args[0]);
engine.branch(validId, args[1]); engine.branch(validId, args[1]);
engine.checkout(validId); engine.checkout(validId);
return; return;
} }
} }
{
let fc = '-C';
let fcOption = commandOptions[fc];
if (fcOption) {
let args = fcOption.concat(generalArgs);
command.twoArgsImpliedHead(args, fc);
let validId = engine.validateBranchName(args[0]);
engine.forceBranch(validId, args[1]);
engine.checkout(validId);
return;
}
}
if (commandOptions['-']) { if (commandOptions['-']) {
// get the heads last location // get the heads last location
var lastPlace = engine.HEAD.get('lastLastTarget'); var lastPlace = engine.HEAD.get('lastLastTarget');