##// END OF EJS Templates
upgrade: support upgrade to/from zstd storage (issue6088)...
marmoute -
r42306:d086ba38 default
parent child Browse files
Show More
@@ -24,6 +24,10 from . import (
24 vfs as vfsmod,
24 vfs as vfsmod,
25 )
25 )
26
26
27 from .utils import (
28 compression,
29 )
30
27 def requiredsourcerequirements(repo):
31 def requiredsourcerequirements(repo):
28 """Obtain requirements required to be present to upgrade a repo.
32 """Obtain requirements required to be present to upgrade a repo.
29
33
@@ -61,9 +65,16 def supportremovedrequirements(repo):
61 the dropped requirement must appear in the returned set for the upgrade
65 the dropped requirement must appear in the returned set for the upgrade
62 to be allowed.
66 to be allowed.
63 """
67 """
64 return {
68 supported = {
65 localrepo.SPARSEREVLOG_REQUIREMENT,
69 localrepo.SPARSEREVLOG_REQUIREMENT,
66 }
70 }
71 for name in compression.compengines:
72 engine = compression.compengines[name]
73 if engine.available() and engine.revlogheader():
74 supported.add(b'exp-compression-%s' % name)
75 if engine.name() == 'zstd':
76 supported.add(b'revlog-compression-zstd')
77 return supported
67
78
68 def supporteddestrequirements(repo):
79 def supporteddestrequirements(repo):
69 """Obtain requirements that upgrade supports in the destination.
80 """Obtain requirements that upgrade supports in the destination.
@@ -73,7 +84,7 def supporteddestrequirements(repo):
73
84
74 Extensions should monkeypatch this to add their custom requirements.
85 Extensions should monkeypatch this to add their custom requirements.
75 """
86 """
76 return {
87 supported = {
77 'dotencode',
88 'dotencode',
78 'fncache',
89 'fncache',
79 'generaldelta',
90 'generaldelta',
@@ -81,6 +92,13 def supporteddestrequirements(repo):
81 'store',
92 'store',
82 localrepo.SPARSEREVLOG_REQUIREMENT,
93 localrepo.SPARSEREVLOG_REQUIREMENT,
83 }
94 }
95 for name in compression.compengines:
96 engine = compression.compengines[name]
97 if engine.available() and engine.revlogheader():
98 supported.add(b'exp-compression-%s' % name)
99 if engine.name() == 'zstd':
100 supported.add(b'revlog-compression-zstd')
101 return supported
84
102
85 def allowednewrequirements(repo):
103 def allowednewrequirements(repo):
86 """Obtain requirements that can be added to a repository during upgrade.
104 """Obtain requirements that can be added to a repository during upgrade.
@@ -92,12 +110,19 def allowednewrequirements(repo):
92 bad additions because the whitelist approach is safer and will prevent
110 bad additions because the whitelist approach is safer and will prevent
93 future, unknown requirements from accidentally being added.
111 future, unknown requirements from accidentally being added.
94 """
112 """
95 return {
113 supported = {
96 'dotencode',
114 'dotencode',
97 'fncache',
115 'fncache',
98 'generaldelta',
116 'generaldelta',
99 localrepo.SPARSEREVLOG_REQUIREMENT,
117 localrepo.SPARSEREVLOG_REQUIREMENT,
100 }
118 }
119 for name in compression.compengines:
120 engine = compression.compengines[name]
121 if engine.available() and engine.revlogheader():
122 supported.add(b'exp-compression-%s' % name)
123 if engine.name() == 'zstd':
124 supported.add(b'revlog-compression-zstd')
125 return supported
101
126
102 def preservedrequirements(repo):
127 def preservedrequirements(repo):
103 return set()
128 return set()
@@ -854,4 +854,78 Check that we can remove the sparse-revl
854 generaldelta
854 generaldelta
855 revlogv1
855 revlogv1
856 store
856 store
857
858 #if zstd
859
860 Check upgrading to a zstd revlog
861 --------------------------------
862
863 upgrade
864
865 $ hg --config format.revlog-compression=zstd debugupgraderepo --run --no-backup >/dev/null
866 $ hg debugformat -v
867 format-variant repo config default
868 fncache: yes yes yes
869 dotencode: yes yes yes
870 generaldelta: yes yes yes
871 sparserevlog: yes yes yes
872 plain-cl-delta: yes yes yes
873 compression: zstd zlib zlib
874 compression-level: default default default
875 $ cat .hg/requires
876 dotencode
877 fncache
878 generaldelta
879 revlog-compression-zstd
880 revlogv1
881 sparserevlog
882 store
883
884 downgrade
885
886 $ hg debugupgraderepo --run --no-backup > /dev/null
887 $ hg debugformat -v
888 format-variant repo config default
889 fncache: yes yes yes
890 dotencode: yes yes yes
891 generaldelta: yes yes yes
892 sparserevlog: yes yes yes
893 plain-cl-delta: yes yes yes
894 compression: zlib zlib zlib
895 compression-level: default default default
896 $ cat .hg/requires
897 dotencode
898 fncache
899 generaldelta
900 revlogv1
901 sparserevlog
902 store
903
904 upgrade from hgrc
905
906 $ cat >> .hg/hgrc << EOF
907 > [format]
908 > revlog-compression=zstd
909 > EOF
910 $ hg debugupgraderepo --run --no-backup > /dev/null
911 $ hg debugformat -v
912 format-variant repo config default
913 fncache: yes yes yes
914 dotencode: yes yes yes
915 generaldelta: yes yes yes
916 sparserevlog: yes yes yes
917 plain-cl-delta: yes yes yes
918 compression: zstd zstd zlib
919 compression-level: default default default
920 $ cat .hg/requires
921 dotencode
922 fncache
923 generaldelta
924 revlog-compression-zstd
925 revlogv1
926 sparserevlog
927 store
928
857 $ cd ..
929 $ cd ..
930
931 #endif
General Comments 0
You need to be logged in to leave comments. Login now