Mercurial > public > mercurial-scm > hg
comparison mercurial/hg.py @ 18944:a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
unionrepo is just like bundlerepo without bundles.
The implementation is very similar to bundlerepo, but I don't see any obvious
way to generalize it.
Some most obvious use cases for this would be log and diff across local repos,
as a kind of preview of pulls, for instance:
$ hg -R union:repo1+repo2 heads
$ hg -R union:repo1+repo2 log -r REPO1REV -r REPO2REV
$ hg -R union:repo1+repo2 log -r '::REPO1REV-::REPO2REV'
$ hg -R union:repo1+repo2 log -r 'ancestor(REPO1REV,REPO2REV)'
$ hg -R union:repo1+repo2 diff -r REPO1REV -r REPO2REV
This is going to be used in RhodeCode, and Bitbucket already uses something
similar. Having a core implementation would be beneficial.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Fri, 18 Jan 2013 15:54:09 +0100 |
parents | b6b9475c563a |
children | 3b96d6e44a4d 0af993732f66 |
comparison
equal
deleted
inserted
replaced
18943:27e8dfc2c338 | 18944:a9c443b3b240 |
---|---|
7 # GNU General Public License version 2 or any later version. | 7 # GNU General Public License version 2 or any later version. |
8 | 8 |
9 from i18n import _ | 9 from i18n import _ |
10 from lock import release | 10 from lock import release |
11 from node import hex, nullid | 11 from node import hex, nullid |
12 import localrepo, bundlerepo, httppeer, sshpeer, statichttprepo, bookmarks | 12 import localrepo, bundlerepo, unionrepo, httppeer, sshpeer, statichttprepo |
13 import lock, util, extensions, error, node, scmutil, phases, url | 13 import bookmarks, lock, util, extensions, error, node, scmutil, phases, url |
14 import cmdutil, discovery | 14 import cmdutil, discovery |
15 import merge as mergemod | 15 import merge as mergemod |
16 import verify as verifymod | 16 import verify as verifymod |
17 import errno, os, shutil | 17 import errno, os, shutil |
18 | 18 |
62 u.fragment = None | 62 u.fragment = None |
63 return str(u), (branch, branches or []) | 63 return str(u), (branch, branches or []) |
64 | 64 |
65 schemes = { | 65 schemes = { |
66 'bundle': bundlerepo, | 66 'bundle': bundlerepo, |
67 'union': unionrepo, | |
67 'file': _local, | 68 'file': _local, |
68 'http': httppeer, | 69 'http': httppeer, |
69 'https': httppeer, | 70 'https': httppeer, |
70 'ssh': sshpeer, | 71 'ssh': sshpeer, |
71 'static-http': statichttprepo, | 72 'static-http': statichttprepo, |