Fixed a bug: files that no longer exist remotely would never be

removed from .mirrorinfo.  Now they are (even if -r is not specified
-- the files are not removed, just their .mirrorinfo entry).

Added a feature: the -s pattern option is also used to skip local
files when removing (i.e. -r won't remove local files matching the -s
patterns).
This commit is contained in:
Guido van Rossum 1996-11-14 18:24:47 +00:00
parent c59120ba17
commit e41d00bb6a
1 changed files with 24 additions and 0 deletions

View File

@ -117,6 +117,7 @@ def mirrorsubdir(f, localdir):
listing = []
if verbose: print 'Listing remote directory %s...' % pwd
f.retrlines('LIST', listing.append)
filesfound = []
for line in listing:
if verbose > 1: print '-->', `line`
if mac:
@ -157,6 +158,7 @@ def mirrorsubdir(f, localdir):
print 'Remembering subdirectory', filename
subdirs.append(filename)
continue
filesfound.append(filename)
if info.has_key(filename) and info[filename] == infostuff:
if verbose > 1:
print 'Already have this version of', filename
@ -216,6 +218,18 @@ def mirrorsubdir(f, localdir):
int(round(kbytes/dt),)
print
#
# Remove files from info that are no longer remote
deletions = 0
for filename in info.keys():
if filename not in filesfound:
if verbose:
print "Removing obsolete info entry for",
print filename, "in", localdir or "."
del info[filename]
deletions = deletions + 1
if deletions:
writedict(info, infofilename)
#
# Remove local files that are no longer in the remote directory
try:
if not localdir: names = os.listdir(os.curdir)
@ -225,6 +239,16 @@ def mirrorsubdir(f, localdir):
for name in names:
if name[0] == '.' or info.has_key(name) or name in subdirs:
continue
skip = 0
for pat in skippats:
if fnmatch(name, pat):
if verbose > 1:
print 'Skip pattern', pat,
print 'matches', name
skip = 1
break
if skip:
continue
fullname = os.path.join(localdir, name)
if not rmok:
if verbose: