|  | @@ -1852,7 +1852,7 @@ class ArchiveRecreater:
 | 
	
		
			
				|  |  |                   exclude_caches=False, exclude_if_present=None, keep_exclude_tags=False,
 | 
	
		
			
				|  |  |                   chunker_params=None, compression=None, recompress=False, always_recompress=False,
 | 
	
		
			
				|  |  |                   dry_run=False, stats=False, progress=False, file_status_printer=None,
 | 
	
		
			
				|  |  | -                 checkpoint_interval=1800):
 | 
	
		
			
				|  |  | +                 timestamp=None, checkpoint_interval=1800):
 | 
	
		
			
				|  |  |          self.repository = repository
 | 
	
		
			
				|  |  |          self.key = key
 | 
	
		
			
				|  |  |          self.manifest = manifest
 | 
	
	
		
			
				|  | @@ -1872,6 +1872,7 @@ class ArchiveRecreater:
 | 
	
		
			
				|  |  |          self.compression = compression or CompressionSpec('none')
 | 
	
		
			
				|  |  |          self.seen_chunks = set()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        self.timestamp = timestamp
 | 
	
		
			
				|  |  |          self.dry_run = dry_run
 | 
	
		
			
				|  |  |          self.stats = stats
 | 
	
		
			
				|  |  |          self.progress = progress
 | 
	
	
		
			
				|  | @@ -1976,18 +1977,33 @@ class ArchiveRecreater:
 | 
	
		
			
				|  |  |              return
 | 
	
		
			
				|  |  |          if comment is None:
 | 
	
		
			
				|  |  |              comment = archive.metadata.get('comment', '')
 | 
	
		
			
				|  |  | -        target.save(comment=comment, stats=target.stats, additional_metadata={
 | 
	
		
			
				|  |  | -            # keep some metadata as in original archive:
 | 
	
		
			
				|  |  | -            'time': archive.metadata.time,
 | 
	
		
			
				|  |  | -            'time_end': archive.metadata.get('time_end') or archive.metadata.time,
 | 
	
		
			
				|  |  | -            'cmdline': archive.metadata.cmdline,
 | 
	
		
			
				|  |  | -            # but also remember recreate metadata:
 | 
	
		
			
				|  |  | -            'recreate_cmdline': sys.argv,
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        # Keep for the statistics if necessary
 | 
	
		
			
				|  |  | +        if self.stats:
 | 
	
		
			
				|  |  | +            _start = target.start
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if self.timestamp is None:
 | 
	
		
			
				|  |  | +            additional_metadata = {
 | 
	
		
			
				|  |  | +                'time': archive.metadata.time,
 | 
	
		
			
				|  |  | +                'time_end': archive.metadata.get('time_end') or archive.metadata.time,
 | 
	
		
			
				|  |  | +                'cmdline': archive.metadata.cmdline,
 | 
	
		
			
				|  |  | +                # but also remember recreate metadata:
 | 
	
		
			
				|  |  | +                'recreate_cmdline': sys.argv,
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            additional_metadata = {
 | 
	
		
			
				|  |  | +                'cmdline': archive.metadata.cmdline,
 | 
	
		
			
				|  |  | +                # but also remember recreate metadata:
 | 
	
		
			
				|  |  | +                'recreate_cmdline': sys.argv,
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        target.save(comment=comment, timestamp=self.timestamp,
 | 
	
		
			
				|  |  | +                    stats=target.stats, additional_metadata=additional_metadata)
 | 
	
		
			
				|  |  |          if replace_original:
 | 
	
		
			
				|  |  |              archive.delete(Statistics(), progress=self.progress)
 | 
	
		
			
				|  |  |              target.rename(archive.name)
 | 
	
		
			
				|  |  |          if self.stats:
 | 
	
		
			
				|  |  | +            target.start = _start
 | 
	
		
			
				|  |  |              target.end = datetime.utcnow()
 | 
	
		
			
				|  |  |              log_multi(DASHES,
 | 
	
		
			
				|  |  |                        str(target),
 |