mirror of
https://github.com/pcottle/learnGitBranching.git
synced 2025-08-02 00:54:40 +02:00
gah was forgetting origin assert
This commit is contained in:
parent
1e5181689d
commit
55d563a9bc
5 changed files with 86 additions and 19 deletions
|
@ -72,6 +72,9 @@ var assertIsRemoteBranch = function(engine, ref) {
|
|||
};
|
||||
|
||||
var assertOriginSpecified = function(generalArgs) {
|
||||
if (!generalArgs.length) {
|
||||
return;
|
||||
}
|
||||
if (generalArgs[0] !== 'origin') {
|
||||
throw new GitError({
|
||||
msg: intl.todo(
|
||||
|
@ -208,7 +211,7 @@ var commandConfig = {
|
|||
|
||||
var commandOptions = command.getOptionsMap();
|
||||
var generalArgs = command.getGeneralArgs();
|
||||
command.twoArgsImpliedOrigin(generalArgs);
|
||||
command.twoArgsForOrigin(generalArgs);
|
||||
assertOriginSpecified(generalArgs);
|
||||
// here is the deal -- git pull is pretty complex with
|
||||
// the arguments it wants. You can
|
||||
|
@ -331,7 +334,7 @@ var commandConfig = {
|
|||
var source;
|
||||
var destination;
|
||||
var generalArgs = command.getGeneralArgs();
|
||||
command.twoArgsImpliedOrigin(generalArgs);
|
||||
command.twoArgsForOrigin(generalArgs);
|
||||
assertOriginSpecified(generalArgs);
|
||||
|
||||
var firstArg = generalArgs[1];
|
||||
|
@ -677,7 +680,7 @@ var commandConfig = {
|
|||
// git push is pretty complex in terms of
|
||||
// the arguments it wants as well... get ready!
|
||||
var generalArgs = command.getGeneralArgs();
|
||||
command.twoArgsImpliedOrigin(generalArgs);
|
||||
command.twoArgsForOrigin(generalArgs);
|
||||
assertOriginSpecified(generalArgs);
|
||||
|
||||
var firstArg = generalArgs[1];
|
||||
|
|
|
@ -140,11 +140,8 @@ var Command = Backbone.Model.extend({
|
|||
}
|
||||
},
|
||||
|
||||
twoArgsImpliedOrigin: function(args) {
|
||||
twoArgsForOrigin: function(args) {
|
||||
this.validateArgBounds(args, 0, 2);
|
||||
if (args.length < 2) {
|
||||
args.unshift('origin');
|
||||
}
|
||||
},
|
||||
|
||||
// this is a little utility class to help arg validation that happens over and over again
|
||||
|
|
|
@ -42,7 +42,8 @@ exports.levelSequences = {
|
|||
require('./remote/tracking').level,
|
||||
require('./remote/pushArgs').level,
|
||||
require('./remote/pushArgs2').level,
|
||||
require('./remote/fetchArgs').level
|
||||
require('./remote/fetchArgs').level,
|
||||
require('./remote/sourceNothing').level
|
||||
]
|
||||
};
|
||||
|
||||
|
|
66
src/levels/remote/sourceNothing.js
Normal file
66
src/levels/remote/sourceNothing.js
Normal file
|
@ -0,0 +1,66 @@
|
|||
exports.level = {
|
||||
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\",\"remoteTrackingBranchID\":\"o/master\"},\"o/master\":{\"target\":\"C1\",\"id\":\"o/master\",\"remoteTrackingBranchID\":null},\"bar\":{\"target\":\"C1\",\"id\":\"bar\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"},\"originTree\":{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}}",
|
||||
"solutionCommand": "git push origin :foo;git fetch origin :bar",
|
||||
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\",\"remoteTrackingBranchID\":\"o/master\"},\"o/master\":{\"target\":\"C1\",\"id\":\"o/master\",\"remoteTrackingBranchID\":null},\"o/foo\":{\"target\":\"C1\",\"id\":\"o/foo\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"},\"originTree\":{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\",\"remoteTrackingBranchID\":null},\"foo\":{\"target\":\"C1\",\"id\":\"foo\",\"remoteTrackingBranchID\":null}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}}",
|
||||
"name": {
|
||||
"en_US": "Source of nothing"
|
||||
},
|
||||
"hint": {
|
||||
"en_US": "The branch command is disabled for this level so you'll have to use fetch!"
|
||||
},
|
||||
"startDialog": {
|
||||
"en_US": {
|
||||
"childViews": [
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"### Oddities of `<source>`",
|
||||
"",
|
||||
"Git abuses the `<source>` parameter in two weird ways. These two abuses come from the fact that you can technically specify \"nothing\" as a valid `source` for both git push and git fetch. The way you specify nothing is via an empty argument:",
|
||||
"",
|
||||
"* `git push origin :side`",
|
||||
"* `git fetch origin :bugFix`",
|
||||
"",
|
||||
"Let's see what these do..."
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"What does pushing \"nothing\" to a remote branch do? It deletes it!"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"There, we successfully deleted the `foo` branch on remote by pushing the concept of \"nothing\" to it. That kinda makes sense..."
|
||||
],
|
||||
"command": "git push origin :foo",
|
||||
"beforeCommand": "git clone; git push origin master:foo"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "GitDemonstrationView",
|
||||
"options": {
|
||||
"beforeMarkdowns": [
|
||||
"Finally, fetching \"nothing\" to a place locally actually makes a new branch"
|
||||
],
|
||||
"afterMarkdowns": [
|
||||
"Very odd / bizarre, but whatever. That's git for you!"
|
||||
],
|
||||
"command": "git fetch origin :bar",
|
||||
"beforeCommand": "git clone"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "ModalAlert",
|
||||
"options": {
|
||||
"markdowns": [
|
||||
"This is a quick level -- just delete one remote branch and create a new branch with `git fetch` to finish!"
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue