equal
deleted
inserted
replaced
26 self.repo = hg.repository(self.ui, path) |
26 self.repo = hg.repository(self.ui, path) |
27 except: |
27 except: |
28 raise NoRepo("could not open hg repo %s as sink" % path) |
28 raise NoRepo("could not open hg repo %s as sink" % path) |
29 self.lock = None |
29 self.lock = None |
30 self.wlock = None |
30 self.wlock = None |
|
31 self.filemapmode = False |
31 |
32 |
32 def before(self): |
33 def before(self): |
33 self.wlock = self.repo.wlock() |
34 self.wlock = self.repo.wlock() |
34 self.lock = self.repo.lock() |
35 self.lock = self.repo.lock() |
35 self.repo.dirstate.clear() |
36 self.repo.dirstate.clear() |
94 for p in parents: |
95 for p in parents: |
95 if p not in seen: |
96 if p not in seen: |
96 pl.append(p) |
97 pl.append(p) |
97 seen[p] = 1 |
98 seen[p] = 1 |
98 parents = pl |
99 parents = pl |
|
100 nparents = len(parents) |
|
101 if self.filemapmode and nparents == 1: |
|
102 m1node = self.repo.changelog.read(bin(parents[0]))[0] |
|
103 parent = parents[0] |
99 |
104 |
100 if len(parents) < 2: parents.append("0" * 40) |
105 if len(parents) < 2: parents.append("0" * 40) |
101 if len(parents) < 2: parents.append("0" * 40) |
106 if len(parents) < 2: parents.append("0" * 40) |
102 p2 = parents.pop(0) |
107 p2 = parents.pop(0) |
103 |
108 |
115 bin(p1), bin(p2), extra=extra) |
120 bin(p1), bin(p2), extra=extra) |
116 self.repo.dirstate.clear() |
121 self.repo.dirstate.clear() |
117 text = "(octopus merge fixup)\n" |
122 text = "(octopus merge fixup)\n" |
118 p2 = hg.hex(self.repo.changelog.tip()) |
123 p2 = hg.hex(self.repo.changelog.tip()) |
119 |
124 |
|
125 if self.filemapmode and nparents == 1: |
|
126 man = self.repo.manifest |
|
127 mnode = self.repo.changelog.read(bin(p2))[0] |
|
128 if not man.cmp(m1node, man.revision(mnode)): |
|
129 self.repo.rollback() |
|
130 self.repo.dirstate.clear() |
|
131 return parent |
120 return p2 |
132 return p2 |
121 |
133 |
122 def puttags(self, tags): |
134 def puttags(self, tags): |
123 try: |
135 try: |
124 old = self.repo.wfile(".hgtags").read() |
136 old = self.repo.wfile(".hgtags").read() |
151 tagparent = nullid |
163 tagparent = nullid |
152 self.repo.rawcommit([".hgtags"], "update tags", "convert-repo", |
164 self.repo.rawcommit([".hgtags"], "update tags", "convert-repo", |
153 date, tagparent, nullid) |
165 date, tagparent, nullid) |
154 return hex(self.repo.changelog.tip()) |
166 return hex(self.repo.changelog.tip()) |
155 |
167 |
|
168 def setfilemapmode(self, active): |
|
169 self.filemapmode = active |
|
170 |
156 class mercurial_source(converter_source): |
171 class mercurial_source(converter_source): |
157 def __init__(self, ui, path, rev=None): |
172 def __init__(self, ui, path, rev=None): |
158 converter_source.__init__(self, ui, path, rev) |
173 converter_source.__init__(self, ui, path, rev) |
159 try: |
174 try: |
160 self.repo = hg.repository(self.ui, path) |
175 self.repo = hg.repository(self.ui, path) |