]> arthur.barton.de Git - bup.git/commitdiff
cmd/{split,save}: support any compression level using the new -# feature.
authorAvery Pennarun <apenwarr@gmail.com>
Sun, 15 May 2011 20:03:39 +0000 (16:03 -0400)
committerAvery Pennarun <apenwarr@gmail.com>
Sun, 15 May 2011 20:04:03 +0000 (16:04 -0400)
This makes the code *and* documentation a little nicer.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
Documentation/bup-save.md
Documentation/bup-split.md
cmd/save-cmd.py
cmd/split-cmd.py
lib/bup/git.py

index d8b9ca6195aac01fad513c2bd894fbabd1d44db9..e895a2b880d94d8e4dbf97d0e503ab6019835bd8 100644 (file)
@@ -8,7 +8,7 @@ bup-save - create a new bup backup set
 
 # SYNOPSIS
 
-bup save [-r *host*:*path*] <-t|-c|-n *name*> [-0|-9] [-f *indexfile*]
+bup save [-r *host*:*path*] <-t|-c|-n *name*> [-#] [-f *indexfile*]
 [-v] [-q] [--smaller=*maxsize*] <paths...>
 
 # DESCRIPTION
@@ -100,15 +100,11 @@ for `bup-index`(1).
     "bup save -n chroots --graft /root/chroot/a/etc=/chroots/a"
     would be saved as */chroots/a/etc*
 
--0
-:   set the compression level to 0 (no compression)
+-*#*, --compress=*#*
+:   set the compression level to # (a value from 0-9, where
+    9 is the highest and 0 is no compression).  The default
+    is 1 (fast, loose compression)
 
-    If no compression level is set it defaults to 1.
-
--9
-:   set the compression level to 9 (highest compression, slowest)
-
-    If no compression level is set it defaults to 1.
 
 # EXAMPLE
 
index a85bca8ddebb810a1f9ba6a5de7f4942bf7ebab3..eba57ea0cf3dad3518c0316d58e6b85cc37f2368 100644 (file)
@@ -9,7 +9,7 @@ bup-split - save individual files to bup backup sets
 # SYNOPSIS
 
 bup split [-r *host*:*path*] <-b|-t|-c|-n *name*> [-v] [-q]
-  [--bench] [--max-pack-size=*bytes*] [-0|-9]
+  [--bench] [--max-pack-size=*bytes*] [-#]
   [--max-pack-objects=*n*] [--fanout=*count]
   [--git-ids] [--keep-boundaries] [filenames...]
 
@@ -133,13 +133,10 @@ To get the data back, use `bup-join`(1).
     like k, M, or G to specify multiples of 1024,
     1024*1024, 1024*1024*1024 respectively.
 
--0
-:   set the compression level to 0 (no compression)
-
-    If no compression level is set it defaults to 1.
-
--9
-:   set the compression level to 9 (highest compression, slowest)
+-*#*, --compress=*#*
+:   set the compression level to # (a value from 0-9, where
+    9 is the highest and 0 is no compression).  The default
+    is 1 (fast, loose compression)
 
 
 # EXAMPLE
index d8ab9486136bfdb4c742df2054626d18b01a4c72..fb45427aa69be87ed54a43c6f5f1cd0c93559b7e 100755 (executable)
@@ -21,8 +21,7 @@ f,indexfile=  the name of the index file (normally BUP_DIR/bupindex)
 strip      strips the path to every filename given
 strip-path= path-prefix to be stripped when saving
 graft=     a graft point *old_path*=*new_path* (can be used more than once)
-0          set compression-level to 0
-9          set compression-level to 9
+#,compress=  set compression level to # (0-9, 9 is highest) [1]
 """
 o = options.Options(optspec)
 (opt, flags, extra) = o.parse(sys.argv[1:])
@@ -33,13 +32,6 @@ if not (opt.tree or opt.commit or opt.name):
 if not extra:
     o.fatal("no filenames given")
 
-if opt['0']:
-    compression_level = 0
-elif opt['9']:
-    compression_level = 9
-else:
-    compression_level = 1
-
 opt.progress = (istty2 and not opt.quiet)
 opt.smaller = parse_num(opt.smaller or 0)
 if opt.bwlimit:
@@ -83,7 +75,7 @@ if opt.remote or is_reverse:
 else:
     cli = None
     oldref = refname and git.read_ref(refname) or None
-    w = git.PackWriter(compression_level=compression_level)
+    w = git.PackWriter(compression_level=opt.compress)
 
 handle_ctrl_c()
 
index b51f9978905cf38a99381e207a949bcc785dd47f..438fe40aaa73599938742d14fb77d77d1d522406 100755 (executable)
@@ -26,8 +26,7 @@ max-pack-size=  maximum bytes in a single pack
 max-pack-objects=  maximum number of objects in a single pack
 fanout=    maximum number of blobs in a single tree
 bwlimit=   maximum bytes/sec to transmit to server
-0          set compression-level to 0
-9          set compression-level to 9
+#,compress=  set compression level to # (0-9, 9 is highest) [1]
 """
 o = options.Options(optspec)
 (opt, flags, extra) = o.parse(sys.argv[1:])
@@ -63,15 +62,6 @@ if opt.date:
 else:
     date = time.time()
 
-if opt['0']:
-    compression_level = 0
-elif opt['9']:
-    compression_level = 9
-else:
-    compression_level = 1
-
-
-
 total_bytes = 0
 def prog(filenum, nbytes):
     global total_bytes
@@ -94,13 +84,13 @@ refname = opt.name and 'refs/heads/%s' % opt.name or None
 if opt.noop or opt.copy:
     cli = pack_writer = oldref = None
 elif opt.remote or is_reverse:
-    cli = client.Client(opt.remote, compression_level = compression_level)
+    cli = client.Client(opt.remote, compression_level=opt.compress)
     oldref = refname and cli.read_ref(refname) or None
     pack_writer = cli.new_packwriter()
 else:
     cli = None
     oldref = refname and git.read_ref(refname) or None
-    pack_writer = git.PackWriter(compression_level = compression_level)
+    pack_writer = git.PackWriter(compression_level=opt.compress)
 
 if opt.git_ids:
     # the input is actually a series of git object ids that we should retrieve
index 2a84eeb6f256d9e0d0fbc9bf409a1dfbf5571521..58cd4a6624c37f9a621b861b8671ec39d5dc89fb 100644 (file)
@@ -177,6 +177,10 @@ def _encode_packobj(type, content, compression_level=1):
             break
         szbits = sz & 0x7f
         sz >>= 7
+    if compression_level > 9:
+        compression_level = 9
+    elif compression_level < 0:
+        compression_level = 0
     z = zlib.compressobj(compression_level)
     yield szout
     yield z.compress(content)