X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=cmd%2Fsave-cmd.py;h=62c1e426bb5bad665c41004fb9e71af99d1dc2d5;hb=2c955a0a4296e7f23a7d2ba01154f6eb46c9962a;hp=df51a6c74934c8aca99631e70122752e9986c815;hpb=74d28e77366dba1eefbfa2beeda34bcaa835dc58;p=bup.git diff --git a/cmd/save-cmd.py b/cmd/save-cmd.py index df51a6c..62c1e42 100755 --- a/cmd/save-cmd.py +++ b/cmd/save-cmd.py @@ -16,6 +16,9 @@ v,verbose increase log output (can be used more than once) q,quiet don't show progress meter smaller= only back up files smaller than n bytes bwlimit= maximum bytes/sec to transmit to server +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 """ o = options.Options('bup save', optspec) (opt, flags, extra) = o.parse(sys.argv[1:]) @@ -36,10 +39,15 @@ if opt.date: else: date = time.time() +if opt.strip and opt.strip_path: + o.fatal("--strip is incompatible with --strip-path") + is_reverse = os.environ.get('BUP_SERVER_REVERSE') if is_reverse and opt.remote: o.fatal("don't use -r in reverse mode; it's automatic") +if opt.name and opt.name.startswith('.'): + o.fatal("'%s' is not a valid branch name" % opt.name) refname = opt.name and 'refs/heads/%s' % opt.name or None if opt.remote or is_reverse: cli = client.Client(opt.remote) @@ -129,7 +137,9 @@ def vlog(s): log(s) -r = index.Reader(git.repo('bupindex')) +indexfile = opt.indexfile or git.repo('bupindex') +print indexfile +r = index.Reader(indexfile) def already_saved(ent): return ent.is_valid() and w.exists(ent.sha) and ent.sha @@ -195,7 +205,13 @@ for (transname,ent) in r.filter(extra, wantrecurse=wantrecurse_during): continue assert(dir.startswith('/')) - dirp = dir.split('/') + if opt.strip: + stripped_base_path = strip_base_path(dir, extra) + dirp = stripped_base_path.split('/') + elif opt.strip_path: + dirp = strip_path(opt.strip_path, dir).split('/') + else: + dirp = dir.split('/') while parts > dirp: _pop(force_tree = None) if dir != '/': @@ -283,7 +299,6 @@ if opt.tree: print tree.encode('hex') if opt.commit or opt.name: msg = 'bup save\n\nGenerated by command:\n%r' % sys.argv - ref = opt.name and ('refs/heads/%s' % opt.name) or None commit = w.new_commit(oldref, tree, date, msg) if opt.commit: print commit.encode('hex')