summaryrefslogtreecommitdiffstats
path: root/subcmds/upload.py
diff options
context:
space:
mode:
authorDavid James <davidjames@google.com>2013-10-11 17:03:19 -0700
committerDavid James <davidjames@google.com>2013-10-14 15:34:32 -0700
commit8d20116038ff78b22069dd4e993b5819775f03d1 (patch)
tree4c7ec381f2452d3ae4ed5332230a8d7a61e6ec2b /subcmds/upload.py
parentb25ea555c39cd500740acb74fa9f1dab71588266 (diff)
downloadgit-repo-8d20116038ff78b22069dd4e993b5819775f03d1.tar.gz
repo: Support multiple branches for the same project.
It is often useful to be able to include the same project more than once, but with different branches and placed in different paths in the workspace. Add this feature. This CL adds the concept of an object directory. The object directory stores objects that can be shared amongst several working trees. For newly synced repositories, we set up the git repo now to share its objects with an object repo. Each worktree for a given repo shares objects, but has an independent set of references and branches. This ensures that repo only has to update the objects once; however the references for each worktree are updated separately. Storing the references separately is needed to ensure that commits to a branch on one worktree will not change the HEAD commits of the others. One nice side effect of sharing objects between different worktrees is that you can easily cherry-pick changes between the two worktrees without needing to fetch them. Bug: Issue 141 Change-Id: I5e2f4e1a7abb56f9d3f310fa6fd0c17019330ecd
Diffstat (limited to 'subcmds/upload.py')
-rw-r--r--subcmds/upload.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/subcmds/upload.py b/subcmds/upload.py
index 8d801e08..9ad55d79 100644
--- a/subcmds/upload.py
+++ b/subcmds/upload.py
@@ -431,8 +431,10 @@ Gerrit Code Review: http://code.google.com/p/gerrit/
431 hook = RepoHook('pre-upload', self.manifest.repo_hooks_project, 431 hook = RepoHook('pre-upload', self.manifest.repo_hooks_project,
432 self.manifest.topdir, abort_if_user_denies=True) 432 self.manifest.topdir, abort_if_user_denies=True)
433 pending_proj_names = [project.name for (project, avail) in pending] 433 pending_proj_names = [project.name for (project, avail) in pending]
434 pending_worktrees = [project.worktree for (project, avail) in pending]
434 try: 435 try:
435 hook.Run(opt.allow_all_hooks, project_list=pending_proj_names) 436 hook.Run(opt.allow_all_hooks, project_list=pending_proj_names,
437 worktree_list=pending_worktrees)
436 except HookError as e: 438 except HookError as e:
437 print("ERROR: %s" % str(e), file=sys.stderr) 439 print("ERROR: %s" % str(e), file=sys.stderr)
438 return 440 return