Mercurial > hg
annotate mercurial/unionrepo.py @ 29010:e868d8ee7c8f stable
bdiff: unify duplicate normalize loops
We're about to make the while loop check more complicated, so let's simplify
first.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Thu, 21 Apr 2016 21:37:13 -0500 |
parents | b966e35aad78 |
children | 1767723f71cf |
rev | line source |
---|---|
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
1 # unionrepo.py - repository class for viewing union of repository changesets |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
2 # |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
3 # Derived from bundlerepo.py |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
4 # Copyright 2006, 2007 Benoit Boissinot <bboissin@gmail.com> |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
5 # Copyright 2013 Unity Technologies, Mads Kiilerich <madski@unity3d.com> |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
6 # |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
7 # This software may be used and distributed according to the terms of the |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
8 # GNU General Public License version 2 or any later version. |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
9 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
10 """Repository class for "in-memory pull" of one local repository to another, |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
11 allowing operations like diff and log with revsets. |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
12 """ |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
13 |
25988
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
14 from __future__ import absolute_import |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
15 |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
16 import os |
25988
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
17 |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
18 from .i18n import _ |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
19 from .node import nullid |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
20 |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
21 from . import ( |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
22 changelog, |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
23 cmdutil, |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26230
diff
changeset
|
24 error, |
25988
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
25 filelog, |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
26 localrepo, |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
27 manifest, |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
28 mdiff, |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
29 pathutil, |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
30 revlog, |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
31 scmutil, |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
32 util, |
83f220c7d6f0
unionrepo: use absolute_import
Gregory Szorc <gregory.szorc@gmail.com>
parents:
24835
diff
changeset
|
33 ) |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
34 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
35 class unionrevlog(revlog.revlog): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
36 def __init__(self, opener, indexfile, revlog2, linkmapper): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
37 # How it works: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
38 # To retrieve a revision, we just need to know the node id so we can |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
39 # look it up in revlog2. |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
40 # |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
41 # To differentiate a rev in the second revlog from a rev in the revlog, |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
42 # we check revision against repotiprev. |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
43 opener = scmutil.readonlyvfs(opener) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
44 revlog.revlog.__init__(self, opener, indexfile) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
45 self.revlog2 = revlog2 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
46 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
47 n = len(self) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
48 self.repotiprev = n - 1 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
49 self.bundlerevs = set() # used by 'bundle()' revset expression |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
50 for rev2 in self.revlog2: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
51 rev = self.revlog2.index[rev2] |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
52 # rev numbers - in revlog2, very different from self.rev |
26230
6b16a3538c20
unionrepo: take delta base in account with building unified revlog
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25988
diff
changeset
|
53 _start, _csize, _rsize, base, linkrev, p1rev, p2rev, node = rev |
27433
12f727a5b434
changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com>
parents:
26587
diff
changeset
|
54 flags = _start & 0xFFFF |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
55 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
56 if linkmapper is None: # link is to same revlog |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
57 assert linkrev == rev2 # we never link back |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
58 link = n |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
59 else: # rev must be mapped from repo2 cl to unified cl by linkmapper |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
60 link = linkmapper(linkrev) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
61 |
26230
6b16a3538c20
unionrepo: take delta base in account with building unified revlog
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25988
diff
changeset
|
62 if linkmapper is not None: # link is to same revlog |
6b16a3538c20
unionrepo: take delta base in account with building unified revlog
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25988
diff
changeset
|
63 base = linkmapper(base) |
6b16a3538c20
unionrepo: take delta base in account with building unified revlog
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
25988
diff
changeset
|
64 |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
65 if node in self.nodemap: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
66 # this happens for the common revlog revisions |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
67 self.bundlerevs.add(self.nodemap[node]) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
68 continue |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
69 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
70 p1node = self.revlog2.node(p1rev) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
71 p2node = self.revlog2.node(p2rev) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
72 |
27433
12f727a5b434
changegroup: add flags field to cg3 delta header
Mike Edgar <adgar@google.com>
parents:
26587
diff
changeset
|
73 e = (flags, None, None, base, |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
74 link, self.rev(p1node), self.rev(p2node), node) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
75 self.index.insert(-1, e) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
76 self.nodemap[node] = n |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
77 self.bundlerevs.add(n) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
78 n += 1 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
79 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
80 def _chunk(self, rev): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
81 if rev <= self.repotiprev: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
82 return revlog.revlog._chunk(self, rev) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
83 return self.revlog2._chunk(self.node(rev)) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
84 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
85 def revdiff(self, rev1, rev2): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
86 """return or calculate a delta between two revisions""" |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
87 if rev1 > self.repotiprev and rev2 > self.repotiprev: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
88 return self.revlog2.revdiff( |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
89 self.revlog2.rev(self.node(rev1)), |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
90 self.revlog2.rev(self.node(rev2))) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
91 elif rev1 <= self.repotiprev and rev2 <= self.repotiprev: |
19630
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
92 return self.baserevdiff(rev1, rev2) |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
93 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
94 return mdiff.textdiff(self.revision(self.node(rev1)), |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
95 self.revision(self.node(rev2))) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
96 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
97 def revision(self, nodeorrev): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
98 """return an uncompressed revision of a given node or revision |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
99 number. |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
100 """ |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
101 if isinstance(nodeorrev, int): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
102 rev = nodeorrev |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
103 node = self.node(rev) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
104 else: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
105 node = nodeorrev |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
106 rev = self.rev(node) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
107 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
108 if node == nullid: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
109 return "" |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
110 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
111 if rev > self.repotiprev: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
112 text = self.revlog2.revision(node) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
113 self._cache = (node, rev, text) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
114 else: |
19630
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
115 text = self.baserevision(rev) |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
116 # already cached |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
117 return text |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
118 |
19630
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
119 def baserevision(self, nodeorrev): |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
120 # Revlog subclasses may override 'revision' method to modify format of |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
121 # content retrieved from revlog. To use unionrevlog with such class one |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
122 # needs to override 'baserevision' and make more specific call here. |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
123 return revlog.revlog.revision(self, nodeorrev) |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
124 |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
125 def baserevdiff(self, rev1, rev2): |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
126 # Exists for the same purpose as baserevision. |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
127 return revlog.revlog.revdiff(self, rev1, rev2) |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
128 |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
129 def addrevision(self, text, transaction, link, p1=None, p2=None, d=None): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
130 raise NotImplementedError |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
131 def addgroup(self, revs, linkmapper, transaction): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
132 raise NotImplementedError |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
133 def strip(self, rev, minlink): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
134 raise NotImplementedError |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
135 def checksize(self): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
136 raise NotImplementedError |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
137 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
138 class unionchangelog(unionrevlog, changelog.changelog): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
139 def __init__(self, opener, opener2): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
140 changelog.changelog.__init__(self, opener) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
141 linkmapper = None |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
142 changelog2 = changelog.changelog(opener2) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
143 unionrevlog.__init__(self, opener, self.indexfile, changelog2, |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
144 linkmapper) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
145 |
19630
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
146 def baserevision(self, nodeorrev): |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
147 # Although changelog doesn't override 'revision' method, some extensions |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
148 # may replace this class with another that does. Same story with |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
149 # manifest and filelog classes. |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
150 return changelog.changelog.revision(self, nodeorrev) |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
151 |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
152 def baserevdiff(self, rev1, rev2): |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
153 return changelog.changelog.revdiff(self, rev1, rev2) |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
154 |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
155 class unionmanifest(unionrevlog, manifest.manifest): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
156 def __init__(self, opener, opener2, linkmapper): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
157 manifest.manifest.__init__(self, opener) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
158 manifest2 = manifest.manifest(opener2) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
159 unionrevlog.__init__(self, opener, self.indexfile, manifest2, |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
160 linkmapper) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
161 |
19630
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
162 def baserevision(self, nodeorrev): |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
163 return manifest.manifest.revision(self, nodeorrev) |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
164 |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
165 def baserevdiff(self, rev1, rev2): |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
166 return manifest.manifest.revdiff(self, rev1, rev2) |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
167 |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
168 class unionfilelog(unionrevlog, filelog.filelog): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
169 def __init__(self, opener, path, opener2, linkmapper, repo): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
170 filelog.filelog.__init__(self, opener, path) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
171 filelog2 = filelog.filelog(opener2, path) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
172 unionrevlog.__init__(self, opener, self.indexfile, filelog2, |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
173 linkmapper) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
174 self._repo = repo |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
175 |
19630
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
176 def baserevision(self, nodeorrev): |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
177 return filelog.filelog.revision(self, nodeorrev) |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
178 |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
179 def baserevdiff(self, rev1, rev2): |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
180 return filelog.filelog.revdiff(self, rev1, rev2) |
bb67f630b335
unionrevlog: extract 'baserevision' and 'baserevdiff' methods
Wojciech Lopata <lopek@fb.com>
parents:
18944
diff
changeset
|
181 |
24118
76f6ae06ddf5
revlog: add "iscensored()" to revlog public API
Mike Edgar <adgar@google.com>
parents:
24003
diff
changeset
|
182 def iscensored(self, rev): |
76f6ae06ddf5
revlog: add "iscensored()" to revlog public API
Mike Edgar <adgar@google.com>
parents:
24003
diff
changeset
|
183 """Check if a revision is censored.""" |
76f6ae06ddf5
revlog: add "iscensored()" to revlog public API
Mike Edgar <adgar@google.com>
parents:
24003
diff
changeset
|
184 if rev <= self.repotiprev: |
76f6ae06ddf5
revlog: add "iscensored()" to revlog public API
Mike Edgar <adgar@google.com>
parents:
24003
diff
changeset
|
185 return filelog.filelog.iscensored(self, rev) |
27723
bf86e3e87123
unionrepo: fix wrong rev being checked in iscensored (issue5024)
Sean Farley <sean@farley.io>
parents:
26587
diff
changeset
|
186 node = self.node(rev) |
bf86e3e87123
unionrepo: fix wrong rev being checked in iscensored (issue5024)
Sean Farley <sean@farley.io>
parents:
26587
diff
changeset
|
187 return self.revlog2.iscensored(self.revlog2.rev(node)) |
24118
76f6ae06ddf5
revlog: add "iscensored()" to revlog public API
Mike Edgar <adgar@google.com>
parents:
24003
diff
changeset
|
188 |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
189 class unionpeer(localrepo.localpeer): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
190 def canpush(self): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
191 return False |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
192 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
193 class unionrepository(localrepo.localrepository): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
194 def __init__(self, ui, path, path2): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
195 localrepo.localrepository.__init__(self, ui, path) |
20790
49f2d5644f04
config: set a 'source' in most cases where config don't come from file but code
Mads Kiilerich <madski@unity3d.com>
parents:
19630
diff
changeset
|
196 self.ui.setconfig('phases', 'publish', False, 'unionrepo') |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
197 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
198 self._url = 'union:%s+%s' % (util.expandpath(path), |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
199 util.expandpath(path2)) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
200 self.repo2 = localrepo.localrepository(ui, path2) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
201 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
202 @localrepo.unfilteredpropertycache |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
203 def changelog(self): |
23878
37a92908a382
localrepo: remove all external users of localrepo.sopener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
20790
diff
changeset
|
204 return unionchangelog(self.svfs, self.repo2.svfs) |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
205 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
206 def _clrev(self, rev2): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
207 """map from repo2 changelog rev to temporary rev in self.changelog""" |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
208 node = self.repo2.changelog.node(rev2) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
209 return self.changelog.rev(node) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
210 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
211 @localrepo.unfilteredpropertycache |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
212 def manifest(self): |
23878
37a92908a382
localrepo: remove all external users of localrepo.sopener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
20790
diff
changeset
|
213 return unionmanifest(self.svfs, self.repo2.svfs, |
28222
b966e35aad78
unionrepo: properly handle hidden linkrev in revlog (issue5070)
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27750
diff
changeset
|
214 self.unfiltered()._clrev) |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
215 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
216 def url(self): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
217 return self._url |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
218 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
219 def file(self, f): |
23878
37a92908a382
localrepo: remove all external users of localrepo.sopener
Angel Ezquerra <angel.ezquerra@gmail.com>
parents:
20790
diff
changeset
|
220 return unionfilelog(self.svfs, f, self.repo2.svfs, |
28222
b966e35aad78
unionrepo: properly handle hidden linkrev in revlog (issue5070)
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
27750
diff
changeset
|
221 self.unfiltered()._clrev, self) |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
222 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
223 def close(self): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
224 self.repo2.close() |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
225 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
226 def cancopy(self): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
227 return False |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
228 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
229 def peer(self): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
230 return unionpeer(self) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
231 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
232 def getcwd(self): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
233 return os.getcwd() # always outside the repo |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
234 |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
235 def instance(ui, path, create): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
236 if create: |
26587
56b2bcea2529
error: get Abort from 'error' instead of 'util'
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
26230
diff
changeset
|
237 raise error.Abort(_('cannot create new union repository')) |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
238 parentpath = ui.config("bundle", "mainreporoot", "") |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
239 if not parentpath: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
240 # try to find the correct path to the working directory repo |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
241 parentpath = cmdutil.findrepo(os.getcwd()) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
242 if parentpath is None: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
243 parentpath = '' |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
244 if parentpath: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
245 # Try to make the full path relative so we get a nice, short URL. |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
246 # In particular, we don't want temp dir names in test outputs. |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
247 cwd = os.getcwd() |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
248 if parentpath == cwd: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
249 parentpath = '' |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
250 else: |
24835
e4f75c93f073
unionrepo: use pathutil.normasprefix to ensure os.sep at the end of cwd
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents:
24118
diff
changeset
|
251 cwd = pathutil.normasprefix(cwd) |
18944
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
252 if parentpath.startswith(cwd): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
253 parentpath = parentpath[len(cwd):] |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
254 if path.startswith('union:'): |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
255 s = path.split(":", 1)[1].split("+", 1) |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
256 if len(s) == 1: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
257 repopath, repopath2 = parentpath, s[0] |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
258 else: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
259 repopath, repopath2 = s |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
260 else: |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
261 repopath, repopath2 = parentpath, path |
a9c443b3b240
unionrepo: read-only operations on a union of two localrepos
Mads Kiilerich <madski@unity3d.com>
parents:
diff
changeset
|
262 return unionrepository(ui, repopath, repopath2) |