mercurial/localrepo.py
changeset 10430 5cef810e588f
parent 10429 1c50a954a524
child 10432 8a8030fc57d6
equal deleted inserted replaced
10429:1c50a954a524 10430:5cef810e588f
  1992         try:
  1992         try:
  1993             trp = weakref.proxy(tr)
  1993             trp = weakref.proxy(tr)
  1994             # pull off the changeset group
  1994             # pull off the changeset group
  1995             self.ui.status(_("adding changesets\n"))
  1995             self.ui.status(_("adding changesets\n"))
  1996             clstart = len(cl)
  1996             clstart = len(cl)
  1997             chunkiter = changegroup.chunkiter(source)
  1997             class prog(object):
       
  1998                 step = 'changesets'
       
  1999                 count = 1
       
  2000                 ui = self.ui
       
  2001                 def __call__(self):
       
  2002                     self.ui.progress(self.step, self.count, unit='chunks')
       
  2003                     self.count += 1
       
  2004             pr = prog()
       
  2005             chunkiter = changegroup.chunkiter(source, progress=pr)
  1998             if cl.addgroup(chunkiter, csmap, trp) is None and not emptyok:
  2006             if cl.addgroup(chunkiter, csmap, trp) is None and not emptyok:
  1999                 raise util.Abort(_("received changelog group is empty"))
  2007                 raise util.Abort(_("received changelog group is empty"))
  2000             clend = len(cl)
  2008             clend = len(cl)
  2001             changesets = clend - clstart
  2009             changesets = clend - clstart
       
  2010             self.ui.progress('changesets', None)
  2002 
  2011 
  2003             # pull off the manifest group
  2012             # pull off the manifest group
  2004             self.ui.status(_("adding manifests\n"))
  2013             self.ui.status(_("adding manifests\n"))
  2005             chunkiter = changegroup.chunkiter(source)
  2014             pr.step = 'manifests'
       
  2015             pr.count = 1
       
  2016             chunkiter = changegroup.chunkiter(source, progress=pr)
  2006             # no need to check for empty manifest group here:
  2017             # no need to check for empty manifest group here:
  2007             # if the result of the merge of 1 and 2 is the same in 3 and 4,
  2018             # if the result of the merge of 1 and 2 is the same in 3 and 4,
  2008             # no new manifest will be created and the manifest group will
  2019             # no new manifest will be created and the manifest group will
  2009             # be empty during the pull
  2020             # be empty during the pull
  2010             self.manifest.addgroup(chunkiter, revmap, trp)
  2021             self.manifest.addgroup(chunkiter, revmap, trp)
       
  2022             self.ui.progress('manifests', None)
  2011 
  2023 
  2012             needfiles = {}
  2024             needfiles = {}
  2013             if self.ui.configbool('server', 'validate', default=False):
  2025             if self.ui.configbool('server', 'validate', default=False):
  2014                 # validate incoming csets have their manifests
  2026                 # validate incoming csets have their manifests
  2015                 for cset in xrange(clstart, clend):
  2027                 for cset in xrange(clstart, clend):
  2019                     for f, n in mfest.iteritems():
  2031                     for f, n in mfest.iteritems():
  2020                         needfiles.setdefault(f, set()).add(n)
  2032                         needfiles.setdefault(f, set()).add(n)
  2021 
  2033 
  2022             # process the files
  2034             # process the files
  2023             self.ui.status(_("adding file changes\n"))
  2035             self.ui.status(_("adding file changes\n"))
       
  2036             pr.step = 'files'
       
  2037             pr.count = 1
  2024             while 1:
  2038             while 1:
  2025                 f = changegroup.getchunk(source)
  2039                 f = changegroup.getchunk(source)
  2026                 if not f:
  2040                 if not f:
  2027                     break
  2041                     break
  2028                 self.ui.debug("adding %s revisions\n" % f)
  2042                 self.ui.debug("adding %s revisions\n" % f)
  2029                 fl = self.file(f)
  2043                 fl = self.file(f)
  2030                 o = len(fl)
  2044                 o = len(fl)
  2031                 chunkiter = changegroup.chunkiter(source)
  2045                 chunkiter = changegroup.chunkiter(source, progress=pr)
  2032                 if fl.addgroup(chunkiter, revmap, trp) is None:
  2046                 if fl.addgroup(chunkiter, revmap, trp) is None:
  2033                     raise util.Abort(_("received file revlog group is empty"))
  2047                     raise util.Abort(_("received file revlog group is empty"))
  2034                 revisions += len(fl) - o
  2048                 revisions += len(fl) - o
  2035                 files += 1
  2049                 files += 1
  2036                 if f in needfiles:
  2050                 if f in needfiles:
  2039                         n = fl.node(new)
  2053                         n = fl.node(new)
  2040                         if n in needs:
  2054                         if n in needs:
  2041                             needs.remove(n)
  2055                             needs.remove(n)
  2042                     if not needs:
  2056                     if not needs:
  2043                         del needfiles[f]
  2057                         del needfiles[f]
       
  2058             self.ui.progress('files', None)
  2044 
  2059 
  2045             for f, needs in needfiles.iteritems():
  2060             for f, needs in needfiles.iteritems():
  2046                 fl = self.file(f)
  2061                 fl = self.file(f)
  2047                 for n in needs:
  2062                 for n in needs:
  2048                     try:
  2063                     try: