hgext/largefiles/overrides.py
branchstable
changeset 30215 438173c41587
parent 30190 56b930238036
parent 30181 7356e6b1f5b8
child 31023 aea06029919e
equal deleted inserted replaced
30214:fc11bb10425f 30215:438173c41587
   881         if not repo:
   881         if not repo:
   882             return result
   882             return result
   883 
   883 
   884         # If largefiles is required for this repo, permanently enable it locally
   884         # If largefiles is required for this repo, permanently enable it locally
   885         if 'largefiles' in repo.requirements:
   885         if 'largefiles' in repo.requirements:
   886             fp = repo.vfs('hgrc', 'a', text=True)
   886             with repo.vfs('hgrc', 'a', text=True) as fp:
   887             try:
       
   888                 fp.write('\n[extensions]\nlargefiles=\n')
   887                 fp.write('\n[extensions]\nlargefiles=\n')
   889             finally:
       
   890                 fp.close()
       
   891 
   888 
   892         # Caching is implicitly limited to 'rev' option, since the dest repo was
   889         # Caching is implicitly limited to 'rev' option, since the dest repo was
   893         # truncated at that point.  The user may expect a download count with
   890         # truncated at that point.  The user may expect a download count with
   894         # this option, so attempt whether or not this is a largefile repo.
   891         # this option, so attempt whether or not this is a largefile repo.
   895         if opts.get('all_largefiles'):
   892         if opts.get('all_largefiles'):
  1337             return False
  1334             return False
  1338         return origvisitdirfn(lf)
  1335         return origvisitdirfn(lf)
  1339     m.visitdir = lfvisitdirfn
  1336     m.visitdir = lfvisitdirfn
  1340 
  1337 
  1341     for f in ctx.walk(m):
  1338     for f in ctx.walk(m):
  1342         fp = cmdutil.makefileobj(repo, opts.get('output'), ctx.node(),
  1339         with cmdutil.makefileobj(repo, opts.get('output'), ctx.node(),
  1343                                  pathname=f)
  1340                                  pathname=f) as fp:
  1344         lf = lfutil.splitstandin(f)
  1341             lf = lfutil.splitstandin(f)
  1345         if lf is None or origmatchfn(f):
  1342             if lf is None or origmatchfn(f):
  1346             # duplicating unreachable code from commands.cat
  1343                 # duplicating unreachable code from commands.cat
  1347             data = ctx[f].data()
  1344                 data = ctx[f].data()
  1348             if opts.get('decode'):
  1345                 if opts.get('decode'):
  1349                 data = repo.wwritedata(f, data)
  1346                     data = repo.wwritedata(f, data)
  1350             fp.write(data)
  1347                 fp.write(data)
  1351         else:
  1348             else:
  1352             hash = lfutil.readstandin(repo, lf, ctx.rev())
  1349                 hash = lfutil.readstandin(repo, lf, ctx.rev())
  1353             if not lfutil.inusercache(repo.ui, hash):
  1350                 if not lfutil.inusercache(repo.ui, hash):
  1354                 store = storefactory.openstore(repo)
  1351                     store = storefactory.openstore(repo)
  1355                 success, missing = store.get([(lf, hash)])
  1352                     success, missing = store.get([(lf, hash)])
  1356                 if len(success) != 1:
  1353                     if len(success) != 1:
  1357                     raise error.Abort(
  1354                         raise error.Abort(
  1358                         _('largefile %s is not in cache and could not be '
  1355                             _('largefile %s is not in cache and could not be '
  1359                           'downloaded')  % lf)
  1356                               'downloaded')  % lf)
  1360             path = lfutil.usercachepath(repo.ui, hash)
  1357                 path = lfutil.usercachepath(repo.ui, hash)
  1361             fpin = open(path, "rb")
  1358                 with open(path, "rb") as fpin:
  1362             for chunk in util.filechunkiter(fpin, 128 * 1024):
  1359                     for chunk in util.filechunkiter(fpin):
  1363                 fp.write(chunk)
  1360                         fp.write(chunk)
  1364             fpin.close()
       
  1365         fp.close()
       
  1366         err = 0
  1361         err = 0
  1367     return err
  1362     return err
  1368 
  1363 
  1369 def mergeupdate(orig, repo, node, branchmerge, force,
  1364 def mergeupdate(orig, repo, node, branchmerge, force,
  1370                 *args, **kwargs):
  1365                 *args, **kwargs):