branching: merge default into stable stable 5.9rc0
authorPierre-Yves David <pierre-yves.david@octobus.net>
Wed, 21 Jul 2021 22:52:09 +0200
branchstable
changeset 47759 d7515d29761d
parent 47506 29ea3b4c4f62 (diff)
parent 47758 ec77f709495c (current diff)
child 47760 9e6978463c6e
branching: merge default into stable This mark the start of the 5.9 freeze.
mercurial/revlog.py
mercurial/streamclone.py
--- a/.hgsigs	Mon Jul 19 23:14:38 2021 +0200
+++ b/.hgsigs	Wed Jul 21 22:52:09 2021 +0200
@@ -211,3 +211,4 @@
 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
+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
--- a/.hgtags	Mon Jul 19 23:14:38 2021 +0200
+++ b/.hgtags	Wed Jul 21 22:52:09 2021 +0200
@@ -224,3 +224,4 @@
 f67b8946bb1b6cfa8328dbf8d6a9128b69ccdcb4 5.8rc0
 8d2b62d716b095507effaa8d56f87cd27ba659ab 5.8rc1
 067f2c53fb24506c9e9fb4639871b13b19a85f8a 5.8
+411dc27fd9fd076d6a031a08fcaace659afe2fe3 5.8.1
--- a/mercurial/revlog.py	Mon Jul 19 23:14:38 2021 +0200
+++ b/mercurial/revlog.py	Wed Jul 21 22:52:09 2021 +0200
@@ -897,10 +897,8 @@
             if rev == wdirrev:
                 raise error.WdirUnsupported
             raise
-        if entry[5] == nullrev:
-            return entry[6], entry[5]
-        else:
-            return entry[5], entry[6]
+
+        return entry[5], entry[6]
 
     # fast parentrevs(rev) where rev isn't filtered
     _uncheckedparentrevs = parentrevs
@@ -921,11 +919,7 @@
     def parents(self, node):
         i = self.index
         d = i[self.rev(node)]
-        # inline node() to avoid function call overhead
-        if d[5] == self.nullid:
-            return i[d[6]][7], i[d[5]][7]
-        else:
-            return i[d[5]][7], i[d[6]][7]
+        return i[d[5]][7], i[d[6]][7]  # map revisions to nodes inline
 
     def chainlen(self, rev):
         return self._chaininfo(rev)[0]
--- a/mercurial/streamclone.py	Mon Jul 19 23:14:38 2021 +0200
+++ b/mercurial/streamclone.py	Wed Jul 21 22:52:09 2021 +0200
@@ -565,6 +565,16 @@
 def _emit2(repo, entries, totalfilesize):
     """actually emit the stream bundle"""
     vfsmap = _makemap(repo)
+    # we keep repo.vfs out of the on purpose, ther are too many danger there
+    # (eg: .hg/hgrc),
+    #
+    # this assert is duplicated (from _makemap) as author might think this is
+    # fine, while this is really not fine.
+    if repo.vfs in vfsmap.values():
+        raise error.ProgrammingError(
+            b'repo.vfs must not be added to vfsmap for security reasons'
+        )
+
     progress = repo.ui.makeprogress(
         _(b'bundle'), total=totalfilesize, unit=_(b'bytes')
     )
@@ -713,6 +723,15 @@
         progress.update(0)
 
         vfsmap = _makemap(repo)
