Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/changegroup.py @ 27751:a40e2f7fe49d
changegroup: hide packermap behind methods
This is to prepare for hiding changegroup3 behind a config option.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 12 Jan 2016 21:01:06 -0800 |
parents | d6d3cf5fda6f |
children | 29cfc474c5fd |
comparison
equal
deleted
inserted
replaced
27750:443848eece18 | 27751:a40e2f7fe49d |
---|---|
912 | 912 |
913 def builddeltaheader(self, node, p1n, p2n, basenode, linknode, flags): | 913 def builddeltaheader(self, node, p1n, p2n, basenode, linknode, flags): |
914 return struct.pack( | 914 return struct.pack( |
915 self.deltaheader, node, p1n, p2n, basenode, linknode, flags) | 915 self.deltaheader, node, p1n, p2n, basenode, linknode, flags) |
916 | 916 |
917 packermap = {'01': (cg1packer, cg1unpacker), | 917 _packermap = {'01': (cg1packer, cg1unpacker), |
918 # cg2 adds support for exchanging generaldelta | 918 # cg2 adds support for exchanging generaldelta |
919 '02': (cg2packer, cg2unpacker), | 919 '02': (cg2packer, cg2unpacker), |
920 # cg3 adds support for exchanging treemanifests | 920 # cg3 adds support for exchanging treemanifests |
921 '03': (cg3packer, cg3unpacker), | 921 '03': (cg3packer, cg3unpacker), |
922 } | 922 } |
923 | |
924 def supportedversions(repo): | |
925 return _packermap.keys() | |
926 | |
927 def getbundler(version, repo, bundlecaps=None): | |
928 assert version in supportedversions(repo) | |
929 return _packermap[version][0](repo, bundlecaps) | |
930 | |
931 def getunbundler(version, fh, alg): | |
932 return _packermap[version][1](fh, alg) | |
923 | 933 |
924 def _changegroupinfo(repo, nodes, source): | 934 def _changegroupinfo(repo, nodes, source): |
925 if repo.ui.verbose or source == 'bundle': | 935 if repo.ui.verbose or source == 'bundle': |
926 repo.ui.status(_("%d changesets found\n") % len(nodes)) | 936 repo.ui.status(_("%d changesets found\n") % len(nodes)) |
927 if repo.ui.debugflag: | 937 if repo.ui.debugflag: |
945 _changegroupinfo(repo, csets, source) | 955 _changegroupinfo(repo, csets, source) |
946 return bundler.generate(commonrevs, csets, fastpathlinkrev, source) | 956 return bundler.generate(commonrevs, csets, fastpathlinkrev, source) |
947 | 957 |
948 def getsubset(repo, outgoing, bundler, source, fastpath=False): | 958 def getsubset(repo, outgoing, bundler, source, fastpath=False): |
949 gengroup = getsubsetraw(repo, outgoing, bundler, source, fastpath) | 959 gengroup = getsubsetraw(repo, outgoing, bundler, source, fastpath) |
950 return packermap[bundler.version][1](util.chunkbuffer(gengroup), None) | 960 return getunbundler(bundler.version, util.chunkbuffer(gengroup), None) |
951 | 961 |
952 def changegroupsubset(repo, roots, heads, source, version='01'): | 962 def changegroupsubset(repo, roots, heads, source, version='01'): |
953 """Compute a changegroup consisting of all the nodes that are | 963 """Compute a changegroup consisting of all the nodes that are |
954 descendants of any of the roots and ancestors of any of the heads. | 964 descendants of any of the roots and ancestors of any of the heads. |
955 Return a chunkbuffer object whose read() method will return | 965 Return a chunkbuffer object whose read() method will return |
971 # TODO: remove call to nodesbetween. | 981 # TODO: remove call to nodesbetween. |
972 csets, roots, heads = cl.nodesbetween(roots, heads) | 982 csets, roots, heads = cl.nodesbetween(roots, heads) |
973 included = set(csets) | 983 included = set(csets) |
974 discbases = [n for n in discbases if n not in included] | 984 discbases = [n for n in discbases if n not in included] |
975 outgoing = discovery.outgoing(cl, discbases, heads) | 985 outgoing = discovery.outgoing(cl, discbases, heads) |
976 bundler = packermap[version][0](repo) | 986 bundler = getbundler(version, repo) |
977 return getsubset(repo, outgoing, bundler, source) | 987 return getsubset(repo, outgoing, bundler, source) |
978 | 988 |
979 def getlocalchangegroupraw(repo, source, outgoing, bundlecaps=None, | 989 def getlocalchangegroupraw(repo, source, outgoing, bundlecaps=None, |
980 version='01'): | 990 version='01'): |
981 """Like getbundle, but taking a discovery.outgoing as an argument. | 991 """Like getbundle, but taking a discovery.outgoing as an argument. |
982 | 992 |
983 This is only implemented for local repos and reuses potentially | 993 This is only implemented for local repos and reuses potentially |
984 precomputed sets in outgoing. Returns a raw changegroup generator.""" | 994 precomputed sets in outgoing. Returns a raw changegroup generator.""" |
985 if not outgoing.missing: | 995 if not outgoing.missing: |
986 return None | 996 return None |
987 bundler = packermap[version][0](repo, bundlecaps) | 997 bundler = getbundler(version, repo, bundlecaps) |
988 return getsubsetraw(repo, outgoing, bundler, source) | 998 return getsubsetraw(repo, outgoing, bundler, source) |
989 | 999 |
990 def getlocalchangegroup(repo, source, outgoing, bundlecaps=None, | 1000 def getlocalchangegroup(repo, source, outgoing, bundlecaps=None, |
991 version='01'): | 1001 version='01'): |
992 """Like getbundle, but taking a discovery.outgoing as an argument. | 1002 """Like getbundle, but taking a discovery.outgoing as an argument. |
993 | 1003 |
994 This is only implemented for local repos and reuses potentially | 1004 This is only implemented for local repos and reuses potentially |
995 precomputed sets in outgoing.""" | 1005 precomputed sets in outgoing.""" |
996 if not outgoing.missing: | 1006 if not outgoing.missing: |
997 return None | 1007 return None |
998 bundler = packermap[version][0](repo, bundlecaps) | 1008 bundler = getbundler(version, repo, bundlecaps) |
999 return getsubset(repo, outgoing, bundler, source) | 1009 return getsubset(repo, outgoing, bundler, source) |
1000 | 1010 |
1001 def computeoutgoing(repo, heads, common): | 1011 def computeoutgoing(repo, heads, common): |
1002 """Computes which revs are outgoing given a set of common | 1012 """Computes which revs are outgoing given a set of common |
1003 and a set of heads. | 1013 and a set of heads. |