annotate tests/test-issue1877.t @ 46846:2819df466cae

tests: add test-remotefilelog-strip.t to demonstrate an issue with linknodes ### Background Every time a commit is modified, remotefilelog updates the metadata for the file object to point to the new commit (I believe that this is different from non-remotefilelog hg, which leaves the linkrevs pointing to the obsolete commits; doing otherwise would involve changing data in the middle of revlogs). With `hg strip` (or other things that use repair.strip()), when you strip a commit that's not the tip of the revlog, there may be commits after it in revnum order that aren't descended from it and don't need to be (and shouldn't be) stripped. These are "saved" by strip in a bundle, and that bundle is reapplied after truncating the relevant revlogs. ### The problem Remotefilelog generally avoids being involved at all in strip. Currently, that includes even providing file contents to this backup bundle. This can cause the linknode to point to a changeset that is no longer in the repository. Example: ``` @ 3 df91f74b871e | | x 2 70494d7ec5ef |/ | x 1 1e423846dde0 |/ o 0 b292c1e3311f ``` Commits 1, 2, and 3 are related via obsolescence, and are description-only changes. The linknode for the file in these commits changed each time we updated the description, so it's currently df91f7. If I strip commits 1 and 3, however, the linknode *remains* df91f7, which no longer exists in the repository. Commit 70494d was "saved", stripped, and then reapplied, so it is in the repository (as revision 1 instead of 2 now), and was unobsoleted since the obsmarker was stripped as well. The linknode for the file should point to 70494d, the most recent commit that is in the repository that modified the file. Remotefilelog has some logic to handle broken linknodes, but it can be slow. We have actually disabled it internally because it's too slow for our purposes. Differential Revision: https://phab.mercurial-scm.org/D10319
author Kyle Lippincott <spectral@google.com>
date Tue, 06 Apr 2021 15:38:33 -0700
parents 2fc86d92c4a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26420
2fc86d92c4a9 urls: bulk-change BTS urls to new location
Matt Mackall <mpm@selenic.com>
parents: 21404
diff changeset
1 https://bz.mercurial-scm.org/1877
13806
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
2
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
3 $ hg init a
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
4 $ cd a
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
5 $ echo a > a
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
6 $ hg add a
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
7 $ hg ci -m 'a'
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
8 $ echo b > a
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
9 $ hg ci -m'b'
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
10 $ hg up 0
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
11 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
12 $ hg book main
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
13 $ hg book
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
14 * main 0:cb9a9f314b8b
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
15 $ echo c > c
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
16 $ hg add c
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
17 $ hg ci -m'c'
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
18 created new head
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
19 $ hg book
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
20 * main 2:d36c0562f908
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
21 $ hg heads
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
22 changeset: 2:d36c0562f908
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
23 bookmark: main
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
24 tag: tip
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
25 parent: 0:cb9a9f314b8b
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
26 user: test
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
27 date: Thu Jan 01 00:00:00 1970 +0000
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
28 summary: c
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
29
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
30 changeset: 1:1e6c11564562
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
31 user: test
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
32 date: Thu Jan 01 00:00:00 1970 +0000
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
33 summary: b
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
34
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
35 $ hg up 1e6c11564562
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
36 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
21404
ca275f7ec576 update: when deactivating a bookmark, print a message
Siddharth Agarwal <sid0@fb.com>
parents: 16913
diff changeset
37 (leaving bookmark main)
13806
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
38 $ hg merge main
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
39 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
40 (branch merge, don't forget to commit)
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
41 $ hg book
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
42 main 2:d36c0562f908
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
43 $ hg ci -m'merge'
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
44 $ hg book
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
45 main 2:d36c0562f908
8ba08a16e4e0 bookmarks: do not forward merged bookmark (issue1877)
David Soria Parra <dsp@php.net>
parents:
diff changeset
46
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 13806
diff changeset
47 $ cd ..