tests/test-amend-subrepo.t
author Raphaël Gomès <rgomes@octobus.net>
Tue, 05 Apr 2022 10:55:28 +0200
branchstable
changeset 49000 dd6b67d5c256
parent 43913 4b7d5d10c45d
child 49826 c84844cd523a
permissions -rw-r--r--
rust: fix unsound `OwningDirstateMap` As per the previous patch, `OwningDirstateMap` is unsound. Self-referential structs are difficult to implement correctly in Rust since the compiler is free to move structs around as much as it wants to. They are also very rarely needed in practice, so the state-of-the-art on how they should be done within the Rust rules is still a bit new. The crate `ouroboros` is an attempt at providing a safe way (in the Rust sense) of declaring self-referential structs. It is getting a lot attention and was improved very quickly when soundness issues were found in the past: rather than relying on our own (limited) review circle, we might as well use the de-facto common crate to fix this problem. This will give us a much better chance of finding issues should any new ones be discovered as well as the benefit of fewer `unsafe` APIs of our own. I was starting to think about how I would present a safe API to the old struct but soon realized that the callback-based approach was already done in `ouroboros`, along with a lot more care towards refusing incorrect structs. In short: we don't return a mutable reference to the `DirstateMap` anymore, we expect users of its API to pass a `FnOnce` that takes the map as an argument. This allows our `OwningDirstateMap` to control the input and output lifetimes of the code that modifies it to prevent such issues. Changing to `ouroboros` meant changing every API with it, but it is relatively low churn in the end. It correctly identified the example buggy modification of `copy_map_insert` outlined in the previous patch as violating the borrow rules. Differential Revision: https://phab.mercurial-scm.org/D12429
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35024
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     1
#testcases obsstore-off obsstore-on
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     2
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     3
  $ cat << EOF >> $HGRCPATH
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     4
  > [extensions]
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     5
  > amend =
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     6
  > EOF
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     7
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     8
#if obsstore-on
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
     9
  $ cat << EOF >> $HGRCPATH
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    10
  > [experimental]
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    11
  > evolution.createmarkers = True
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    12
  > EOF
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    13
#endif
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    14
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    15
Prepare parent repo
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    16
-------------------
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    17
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    18
  $ hg init r
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    19
  $ cd r
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    20
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    21
  $ echo a > a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    22
  $ hg ci -Am0
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    23
  adding a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    24
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    25
Link first subrepo
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    26
------------------
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    27
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    28
  $ echo 's = s' >> .hgsub
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    29
  $ hg add .hgsub
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    30
  $ hg init s
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    31
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    32
amend without .hgsub
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    33
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    34
  $ hg amend s
35026
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
    35
  abort: can't commit subrepos without .hgsub
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
    36
  [255]
35024
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    37
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    38
amend with subrepo
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    39
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    40
  $ hg amend
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    41
  saved backup bundle to * (glob) (obsstore-off !)
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    42
  $ hg status --change .
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    43
  A .hgsub
35026
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
    44
  A .hgsubstate
35024
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    45
  A a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    46
  $ cat .hgsubstate
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    47
  0000000000000000000000000000000000000000 s
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    48
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    49
Update subrepo
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    50
--------------
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    51
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    52
add new commit to be amended
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    53
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    54
  $ echo a >> a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    55
  $ hg ci -m1
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    56
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    57
amend with dirty subrepo
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    58
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    59
  $ echo a >> s/a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    60
  $ hg add -R s
35393
4441705b7111 tests: remove (glob) annotations that were only for '\' matches
Matt Harbison <matt_harbison@yahoo.com>
parents: 35166
diff changeset
    61
  adding s/a
35024
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    62
  $ hg amend
35026
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
    63
  abort: uncommitted changes in subrepository "s"
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
    64
  (use --subrepos for recursive commit)
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
    65
  [255]
35024
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    66
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    67
amend with modified subrepo
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    68
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    69
  $ hg ci -R s -m0
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    70
  $ hg amend
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    71
  saved backup bundle to * (glob) (obsstore-off !)
35026
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
    72
  $ hg status --change .
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
    73
  M .hgsubstate
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
    74
  M a
