changeset 45734:53c265a6fc83

sidedata: return enough data to set the proper flag in the future If the revision has information relevant to copy tracing, we need to set a dedicated flag in revlog. Currently the upgrade process is failing to do so. Before we teach the upgrade process about flags, we make the information available where we will needs it. Differential Revision: https://phab.mercurial-scm.org/D9198
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Tue, 13 Oct 2020 03:30:49 +0200
parents ee3fd9021fac
children edf4fa06df94
files mercurial/metadata.py
diffstat 1 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/metadata.py	Tue Oct 13 02:49:03 2020 +0200
+++ b/mercurial/metadata.py	Tue Oct 13 03:30:49 2020 +0200
@@ -803,7 +803,7 @@
 def _getsidedata(srcrepo, rev):
     ctx = srcrepo[rev]
     files = compute_all_files_changes(ctx)
-    return encode_files_sidedata(files)
+    return encode_files_sidedata(files), files.has_copies_info
 
 
 def getsidedataadder(srcrepo, destrepo):
@@ -881,18 +881,19 @@
     staging = {}
 
     def sidedata_companion(revlog, rev):
-        sidedata = {}
+        data = {}, False
         if util.safehasattr(revlog, b'filteredrevs'):  # this is a changelog
             # Is the data previously shelved ?
             sidedata = staging.pop(rev, None)
             if sidedata is None:
                 # look at the queued result until we find the one we are lookig
                 # for (shelve the other ones)
-                r, sidedata = sidedataq.get()
+                r, data = sidedataq.get()
                 while r != rev:
-                    staging[r] = sidedata
+                    staging[r] = data
                     r, sidedata = sidedataq.get()
             tokens.release()
+        sidedataq, has_copies_info = data
         return False, (), sidedata
 
     return sidedata_companion
@@ -906,7 +907,7 @@
     def sidedatacompanion(revlog, rev):
         sidedata = {}
         if util.safehasattr(revlog, 'filteredrevs'):  # this is a changelog
-            sidedata = _getsidedata(srcrepo, rev)
+            sidedata, has_copies_info = _getsidedata(srcrepo, rev)
         return False, (), sidedata
 
     return sidedatacompanion