Show More
@@ -845,6 +845,32 class revlog(object): | |||
|
845 | 845 | c.append(self.node(r)) |
|
846 | 846 | return c |
|
847 | 847 | |
|
848 | def descendant(self, start, end): | |
|
849 | for i in self.descendants(start): | |
|
850 | if i == end: | |
|
851 | return True | |
|
852 | elif i > end: | |
|
853 | break | |
|
854 | return False | |
|
855 | ||
|
856 | def ancestor(self, a, b): | |
|
857 | """calculate the least common ancestor of nodes a and b""" | |
|
858 | ||
|
859 | # fast path, check if it is a descendant | |
|
860 | a, b = self.rev(a), self.rev(b) | |
|
861 | start, end = sorted((a, b)) | |
|
862 | if self.descendant(start, end): | |
|
863 | return self.node(start) | |
|
864 | ||
|
865 | def parents(rev): | |
|
866 | return [p for p in self.parentrevs(rev) if p != nullrev] | |
|
867 | ||
|
868 | c = ancestor.ancestor(a, b, parents) | |
|
869 | if c is None: | |
|
870 | return nullid | |
|
871 | ||
|
872 | return self.node(c) | |
|
873 | ||
|
848 | 874 | def _match(self, id): |
|
849 | 875 | if isinstance(id, (long, int)): |
|
850 | 876 | # rev |
@@ -1119,32 +1145,6 class revlog(object): | |||
|
1119 | 1145 | self._cache = (node, curr, text) |
|
1120 | 1146 | return node |
|
1121 | 1147 | |
|
1122 | def descendant(self, start, end): | |
|
1123 | for i in self.descendants(start): | |
|
1124 | if i == end: | |
|
1125 | return True | |
|
1126 | elif i > end: | |
|
1127 | break | |
|
1128 | return False | |
|
1129 | ||
|
1130 | def ancestor(self, a, b): | |
|
1131 | """calculate the least common ancestor of nodes a and b""" | |
|
1132 | ||
|
1133 | # fast path, check if it is a descendant | |
|
1134 | a, b = self.rev(a), self.rev(b) | |
|
1135 | start, end = sorted((a, b)) | |
|
1136 | if self.descendant(start, end): | |
|
1137 | return self.node(start) | |
|
1138 | ||
|
1139 | def parents(rev): | |
|
1140 | return [p for p in self.parentrevs(rev) if p != nullrev] | |
|
1141 | ||
|
1142 | c = ancestor.ancestor(a, b, parents) | |
|
1143 | if c is None: | |
|
1144 | return nullid | |
|
1145 | ||
|
1146 | return self.node(c) | |
|
1147 | ||
|
1148 | 1148 | def group(self, nodelist, lookup, infocollect=None): |
|
1149 | 1149 | """Calculate a delta group, yielding a sequence of changegroup chunks |
|
1150 | 1150 | (strings). |
General Comments 0
You need to be logged in to leave comments.
Login now