823 if b'revlogv1' in requirements or REVLOGV2_REQUIREMENT in requirements: |
823 if b'revlogv1' in requirements or REVLOGV2_REQUIREMENT in requirements: |
824 options.update(resolverevlogstorevfsoptions(ui, requirements, features)) |
824 options.update(resolverevlogstorevfsoptions(ui, requirements, features)) |
825 else: # explicitly mark repo as using revlogv0 |
825 else: # explicitly mark repo as using revlogv0 |
826 options[b'revlogv0'] = True |
826 options[b'revlogv0'] = True |
827 |
827 |
828 writecopiesto = ui.config(b'experimental', b'copies.write-to') |
828 if COPIESSDC_REQUIREMENT in requirements: |
829 copiesextramode = (b'changeset-only', b'compatibility') |
829 options[b'copies-storage'] = b'changeset-sidedata' |
830 if writecopiesto in copiesextramode: |
830 else: |
831 options[b'copies-storage'] = b'extra' |
831 writecopiesto = ui.config(b'experimental', b'copies.write-to') |
|
832 copiesextramode = (b'changeset-only', b'compatibility') |
|
833 if writecopiesto in copiesextramode: |
|
834 options[b'copies-storage'] = b'extra' |
832 |
835 |
833 return options |
836 return options |
834 |
837 |
835 |
838 |
836 def resolverevlogstorevfsoptions(ui, requirements, features): |
839 def resolverevlogstorevfsoptions(ui, requirements, features): |
1179 self._sparsesignaturecache = {} |
1182 self._sparsesignaturecache = {} |
1180 # Signature to cached matcher instance. |
1183 # Signature to cached matcher instance. |
1181 self._sparsematchercache = {} |
1184 self._sparsematchercache = {} |
1182 |
1185 |
1183 self._extrafilterid = repoview.extrafilter(ui) |
1186 self._extrafilterid = repoview.extrafilter(ui) |
|
1187 |
|
1188 self.filecopiesmode = None |
|
1189 if COPIESSDC_REQUIREMENT in self.requirements: |
|
1190 self.filecopiesmode = b'changeset-sidedata' |
1184 |
1191 |
1185 def _getvfsward(self, origfunc): |
1192 def _getvfsward(self, origfunc): |
1186 """build a ward for self.vfs""" |
1193 """build a ward for self.vfs""" |
1187 rref = weakref.ref(self) |
1194 rref = weakref.ref(self) |
1188 |
1195 |
2947 """ |
2954 """ |
2948 |
2955 |
2949 p1, p2 = ctx.p1(), ctx.p2() |
2956 p1, p2 = ctx.p1(), ctx.p2() |
2950 user = ctx.user() |
2957 user = ctx.user() |
2951 |
2958 |
2952 writecopiesto = self.ui.config(b'experimental', b'copies.write-to') |
2959 if self.filecopiesmode == b'changeset-sidedata': |
2953 writefilecopymeta = writecopiesto != b'changeset-only' |
2960 writechangesetcopy = True |
2954 writechangesetcopy = writecopiesto in ( |
2961 writefilecopymeta = True |
2955 b'changeset-only', |
2962 writecopiesto = None |
2956 b'compatibility', |
2963 else: |
2957 ) |
2964 writecopiesto = self.ui.config(b'experimental', b'copies.write-to') |
|
2965 writefilecopymeta = writecopiesto != b'changeset-only' |
|
2966 writechangesetcopy = writecopiesto in ( |
|
2967 b'changeset-only', |
|
2968 b'compatibility', |
|
2969 ) |
2958 p1copies, p2copies = None, None |
2970 p1copies, p2copies = None, None |
2959 if writechangesetcopy: |
2971 if writechangesetcopy: |
2960 p1copies = ctx.p1copies() |
2972 p1copies = ctx.p1copies() |
2961 p2copies = ctx.p2copies() |
2973 p2copies = ctx.p2copies() |
2962 filesadded, filesremoved = None, None |
2974 filesadded, filesremoved = None, None |