zomg so many keys

This commit is contained in:
Peter Cottle 2013-02-23 23:07:03 -08:00
parent 9048f09d9f
commit 7e165c6fdc
18 changed files with 354 additions and 75 deletions

View file

@ -6542,7 +6542,7 @@ var str = exports.str = function(key, params) {
return template(
strings[key][locale],
params
);
).toUpperCase();
};
var getIntlKey = exports.getIntlKey = function(obj, key) {
@ -6594,10 +6594,52 @@ var getStartDialog = exports.getStartDialog = function(level) {
});
require.define("/src/js/intl/strings.js",function(require,module,exports,__dirname,__filename,process,global){exports.strings = {
///////////////////////////////////////////////////////////////////////////
'select-a-level': {
'__desc__': 'The prompt to select a level on the drop down view',
'en_US': 'Select a level'
},
///////////////////////////////////////////////////////////////////////////
'branch-name-short': {
'__desc__': 'When branch names get too long, we need to truncate them. This is the warning for that',
'en_US': 'Sorry, we need to keep branch names short for the visuals. Your branch name was truncated to 9 characters, resulting in "{branch}"'
},
///////////////////////////////////////////////////////////////////////////
'bad-branch-name': {
'__desc__': 'When the user enters a branch name thats not ok',
'en_US': 'That branch name "{branch}" is not allowed!'
},
///////////////////////////////////////////////////////////////////////////
'option-not-supported': {
'__desc__': 'When the user specifies an option that is not supported by our demo',
'en_US': 'The option "{option}" is not supported!'
},
///////////////////////////////////////////////////////////////////////////
'git-usage-command': {
'__desc__': 'The line that shows how to format a git command',
'en_US': 'git <command> [<args>]'
},
///////////////////////////////////////////////////////////////////////////
'git-supported-commands': {
'__desc__': 'In the git help command, the header above the supported commands',
'en_US': 'Supported commands:'
},
///////////////////////////////////////////////////////////////////////////
'git-usage': {
'__desc__': 'In the dummy git output, the header before showing all the commands',
'en_US': 'Usage:'
},
///////////////////////////////////////////////////////////////////////////
'git-version': {
'__desc__': 'The git version dummy output, kind of silly. PCOTTLE is my unix name but feel free to put yours instead',
'en_US': 'Git Version PCOTTLE.1.0'
},
///////////////////////////////////////////////////////////////////////////
'refresh-tree-command': {
'__desc__': 'when the tree is visually refreshed',
'en_US': 'Refreshing tree...'
},
///////////////////////////////////////////////////////////////////////////
'locale-command': {
'__desc__': 'when the locale is set to something',
'en_US': 'Locale set to {locale}'
@ -6806,7 +6848,6 @@ var initRootEvents = function(eventBaton) {
$(document).bind('keyup', function(e) {
eventBaton.trigger('docKeyup', e);
});
$(window).on('resize', function(e) {
events.trigger('resize', e);
});
@ -6869,6 +6910,7 @@ var initDemo = function(sandbox) {
if (params.locale !== undefined && params.locale.length) {
constants.GLOBAL.locale = params.locale;
events.trigger('localeChanged');
}
if (params.command) {
@ -7831,6 +7873,8 @@ require.define("/src/js/git/index.js",function(require,module,exports,__dirname,
var Backbone = (!require('../util').isBrowser()) ? Backbone = require('backbone') : Backbone = window.Backbone;
var Q = require('q');
var intl = require('../intl');
var AnimationFactoryModule = require('../visuals/animation/animationFactory');
var AnimationQueue = require('../visuals/animation').AnimationQueue;
var TreeCompare = require('./treeCompare').TreeCompare;
@ -8106,19 +8150,27 @@ GitEngine.prototype.validateBranchName = function(name) {
name = name.replace(/\s/g, '');
if (!/^[a-zA-Z0-9]+$/.test(name)) {
throw new GitError({
msg: 'woah bad branch name!! This is not ok: ' + name
msg: intl.str(
'bad-branch-name',
{ branch: name }
)
});
}
if (/[hH][eE][aA][dD]/.test(name)) {
throw new GitError({
msg: 'branch name of "head" is ambiguous, dont name it that'
msg: intl.str(
'bad-branch-name',
{ branch: name }
)
});
}
if (name.length > 9) {
name = name.slice(0, 9);
this.command.addWarning(
'Sorry, we need to keep branch names short for the visuals. Your branch ' +
'name was truncated to 9 characters, resulting in ' + name
intl.str(
'branch-name-short',
{ branch: name }
)
);
}
return name;
@ -8128,7 +8180,10 @@ GitEngine.prototype.makeBranch = function(id, target) {
id = this.validateBranchName(id);
if (this.refs[id]) {
throw new GitError({
msg: 'that branch id either matches a commit hash or already exists!'
msg: intl.str(
'bad-branch-name',
{ branch: name }
)
});
}
@ -13329,6 +13384,7 @@ exports.Command = Command;
});
require.define("/src/js/git/commands.js",function(require,module,exports,__dirname,__filename,process,global){var _ = require('underscore');
var intl = require('../intl');
var Errors = require('../util/errors');
var CommandProcessError = Errors.CommandProcessError;
@ -13349,12 +13405,12 @@ var shortcutMap = {
var instantCommands = [
[/^git help($|\s)/, function() {
var lines = [
'Git Version PCOTTLE.1.0',
intl.str('git-version'),
'<br/>',
'Usage:',
_.escape('\t git <command> [<args>]'),
intl.str('git-usage'),
_.escape(intl.str('git-usage-command')),
'<br/>',
'Supported commands:',
intl.str('git-supported-commands'),
'<br/>'
];
var commands = GitOptionParser.prototype.getMasterOptionMap();
@ -13489,7 +13545,10 @@ GitOptionParser.prototype.explodeAndSet = function() {
// it's an option, check supportedMap
if (this.supportedMap[part] === undefined) {
throw new CommandProcessError({
msg: 'The option "' + part + '" is not supported'
msg: intl.str(
'option-not-supported',
{ option: part }
)
});
}
@ -17369,16 +17428,34 @@ exports.levelSequences = {
// there are also cute names and such for sequences
exports.sequenceInfo = {
intro: {
displayName: 'Introduction Sequence',
about: 'A nicely paced introduction to the majority of git commands'
displayName: {
'en_US': 'Introduction Sequence',
'ko': '기본 명령어'
},
about: {
'en_US': 'A nicely paced introduction to the majority of git commands',
'ko': '브랜치 관련 주요 git 명령어를 깔끔하게 알려드립니다'
}
},
rebase: {
displayName: 'Master the Rebase Luke!',
about: 'What is this whole rebase hotness everyone is talking about? Find out!'
displayName: {
'en_US': 'Master the Rebase Luke!',
'ko': '리베이스 완전정복!'
},
about: {
'en_US': 'What is this whole rebase hotness everyone is talking about? Find out!',
'ko': '그 좋다고들 말하는 rebase에 대해 알아봅시다!'
}
},
mixed: {
displayName: 'A Mixed Bag',
about: 'A mixed bag of Git techniques, tricks, and tips'
displayName: {
'en_US': 'A Mixed Bag',
'ko': '종합선물세트'
},
about: {
'en_US': 'A mixed bag of Git techniques, tricks, and tips',
'ko': 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다'
}
}
};
@ -17387,7 +17464,8 @@ exports.sequenceInfo = {
require.define("/levels/intro/1.js",function(require,module,exports,__dirname,__filename,process,global){exports.level = {
"name": {
"en_US": "Introduction to Git Commits"
"en_US": "Introduction to Git Commits",
'ko': 'Git 커밋 소개'
},
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C3\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"solutionCommand": "git commit;git commit",
@ -17543,6 +17621,7 @@ require.define("/levels/intro/2.js",function(require,module,exports,__dirname,__
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C1\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"}}",
"solutionCommand": "git branch bugFix;git checkout bugFix",
"name": {
"ko": "Git에서 브랜치 쓰기",
"en_US": "Branching in Git"
},
"hint": {
@ -17796,7 +17875,8 @@ require.define("/levels/intro/3.js",function(require,module,exports,__dirname,__
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C4\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C2\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C2\",\"C3\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"solutionCommand": "git checkout -b bugFix;git commit;git checkout master;git commit;git merge bugFix",
"name": {
"en_US": "Merging in Git"
"en_US": "Merging in Git",
"ko": "Git에서 브랜치 합치기(Merge)"
},
"hint": {
"en_US": "Remember to commit in the order specified (bugFix before master)",
@ -18022,7 +18102,8 @@ require.define("/levels/intro/4.js",function(require,module,exports,__dirname,__
"goalTreeString": "%7B%22branches%22%3A%7B%22master%22%3A%7B%22target%22%3A%22C3%22%2C%22id%22%3A%22master%22%7D%2C%22bugFix%22%3A%7B%22target%22%3A%22C2%27%22%2C%22id%22%3A%22bugFix%22%7D%7D%2C%22commits%22%3A%7B%22C0%22%3A%7B%22parents%22%3A%5B%5D%2C%22id%22%3A%22C0%22%2C%22rootCommit%22%3Atrue%7D%2C%22C1%22%3A%7B%22parents%22%3A%5B%22C0%22%5D%2C%22id%22%3A%22C1%22%7D%2C%22C2%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%22%7D%2C%22C3%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C3%22%7D%2C%22C2%27%22%3A%7B%22parents%22%3A%5B%22C3%22%5D%2C%22id%22%3A%22C2%27%22%7D%7D%2C%22HEAD%22%3A%7B%22target%22%3A%22bugFix%22%2C%22id%22%3A%22HEAD%22%7D%7D",
"solutionCommand": "git checkout -b bugFix;git commit;git checkout master;git commit;git checkout bugFix;git rebase master",
"name": {
"en_US": "Rebase Introduction"
"en_US": "Rebase Introduction",
"ko": "리베이스(rebase)의 기본"
},
"hint": {
"en_US": "Make sure you commit from bugFix first",
@ -18243,7 +18324,8 @@ require.define("/levels/intro/5.js",function(require,module,exports,__dirname,__
"solutionCommand": "git reset HEAD~1;git checkout pushed;git revert HEAD",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"pushed\":{\"target\":\"C2\",\"id\":\"pushed\"},\"local\":{\"target\":\"C3\",\"id\":\"local\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"local\",\"id\":\"HEAD\"}}",
"name": {
"en_US": "Reversing Changes in Git"
"en_US": "Reversing Changes in Git",
"ko": "Git에서 작업 되돌리기"
},
"hint": {
"en_US": "",
@ -18453,6 +18535,7 @@ require.define("/levels/rebase/1.js",function(require,module,exports,__dirname,_
"solutionCommand": "git checkout bugFix;git rebase master;git checkout side;git rebase bugFix;git checkout another;git rebase side;git rebase another master",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C3\",\"id\":\"bugFix\"},\"side\":{\"target\":\"C6\",\"id\":\"side\"},\"another\":{\"target\":\"C7\",\"id\":\"another\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C0\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C5\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"ko": "9천번이 넘는 리베이스",
"en_US": "Rebasing over 9000 times"
},
"hint": {
@ -18528,6 +18611,7 @@ require.define("/levels/rebase/2.js",function(require,module,exports,__dirname,_
"solutionCommand": "git checkout one; git cherry-pick C4; git cherry-pick C3; git cherry-pick C2; git checkout two; git cherry-pick C5; git cherry-pick C4; git cherry-pick C3; git cherry-pick C2; git branch -f three C2",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C5\",\"id\":\"master\"},\"one\":{\"target\":\"C1\",\"id\":\"one\"},\"two\":{\"target\":\"C1\",\"id\":\"two\"},\"three\":{\"target\":\"C1\",\"id\":\"three\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"ko": "브랜치 스파게티",
"en_US": "Branch Spaghetti"
},
"hint": {
@ -18609,6 +18693,7 @@ require.define("/levels/mixed/1.js",function(require,module,exports,__dirname,__
"solutionCommand": "git checkout master;git cherry-pick C4",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"debug\":{\"target\":\"C2\",\"id\":\"debug\"},\"printf\":{\"target\":\"C3\",\"id\":\"printf\"},\"bugFix\":{\"target\":\"C4\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"}}",
"name": {
"ko": "딱 한개의 커밋만 가져오기",
"en_US": "Grabbing Just 1 Commit"
},
"hint": {
@ -18754,6 +18839,7 @@ require.define("/levels/mixed/2.js",function(require,module,exports,__dirname,__
"solutionCommand": "git rebase -i HEAD~2;git commit --amend;git rebase -i HEAD~2;git rebase caption master",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"newImage\":{\"target\":\"C2\",\"id\":\"newImage\"},\"caption\":{\"target\":\"C3\",\"id\":\"caption\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"caption\",\"id\":\"HEAD\"}}",
"name": {
"ko": "커밋들 갖고 놀기",
"en_US": "Juggling Commits"
},
"hint": {
@ -18892,6 +18978,7 @@ require.define("/levels/mixed/3.js",function(require,module,exports,__dirname,__
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"newImage\":{\"target\":\"C2\",\"id\":\"newImage\"},\"caption\":{\"target\":\"C3\",\"id\":\"caption\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"caption\",\"id\":\"HEAD\"}}",
"compareOnlyMaster": true,
"name": {
"ko": "커밋 갖고 놀기 #2",
"en_US": "Juggling Commits #2"
},
"hint": {
@ -19033,6 +19120,7 @@ var Q = require('q');
var Backbone = (!require('../util').isBrowser()) ? require('backbone') : window.Backbone;
var util = require('../util');
var intl = require('../intl');
var KeyboardListener = require('../util/keyboard').KeyboardListener;
var Main = require('../app');
@ -19075,10 +19163,15 @@ var LevelDropdownView = ContainedBase.extend({
this.sequenceToLevels = Main.getLevelArbiter().getSequenceToLevels();
this.container = new ModalTerminal({
title: 'Select a Level'
title: intl.str('select-a-level')
});
this.render();
this.buildSequences();
Main.getEvents().on('localeChanged', function() {
this.render();
this.buildSequences();
}, this);
if (!options.wait) {
this.show();
@ -19293,8 +19386,8 @@ var SeriesView = BaseView.extend({
this.destination = options.destination;
this.JSON = {
displayName: this.info.displayName,
about: this.info.about,
displayName: intl.getIntlKey(this.info, 'displayName'),
about: intl.getIntlKey(this.info, 'about'),
ids: this.levelIDs
};
@ -20006,7 +20099,6 @@ var initRootEvents = function(eventBaton) {
$(document).bind('keyup', function(e) {
eventBaton.trigger('docKeyup', e);
});
$(window).on('resize', function(e) {
events.trigger('resize', e);
});
@ -20069,6 +20161,7 @@ var initDemo = function(sandbox) {
if (params.locale !== undefined && params.locale.length) {
constants.GLOBAL.locale = params.locale;
events.trigger('localeChanged');
}
if (params.command) {
@ -20227,6 +20320,7 @@ require.define("/src/js/dialogs/sandbox.js",function(require,module,exports,__di
require("/src/js/dialogs/sandbox.js");
require.define("/src/js/git/commands.js",function(require,module,exports,__dirname,__filename,process,global){var _ = require('underscore');
var intl = require('../intl');
var Errors = require('../util/errors');
var CommandProcessError = Errors.CommandProcessError;
@ -20247,12 +20341,12 @@ var shortcutMap = {
var instantCommands = [
[/^git help($|\s)/, function() {
var lines = [
'Git Version PCOTTLE.1.0',
intl.str('git-version'),
'<br/>',
'Usage:',
_.escape('\t git <command> [<args>]'),
intl.str('git-usage'),
_.escape(intl.str('git-usage-command')),
'<br/>',
'Supported commands:',
intl.str('git-supported-commands'),
'<br/>'
];
var commands = GitOptionParser.prototype.getMasterOptionMap();
@ -20387,7 +20481,10 @@ GitOptionParser.prototype.explodeAndSet = function() {
// it's an option, check supportedMap
if (this.supportedMap[part] === undefined) {
throw new CommandProcessError({
msg: 'The option "' + part + '" is not supported'
msg: intl.str(
'option-not-supported',
{ option: part }
)
});
}
@ -20568,6 +20665,8 @@ require.define("/src/js/git/index.js",function(require,module,exports,__dirname,
var Backbone = (!require('../util').isBrowser()) ? Backbone = require('backbone') : Backbone = window.Backbone;
var Q = require('q');
var intl = require('../intl');
var AnimationFactoryModule = require('../visuals/animation/animationFactory');
var AnimationQueue = require('../visuals/animation').AnimationQueue;
var TreeCompare = require('./treeCompare').TreeCompare;
@ -20843,19 +20942,27 @@ GitEngine.prototype.validateBranchName = function(name) {
name = name.replace(/\s/g, '');
if (!/^[a-zA-Z0-9]+$/.test(name)) {
throw new GitError({
msg: 'woah bad branch name!! This is not ok: ' + name
msg: intl.str(
'bad-branch-name',
{ branch: name }
)
});
}
if (/[hH][eE][aA][dD]/.test(name)) {
throw new GitError({
msg: 'branch name of "head" is ambiguous, dont name it that'
msg: intl.str(
'bad-branch-name',
{ branch: name }
)
});
}
if (name.length > 9) {
name = name.slice(0, 9);
this.command.addWarning(
'Sorry, we need to keep branch names short for the visuals. Your branch ' +
'name was truncated to 9 characters, resulting in ' + name
intl.str(
'branch-name-short',
{ branch: name }
)
);
}
return name;
@ -20865,7 +20972,10 @@ GitEngine.prototype.makeBranch = function(id, target) {
id = this.validateBranchName(id);
if (this.refs[id]) {
throw new GitError({
msg: 'that branch id either matches a commit hash or already exists!'
msg: intl.str(
'bad-branch-name',
{ branch: name }
)
});
}
@ -22549,7 +22659,7 @@ var str = exports.str = function(key, params) {
return template(
strings[key][locale],
params
);
).toUpperCase();
};
var getIntlKey = exports.getIntlKey = function(obj, key) {
@ -22602,10 +22712,52 @@ var getStartDialog = exports.getStartDialog = function(level) {
require("/src/js/intl/index.js");
require.define("/src/js/intl/strings.js",function(require,module,exports,__dirname,__filename,process,global){exports.strings = {
///////////////////////////////////////////////////////////////////////////
'select-a-level': {
'__desc__': 'The prompt to select a level on the drop down view',
'en_US': 'Select a level'
},
///////////////////////////////////////////////////////////////////////////
'branch-name-short': {
'__desc__': 'When branch names get too long, we need to truncate them. This is the warning for that',
'en_US': 'Sorry, we need to keep branch names short for the visuals. Your branch name was truncated to 9 characters, resulting in "{branch}"'
},
///////////////////////////////////////////////////////////////////////////
'bad-branch-name': {
'__desc__': 'When the user enters a branch name thats not ok',
'en_US': 'That branch name "{branch}" is not allowed!'
},
///////////////////////////////////////////////////////////////////////////
'option-not-supported': {
'__desc__': 'When the user specifies an option that is not supported by our demo',
'en_US': 'The option "{option}" is not supported!'
},
///////////////////////////////////////////////////////////////////////////
'git-usage-command': {
'__desc__': 'The line that shows how to format a git command',
'en_US': 'git <command> [<args>]'
},
///////////////////////////////////////////////////////////////////////////
'git-supported-commands': {
'__desc__': 'In the git help command, the header above the supported commands',
'en_US': 'Supported commands:'
},
///////////////////////////////////////////////////////////////////////////
'git-usage': {
'__desc__': 'In the dummy git output, the header before showing all the commands',
'en_US': 'Usage:'
},
///////////////////////////////////////////////////////////////////////////
'git-version': {
'__desc__': 'The git version dummy output, kind of silly. PCOTTLE is my unix name but feel free to put yours instead',
'en_US': 'Git Version PCOTTLE.1.0'
},
///////////////////////////////////////////////////////////////////////////
'refresh-tree-command': {
'__desc__': 'when the tree is visually refreshed',
'en_US': 'Refreshing tree...'
},
///////////////////////////////////////////////////////////////////////////
'locale-command': {
'__desc__': 'when the locale is set to something',
'en_US': 'Locale set to {locale}'
@ -26980,6 +27132,7 @@ var Q = require('q');
var Backbone = (!require('../util').isBrowser()) ? require('backbone') : window.Backbone;
var util = require('../util');
var intl = require('../intl');
var KeyboardListener = require('../util/keyboard').KeyboardListener;
var Main = require('../app');
@ -27022,10 +27175,15 @@ var LevelDropdownView = ContainedBase.extend({
this.sequenceToLevels = Main.getLevelArbiter().getSequenceToLevels();
this.container = new ModalTerminal({
title: 'Select a Level'
title: intl.str('select-a-level')
});
this.render();
this.buildSequences();
Main.getEvents().on('localeChanged', function() {
this.render();
this.buildSequences();
}, this);
if (!options.wait) {
this.show();
@ -27240,8 +27398,8 @@ var SeriesView = BaseView.extend({
this.destination = options.destination;
this.JSON = {
displayName: this.info.displayName,
about: this.info.about,
displayName: intl.getIntlKey(this.info, 'displayName'),
about: intl.getIntlKey(this.info, 'about'),
ids: this.levelIDs
};
@ -30191,16 +30349,34 @@ exports.levelSequences = {
// there are also cute names and such for sequences
exports.sequenceInfo = {
intro: {
displayName: 'Introduction Sequence',
about: 'A nicely paced introduction to the majority of git commands'
displayName: {
'en_US': 'Introduction Sequence',
'ko': '기본 명령어'
},
about: {
'en_US': 'A nicely paced introduction to the majority of git commands',
'ko': '브랜치 관련 주요 git 명령어를 깔끔하게 알려드립니다'
}
},
rebase: {
displayName: 'Master the Rebase Luke!',
about: 'What is this whole rebase hotness everyone is talking about? Find out!'
displayName: {
'en_US': 'Master the Rebase Luke!',
'ko': '리베이스 완전정복!'
},
about: {
'en_US': 'What is this whole rebase hotness everyone is talking about? Find out!',
'ko': '그 좋다고들 말하는 rebase에 대해 알아봅시다!'
}
},
mixed: {
displayName: 'A Mixed Bag',
about: 'A mixed bag of Git techniques, tricks, and tips'
displayName: {
'en_US': 'A Mixed Bag',
'ko': '종합선물세트'
},
about: {
'en_US': 'A mixed bag of Git techniques, tricks, and tips',
'ko': 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다'
}
}
};
@ -30210,7 +30386,8 @@ require("/src/levels/index.js");
require.define("/src/levels/intro/1.js",function(require,module,exports,__dirname,__filename,process,global){exports.level = {
"name": {
"en_US": "Introduction to Git Commits"
"en_US": "Introduction to Git Commits",
'ko': 'Git 커밋 소개'
},
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C3\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"solutionCommand": "git commit;git commit",
@ -30367,6 +30544,7 @@ require.define("/src/levels/intro/2.js",function(require,module,exports,__dirnam
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C1\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"}}",
"solutionCommand": "git branch bugFix;git checkout bugFix",
"name": {
"ko": "Git에서 브랜치 쓰기",
"en_US": "Branching in Git"
},
"hint": {
@ -30621,7 +30799,8 @@ require.define("/src/levels/intro/3.js",function(require,module,exports,__dirnam
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C4\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C2\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C2\",\"C3\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"solutionCommand": "git checkout -b bugFix;git commit;git checkout master;git commit;git merge bugFix",
"name": {
"en_US": "Merging in Git"
"en_US": "Merging in Git",
"ko": "Git에서 브랜치 합치기(Merge)"
},
"hint": {
"en_US": "Remember to commit in the order specified (bugFix before master)",
@ -30848,7 +31027,8 @@ require.define("/src/levels/intro/4.js",function(require,module,exports,__dirnam
"goalTreeString": "%7B%22branches%22%3A%7B%22master%22%3A%7B%22target%22%3A%22C3%22%2C%22id%22%3A%22master%22%7D%2C%22bugFix%22%3A%7B%22target%22%3A%22C2%27%22%2C%22id%22%3A%22bugFix%22%7D%7D%2C%22commits%22%3A%7B%22C0%22%3A%7B%22parents%22%3A%5B%5D%2C%22id%22%3A%22C0%22%2C%22rootCommit%22%3Atrue%7D%2C%22C1%22%3A%7B%22parents%22%3A%5B%22C0%22%5D%2C%22id%22%3A%22C1%22%7D%2C%22C2%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%22%7D%2C%22C3%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C3%22%7D%2C%22C2%27%22%3A%7B%22parents%22%3A%5B%22C3%22%5D%2C%22id%22%3A%22C2%27%22%7D%7D%2C%22HEAD%22%3A%7B%22target%22%3A%22bugFix%22%2C%22id%22%3A%22HEAD%22%7D%7D",
"solutionCommand": "git checkout -b bugFix;git commit;git checkout master;git commit;git checkout bugFix;git rebase master",
"name": {
"en_US": "Rebase Introduction"
"en_US": "Rebase Introduction",
"ko": "리베이스(rebase)의 기본"
},
"hint": {
"en_US": "Make sure you commit from bugFix first",
@ -31070,7 +31250,8 @@ require.define("/src/levels/intro/5.js",function(require,module,exports,__dirnam
"solutionCommand": "git reset HEAD~1;git checkout pushed;git revert HEAD",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"pushed\":{\"target\":\"C2\",\"id\":\"pushed\"},\"local\":{\"target\":\"C3\",\"id\":\"local\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"local\",\"id\":\"HEAD\"}}",
"name": {
"en_US": "Reversing Changes in Git"
"en_US": "Reversing Changes in Git",
"ko": "Git에서 작업 되돌리기"
},
"hint": {
"en_US": "",
@ -31281,6 +31462,7 @@ require.define("/src/levels/mixed/1.js",function(require,module,exports,__dirnam
"solutionCommand": "git checkout master;git cherry-pick C4",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"debug\":{\"target\":\"C2\",\"id\":\"debug\"},\"printf\":{\"target\":\"C3\",\"id\":\"printf\"},\"bugFix\":{\"target\":\"C4\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"}}",
"name": {
"ko": "딱 한개의 커밋만 가져오기",
"en_US": "Grabbing Just 1 Commit"
},
"hint": {
@ -31427,6 +31609,7 @@ require.define("/src/levels/mixed/2.js",function(require,module,exports,__dirnam
"solutionCommand": "git rebase -i HEAD~2;git commit --amend;git rebase -i HEAD~2;git rebase caption master",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"newImage\":{\"target\":\"C2\",\"id\":\"newImage\"},\"caption\":{\"target\":\"C3\",\"id\":\"caption\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"caption\",\"id\":\"HEAD\"}}",
"name": {
"ko": "커밋들 갖고 놀기",
"en_US": "Juggling Commits"
},
"hint": {
@ -31566,6 +31749,7 @@ require.define("/src/levels/mixed/3.js",function(require,module,exports,__dirnam
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"newImage\":{\"target\":\"C2\",\"id\":\"newImage\"},\"caption\":{\"target\":\"C3\",\"id\":\"caption\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"caption\",\"id\":\"HEAD\"}}",
"compareOnlyMaster": true,
"name": {
"ko": "커밋 갖고 놀기 #2",
"en_US": "Juggling Commits #2"
},
"hint": {
@ -31711,6 +31895,7 @@ require.define("/src/levels/rebase/1.js",function(require,module,exports,__dirna
"solutionCommand": "git checkout bugFix;git rebase master;git checkout side;git rebase bugFix;git checkout another;git rebase side;git rebase another master",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C3\",\"id\":\"bugFix\"},\"side\":{\"target\":\"C6\",\"id\":\"side\"},\"another\":{\"target\":\"C7\",\"id\":\"another\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C0\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C5\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"ko": "9천번이 넘는 리베이스",
"en_US": "Rebasing over 9000 times"
},
"hint": {
@ -31787,6 +31972,7 @@ require.define("/src/levels/rebase/2.js",function(require,module,exports,__dirna
"solutionCommand": "git checkout one; git cherry-pick C4; git cherry-pick C3; git cherry-pick C2; git checkout two; git cherry-pick C5; git cherry-pick C4; git cherry-pick C3; git cherry-pick C2; git branch -f three C2",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C5\",\"id\":\"master\"},\"one\":{\"target\":\"C1\",\"id\":\"one\"},\"two\":{\"target\":\"C1\",\"id\":\"two\"},\"three\":{\"target\":\"C1\",\"id\":\"three\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"ko": "브랜치 스파게티",
"en_US": "Branch Spaghetti"
},
"hint": {

View file

@ -63,7 +63,6 @@ var initRootEvents = function(eventBaton) {
$(document).bind('keyup', function(e) {
eventBaton.trigger('docKeyup', e);
});
$(window).on('resize', function(e) {
events.trigger('resize', e);
});
@ -126,6 +125,7 @@ var initDemo = function(sandbox) {
if (params.locale !== undefined && params.locale.length) {
constants.GLOBAL.locale = params.locale;
events.trigger('localeChanged');
}
if (params.command) {

View file

@ -1,4 +1,5 @@
var _ = require('underscore');
var intl = require('../intl');
var Errors = require('../util/errors');
var CommandProcessError = Errors.CommandProcessError;
@ -19,12 +20,12 @@ var shortcutMap = {
var instantCommands = [
[/^git help($|\s)/, function() {
var lines = [
'Git Version PCOTTLE.1.0',
intl.str('git-version'),
'<br/>',
'Usage:',
_.escape('\t git <command> [<args>]'),
intl.str('git-usage'),
_.escape(intl.str('git-usage-command')),
'<br/>',
'Supported commands:',
intl.str('git-supported-commands'),
'<br/>'
];
var commands = GitOptionParser.prototype.getMasterOptionMap();
@ -159,7 +160,10 @@ GitOptionParser.prototype.explodeAndSet = function() {
// it's an option, check supportedMap
if (this.supportedMap[part] === undefined) {
throw new CommandProcessError({
msg: 'The option "' + part + '" is not supported'
msg: intl.str(
'option-not-supported',
{ option: part }
)
});
}

View file

@ -3,6 +3,8 @@ var _ = require('underscore');
var Backbone = (!require('../util').isBrowser()) ? Backbone = require('backbone') : Backbone = window.Backbone;
var Q = require('q');
var intl = require('../intl');
var AnimationFactoryModule = require('../visuals/animation/animationFactory');
var AnimationQueue = require('../visuals/animation').AnimationQueue;
var TreeCompare = require('./treeCompare').TreeCompare;
@ -278,19 +280,27 @@ GitEngine.prototype.validateBranchName = function(name) {
name = name.replace(/\s/g, '');
if (!/^[a-zA-Z0-9]+$/.test(name)) {
throw new GitError({
msg: 'woah bad branch name!! This is not ok: ' + name
msg: intl.str(
'bad-branch-name',
{ branch: name }
)
});
}
if (/[hH][eE][aA][dD]/.test(name)) {
throw new GitError({
msg: 'branch name of "head" is ambiguous, dont name it that'
msg: intl.str(
'bad-branch-name',
{ branch: name }
)
});
}
if (name.length > 9) {
name = name.slice(0, 9);
this.command.addWarning(
'Sorry, we need to keep branch names short for the visuals. Your branch ' +
'name was truncated to 9 characters, resulting in ' + name
intl.str(
'branch-name-short',
{ branch: name }
)
);
}
return name;
@ -300,7 +310,10 @@ GitEngine.prototype.makeBranch = function(id, target) {
id = this.validateBranchName(id);
if (this.refs[id]) {
throw new GitError({
msg: 'that branch id either matches a commit hash or already exists!'
msg: intl.str(
'bad-branch-name',
{ branch: name }
)
});
}

View file

@ -53,7 +53,7 @@ var str = exports.str = function(key, params) {
return template(
strings[key][locale],
params
);
).toUpperCase();
};
var getIntlKey = exports.getIntlKey = function(obj, key) {

View file

@ -1,8 +1,50 @@
exports.strings = {
///////////////////////////////////////////////////////////////////////////
'select-a-level': {
'__desc__': 'The prompt to select a level on the drop down view',
'en_US': 'Select a level'
},
///////////////////////////////////////////////////////////////////////////
'branch-name-short': {
'__desc__': 'When branch names get too long, we need to truncate them. This is the warning for that',
'en_US': 'Sorry, we need to keep branch names short for the visuals. Your branch name was truncated to 9 characters, resulting in "{branch}"'
},
///////////////////////////////////////////////////////////////////////////
'bad-branch-name': {
'__desc__': 'When the user enters a branch name thats not ok',
'en_US': 'That branch name "{branch}" is not allowed!'
},
///////////////////////////////////////////////////////////////////////////
'option-not-supported': {
'__desc__': 'When the user specifies an option that is not supported by our demo',
'en_US': 'The option "{option}" is not supported!'
},
///////////////////////////////////////////////////////////////////////////
'git-usage-command': {
'__desc__': 'The line that shows how to format a git command',
'en_US': 'git <command> [<args>]'
},
///////////////////////////////////////////////////////////////////////////
'git-supported-commands': {
'__desc__': 'In the git help command, the header above the supported commands',
'en_US': 'Supported commands:'
},
///////////////////////////////////////////////////////////////////////////
'git-usage': {
'__desc__': 'In the dummy git output, the header before showing all the commands',
'en_US': 'Usage:'
},
///////////////////////////////////////////////////////////////////////////
'git-version': {
'__desc__': 'The git version dummy output, kind of silly. PCOTTLE is my unix name but feel free to put yours instead',
'en_US': 'Git Version PCOTTLE.1.0'
},
///////////////////////////////////////////////////////////////////////////
'refresh-tree-command': {
'__desc__': 'when the tree is visually refreshed',
'en_US': 'Refreshing tree...'
},
///////////////////////////////////////////////////////////////////////////
'locale-command': {
'__desc__': 'when the locale is set to something',
'en_US': 'Locale set to {locale}'

View file

@ -4,6 +4,7 @@ var Q = require('q');
var Backbone = (!require('../util').isBrowser()) ? require('backbone') : window.Backbone;
var util = require('../util');
var intl = require('../intl');
var KeyboardListener = require('../util/keyboard').KeyboardListener;
var Main = require('../app');
@ -46,10 +47,15 @@ var LevelDropdownView = ContainedBase.extend({
this.sequenceToLevels = Main.getLevelArbiter().getSequenceToLevels();
this.container = new ModalTerminal({
title: 'Select a Level'
title: intl.str('select-a-level')
});
this.render();
this.buildSequences();
Main.getEvents().on('localeChanged', function() {
this.render();
this.buildSequences();
}, this);
if (!options.wait) {
this.show();
@ -264,8 +270,8 @@ var SeriesView = BaseView.extend({
this.destination = options.destination;
this.JSON = {
displayName: this.info.displayName,
about: this.info.about,
displayName: intl.getIntlKey(this.info, 'displayName'),
about: intl.getIntlKey(this.info, 'about'),
ids: this.levelIDs
};

View file

@ -22,16 +22,34 @@ exports.levelSequences = {
// there are also cute names and such for sequences
exports.sequenceInfo = {
intro: {
displayName: 'Introduction Sequence',
about: 'A nicely paced introduction to the majority of git commands'
displayName: {
'en_US': 'Introduction Sequence',
'ko': '기본 명령어'
},
about: {
'en_US': 'A nicely paced introduction to the majority of git commands',
'ko': '브랜치 관련 주요 git 명령어를 깔끔하게 알려드립니다'
}
},
rebase: {
displayName: 'Master the Rebase Luke!',
about: 'What is this whole rebase hotness everyone is talking about? Find out!'
displayName: {
'en_US': 'Master the Rebase Luke!',
'ko': '리베이스 완전정복!'
},
about: {
'en_US': 'What is this whole rebase hotness everyone is talking about? Find out!',
'ko': '그 좋다고들 말하는 rebase에 대해 알아봅시다!'
}
},
mixed: {
displayName: 'A Mixed Bag',
about: 'A mixed bag of Git techniques, tricks, and tips'
displayName: {
'en_US': 'A Mixed Bag',
'ko': '종합선물세트'
},
about: {
'en_US': 'A mixed bag of Git techniques, tricks, and tips',
'ko': 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다'
}
}
};

View file

@ -1,6 +1,7 @@
exports.level = {
"name": {
"en_US": "Introduction to Git Commits"
"en_US": "Introduction to Git Commits",
'ko': 'Git 커밋 소개'
},
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C3\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"solutionCommand": "git commit;git commit",

View file

@ -2,6 +2,7 @@ exports.level = {
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C1\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"}}",
"solutionCommand": "git branch bugFix;git checkout bugFix",
"name": {
"ko": "Git에서 브랜치 쓰기",
"en_US": "Branching in Git"
},
"hint": {

View file

@ -2,7 +2,8 @@ exports.level = {
"goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C4\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C2\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C2\",\"C3\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"solutionCommand": "git checkout -b bugFix;git commit;git checkout master;git commit;git merge bugFix",
"name": {
"en_US": "Merging in Git"
"en_US": "Merging in Git",
"ko": "Git에서 브랜치 합치기(Merge)"
},
"hint": {
"en_US": "Remember to commit in the order specified (bugFix before master)",

View file

@ -2,7 +2,8 @@ exports.level = {
"goalTreeString": "%7B%22branches%22%3A%7B%22master%22%3A%7B%22target%22%3A%22C3%22%2C%22id%22%3A%22master%22%7D%2C%22bugFix%22%3A%7B%22target%22%3A%22C2%27%22%2C%22id%22%3A%22bugFix%22%7D%7D%2C%22commits%22%3A%7B%22C0%22%3A%7B%22parents%22%3A%5B%5D%2C%22id%22%3A%22C0%22%2C%22rootCommit%22%3Atrue%7D%2C%22C1%22%3A%7B%22parents%22%3A%5B%22C0%22%5D%2C%22id%22%3A%22C1%22%7D%2C%22C2%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%22%7D%2C%22C3%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C3%22%7D%2C%22C2%27%22%3A%7B%22parents%22%3A%5B%22C3%22%5D%2C%22id%22%3A%22C2%27%22%7D%7D%2C%22HEAD%22%3A%7B%22target%22%3A%22bugFix%22%2C%22id%22%3A%22HEAD%22%7D%7D",
"solutionCommand": "git checkout -b bugFix;git commit;git checkout master;git commit;git checkout bugFix;git rebase master",
"name": {
"en_US": "Rebase Introduction"
"en_US": "Rebase Introduction",
"ko": "리베이스(rebase)의 기본"
},
"hint": {
"en_US": "Make sure you commit from bugFix first",

View file

@ -3,7 +3,8 @@ exports.level = {
"solutionCommand": "git reset HEAD~1;git checkout pushed;git revert HEAD",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"pushed\":{\"target\":\"C2\",\"id\":\"pushed\"},\"local\":{\"target\":\"C3\",\"id\":\"local\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"local\",\"id\":\"HEAD\"}}",
"name": {
"en_US": "Reversing Changes in Git"
"en_US": "Reversing Changes in Git",
"ko": "Git에서 작업 되돌리기"
},
"hint": {
"en_US": "",

View file

@ -7,6 +7,7 @@ exports.level = {
"solutionCommand": "git checkout master;git cherry-pick C4",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"debug\":{\"target\":\"C2\",\"id\":\"debug\"},\"printf\":{\"target\":\"C3\",\"id\":\"printf\"},\"bugFix\":{\"target\":\"C4\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"bugFix\",\"id\":\"HEAD\"}}",
"name": {
"ko": "딱 한개의 커밋만 가져오기",
"en_US": "Grabbing Just 1 Commit"
},
"hint": {

View file

@ -8,6 +8,7 @@ exports.level = {
"solutionCommand": "git rebase -i HEAD~2;git commit --amend;git rebase -i HEAD~2;git rebase caption master",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"newImage\":{\"target\":\"C2\",\"id\":\"newImage\"},\"caption\":{\"target\":\"C3\",\"id\":\"caption\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"caption\",\"id\":\"HEAD\"}}",
"name": {
"ko": "커밋들 갖고 놀기",
"en_US": "Juggling Commits"
},
"hint": {

View file

@ -7,6 +7,7 @@ exports.level = {
"startTree": "{\"branches\":{\"master\":{\"target\":\"C1\",\"id\":\"master\"},\"newImage\":{\"target\":\"C2\",\"id\":\"newImage\"},\"caption\":{\"target\":\"C3\",\"id\":\"caption\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"caption\",\"id\":\"HEAD\"}}",
"compareOnlyMaster": true,
"name": {
"ko": "커밋 갖고 놀기 #2",
"en_US": "Juggling Commits #2"
},
"hint": {

View file

@ -7,6 +7,7 @@ exports.level = {
"solutionCommand": "git checkout bugFix;git rebase master;git checkout side;git rebase bugFix;git checkout another;git rebase side;git rebase another master",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C3\",\"id\":\"bugFix\"},\"side\":{\"target\":\"C6\",\"id\":\"side\"},\"another\":{\"target\":\"C7\",\"id\":\"another\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C0\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C5\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"ko": "9천번이 넘는 리베이스",
"en_US": "Rebasing over 9000 times"
},
"hint": {

View file

@ -7,6 +7,7 @@ exports.level = {
"solutionCommand": "git checkout one; git cherry-pick C4; git cherry-pick C3; git cherry-pick C2; git checkout two; git cherry-pick C5; git cherry-pick C4; git cherry-pick C3; git cherry-pick C2; git branch -f three C2",
"startTree": "{\"branches\":{\"master\":{\"target\":\"C5\",\"id\":\"master\"},\"one\":{\"target\":\"C1\",\"id\":\"one\"},\"two\":{\"target\":\"C1\",\"id\":\"two\"},\"three\":{\"target\":\"C1\",\"id\":\"three\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}",
"name": {
"ko": "브랜치 스파게티",
"en_US": "Branch Spaghetti"
},
"hint": {