Index: vcpx/cvsps.py
===================================================================
--- vcpx/cvsps.py	(revision 437)
+++ vcpx/cvsps.py	(revision 438)
@@ -160,5 +160,5 @@
                "--root", repository]
         cvsps = ExternalCommand(command=cmd)
-        log = cvsps.execute(module, stdout=PIPE)
+        log = cvsps.execute(module, stdout=PIPE, TZ='UTC')
         
         for cs in changesets_from_cvsps(log, sincerev):
Index: vcpx/session.py
===================================================================
--- vcpx/session.py	(revision 431)
+++ vcpx/session.py	(revision 439)
@@ -4,5 +4,5 @@
 # :Autore:   Lele Gaifax <lele@nautilus.homeip.net>
 # :Licenza:  GNU General Public License
-# 
+#
 
 """
@@ -32,10 +32,10 @@
     except ValueError:
         return arg.lower() in ('true', 'yes')
-    
+
 class Session(Cmd):
     """Tailor interactive session."""
-    
+
     prompt = "tailor $ "
-    
+
     def __init__(self, options, args):
         """
@@ -46,11 +46,11 @@
         a list of commands to be executed.
         """
-        
-        from os import getcwd       
+
+        from os import getcwd
 
         Cmd.__init__(self)
-        self.options = options        
+        self.options = options
         self.args = args
-        
+
         self.source_repository = options.repository
         self.source_kind = options.source_kind
@@ -61,16 +61,16 @@
         self.current_directory = getcwd()
         self.sub_directory = None
-        
+
         self.state_file = None
         self.logfile = None
         self.logger = None
-        
+
         self.__processArgs()
 
         # Persistent
-        
+
         self.changesets = None
         self.source_revision = None
-        
+
     def __processArgs(self):
         """
@@ -87,5 +87,5 @@
         if self.logger:
             self.logger.info(what)
-            
+
         if self.options.verbose:
             self.stdout.write(what)
@@ -98,6 +98,6 @@
             else:
                 self.logger.error(what)
-            
-            
+
+
         self.stdout.write('Error: ')
         self.stdout.write(what)
@@ -122,5 +122,5 @@
 
         return line
-        
+
     ## Interactive commands
 
@@ -149,8 +149,8 @@
         if not arg:
             return
-            
+
         readline.write_history_file(arg)
         self.__log('History saved in: %s' % arg)
-        
+
     def do_cd(self, arg):
         """
@@ -163,5 +163,5 @@
         from os import chdir, makedirs, getcwd
         from os.path import isabs, abspath, expanduser
-        
+
         if arg:
             arg = expanduser(arg)
@@ -180,7 +180,7 @@
                     self.__err("Cannot create directory '%s'" % arg, True)
                     return
-                
+
             self.current_directory = getcwd()
-            
+
         self.__log('Current directory: %s' % self.current_directory)
 
@@ -190,10 +190,10 @@
         """
         Usage: sub_directory dirname
-        
+
         Print or set the subdirectory that actually contains the
         working copy. When not explicitly set, this is desumed from
         the last component of the upstream module name or repository.
         """
-        
+
         if arg and self.sub_directory <> arg:
             self.sub_directory = arg
@@ -204,10 +204,10 @@
         """
         Usage: logfile [filename]
-        
+
         Print or set the logfile of operations. By default there's no log.
         """
 
         import logging
-        
+
         if arg:
             self.logfile = arg
@@ -216,7 +216,7 @@
             formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')
             hdlr.setFormatter(formatter)
-            self.logger.addHandler(hdlr) 
+            self.logger.addHandler(hdlr)
             self.logger.setLevel(logging.INFO)
-            
+
         self.__log('Logging to: %s' % self.logfile)
 
@@ -229,5 +229,5 @@
 
         from shwrap import ExternalCommand
-        
+
         if arg:
             ExternalCommand.VERBOSE = yesno(arg)
@@ -246,5 +246,5 @@
 
         from shwrap import ExternalCommand
-        
+
         if arg:
             if arg == 'None':
@@ -275,9 +275,9 @@
         self.__log('Patch name format: %s' %
                    SyncronizableTargetWorkingDir.PATCH_NAME_FORMAT)
-        
+
     def do_remove_first_log_line(self, arg):
         """
         Usage: remove_first_log_line [0|1]
-        
+
         Print or set if tailor should drop the first line of the
         upstream changelog.
@@ -305,10 +305,10 @@
 
         from changes import Changeset
-        
+
         if arg:
             Changeset.REFILL_MESSAGE = yesno(arg)
 
         self.__log('Refill changelogs: %s' % Changeset.REFILL_MESSAGE)
-        
+
     def do_source_kind(self, arg):
         """
@@ -322,5 +322,5 @@
 
         self.__log('Current source kind: %s' % self.source_kind)
-        
+
     def do_target_kind(self, arg):
         """
