hgext/convert/__init__.py
changeset 4758 b6a1f2c46c6c
parent 4756 8e9d3faec270
child 4759 95cbb6b74790
equal deleted inserted replaced
4757:6a16ef0d1c7c 4758:b6a1f2c46c6c
   191         afile.close()
   191         afile.close()
   192 
   192 
   193     def copy(self, rev):
   193     def copy(self, rev):
   194         c = self.commitcache[rev]
   194         c = self.commitcache[rev]
   195         files = self.source.getchanges(rev)
   195         files = self.source.getchanges(rev)
       
   196         
       
   197         do_copies = (hasattr(c, 'copies') and hasattr(self.dest, 'copyfile'))
   196 
   198 
   197         for f, v in files:
   199         for f, v in files:
   198             try:
   200             try:
   199                 data = self.source.getfile(f, v)
   201                 data = self.source.getfile(f, v)
   200             except IOError, inst:
   202             except IOError, inst:
   201                 self.dest.delfile(f)
   203                 self.dest.delfile(f)
   202             else:
   204             else:
   203                 e = self.source.getmode(f, v)
   205                 e = self.source.getmode(f, v)
   204                 self.dest.putfile(f, e, data)
   206                 self.dest.putfile(f, e, data)
       
   207                 if do_copies:
       
   208                     if f in c.copies:
       
   209                         # Merely marks that a copy happened.
       
   210                         self.dest.copyfile(c.copies[f], f)
       
   211 
   205 
   212 
   206         r = [self.map[v] for v in c.parents]
   213         r = [self.map[v] for v in c.parents]
   207         f = [f for f, v in files]
   214         f = [f for f, v in files]
   208         newnode = self.dest.putcommit(f, r, c)
   215         newnode = self.dest.putcommit(f, r, c)
   209         self.mapentry(rev, newnode)
   216         self.mapentry(rev, newnode)
   256     '''Convert a foreign SCM repository to a Mercurial one.
   263     '''Convert a foreign SCM repository to a Mercurial one.
   257 
   264 
   258     Accepted source formats:
   265     Accepted source formats:
   259     - GIT
   266     - GIT
   260     - CVS
   267     - CVS
       
   268     - SVN
   261 
   269 
   262     Accepted destination formats:
   270     Accepted destination formats:
   263     - Mercurial
   271     - Mercurial
   264 
   272 
   265     If no revision is given, all revisions will be converted. Otherwise,
   273     If no revision is given, all revisions will be converted. Otherwise,