mercurial/localrepo.py
changeset 2673 109a22f5434a
parent 2661 5c10b7ed3411
child 2740 386f04d6ecb3
equal deleted inserted replaced
2671:82864a2eb709 2673:109a22f5434a
    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))
  1606             return cl.rev(x)
  1609             return cl.rev(x)
  1607 
  1610 
  1608         if not source:
  1611         if not source:
  1609             return 0
  1612             return 0
  1610 
  1613 
  1611         self.hook('prechangegroup', throw=True, source=srctype)
  1614         self.hook('prechangegroup', throw=True, source=srctype, url=url)
  1612 
  1615 
  1613         changesets = files = revisions = 0
  1616         changesets = files = revisions = 0
  1614 
  1617 
  1615         tr = self.transaction()
  1618         tr = self.transaction()
  1616 
  1619 
  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):