summaryrefslogtreecommitdiff
path: root/tests/test-histedit-no-change.t
blob: 6d9ce270f3c1c8e2eed2e3383f749f0ad527cc31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
test for old histedit issue #6:
editing a changeset without any actual change would corrupt the repository

  $ . "$TESTDIR/histedit-helpers.sh"

  $ cat >> $HGRCPATH <<EOF
  > [extensions]
  > graphlog=
  > histedit=
  > EOF

  $ initrepo ()
  > {
  >     dir="$1"
  >     comment="$2"
  >     if [ -n "${comment}" ]; then
  >         echo % ${comment}
  >         echo % ${comment} | sed 's:.:-:g'
  >     fi
  >     hg init ${dir}
  >     cd ${dir}
  >     for x in a b c d e f ; do
  >         echo $x > $x
  >         hg add $x
  >         hg ci -m $x
  >     done
  >     cd ..
  > }

  $ geneditor ()
  > {
  >     # generate an editor script for selecting changesets to be edited
  >     choice=$1  # changesets that should be edited (using sed line ranges)
  >     cat <<EOF | sed 's:^....::'
  >     # editing the rules, replacing 'pick' with 'edit' for the chosen lines
  >     sed '${choice}s:^pick:edit:' "\$1" > "\${1}.tmp"
  >     mv "\${1}.tmp" "\$1"
  >     # displaying the resulting rules, minus comments and empty lines
  >     sed '/^#/d;/^$/d;s:^:| :' "\$1" >&2
  > EOF
  > }

  $ startediting ()
  > {
  >     # begin an editing session
  >     choice="$1"  # changesets that should be edited
  >     number="$2"  # number of changesets considered (from tip)
  >     comment="$3"
  >     geneditor "${choice}" > edit.sh
  >     echo % start editing the history ${comment}
  >     HGEDITOR="sh ./edit.sh" hg histedit -- -${number} 2>&1 | fixbundle
  > }

  $ continueediting ()
  > {
  >     # continue an edit already in progress
  >     editor="$1"  # message editor when finalizing editing
  >     comment="$2"
  >     echo % finalize changeset editing ${comment}
  >     HGEDITOR=${editor} hg histedit --continue 2>&1 | fixbundle
  > }

  $ graphlog ()
  > {
  >     comment="${1:-log}"
  >     echo % "${comment}"
  >     hg glog --template '{rev} {node} \"{desc|firstline}\"\n'
  > }


  $ initrepo r1 "test editing with no change"
  % test editing with no change
  -----------------------------
  $ cd r1
  $ graphlog "log before editing"
  % log before editing
  @  5 652413bf663ef2a641cab26574e46d5f5a64a55a "f"
  |
  o  4 e860deea161a2f77de56603b340ebbb4536308ae "e"
  |
  o  3 055a42cdd88768532f9cf79daa407fc8d138de9b "d"
  |
  o  2 177f92b773850b59254aa5e923436f921b55483b "c"
  |
  o  1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b"
  |
  o  0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a"
  
  $ startediting 2 3 "(not changing anything)" # edit the 2nd of 3 changesets
  % start editing the history (not changing anything)
  | pick 055a42cdd887 3 d
  | edit e860deea161a 4 e
  | pick 652413bf663e 5 f
  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
  abort: Make changes as needed, you may commit or record as needed now.
  When you are finished, run hg histedit --continue to resume.
  $ continueediting true "(leaving commit message unaltered)"
  % finalize changeset editing (leaving commit message unaltered)
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved

check state of working copy
  $ hg id
  652413bf663e tip

  $ graphlog "log after history editing"
  % log after history editing
  @  5 652413bf663ef2a641cab26574e46d5f5a64a55a "f"
  |
  o  4 e860deea161a2f77de56603b340ebbb4536308ae "e"
  |
  o  3 055a42cdd88768532f9cf79daa407fc8d138de9b "d"
  |
  o  2 177f92b773850b59254aa5e923436f921b55483b "c"
  |
  o  1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b"
  |
  o  0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a"
  

  $ cd ..

  $ initrepo r2 "test editing with no change, then abort"
  % test editing with no change, then abort
  -----------------------------------------
  $ cd r2
  $ graphlog "log before editing"
  % log before editing
  @  5 652413bf663ef2a641cab26574e46d5f5a64a55a "f"
  |
  o  4 e860deea161a2f77de56603b340ebbb4536308ae "e"
  |
  o  3 055a42cdd88768532f9cf79daa407fc8d138de9b "d"
  |
  o  2 177f92b773850b59254aa5e923436f921b55483b "c"
  |
  o  1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b"
  |
  o  0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a"
  
  $ startediting 1,2 3 "(not changing anything)" # edit the 1st two of 3 changesets
  % start editing the history (not changing anything)
  | edit 055a42cdd887 3 d
  | edit e860deea161a 4 e
  | pick 652413bf663e 5 f
  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
  abort: Make changes as needed, you may commit or record as needed now.
  When you are finished, run hg histedit --continue to resume.
  $ continueediting true "(leaving commit message unaltered)"
  % finalize changeset editing (leaving commit message unaltered)
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  abort: Make changes as needed, you may commit or record as needed now.
  When you are finished, run hg histedit --continue to resume.
  $ graphlog "log after first edit"
  % log after first edit
  o  5 652413bf663ef2a641cab26574e46d5f5a64a55a "f"
  |
  o  4 e860deea161a2f77de56603b340ebbb4536308ae "e"
  |
  @  3 055a42cdd88768532f9cf79daa407fc8d138de9b "d"
  |
  o  2 177f92b773850b59254aa5e923436f921b55483b "c"
  |
  o  1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b"
  |
  o  0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a"
  

abort editing session
  $ hg histedit --abort 2>&1 | fixbundle
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved

  $ graphlog "log after abort"
  % log after abort
  @  5 652413bf663ef2a641cab26574e46d5f5a64a55a "f"
  |
  o  4 e860deea161a2f77de56603b340ebbb4536308ae "e"
  |
  o  3 055a42cdd88768532f9cf79daa407fc8d138de9b "d"
  |
  o  2 177f92b773850b59254aa5e923436f921b55483b "c"
  |
  o  1 d2ae7f538514cd87c17547b0de4cea71fe1af9fb "b"
  |
  o  0 cb9a9f314b8b07ba71012fcdbc544b5a4d82ff5b "a"
  

  $ cd ..