hgext/convert/subversion.py
changeset 6762 f67d1468ac50
parent 6716 c9b8d2565b92
child 6849 1a9577da9d02
equal deleted inserted replaced
6761:cb981fc955fb 6762:f67d1468ac50
   656                 # whether this will matter. Maybe should make entries a set.
   656                 # whether this will matter. Maybe should make entries a set.
   657                 # print "Changed directory", revnum, path, ent.action, ent.copyfrom_path, ent.copyfrom_rev
   657                 # print "Changed directory", revnum, path, ent.action, ent.copyfrom_path, ent.copyfrom_rev
   658                 # This will fail if a directory was copied
   658                 # This will fail if a directory was copied
   659                 # from another branch and then some of its files
   659                 # from another branch and then some of its files
   660                 # were deleted in the same transaction.
   660                 # were deleted in the same transaction.
   661                 children = self._find_children(path, revnum)
   661                 children = util.sort(self._find_children(path, revnum))
   662                 children.sort()
       
   663                 for child in children:
   662                 for child in children:
   664                     # Can we move a child directory and its
   663                     # Can we move a child directory and its
   665                     # parent in the same commit? (probably can). Could
   664                     # parent in the same commit? (probably can). Could
   666                     # cause problems if instead of revnum -1,
   665                     # cause problems if instead of revnum -1,
   667                     # we have to look in (copyfrom_path, revnum - 1)
   666                     # we have to look in (copyfrom_path, revnum - 1)
   730                 return None, branched
   729                 return None, branched
   731 
   730 
   732             parents = []
   731             parents = []
   733             # check whether this revision is the start of a branch or part
   732             # check whether this revision is the start of a branch or part
   734             # of a branch renaming
   733             # of a branch renaming
   735             orig_paths = orig_paths.items()
   734             orig_paths = util.sort(orig_paths.items())
   736             orig_paths.sort()
       
   737             root_paths = [(p,e) for p,e in orig_paths if self.module.startswith(p)]
   735             root_paths = [(p,e) for p,e in orig_paths if self.module.startswith(p)]
   738             if root_paths:
   736             if root_paths:
   739                 path, ent = root_paths[-1]
   737                 path, ent = root_paths[-1]
   740                 if ent.copyfrom_path:
   738                 if ent.copyfrom_path:
   741                     # If dir was moved while one of its file was removed
   739                     # If dir was moved while one of its file was removed
  1043             for i in strutil.rfindall(f, '/'):
  1041             for i in strutil.rfindall(f, '/'):
  1044                 dirs.add(f[:i])
  1042                 dirs.add(f[:i])
  1045         return dirs
  1043         return dirs
  1046 
  1044 
  1047     def add_dirs(self, files):
  1045     def add_dirs(self, files):
  1048         add_dirs = [d for d in self.dirs_of(files)
  1046         add_dirs = [d for d in util.sort(self.dirs_of(files))
  1049                     if not os.path.exists(self.wjoin(d, '.svn', 'entries'))]
  1047                     if not os.path.exists(self.wjoin(d, '.svn', 'entries'))]
  1050         if add_dirs:
  1048         if add_dirs:
  1051             add_dirs.sort()
       
  1052             self.xargs(add_dirs, 'add', non_recursive=True, quiet=True)
  1049             self.xargs(add_dirs, 'add', non_recursive=True, quiet=True)
  1053         return add_dirs
  1050         return add_dirs
  1054 
  1051 
  1055     def add_files(self, files):
  1052     def add_files(self, files):
  1056         if files:
  1053         if files:
  1057             self.xargs(files, 'add', quiet=True)
  1054             self.xargs(files, 'add', quiet=True)
  1058         return files
  1055         return files
  1059 
  1056 
  1060     def tidy_dirs(self, names):
  1057     def tidy_dirs(self, names):
  1061         dirs = list(self.dirs_of(names))
  1058         dirs = util.sort(self.dirs_of(names))
  1062         dirs.sort()
       
  1063         dirs.reverse()
  1059         dirs.reverse()
  1064         deleted = []
  1060         deleted = []
  1065         for d in dirs:
  1061         for d in dirs:
  1066             wd = self.wjoin(d)
  1062             wd = self.wjoin(d)
  1067             if os.listdir(wd) == '.svn':
  1063             if os.listdir(wd) == '.svn':