Show More
@@ -709,6 +709,13 b' class svn_source(converter_source):' | |||
|
709 | 709 | from_revnum, to_revnum = to_revnum, from_revnum |
|
710 | 710 | |
|
711 | 711 | self.child_cset = None |
|
712 | ||
|
713 | def isdescendantof(parent, child): | |
|
714 | if not child or not parent or not child.startswith(parent): | |
|
715 | return False | |
|
716 | subpath = child[len(parent):] | |
|
717 | return len(subpath) > 1 and subpath[0] == '/' | |
|
718 | ||
|
712 | 719 | def parselogentry(orig_paths, revnum, author, date, message): |
|
713 | 720 | """Return the parsed commit object or None, and True if |
|
714 | 721 | the revision is a branch root. |
@@ -732,10 +739,21 b' class svn_source(converter_source):' | |||
|
732 | 739 | if root_paths: |
|
733 | 740 | path, ent = root_paths[-1] |
|
734 | 741 | if ent.copyfrom_path: |
|
742 | # If dir was moved while one of its file was removed | |
|
743 | # the log may look like: | |
|
744 | # A /dir (from /dir:x) | |
|
745 | # A /dir/a (from /dir/a:y) | |
|
746 | # A /dir/b (from /dir/b:z) | |
|
747 | # ... | |
|
748 | # for all remaining children. | |
|
749 | # Let's take the highest child element from rev as source. | |
|
750 | copies = [(p,e) for p,e in orig_paths[:-1] | |
|
751 | if isdescendantof(ent.copyfrom_path, e.copyfrom_path)] | |
|
752 | fromrev = max([e.copyfrom_rev for p,e in copies] + [ent.copyfrom_rev]) | |
|
735 | 753 | branched = True |
|
736 | 754 | newpath = ent.copyfrom_path + self.module[len(path):] |
|
737 | 755 | # ent.copyfrom_rev may not be the actual last revision |
|
738 |
previd = self.latest(newpath, |
|
|
756 | previd = self.latest(newpath, fromrev) | |
|
739 | 757 | if previd is not None: |
|
740 | 758 | prevmodule, prevnum = self.revsplit(previd)[1:] |
|
741 | 759 | if prevnum >= self.startrev: |
@@ -117,8 +117,8 b' o branch=old3 11 branch trunk@1 into ol' | |||
|
117 | 117 | | | | |
|
118 | 118 | | o | branch= 3 change a files: a |
|
119 | 119 | | | | |
|
120 |
|
|
|
121 | | | | |
|
120 | | | o branch=old 2 branch trunk, remove c files: | |
|
121 | | |/ | |
|
122 | 122 | | o branch= 1 hello files: a b c |
|
123 | 123 | |/ |
|
124 | 124 | o branch= 0 init projA files: |
General Comments 0
You need to be logged in to leave comments.
Login now