D6936: copies: prepare changelog for more copies storage mode

2019-10-01 Thread marmoute (Pierre-Yves David)
Closed by commit rHG0b87eb2fba67: copies: prepare changelog for more copies 
storage mode (authored by marmoute).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs 
Review".

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D6936?vs=16733=16757

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D6936/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D6936

AFFECTED FILES
  mercurial/changelog.py
  mercurial/localrepo.py

CHANGE DETAILS

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -751,6 +751,11 @@
 else: # explicitly mark repo as using revlogv0
 options['revlogv0'] = True
 
+writecopiesto = ui.config('experimental', 'copies.write-to')
+copiesextramode = ('changeset-only', 'compatibility')
+if (writecopiesto in copiesextramode):
+options['copies-storage'] = 'extra'
+
 return options
 
 def resolverevlogstorevfsoptions(ui, requirements, features):
diff --git a/mercurial/changelog.py b/mercurial/changelog.py
--- a/mercurial/changelog.py
+++ b/mercurial/changelog.py
@@ -391,6 +391,7 @@
 self._delaybuf = None
 self._divert = False
 self.filteredrevs = frozenset()
+self._copiesstorage = opener.options.get('copies-storage')
 
 def tiprev(self):
 for i in pycompat.xrange(len(self) -1, -2, -1):
@@ -633,21 +634,22 @@
 elif branch in (".", "null", "tip"):
 raise error.StorageError(_('the name \'%s\' is reserved')
  % branch)
-extrasentries = p1copies, p2copies, filesadded, filesremoved
-if extra is None and any(x is not None for x in extrasentries):
-extra = {}
 sortedfiles = sorted(files)
 if extra is not None:
 for name in ('p1copies', 'p2copies', 'filesadded', 'filesremoved'):
 extra.pop(name, None)
-if p1copies is not None:
-extra['p1copies'] = encodecopies(sortedfiles, p1copies)
-if p2copies is not None:
-extra['p2copies'] = encodecopies(sortedfiles, p2copies)
-if filesadded is not None:
-extra['filesadded'] = encodefileindices(sortedfiles, filesadded)
-if filesremoved is not None:
-extra['filesremoved'] = encodefileindices(sortedfiles, 
filesremoved)
+if self._copiesstorage == 'extra':
+extrasentries = p1copies, p2copies, filesadded, filesremoved
+if extra is None and any(x is not None for x in extrasentries):
+extra = {}
+if p1copies is not None:
+extra['p1copies'] = encodecopies(sortedfiles, p1copies)
+if p2copies is not None:
+extra['p2copies'] = encodecopies(sortedfiles, p2copies)
+if filesadded is not None:
+extra['filesadded'] = encodefileindices(sortedfiles, 
filesadded)
+if filesremoved is not None:
+extra['filesremoved'] = encodefileindices(sortedfiles, 
filesremoved)
 
 if extra:
 extra = encodeextra(extra)



To: marmoute, martinvonz, durin42, #hg-reviewers
Cc: mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D6936: copies: prepare changelog for more copies storage mode

2019-10-01 Thread marmoute (Pierre-Yves David)
marmoute created this revision.
marmoute added reviewers: martinvonz, durin42.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  We want to store copies information in sidedata, the logic will be quite 
similar
  to the one used for extra, but sightly different (not in extra, no hash 
impact).
  
  We start with small refactoring to make our work easier and the coming 
changesets
  cleaners.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D6936

AFFECTED FILES
  mercurial/changelog.py
  mercurial/localrepo.py

CHANGE DETAILS

diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -751,6 +751,11 @@
 else: # explicitly mark repo as using revlogv0
 options['revlogv0'] = True
 
+writecopiesto = ui.config('experimental', 'copies.write-to')
+copiesextramode = ('changeset-only', 'compatibility')
+if (writecopiesto in copiesextramode):
+options['copies-storage'] = 'extra'
+
 return options
 
 def resolverevlogstorevfsoptions(ui, requirements, features):
diff --git a/mercurial/changelog.py b/mercurial/changelog.py
--- a/mercurial/changelog.py
+++ b/mercurial/changelog.py
@@ -391,6 +391,7 @@
 self._delaybuf = None
 self._divert = False
 self.filteredrevs = frozenset()
+self._copiesstorage = opener.options.get('copies-storage')
 
 def tiprev(self):
 for i in pycompat.xrange(len(self) -1, -2, -1):
@@ -633,21 +634,22 @@
 elif branch in (".", "null", "tip"):
 raise error.StorageError(_('the name \'%s\' is reserved')
  % branch)
-extrasentries = p1copies, p2copies, filesadded, filesremoved
-if extra is None and any(x is not None for x in extrasentries):
-extra = {}
 sortedfiles = sorted(files)
 if extra is not None:
 for name in ('p1copies', 'p2copies', 'filesadded', 'filesremoved'):
 extra.pop(name, None)
-if p1copies is not None:
-extra['p1copies'] = encodecopies(sortedfiles, p1copies)
-if p2copies is not None:
-extra['p2copies'] = encodecopies(sortedfiles, p2copies)
-if filesadded is not None:
-extra['filesadded'] = encodefileindices(sortedfiles, filesadded)
-if filesremoved is not None:
-extra['filesremoved'] = encodefileindices(sortedfiles, 
filesremoved)
+if self._copiesstorage == 'extra':
+extrasentries = p1copies, p2copies, filesadded, filesremoved
+if extra is None and any(x is not None for x in extrasentries):
+extra = {}
+if p1copies is not None:
+extra['p1copies'] = encodecopies(sortedfiles, p1copies)
+if p2copies is not None:
+extra['p2copies'] = encodecopies(sortedfiles, p2copies)
+if filesadded is not None:
+extra['filesadded'] = encodefileindices(sortedfiles, 
filesadded)
+if filesremoved is not None:
+extra['filesremoved'] = encodefileindices(sortedfiles, 
filesremoved)
 
 if extra:
 extra = encodeextra(extra)



To: marmoute, martinvonz, durin42, #hg-reviewers
Cc: mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel