mercurial/commands.py
changeset 1980 dfb796786337
parent 1979 d545fa1426b9
child 1981 736b6c96bbbc
equal deleted inserted replaced
1979:d545fa1426b9 1980:dfb796786337
   302 
   302 
   303         if compress:
   303         if compress:
   304             fh.write("HG10")
   304             fh.write("HG10")
   305             z = bz2.BZ2Compressor(9)
   305             z = bz2.BZ2Compressor(9)
   306         else:
   306         else:
   307             fh.write("HG11")
   307             fh.write("HG10UN")
   308             z = nocompress()
   308             z = nocompress()
   309         while 1:
   309         while 1:
   310             chunk = cg.read(4096)
   310             chunk = cg.read(4096)
   311             if not chunk:
   311             if not chunk:
   312                 break
   312                 break
  2567     Apply a compressed changegroup file generated by the bundle
  2567     Apply a compressed changegroup file generated by the bundle
  2568     command.
  2568     command.
  2569     """
  2569     """
  2570     f = urllib.urlopen(fname)
  2570     f = urllib.urlopen(fname)
  2571 
  2571 
  2572     header = f.read(4)
  2572     header = f.read(6)
  2573     if header == "HG10":
  2573     if not header.startswith("HG"):
       
  2574         raise util.Abort(_("%s: not a Mercurial bundle file") % fname)
       
  2575     elif not header.startswith("HG10"):
       
  2576         raise util.Abort(_("%s: unknown bundle version") % fname)
       
  2577     elif header == "HG10BZ":
  2574         def generator(f):
  2578         def generator(f):
  2575             zd = bz2.BZ2Decompressor()
  2579             zd = bz2.BZ2Decompressor()
       
  2580             zd.decompress("BZ")
  2576             for chunk in f:
  2581             for chunk in f:
  2577                 yield zd.decompress(chunk)
  2582                 yield zd.decompress(chunk)
  2578     elif header == "HG11":
  2583     elif header == "HG10UN":
  2579         def generator(f):
  2584         def generator(f):
  2580             for chunk in f:
  2585             for chunk in f:
  2581                 yield chunk
  2586                 yield chunk
  2582     else:
  2587     else:
  2583         raise util.Abort(_("%s: not a Mercurial bundle file") % fname)
  2588         raise util.Abort(_("%s: unknown bundle compression type")
       
  2589                          % fname)
  2584     gen = generator(util.filechunkiter(f, 4096))
  2590     gen = generator(util.filechunkiter(f, 4096))
  2585     if repo.addchangegroup(util.chunkbuffer(gen)):
  2591     if repo.addchangegroup(util.chunkbuffer(gen)):
  2586         return 1
  2592         return 1
  2587 
  2593 
  2588     if opts['update']:
  2594     if opts['update']: