#!/usr/bin/env python
-import sys, stat, time
+import sys, stat, time, os
from bup import options, git, index, drecurse
from bup.helpers import *
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()
-import stat
+import stat, os
from bup.helpers import *
try:
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(''))
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: