mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	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:
		
							parent
							
								
									c59120ba17
								
							
						
					
					
						commit
						e41d00bb6a
					
				
					 1 changed files with 24 additions and 0 deletions
				
			
		|  | @ -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: | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Guido van Rossum
						Guido van Rossum