Merge "Fix prune when bare git has detached head"
diff --git a/subcmds/rebase.py b/subcmds/rebase.py
index 1bdc1f0..7479697 100644
--- a/subcmds/rebase.py
+++ b/subcmds/rebase.py
@@ -54,6 +54,11 @@
p.add_option('--auto-stash',
dest='auto_stash', action='store_true',
help='Stash local modifications before starting')
+ p.add_option('-m', '--onto-manifest',
+ dest='onto_manifest', action='store_true',
+ help='Rebase onto the manifest version instead of upstream '
+ 'HEAD. This helps to make sure the local tree stays '
+ 'consistent if you previously synced to a manifest.')
def Execute(self, opt, args):
all_projects = self.GetProjects(args)
@@ -106,6 +111,10 @@
if opt.interactive:
args.append("-i")
+ if opt.onto_manifest:
+ args.append('--onto')
+ args.append(project.revisionExpr)
+
args.append(upbranch.LocalMerge)
print('# %s: rebasing %s -> %s'
diff --git a/subcmds/start.py b/subcmds/start.py
index 940c341..d1430a9 100644
--- a/subcmds/start.py
+++ b/subcmds/start.py
@@ -57,10 +57,15 @@
print("error: at least one project must be specified", file=sys.stderr)
sys.exit(1)
+ all_projects = self.GetProjects(projects,
+ missing_ok=bool(self.gitc_manifest))
+
+ # This must happen after we find all_projects, since GetProjects may need
+ # the local directory, which will disappear once we save the GITC manifest.
if self.gitc_manifest:
- all_projects = self.GetProjects(projects, manifest=self.gitc_manifest,
- missing_ok=True)
- for project in all_projects:
+ gitc_projects = self.GetProjects(projects, manifest=self.gitc_manifest,
+ missing_ok=True)
+ for project in gitc_projects:
if project.old_revision:
project.already_synced = True
else:
@@ -70,8 +75,10 @@
# Save the GITC manifest.
gitc_utils.save_manifest(self.gitc_manifest)
- all_projects = self.GetProjects(projects,
- missing_ok=bool(self.gitc_manifest))
+ # Make sure we have a valid CWD
+ if not os.path.exists(os.getcwd()):
+ os.chdir(self.manifest.topdir)
+
pm = Progress('Starting %s' % nb, len(all_projects))
for project in all_projects:
pm.update()