diff mercurial/localrepo.py @ 42300:278dcb24e535

copies: write empty entries in changeset when also writing to filelog When writing to both changeset and filelog (during transition), we don't want the reader to waste time by falling back to reading from the filelog when there is no copy metadata. Let's write out empty copy metadata instead (the read path is already prepared for this case). Thanks to Greg for pointing this out. Differential Revision: https://phab.mercurial-scm.org/D6306
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 23 Apr 2019 13:29:13 -0700
parents 8988e640a8ac
children 526750cdd02d
line wrap: on
line diff
--- a/mercurial/localrepo.py	Mon May 13 14:19:36 2019 -0400
+++ b/mercurial/localrepo.py	Tue Apr 23 13:29:13 2019 -0700
@@ -2650,6 +2650,14 @@
                 mn = p1.manifestnode()
                 files = []
 
+            if writecopiesto == 'changeset-only':
+                # If writing only to changeset extras, use None to indicate that
+                # no entry should be written. If writing to both, write an empty
+                # entry to prevent the reader from falling back to reading
+                # filelogs.
+                p1copies = p1copies or None
+                p2copies = p2copies or None
+
             # update changelog
             self.ui.note(_("committing changelog\n"))
             self.changelog.delayupdate(tr)