Show More
@@ -854,11 +854,10 b' class localrepository:' | |||
|
854 | 854 | |
|
855 | 855 | return nl |
|
856 | 856 | |
|
857 | def findincoming(self, remote): | |
|
857 | def findincoming(self, remote, base={}): | |
|
858 | 858 | m = self.changelog.nodemap |
|
859 | 859 | search = [] |
|
860 | 860 | fetch = [] |
|
861 | base = {} | |
|
862 | 861 | seen = {} |
|
863 | 862 | seenbranch = {} |
|
864 | 863 | |
@@ -875,6 +874,8 b' class localrepository:' | |||
|
875 | 874 | for h in heads: |
|
876 | 875 | if h not in m: |
|
877 | 876 | unknown.append(h) |
|
877 | else: | |
|
878 | base[h] = 1 | |
|
878 | 879 | |
|
879 | 880 | if not unknown: |
|
880 | 881 | return None |
@@ -970,6 +971,30 b' class localrepository:' | |||
|
970 | 971 | |
|
971 | 972 | return fetch |
|
972 | 973 | |
|
974 | def findoutgoing(self, remote): | |
|
975 | base = {} | |
|
976 | findincoming(self, remote, base) | |
|
977 | remain = dict.fromkeys(self.changelog.nodemap) | |
|
978 | ||
|
979 | # prune everything remote has from the tree | |
|
980 | remove = base.keys() | |
|
981 | while remove: | |
|
982 | n = remove.pop(0) | |
|
983 | if n in remain: | |
|
984 | del remain[n] | |
|
985 | for p in self.changelog.parents(n): | |
|
986 | remain.append(p) | |
|
987 | ||
|
988 | # find every node whose parents have been pruned | |
|
989 | subset = [] | |
|
990 | for n in remain: | |
|
991 | p1, p2 = self.changelog.parents(n) | |
|
992 | if p1 not in remain and p2 not in remain: | |
|
993 | subset.append(n) | |
|
994 | ||
|
995 | # this is the set of all roots we have to push | |
|
996 | return subset | |
|
997 | ||
|
973 | 998 | def changegroup(self, basenodes): |
|
974 | 999 | nodes = self.newer(basenodes) |
|
975 | 1000 |
General Comments 0
You need to be logged in to leave comments.
Login now