@@ -343,5 +343,5 @@
 
         from os.path import sep
-        
+
         if arg and self.source_repository <> arg:
             if arg.endswith(sep):
@@ -359,5 +359,5 @@
 
         from os.path import sep
-        
+
         if arg and self.target_repository <> arg:
             if arg.endswith(sep):
@@ -370,10 +370,10 @@
         """
         Usage: source_module [module]
-        
+
         Print or set the source module.
         """
 
         from os.path import sep
-        
+
         if arg and self.source_module <> arg:
             if arg.endswith(sep):
@@ -391,5 +391,5 @@
 
         from os.path import sep
-        
+
         if arg and self.target_module <> arg:
             if arg.endswith(sep):
@@ -424,5 +424,5 @@
 
         from cPickle import dump
-        
+
         sf = open(self.state_file, 'w')
         dump((self.source_revision, self.changesets), sf)
@@ -432,23 +432,23 @@
         """
         Usage: state_file [filename]
-        
+
         Print or set the current state file, where tailor stores the
         source revision that has been applied last.
-        
+
         The argument must be a file name, possibly with the usual
-        "~user/file" convention.        
+        "~user/file" convention.
         """
 
         from os.path import isabs, abspath, expanduser
         from cPickle import load
-        
+
         if arg:
             arg = expanduser(arg)
             if not isabs(arg):
                 arg = abspath(arg)
-        
+
         if arg and self.state_file <> arg:
             self.state_file = arg
-            
+
         self.__log('Current state file: %s' % self.state_file)
 
@@ -468,10 +468,10 @@
         """
         Usage: bootstrap [revision]
-        
+
         Checkout the initial upstream revision, by default HEAD (or
         specified by argument), then import the subtree into the
         target repository.
         """
-        
+
         from os.path import join, split, sep
         from dualwd import DualWorkingDir
@@ -483,5 +483,5 @@
         if self.source_revision is not None:
             self.__err('Already bootstrapped!')
-            
+
         if self.sub_directory:
             subdir = self.sub_directory
@@ -506,9 +506,7 @@
             self.__err('Checkout failed', True)
             return
-
-        self.source_revision = actual.revision
         
         self.writeStateFile()
-        
+
         try:
             dwd.initializeNewWorkingDir(self.current_directory,
@@ -520,5 +518,5 @@
             self.__err('Working copy initialization failed', True)
             return
-        
+
     def willApply(self, root, changeset):
         """
@@ -590,9 +588,9 @@
             self.__err('Need a state_file to proceed!')
             return
-                
+
         if self.source_revision is None:
             self.__log('Boostrapping, because source_revision is None!')
             return self.do_bootstrap(None)
-        
+
         if self.sub_directory:
             subdir = self.sub_directory
@@ -604,5 +602,5 @@
                            self.source_repository)[1] or ''
             self.do_sub_directory(subdir)
-            
+
         repodir = join(self.current_directory, subdir)
         dwd = DualWorkingDir(self.source_kind, self.target_kind)
@@ -610,5 +608,5 @@
         # If we have no pending changesets, ask the upstream server
         # about new changes
-        
+
         if not self.changesets:
             try:
@@ -625,5 +623,5 @@
                 self.__err('Unable to collect upstream changes', True)
                 return
-            
+
         nchanges = len(self.changesets)
         if nchanges:
@@ -639,5 +637,5 @@
             else:
                 changesets = self.changesets[:]
-                
+
             self.__log('Applying %d changesets (out of %d)' %
                        (len(changesets), nchanges))
@@ -658,5 +656,5 @@
             finally:
                 self.writeStateFile()
-                
+
                 if self.changesets:
                     self.__log("There are still %d pending changesets, "
@@ -682,5 +680,5 @@
         from darcs import DARCS_CMD, changesets_from_darcschanges
         from shwrap import ExternalCommand, PIPE
-        
+
         if not (self.source_repository and self.target_repository and
                 isdir(self.source_repository) and
@@ -695,5 +693,5 @@
             self.__err('Needs a patchname to proceed')
             return
-        
+
         c = ExternalCommand(cwd=self.source_repository,
                             command=[DARCS_CMD, "changes", "--patches",
@@ -702,17 +700,17 @@
                                             unidiff=True,
                                             repodir=self.source_repository)
-        
+
         if not last:
             self.__err('Specified patchname does not exist!')
             return
-        
+
         cset = last[0]
         cset.applyPatch(working_dir=self.target_repository,
                         patch_options=["-p1", "--force"])
-        
+
         dwd = DualWorkingDir(self.source_kind, self.target_kind)
         dwd.replayChangeset(self.target_repository, self.target_module, cset,
                             logger=self.logger)
-        
+
 def interactive(options, args):
     session = Session(options, args)
