diff --git a/project.py b/project.py index 8212e0c..4076bc5 100755 --- a/project.py +++ b/project.py @@ -1697,7 +1697,7 @@ class Project(object): # Branch Management ## - def StartBranch(self, name, branch_merge=''): + def StartBranch(self, name, branch_merge='', revision=None): """Create a new branch off the manifest's revision. """ if not branch_merge: @@ -1718,7 +1718,11 @@ class Project(object): branch.merge = branch_merge if not branch.merge.startswith('refs/') and not ID_RE.match(branch_merge): branch.merge = R_HEADS + branch_merge - revid = self.GetRevisionId(all_refs) + + if revision is None: + revid = self.GetRevisionId(all_refs) + else: + revid = self.work_git.rev_parse(revision) if head.startswith(R_HEADS): try: diff --git a/subcmds/start.py b/subcmds/start.py index 5d4c9c0..6ec0b2c 100644 --- a/subcmds/start.py +++ b/subcmds/start.py @@ -40,6 +40,10 @@ revision specified in the manifest. p.add_option('--all', dest='all', action='store_true', help='begin branch in all projects') + p.add_option('-r', '--rev', '--revision', dest='revision', + help='point branch at this revision instead of upstream') + p.add_option('--head', dest='revision', action='store_const', const='HEAD', + help='abbreviation for --rev HEAD') def ValidateOptions(self, opt, args): if not args: @@ -108,7 +112,8 @@ revision specified in the manifest. else: branch_merge = self.manifest.default.revisionExpr - if not project.StartBranch(nb, branch_merge=branch_merge): + if not project.StartBranch( + nb, branch_merge=branch_merge, revision=opt.revision): err.append(project) pm.end()