From eb2e9a8c6cf86ae66578b777dd2efe0c7cf4184d Mon Sep 17 00:00:00 2001 From: Zoran Zaric Date: Tue, 16 Nov 2010 10:12:54 +0100 Subject: [PATCH] Excludes BUP_DIR from index. Signed-off-by: Zoran Zaric --- cmd/index-cmd.py | 6 ++++-- lib/bup/drecurse.py | 16 +++++++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/cmd/index-cmd.py b/cmd/index-cmd.py index 47dbd22..a8d1a9a 100755 --- a/cmd/index-cmd.py +++ b/cmd/index-cmd.py @@ -1,5 +1,5 @@ #!/usr/bin/env python -import sys, stat, time +import sys, stat, time, os from bup import options, git, index, drecurse from bup.helpers import * @@ -66,7 +66,9 @@ def update_index(top): return (0100644, index.FAKE_SHA) total = 0 - for (path,pst) in drecurse.recursive_dirlist([top], xdev=opt.xdev): + bup_dir = os.path.abspath(git.repo()) + for (path,pst) in drecurse.recursive_dirlist([top], xdev=opt.xdev, + bup_dir=bup_dir): if opt.verbose>=2 or (opt.verbose==1 and stat.S_ISDIR(pst.st_mode)): sys.stdout.write('%s\n' % path) sys.stdout.flush() diff --git a/lib/bup/drecurse.py b/lib/bup/drecurse.py index ac0115e..d4c4d4c 100644 --- a/lib/bup/drecurse.py +++ b/lib/bup/drecurse.py @@ -1,4 +1,4 @@ -import stat +import stat, os from bup.helpers import * try: @@ -45,24 +45,29 @@ def _dirlist(): return l -def _recursive_dirlist(prepend, xdev): +def _recursive_dirlist(prepend, xdev, bup_dir=None): for (name,pst) in _dirlist(): if name.endswith('/'): if xdev != None and pst.st_dev != xdev: log('Skipping %r: different filesystem.\n' % (prepend+name)) continue + if bup_dir != None: + if os.path.normpath(prepend+name) == bup_dir: + log('Skipping BUP_DIR.\n') + continue try: OsFile(name).fchdir() except OSError, e: add_error('%s: %s' % (prepend, e)) else: - for i in _recursive_dirlist(prepend=prepend+name, xdev=xdev): + for i in _recursive_dirlist(prepend=prepend+name, xdev=xdev, + bup_dir=bup_dir): yield i os.chdir('..') yield (prepend + name, pst) -def recursive_dirlist(paths, xdev): +def recursive_dirlist(paths, xdev, bup_dir=None): startdir = OsFile('.') try: assert(type(paths) != type('')) @@ -88,7 +93,8 @@ def recursive_dirlist(paths, xdev): if stat.S_ISDIR(pst.st_mode): pfile.fchdir() prepend = os.path.join(path, '') - for i in _recursive_dirlist(prepend=prepend, xdev=xdev): + for i in _recursive_dirlist(prepend=prepend, xdev=xdev, + bup_dir=bup_dir): yield i startdir.fchdir() else: -- 2.39.2