80 os.mkdir(path) |
80 os.mkdir(path) |
81 os.mkdir(self.path) |
81 os.mkdir(self.path) |
82 os.mkdir(self.join("data")) |
82 os.mkdir(self.join("data")) |
83 |
83 |
84 self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root) |
84 self.dirstate = dirstate.dirstate(self.opener, self.ui, self.root) |
|
85 |
|
86 def url(self): |
|
87 return 'file:' + self.root |
85 |
88 |
86 def hook(self, name, throw=False, **args): |
89 def hook(self, name, throw=False, **args): |
87 def callhook(hname, funcname): |
90 def callhook(hname, funcname): |
88 '''call python hook. hook is callable object, looked up as |
91 '''call python hook. hook is callable object, looked up as |
89 name in python module. if callable returns "true", hook |
92 name in python module. if callable returns "true", hook |
1183 |
1186 |
1184 if heads is None: |
1187 if heads is None: |
1185 cg = remote.changegroup(fetch, 'pull') |
1188 cg = remote.changegroup(fetch, 'pull') |
1186 else: |
1189 else: |
1187 cg = remote.changegroupsubset(fetch, heads, 'pull') |
1190 cg = remote.changegroupsubset(fetch, heads, 'pull') |
1188 return self.addchangegroup(cg, 'pull') |
1191 return self.addchangegroup(cg, 'pull', remote.url()) |
1189 |
1192 |
1190 def push(self, remote, force=False, revs=None): |
1193 def push(self, remote, force=False, revs=None): |
1191 # there are two ways to push to remote repo: |
1194 # there are two ways to push to remote repo: |
1192 # |
1195 # |
1193 # addchangegroup assumes local user can lock remote |
1196 # addchangegroup assumes local user can lock remote |
1239 lock = remote.lock() |
1242 lock = remote.lock() |
1240 |
1243 |
1241 ret = self.prepush(remote, force, revs) |
1244 ret = self.prepush(remote, force, revs) |
1242 if ret[0] is not None: |
1245 if ret[0] is not None: |
1243 cg, remote_heads = ret |
1246 cg, remote_heads = ret |
1244 return remote.addchangegroup(cg, 'push') |
1247 return remote.addchangegroup(cg, 'push', self.url()) |
1245 return ret[1] |
1248 return ret[1] |
1246 |
1249 |
1247 def push_unbundle(self, remote, force, revs): |
1250 def push_unbundle(self, remote, force, revs): |
1248 # local repo finds heads on server, finds out what revs it |
1251 # local repo finds heads on server, finds out what revs it |
1249 # must push. once revs transferred, if server finds it has |
1252 # must push. once revs transferred, if server finds it has |
1592 if nodes: |
1595 if nodes: |
1593 self.hook('outgoing', node=hex(nodes[0]), source=source) |
1596 self.hook('outgoing', node=hex(nodes[0]), source=source) |
1594 |
1597 |
1595 return util.chunkbuffer(gengroup()) |
1598 return util.chunkbuffer(gengroup()) |
1596 |
1599 |
1597 def addchangegroup(self, source, srctype): |
1600 def addchangegroup(self, source, srctype, url): |
1598 """add changegroup to repo. |
1601 """add changegroup to repo. |
1599 returns number of heads modified or added + 1.""" |
1602 returns number of heads modified or added + 1.""" |
1600 |
1603 |
1601 def csmap(x): |
1604 def csmap(x): |
1602 self.ui.debug(_("add changeset %s\n") % short(x)) |
1605 self.ui.debug(_("add changeset %s\n") % short(x)) |
1673 " with %d changes to %d files%s\n") |
1676 " with %d changes to %d files%s\n") |
1674 % (changesets, revisions, files, heads)) |
1677 % (changesets, revisions, files, heads)) |
1675 |
1678 |
1676 if changesets > 0: |
1679 if changesets > 0: |
1677 self.hook('pretxnchangegroup', throw=True, |
1680 self.hook('pretxnchangegroup', throw=True, |
1678 node=hex(self.changelog.node(cor+1)), source=srctype) |
1681 node=hex(self.changelog.node(cor+1)), source=srctype, |
|
1682 url=url) |
1679 |
1683 |
1680 tr.close() |
1684 tr.close() |
1681 |
1685 |
1682 if changesets > 0: |
1686 if changesets > 0: |
1683 self.hook("changegroup", node=hex(self.changelog.node(cor+1)), |
1687 self.hook("changegroup", node=hex(self.changelog.node(cor+1)), |
1684 source=srctype) |
1688 source=srctype, url=url) |
1685 |
1689 |
1686 for i in range(cor + 1, cnr + 1): |
1690 for i in range(cor + 1, cnr + 1): |
1687 self.hook("incoming", node=hex(self.changelog.node(i)), |
1691 self.hook("incoming", node=hex(self.changelog.node(i)), |
1688 source=srctype) |
1692 source=srctype, url=url) |
1689 |
1693 |
1690 return newheads - oldheads + 1 |
1694 return newheads - oldheads + 1 |
1691 |
1695 |
1692 def update(self, node, allow=False, force=False, choose=None, |
1696 def update(self, node, allow=False, force=False, choose=None, |
1693 moddirstate=True, forcemerge=False, wlock=None, show_stats=True): |
1697 moddirstate=True, forcemerge=False, wlock=None, show_stats=True): |