+        # we keep repo.vfs out of the on purpose, ther are too many danger
+        # there (eg: .hg/hgrc),
+        #
+        # this assert is duplicated (from _makemap) as author might think this
+        # is fine, while this is really not fine.
+        if repo.vfs in vfsmap.values():
+            raise error.ProgrammingError(
+                b'repo.vfs must not be added to vfsmap for security reasons'
+            )
 
         with repo.transaction(b'clone'):
             ctxs = (vfs.backgroundclosing(repo.ui) for vfs in vfsmap.values())
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-issue6528.t	Wed Jul 21 22:52:09 2021 +0200
@@ -0,0 +1,168 @@
+===============================================================
+Test non-regression on the corruption associated with issue6528
+===============================================================
+
+Setup
+-----
+
+  $ hg init base-repo
+  $ cd base-repo
+
+  $ cat <<EOF > a.txt
+  > 1
+  > 2
+  > 3
+  > 4
+  > 5
+  > 6
+  > EOF
+
+  $ hg add a.txt
+  $ hg commit -m 'c_base_c - create a.txt'
+
+Modify a.txt
+
+  $ sed -e 's/1/foo/' a.txt > a.tmp; mv a.tmp a.txt
+  $ hg commit -m 'c_modify_c - modify a.txt'
+
+Modify and rename a.txt to b.txt
+
+  $ hg up -r "desc('c_base_c')"
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ sed -e 's/6/bar/' a.txt > a.tmp; mv a.tmp a.txt
+  $ hg mv a.txt b.txt
+  $ hg commit -m 'c_rename_c - rename and modify a.txt to b.txt'
+  created new head
+
+Merge each branch
+
+  $ hg merge -r "desc('c_modify_c')"
+  merging b.txt and a.txt to b.txt
+  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg commit -m 'c_merge_c: commit merge'
+
+  $ hg debugrevlogindex b.txt
+     rev linkrev nodeid       p1           p2
+       0       2 05b806ebe5ea 000000000000 000000000000
+       1       3 a58b36ad6b65 000000000000 05b806ebe5ea
+
+Check commit Graph
+
+  $ hg log -G
+  @    changeset:   3:a1cc2bdca0aa
+  |\   tag:         tip
+  | |  parent:      2:615c6ccefd15
+  | |  parent:      1:373d507f4667
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     c_merge_c: commit merge
+  | |
+  | o  changeset:   2:615c6ccefd15
+  | |  parent:      0:f5a5a568022f
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     c_rename_c - rename and modify a.txt to b.txt
+  | |
+  o |  changeset:   1:373d507f4667
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     c_modify_c - modify a.txt
+  |
+  o  changeset:   0:f5a5a568022f
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     c_base_c - create a.txt
+  
+
+  $ hg cat -r . b.txt
+  foo
+  2
+  3
+  4
+  5
+  bar
+  $ cat b.txt
+  foo
+  2
+  3
+  4
+  5
+  bar
+  $ cd ..
+
+
+Check the lack of corruption
+----------------------------
+
+  $ hg clone --pull base-repo cloned
+  requesting all changes
+  adding changesets
+  adding manifests
+  adding file changes
+  added 4 changesets with 4 changes to 2 files
+  new changesets f5a5a568022f:a1cc2bdca0aa
+  updating to branch default
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cd cloned
+  $ hg up -r "desc('c_merge_c')"
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+
+Status is buggy, even with debugrebuilddirstate
+
+  $ hg cat -r . b.txt
+  foo
+  2
+  3
+  4
+  5
+  bar
+  $ cat b.txt
+  foo
+  2
+  3
+  4
+  5
+  bar
+  $ hg status
+  $ hg debugrebuilddirstate
+  $ hg status
+
+the history was altered
+
+in theory p1/p2 order does not matter but in practice p1 == nullid is used as a
+marker that some metadata are present and should be fetched.
+
+  $ hg debugrevlogindex b.txt
+     rev linkrev nodeid       p1           p2
+       0       2 05b806ebe5ea 000000000000 000000000000
+       1       3 a58b36ad6b65 000000000000 05b806ebe5ea
+
+Check commit Graph
+
+  $ hg log -G
+  @    changeset:   3:a1cc2bdca0aa
+  |\   tag:         tip
+  | |  parent:      2:615c6ccefd15
+  | |  parent:      1:373d507f4667
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     c_merge_c: commit merge
+  | |
+  | o  changeset:   2:615c6ccefd15
+  | |  parent:      0:f5a5a568022f
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     c_rename_c - rename and modify a.txt to b.txt
+  | |
+  o |  changeset:   1:373d507f4667
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     c_modify_c - modify a.txt
+  |
+  o  changeset:   0:f5a5a568022f
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     c_base_c - create a.txt
+  
--- a/tests/test-narrow-shallow-merges.t	Mon Jul 19 23:14:38 2021 +0200
+++ b/tests/test-narrow-shallow-merges.t	Wed Jul 21 22:52:09 2021 +0200
@@ -179,7 +179,7 @@
   
 
   $ hg log -T '{if(ellipsis,"...")}{node|short} {p1node|short} {p2node|short} {desc}\n' | sort
-  ...2a20009de83e 3ac1f5779de3 000000000000 outside 10
+  ...2a20009de83e 000000000000 3ac1f5779de3 outside 10
   ...3ac1f5779de3 bb96a08b062a 465567bdfb2d merge a/b/c/d 9
   ...8d874d57adea 7ef88b4dd4fa 000000000000 outside 12
   ...b844052e7b3b 000000000000 000000000000 outside 2c