[Origin] Some origin work around remote branches

This commit is contained in:
Peter Cottle 2013-05-27 10:31:50 -07:00
parent 6080d324ce
commit a24f62420d
8 changed files with 139 additions and 27 deletions

View file

@ -5401,6 +5401,10 @@ require.define("/src/js/intl/strings.js",function(require,module,exports,__dirna
'en_US': 'Quick commit. Go Bears!', 'en_US': 'Quick commit. Go Bears!',
'zh_CN': '快速提交。上啊月熊!' 'zh_CN': '快速提交。上啊月熊!'
}, },
'git-error-remote-branch': {
'__desc__': 'One of the error messages for git',
'en_US': 'You cannot execute that command on a remote branch'
},
'git-error-origin-required': { 'git-error-origin-required': {
'__desc__': 'One of the error messages for git', '__desc__': 'One of the error messages for git',
'en_US': 'An origin is required for that command' 'en_US': 'An origin is required for that command'
@ -7502,12 +7506,27 @@ GitEngine.prototype.getBranches = function() {
id: branch.get('id'), id: branch.get('id'),
selected: this.HEAD.get('target') === branch, selected: this.HEAD.get('target') === branch,
target: branch.get('target'), target: branch.get('target'),
remote: branch.getIsRemote(),
obj: branch obj: branch
}); });
}, this); }, this);
return toReturn; return toReturn;
}; };
GitEngine.prototype.getRemoteBranches = function() {
var all = this.getBranches();
return _.filter(all, function(branchJSON) {
return branchJSON.remote === true;
});
};
GitEngine.prototype.getLocalBranches = function() {
var all = this.getBranches();
return _.filter(all, function(branchJSON) {
return branchJSON.remote === false;
});
};
GitEngine.prototype.printBranchesWithout = function(without) { GitEngine.prototype.printBranchesWithout = function(without) {
var commitToBranches = this.getUpstreamBranchSet(); var commitToBranches = this.getUpstreamBranchSet();
var commitID = this.getCommitFromRef(without).get('id'); var commitID = this.getCommitFromRef(without).get('id');
@ -7783,7 +7802,7 @@ GitEngine.prototype.fetchStarter = function() {
}; };
GitEngine.prototype.fetch = function() { GitEngine.prototype.fetch = function() {
// TODO refactor to use rebase animation stuff!! // TODO refactor to use rebase animation stuff!!!!
// ok so we essentially are always in "-force" mode, since we always assume // ok so we essentially are always in "-force" mode, since we always assume
// the origin commits are downstream of where we are. Here is the outline: // the origin commits are downstream of where we are. Here is the outline:
// //
@ -8624,7 +8643,15 @@ GitEngine.prototype.branchStarter = function() {
if (this.generalArgs.length === 0) { if (this.generalArgs.length === 0) {
this.printBranches(this.getBranches()); var branches;
if (this.commandOptions['-a']) {
branches = this.getBranches();
} else if (this.commandOptions['-r']) {
branches = this.getRemoteBranches();
} else {
branches = this.getLocalBranches();
}
this.printBranches(branches);
return; return;
} }
@ -8633,12 +8660,19 @@ GitEngine.prototype.branchStarter = function() {
}; };
GitEngine.prototype.forceBranch = function(branchName, where) { GitEngine.prototype.forceBranch = function(branchName, where) {
branchName = this.crappyUnescape(branchName);
// if branchname doesn't exist... // if branchname doesn't exist...
if (!this.refs[branchName]) { if (!this.refs[branchName]) {
this.branch(branchName, where); this.branch(branchName, where);
} }
var branch = this.resolveID(branchName); var branch = this.resolveID(branchName);
if (branch.getIsRemote()) {
throw new GitError({
msg: intl.str('git-error-remote-branch')
});
}
if (branch.get('type') !== 'branch') { if (branch.get('type') !== 'branch') {
throw new GitError({ throw new GitError({
msg: intl.str('git-error-options') msg: intl.str('git-error-options')
@ -8662,7 +8696,6 @@ GitEngine.prototype.deleteBranch = function(name) {
if (target.get('type') !== 'branch' || if (target.get('type') !== 'branch' ||
target.get('id') == 'master' || target.get('id') == 'master' ||
this.HEAD.get('target') === target) { this.HEAD.get('target') === target) {
throw new GitError({ throw new GitError({
msg: intl.str('git-error-branch') msg: intl.str('git-error-branch')
}); });
@ -8670,6 +8703,12 @@ GitEngine.prototype.deleteBranch = function(name) {
// now we know it's a branch // now we know it's a branch
var branch = target; var branch = target;
// if its remote
if (target.getIsRemote()) {
throw new GitError({
msg: intl.str('git-error-remote-branch')
});
}
this.branchCollection.remove(branch); this.branchCollection.remove(branch);
this.refs[branch.get('id')] = undefined; this.refs[branch.get('id')] = undefined;
@ -13416,6 +13455,8 @@ GitOptionParser.prototype.getMasterOptionMap = function() {
'-d': false, '-d': false,
'-D': false, '-D': false,
'-f': false, '-f': false,
'-a': false,
'-r': false,
'--contains': false '--contains': false
}, },
checkout: { checkout: {
@ -22579,6 +22620,8 @@ GitOptionParser.prototype.getMasterOptionMap = function() {
'-d': false, '-d': false,
'-D': false, '-D': false,
'-f': false, '-f': false,
'-a': false,
'-r': false,
'--contains': false '--contains': false
}, },
checkout: { checkout: {
@ -23247,12 +23290,27 @@ GitEngine.prototype.getBranches = function() {
id: branch.get('id'), id: branch.get('id'),
selected: this.HEAD.get('target') === branch, selected: this.HEAD.get('target') === branch,
target: branch.get('target'), target: branch.get('target'),
remote: branch.getIsRemote(),
obj: branch obj: branch
}); });
}, this); }, this);
return toReturn; return toReturn;
}; };
GitEngine.prototype.getRemoteBranches = function() {
var all = this.getBranches();
return _.filter(all, function(branchJSON) {
return branchJSON.remote === true;
});
};
GitEngine.prototype.getLocalBranches = function() {
var all = this.getBranches();
return _.filter(all, function(branchJSON) {
return branchJSON.remote === false;
});
};
GitEngine.prototype.printBranchesWithout = function(without) { GitEngine.prototype.printBranchesWithout = function(without) {
var commitToBranches = this.getUpstreamBranchSet(); var commitToBranches = this.getUpstreamBranchSet();
var commitID = this.getCommitFromRef(without).get('id'); var commitID = this.getCommitFromRef(without).get('id');
@ -23528,7 +23586,7 @@ GitEngine.prototype.fetchStarter = function() {
}; };
GitEngine.prototype.fetch = function() { GitEngine.prototype.fetch = function() {
// TODO refactor to use rebase animation stuff!! // TODO refactor to use rebase animation stuff!!!!
// ok so we essentially are always in "-force" mode, since we always assume // ok so we essentially are always in "-force" mode, since we always assume
// the origin commits are downstream of where we are. Here is the outline: // the origin commits are downstream of where we are. Here is the outline:
// //
@ -24369,7 +24427,15 @@ GitEngine.prototype.branchStarter = function() {
if (this.generalArgs.length === 0) { if (this.generalArgs.length === 0) {
this.printBranches(this.getBranches()); var branches;
if (this.commandOptions['-a']) {
branches = this.getBranches();
} else if (this.commandOptions['-r']) {
branches = this.getRemoteBranches();
} else {
branches = this.getLocalBranches();
}
this.printBranches(branches);
return; return;
} }
@ -24378,12 +24444,19 @@ GitEngine.prototype.branchStarter = function() {
}; };
GitEngine.prototype.forceBranch = function(branchName, where) { GitEngine.prototype.forceBranch = function(branchName, where) {
branchName = this.crappyUnescape(branchName);
// if branchname doesn't exist... // if branchname doesn't exist...
if (!this.refs[branchName]) { if (!this.refs[branchName]) {
this.branch(branchName, where); this.branch(branchName, where);
} }
var branch = this.resolveID(branchName); var branch = this.resolveID(branchName);
if (branch.getIsRemote()) {
throw new GitError({
msg: intl.str('git-error-remote-branch')
});
}
if (branch.get('type') !== 'branch') { if (branch.get('type') !== 'branch') {
throw new GitError({ throw new GitError({
msg: intl.str('git-error-options') msg: intl.str('git-error-options')
@ -24407,7 +24480,6 @@ GitEngine.prototype.deleteBranch = function(name) {
if (target.get('type') !== 'branch' || if (target.get('type') !== 'branch' ||
target.get('id') == 'master' || target.get('id') == 'master' ||
this.HEAD.get('target') === target) { this.HEAD.get('target') === target) {
throw new GitError({ throw new GitError({
msg: intl.str('git-error-branch') msg: intl.str('git-error-branch')
}); });
@ -24415,6 +24487,12 @@ GitEngine.prototype.deleteBranch = function(name) {
// now we know it's a branch // now we know it's a branch
var branch = target; var branch = target;
// if its remote
if (target.getIsRemote()) {
throw new GitError({
msg: intl.str('git-error-remote-branch')
});
}
this.branchCollection.remove(branch); this.branchCollection.remove(branch);
this.refs[branch.get('id')] = undefined; this.refs[branch.get('id')] = undefined;
@ -25331,6 +25409,10 @@ require.define("/src/js/intl/strings.js",function(require,module,exports,__dirna
'en_US': 'Quick commit. Go Bears!', 'en_US': 'Quick commit. Go Bears!',
'zh_CN': '快速提交。上啊月熊!' 'zh_CN': '快速提交。上啊月熊!'
}, },
'git-error-remote-branch': {
'__desc__': 'One of the error messages for git',
'en_US': 'You cannot execute that command on a remote branch'
},
'git-error-origin-required': { 'git-error-origin-required': {
'__desc__': 'One of the error messages for git', '__desc__': 'One of the error messages for git',
'en_US': 'An origin is required for that command' 'en_US': 'An origin is required for that command'

File diff suppressed because one or more lines are too long

1
build/bundle.min.js vendored

File diff suppressed because one or more lines are too long

View file

@ -426,7 +426,7 @@
For a much easier time perusing the source, see the individual files at: For a much easier time perusing the source, see the individual files at:
https://github.com/pcottle/learnGitBranching https://github.com/pcottle/learnGitBranching
--> -->
<script src="build/bundle.min.6b104704.js"></script> <script src="build/bundle.js"></script>
<!-- The advantage of github pages: super-easy, simple, slick static hostic. <!-- The advantage of github pages: super-easy, simple, slick static hostic.
The downside? No raw logs to parse for analytics, so I have to include The downside? No raw logs to parse for analytics, so I have to include

View file

@ -132,6 +132,8 @@ GitOptionParser.prototype.getMasterOptionMap = function() {
'-d': false, '-d': false,
'-D': false, '-D': false,
'-f': false, '-f': false,
'-a': false,
'-r': false,
'--contains': false '--contains': false
}, },
checkout: { checkout: {

View file

@ -453,12 +453,27 @@ GitEngine.prototype.getBranches = function() {
id: branch.get('id'), id: branch.get('id'),
selected: this.HEAD.get('target') === branch, selected: this.HEAD.get('target') === branch,
target: branch.get('target'), target: branch.get('target'),
remote: branch.getIsRemote(),
obj: branch obj: branch
}); });
}, this); }, this);
return toReturn; return toReturn;
}; };
GitEngine.prototype.getRemoteBranches = function() {
var all = this.getBranches();
return _.filter(all, function(branchJSON) {
return branchJSON.remote === true;
});
};
GitEngine.prototype.getLocalBranches = function() {
var all = this.getBranches();
return _.filter(all, function(branchJSON) {
return branchJSON.remote === false;
});
};
GitEngine.prototype.printBranchesWithout = function(without) { GitEngine.prototype.printBranchesWithout = function(without) {
var commitToBranches = this.getUpstreamBranchSet(); var commitToBranches = this.getUpstreamBranchSet();
var commitID = this.getCommitFromRef(without).get('id'); var commitID = this.getCommitFromRef(without).get('id');
@ -734,7 +749,7 @@ GitEngine.prototype.fetchStarter = function() {
}; };
GitEngine.prototype.fetch = function() { GitEngine.prototype.fetch = function() {
// TODO refactor to use rebase animation stuff!! // TODO refactor to use rebase animation stuff!!!!
// ok so we essentially are always in "-force" mode, since we always assume // ok so we essentially are always in "-force" mode, since we always assume
// the origin commits are downstream of where we are. Here is the outline: // the origin commits are downstream of where we are. Here is the outline:
// //
@ -1575,7 +1590,15 @@ GitEngine.prototype.branchStarter = function() {
if (this.generalArgs.length === 0) { if (this.generalArgs.length === 0) {
this.printBranches(this.getBranches()); var branches;
if (this.commandOptions['-a']) {
branches = this.getBranches();
} else if (this.commandOptions['-r']) {
branches = this.getRemoteBranches();
} else {
branches = this.getLocalBranches();
}
this.printBranches(branches);
return; return;
} }
@ -1584,12 +1607,19 @@ GitEngine.prototype.branchStarter = function() {
}; };
GitEngine.prototype.forceBranch = function(branchName, where) { GitEngine.prototype.forceBranch = function(branchName, where) {
branchName = this.crappyUnescape(branchName);
// if branchname doesn't exist... // if branchname doesn't exist...
if (!this.refs[branchName]) { if (!this.refs[branchName]) {
this.branch(branchName, where); this.branch(branchName, where);
} }
var branch = this.resolveID(branchName); var branch = this.resolveID(branchName);
if (branch.getIsRemote()) {
throw new GitError({
msg: intl.str('git-error-remote-branch')
});
}
if (branch.get('type') !== 'branch') { if (branch.get('type') !== 'branch') {
throw new GitError({ throw new GitError({
msg: intl.str('git-error-options') msg: intl.str('git-error-options')
@ -1613,7 +1643,6 @@ GitEngine.prototype.deleteBranch = function(name) {
if (target.get('type') !== 'branch' || if (target.get('type') !== 'branch' ||
target.get('id') == 'master' || target.get('id') == 'master' ||
this.HEAD.get('target') === target) { this.HEAD.get('target') === target) {
throw new GitError({ throw new GitError({
msg: intl.str('git-error-branch') msg: intl.str('git-error-branch')
}); });
@ -1621,6 +1650,12 @@ GitEngine.prototype.deleteBranch = function(name) {
// now we know it's a branch // now we know it's a branch
var branch = target; var branch = target;
// if its remote
if (target.getIsRemote()) {
throw new GitError({
msg: intl.str('git-error-remote-branch')
});
}
this.branchCollection.remove(branch); this.branchCollection.remove(branch);
this.refs[branch.get('id')] = undefined; this.refs[branch.get('id')] = undefined;

View file

@ -52,6 +52,10 @@ exports.strings = {
'en_US': 'Quick commit. Go Bears!', 'en_US': 'Quick commit. Go Bears!',
'zh_CN': '快速提交。上啊月熊!' 'zh_CN': '快速提交。上啊月熊!'
}, },
'git-error-remote-branch': {
'__desc__': 'One of the error messages for git',
'en_US': 'You cannot execute that command on a remote branch'
},
'git-error-origin-required': { 'git-error-origin-required': {
'__desc__': 'One of the error messages for git', '__desc__': 'One of the error messages for git',
'en_US': 'An origin is required for that command' 'en_US': 'An origin is required for that command'

View file

@ -1,6 +1,6 @@
Mega Things Mega Things
~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
[ ] origin support [-] origin support
Intl TODO Intl TODO
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
@ -13,21 +13,9 @@ Big Things
Origin things: Origin things:
~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~
[ ] setup remote model, for now it just has:
-- a name
-- a URL (default for now)?
-- points to a completely new git engine instance to interact with
[ ] Setup branch model to include: [ ] Setup branch model to include:
-- is remote (custom getter) [-] remote branch it is tracking (points to a remote branch model)
-- remote it is on (if applicable), just points to a remote model [ ] set checkout -b branch __remoteBranch to track the remote branch
-- remote branch it is tracking (points to a remote branch model)
-- set checkout -b branch __remoteBranch to track the remote branch
[ ] fix checkout to:
-- if you go to __remoteBranch, it just goes to the commit since its read-only.
[ ] fix branch -f to:
-- not allow moving remote branches?
[ ] fix branch -a and branch -r to: [ ] fix branch -a and branch -r to:
-- show remote branches or all branches -- show remote branches or all branches
@ -57,6 +45,9 @@ Ideas for cleaning
Done things: Done things:
(I only started this on Dec 17th 2012 to get a better sense of what was done) (I only started this on Dec 17th 2012 to get a better sense of what was done)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[x] fix branch -f to not allow moving remote branches?
[x] fix checkout to: if you go to __remoteBranch, it just goes to the commit since its read-only.
[x] is remote (custom getter)
[x] hash agnotisc comparison with asserts for ammends [x] hash agnotisc comparison with asserts for ammends
[x] level builder intl aware [x] level builder intl aware
[x] rest of views/index translation [x] rest of views/index translation