35024
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    75
  $ cat .hgsubstate
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    76
  f7b1eb17ad24730a1651fccd46c43826d1bbc2ac s
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    77
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    78
revert subrepo change
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    79
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    80
  $ hg up -R s -q null
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    81
  $ hg amend
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    82
  saved backup bundle to * (glob) (obsstore-off !)
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    83
  $ hg status --change .
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    84
  M a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    85
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    86
Link another subrepo
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    87
--------------------
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    88
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    89
add new commit to be amended
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    90
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    91
  $ echo b >> b
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    92
  $ hg ci -qAm2
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    93
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    94
also checks if non-subrepo change is included
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    95
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    96
  $ echo a >> a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    97
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    98
amend with another subrepo
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
    99
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   100
  $ hg init t
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   101
  $ echo b >> t/b
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   102
  $ hg ci -R t -Am0
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   103
  adding b
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   104
  $ echo 't = t' >> .hgsub
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   105
  $ hg amend
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   106
  saved backup bundle to * (glob) (obsstore-off !)
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   107
  $ hg status --change .
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   108
  M .hgsub
35026
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
   109
  M .hgsubstate
35024
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   110
  M a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   111
  A b
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   112
  $ cat .hgsubstate
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   113
  0000000000000000000000000000000000000000 s
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   114
  bfb1a4fb358498a9533dabf4f2043d94162f1fcd t
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   115
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   116
Unlink one subrepo
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   117
------------------
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   118
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   119
add new commit to be amended
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   120
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   121
  $ echo a >> a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   122
  $ hg ci -m3
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   123
41977
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   124
  $ echo 't = t' > .hgsub
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   125
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   126
--interactive won't silently ignore dirty subrepos
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   127
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   128
  $ echo modified > t/b
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   129
  $ hg amend --interactive --config ui.interactive=True
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   130
  abort: uncommitted changes in subrepository "t"
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   131
  [255]
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   132
  $ hg amend --interactive --config ui.interactive=True --config ui.commitsubrepos=True
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   133
  abort: uncommitted changes in subrepository "t"
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   134
  [255]
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   135
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   136
  $ hg -R t revert -q --all --no-backup
4ea21df312ec record: prevent commits that don't pick up dirty subrepo changes (issue6102)
Matt Harbison <matt_harbison@yahoo.com>
parents: 35393
diff changeset
   137
35024
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   138
amend with one subrepo dropped
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   139
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   140
  $ hg amend
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   141
  saved backup bundle to * (glob) (obsstore-off !)
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   142
  $ hg status --change .
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   143
  M .hgsub
35026
691524f0bbf6 amend: update .hgsubstate before committing a memctx (issue5677)
Yuya Nishihara <yuya@tcha.org>
parents: 35024
diff changeset
   144
  M .hgsubstate
35024
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   145
  M a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   146
  $ cat .hgsubstate
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   147
  bfb1a4fb358498a9533dabf4f2043d94162f1fcd t
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   148
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   149
Unlink subrepos completely
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   150
--------------------------
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   151
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   152
add new commit to be amended
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   153
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   154
  $ echo a >> a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   155
  $ hg ci -m3
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   156
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   157
amend with .hgsub removed
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   158
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   159
  $ hg rm .hgsub
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   160
  $ hg amend
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   161
  saved backup bundle to * (glob) (obsstore-off !)
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   162
  $ hg status --change .
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   163
  M a
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   164
  R .hgsub
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   165
  R .hgsubstate
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   166
43913
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   167
broken repositories will refuse to push
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   168
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   169
#if obsstore-off
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   170
  $ hg up -q -C 2
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   171
#else
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   172
  $ hg up -q -C 6
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   173
#endif
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   174
  $ echo c >> t/b
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   175
  $ hg amend -q -R t
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   176
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   177
  $ hg init ../dest
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   178
  $ hg init ../dest/t
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   179
  $ hg init ../dest/s
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   180
  $ hg push -q ../dest
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   181
  abort: subrepo 't' is hidden in revision 04aa62396ec6 (obsstore-on !)
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   182
  abort: subrepo 't' not found in revision 04aa62396ec6 (obsstore-off !)
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   183
  [255]
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   184
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   185
... unless forced
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   186
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   187
  $ hg push --force -q ../dest
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   188
  $ hg verify -R ../dest
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   189
  checking changesets
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   190
  checking manifests
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   191
  crosschecking files in changesets and manifests
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   192
  checking files
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   193
  checked 5 changesets with 12 changes to 4 files
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   194
  checking subrepo links
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   195
  subrepo 't' not found in revision 04aa62396ec6
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   196
  subrepo 't' not found in revision 6bce99600681
4b7d5d10c45d exchange: ensure all outgoing subrepo references are present before pushing
Matt Harbison <matt_harbison@yahoo.com>
parents: 41977
diff changeset
   197
35024
3f909147a2c3 tests: demonstrate that .hgsubstate isn't updated on amend
Yuya Nishihara <yuya@tcha.org>
parents:
diff changeset
   198
  $ cd ..