Show More
@@ -893,8 +893,11 b' def _get_worker_sidedata_adder(srcrepo, ' | |||||
893 | staging[r] = data |
|
893 | staging[r] = data | |
894 | r, sidedata = sidedataq.get() |
|
894 | r, sidedata = sidedataq.get() | |
895 | tokens.release() |
|
895 | tokens.release() | |
896 |
sidedata |
|
896 | sidedata, has_copies_info = data | |
897 | return False, (), sidedata |
|
897 | new_flag = 0 | |
|
898 | if has_copies_info: | |||
|
899 | new_flag = sidedataflag.REVIDX_HASCOPIESINFO | |||
|
900 | return False, (), sidedata, new_flag, 0 | |||
898 |
|
901 | |||
899 | return sidedata_companion |
|
902 | return sidedata_companion | |
900 |
|
903 | |||
@@ -905,10 +908,14 b' def _get_simple_sidedata_adder(srcrepo, ' | |||||
905 | It just compute it in the same thread on request""" |
|
908 | It just compute it in the same thread on request""" | |
906 |
|
909 | |||
907 | def sidedatacompanion(revlog, rev): |
|
910 | def sidedatacompanion(revlog, rev): | |
908 | sidedata = {} |
|
911 | sidedata, has_copies_info = {}, False | |
909 | if util.safehasattr(revlog, 'filteredrevs'): # this is a changelog |
|
912 | if util.safehasattr(revlog, 'filteredrevs'): # this is a changelog | |
910 | sidedata, has_copies_info = _getsidedata(srcrepo, rev) |
|
913 | sidedata, has_copies_info = _getsidedata(srcrepo, rev) | |
911 | return False, (), sidedata |
|
914 | new_flag = 0 | |
|
915 | if has_copies_info: | |||
|
916 | new_flag = sidedataflag.REVIDX_HASCOPIESINFO | |||
|
917 | ||||
|
918 | return False, (), sidedata, new_flag, 0 | |||
912 |
|
919 | |||
913 | return sidedatacompanion |
|
920 | return sidedatacompanion | |
914 |
|
921 | |||
@@ -924,6 +931,6 b' def getsidedataremover(srcrepo, destrepo' | |||||
924 | sidedatamod.SD_FILESADDED, |
|
931 | sidedatamod.SD_FILESADDED, | |
925 | sidedatamod.SD_FILESREMOVED, |
|
932 | sidedatamod.SD_FILESREMOVED, | |
926 | ) |
|
933 | ) | |
927 | return False, f, {} |
|
934 | return False, f, {}, 0, sidedataflag.REVIDX_HASCOPIESINFO | |
928 |
|
935 | |||
929 | return sidedatacompanion |
|
936 | return sidedatacompanion |
@@ -2705,14 +2705,16 b' class revlog(object):' | |||||
2705 |
|
2705 | |||
2706 | (srcrevlog, rev) |
|
2706 | (srcrevlog, rev) | |
2707 |
|
2707 | |||
2708 |
and return a |
|
2708 | and return a quintet that control changes to sidedata content from the | |
2709 | old revision to the new clone result: |
|
2709 | old revision to the new clone result: | |
2710 |
|
2710 | |||
2711 | (dropall, filterout, update) |
|
2711 | (dropall, filterout, update, new_flags, dropped_flags) | |
2712 |
|
2712 | |||
2713 | * if `dropall` is True, all sidedata should be dropped |
|
2713 | * if `dropall` is True, all sidedata should be dropped | |
2714 | * `filterout` is a set of sidedata keys that should be dropped |
|
2714 | * `filterout` is a set of sidedata keys that should be dropped | |
2715 | * `update` is a mapping of additionnal/new key -> value |
|
2715 | * `update` is a mapping of additionnal/new key -> value | |
|
2716 | * new_flags is a bitfields of new flags that the revision should get | |||
|
2717 | * dropped_flags is a bitfields of new flags that the revision shoudl not longer have | |||
2716 | """ |
|
2718 | """ | |
2717 | if deltareuse not in self.DELTAREUSEALL: |
|
2719 | if deltareuse not in self.DELTAREUSEALL: | |
2718 | raise ValueError( |
|
2720 | raise ValueError( | |
@@ -2783,7 +2785,7 b' class revlog(object):' | |||||
2783 | p2 = index[entry[6]][7] |
|
2785 | p2 = index[entry[6]][7] | |
2784 | node = entry[7] |
|
2786 | node = entry[7] | |
2785 |
|
2787 | |||
2786 | sidedataactions = (False, [], {}) |
|
2788 | sidedataactions = (False, [], {}, 0, 0) | |
2787 | if sidedatacompanion is not None: |
|
2789 | if sidedatacompanion is not None: | |
2788 | sidedataactions = sidedatacompanion(self, rev) |
|
2790 | sidedataactions = sidedatacompanion(self, rev) | |
2789 |
|
2791 | |||
@@ -2792,7 +2794,11 b' class revlog(object):' | |||||
2792 | cachedelta = None |
|
2794 | cachedelta = None | |
2793 | rawtext = None |
|
2795 | rawtext = None | |
2794 | if any(sidedataactions) or deltareuse == self.DELTAREUSEFULLADD: |
|
2796 | if any(sidedataactions) or deltareuse == self.DELTAREUSEFULLADD: | |
2795 |
dropall |
|
2797 | dropall = sidedataactions[0] | |
|
2798 | filterout = sidedataactions[1] | |||
|
2799 | update = sidedataactions[2] | |||
|
2800 | new_flags = sidedataactions[3] | |||
|
2801 | dropped_flags = sidedataactions[4] | |||
2796 | text, sidedata = self._revisiondata(rev) |
|
2802 | text, sidedata = self._revisiondata(rev) | |
2797 | if dropall: |
|
2803 | if dropall: | |
2798 | sidedata = {} |
|
2804 | sidedata = {} | |
@@ -2801,6 +2807,10 b' class revlog(object):' | |||||
2801 | sidedata.update(update) |
|
2807 | sidedata.update(update) | |
2802 | if not sidedata: |
|
2808 | if not sidedata: | |
2803 | sidedata = None |
|
2809 | sidedata = None | |
|
2810 | ||||
|
2811 | flags |= new_flags | |||
|
2812 | flags &= ~dropped_flags | |||
|
2813 | ||||
2804 | destrevlog.addrevision( |
|
2814 | destrevlog.addrevision( | |
2805 | text, |
|
2815 | text, | |
2806 | tr, |
|
2816 | tr, |
@@ -732,8 +732,8 b' def getsidedatacompanion(srcrepo, dstrep' | |||||
732 | def sidedatacompanion(rl, rev): |
|
732 | def sidedatacompanion(rl, rev): | |
733 | rl = getattr(rl, '_revlog', rl) |
|
733 | rl = getattr(rl, '_revlog', rl) | |
734 | if rl.flags(rev) & revlog.REVIDX_SIDEDATA: |
|
734 | if rl.flags(rev) & revlog.REVIDX_SIDEDATA: | |
735 | return True, (), {} |
|
735 | return True, (), {}, 0, 0 | |
736 | return False, (), {} |
|
736 | return False, (), {}, 0, 0 | |
737 |
|
737 | |||
738 | elif requirements.COPIESSDC_REQUIREMENT in addedreqs: |
|
738 | elif requirements.COPIESSDC_REQUIREMENT in addedreqs: | |
739 | sidedatacompanion = metadata.getsidedataadder(srcrepo, dstrepo) |
|
739 | sidedatacompanion = metadata.getsidedataadder(srcrepo, dstrepo) |
@@ -1,4 +1,4 b'' | |||||
1 | #testcases filelog compatibility changeset sidedata |
|
1 | #testcases filelog compatibility changeset sidedata upgraded | |
2 |
|
2 | |||
3 | ===================================================== |
|
3 | ===================================================== | |
4 | Test Copy tracing for chain of copies involving merge |
|
4 | Test Copy tracing for chain of copies involving merge | |
@@ -594,7 +594,7 b' We upgrade a repository that is not usin' | |||||
594 | commit time. |
|
594 | commit time. | |
595 |
|
595 | |||
596 |
|
596 | |||
597 | #if filelog |
|
597 | #if upgraded | |
598 | $ cat >> $HGRCPATH << EOF |
|
598 | $ cat >> $HGRCPATH << EOF | |
599 | > [format] |
|
599 | > [format] | |
600 | > exp-use-side-data = yes |
|
600 | > exp-use-side-data = yes | |
@@ -622,7 +622,7 b' We upgrade a repository that is not usin' | |||||
622 | #endif |
|
622 | #endif | |
623 |
|
623 | |||
624 |
|
624 | |||
625 | #if no-compatibility no-changeset |
|
625 | #if no-compatibility no-filelog no-changeset | |
626 |
|
626 | |||
627 | $ for rev in `hg log --rev 'all()' -T '{rev}\n'`; do |
|
627 | $ for rev in `hg log --rev 'all()' -T '{rev}\n'`; do | |
628 | > echo "##### revision $rev #####" |
|
628 | > echo "##### revision $rev #####" | |
@@ -804,35 +804,6 b' We upgrade a repository that is not usin' | |||||
804 |
|
804 | |||
805 | #endif |
|
805 | #endif | |
806 |
|
806 | |||
807 | Downgrade to keep testing the filelog algorithm |
|
|||
808 | (This can be removed once we have an explicite "upgrade" tests case_ |
|
|||
809 |
|
||||
810 | #if filelog |
|
|||
811 | $ cat >> $HGRCPATH << EOF |
|
|||
812 | > [format] |
|
|||
813 | > exp-use-side-data = no |
|
|||
814 | > exp-use-copies-side-data-changeset = no |
|
|||
815 | > EOF |
|
|||
816 | $ hg debugformat -v |
|
|||
817 | format-variant repo config default |
|
|||
818 | fncache: yes yes yes |
|
|||
819 | dotencode: yes yes yes |
|
|||
820 | generaldelta: yes yes yes |
|
|||
821 | sparserevlog: yes yes yes |
|
|||
822 | sidedata: yes no no |
|
|||
823 | persistent-nodemap: no no no |
|
|||
824 | copies-sdc: yes no no |
|
|||
825 | plain-cl-delta: yes yes yes |
|
|||
826 | compression: * (glob) |
|
|||
827 | compression-level: default default default |
|
|||
828 | $ hg debugupgraderepo --run --quiet |
|
|||
829 | upgrade will perform the following actions: |
|
|||
830 |
|
||||
831 | requirements |
|
|||
832 | preserved: * (glob) |
|
|||
833 | removed: exp-copies-sidedata-changeset, exp-sidedata-flag |
|
|||
834 |
|
||||
835 | #endif |
|
|||
836 |
|
|
807 | ||
837 | Test copy information chaining |
|
808 | Test copy information chaining | |
838 | ============================== |
|
809 | ============================== |
@@ -70,7 +70,7 b' def wrapgetsidedatacompanion(orig, srcre' | |||||
70 | # and sha2 hashes |
|
70 | # and sha2 hashes | |
71 | sha256 = hashlib.sha256(text).digest() |
|
71 | sha256 = hashlib.sha256(text).digest() | |
72 | update[sidedata.SD_TEST2] = struct.pack('>32s', sha256) |
|
72 | update[sidedata.SD_TEST2] = struct.pack('>32s', sha256) | |
73 | return False, (), update |
|
73 | return False, (), update, 0, 0 | |
74 |
|
74 | |||
75 | return sidedatacompanion |
|
75 | return sidedatacompanion | |
76 |
|
76 |
General Comments 0
You need to be logged in to leave comments.
Login now