##// END OF EJS Templates
commit: add amend mode for commit -i...
Laurent Charignon -
r27156:55fa7c39 default
parent child Browse files
Show More
@@ -24,6 +24,7 b' from . import ('
24 encoding,
24 encoding,
25 error,
25 error,
26 patch as patchmod,
26 patch as patchmod,
27 util,
27 )
28 )
28
29
29 # This is required for ncurses to display non-ASCII characters in default user
30 # This is required for ncurses to display non-ASCII characters in default user
@@ -1010,7 +1011,7 b' class curseschunkselector(object):'
1010 pairname="legend")
1011 pairname="legend")
1011 printstring(self.statuswin,
1012 printstring(self.statuswin,
1012 " (f)old/unfold; (c)onfirm applied; (q)uit; (?) help "
1013 " (f)old/unfold; (c)onfirm applied; (q)uit; (?) help "
1013 "| [X]=hunk applied **=folded",
1014 "| [X]=hunk applied **=folded, toggle [a]mend mode",
1014 pairname="legend")
1015 pairname="legend")
1015 except curses.error:
1016 except curses.error:
1016 pass
1017 pass
@@ -1366,7 +1367,7 b' the following are valid keystrokes:'
1366 F : fold / unfold parent item and all of its ancestors
1367 F : fold / unfold parent item and all of its ancestors
1367 m : edit / resume editing the commit message
1368 m : edit / resume editing the commit message
1368 e : edit the currently selected hunk
1369 e : edit the currently selected hunk
1369 a : toggle amend mode (hg rev >= 2.2)
1370 a : toggle amend mode (hg rev >= 2.2), only with commit -i
1370 c : confirm selected changes
1371 c : confirm selected changes
1371 r : review/edit and confirm selected changes
1372 r : review/edit and confirm selected changes
1372 q : quit without confirming (no changes will be made)
1373 q : quit without confirming (no changes will be made)
@@ -1433,6 +1434,35 b' are you sure you want to review/edit and'
1433 else:
1434 else:
1434 return False
1435 return False
1435
1436
1437 def toggleamend(self, opts, test):
1438 """Toggle the amend flag.
1439
1440 When the amend flag is set, a commit will modify the most recently
1441 committed changeset, instead of creating a new changeset. Otherwise, a
1442 new changeset will be created (the normal commit behavior).
1443
1444 """
1445 try:
1446 ver = float(util.version()[:3])
1447 except ValueError:
1448 ver = 1
1449 if ver < 2.19:
1450 msg = ("The amend option is unavailable with hg versions < 2.2\n\n"
1451 "Press any key to continue.")
1452 elif opts.get('amend') is None:
1453 opts['amend'] = True
1454 msg = ("Amend option is turned on -- commiting the currently "
1455 "selected changes will not create a new changeset, but "
1456 "instead update the most recently committed changeset.\n\n"
1457 "Press any key to continue.")
1458 elif opts.get('amend') is True:
1459 opts['amend'] = None
1460 msg = ("Amend option is turned off -- commiting the currently "
1461 "selected changes will create a new changeset.\n\n"
1462 "Press any key to continue.")
1463 if not test:
1464 self.confirmationwindow(msg)
1465
1436 def recenterdisplayedarea(self):
1466 def recenterdisplayedarea(self):
1437 """
1467 """
1438 once we scrolled with pg up pg down we can be pointing outside of the
1468 once we scrolled with pg up pg down we can be pointing outside of the
@@ -1570,6 +1600,8 b' are you sure you want to review/edit and'
1570 self.leftarrowshiftevent()
1600 self.leftarrowshiftevent()
1571 elif keypressed in ["q"]:
1601 elif keypressed in ["q"]:
1572 raise error.Abort(_('user quit'))
1602 raise error.Abort(_('user quit'))
1603 elif keypressed in ['a']:
1604 self.toggleamend(self.opts, test)
1573 elif keypressed in ["c"]:
1605 elif keypressed in ["c"]:
1574 if self.confirmcommit():
1606 if self.confirmcommit():
1575 return True
1607 return True
@@ -71,6 +71,7 b' Committing only one hunk while aborting '
71 - unfold it
71 - unfold it
72 - go down to second hunk (1 for the first hunk, 1 for the first hunkline, 1 for the second hunk, 1 for the second hunklike)
72 - go down to second hunk (1 for the first hunk, 1 for the first hunkline, 1 for the second hunk, 1 for the second hunklike)
73 - toggle the second hunk
73 - toggle the second hunk
74 - toggle on and off the amend mode (to check that it toggles off)
74 - edit the hunk and quit the editor immediately with non-zero status
75 - edit the hunk and quit the editor immediately with non-zero status
75 - commit
76 - commit
76
77
@@ -88,6 +89,8 b' Committing only one hunk while aborting '
88 > KEY_DOWN
89 > KEY_DOWN
89 > KEY_DOWN
90 > KEY_DOWN
90 > TOGGLE
91 > TOGGLE
92 > a
93 > a
91 > e
94 > e
92 > X
95 > X
93 > EOF
96 > EOF
@@ -166,3 +169,23 b' Newly added files can be selected with t'
166 $ hg st
169 $ hg st
167 ? testModeCommands
170 ? testModeCommands
168
171
172 Amend option works
173 $ echo "hello world" > x
174 $ hg diff -c .
175 diff -r a6735021574d -r 2b0e9be4d336 x
176 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
177 +++ b/x Thu Jan 01 00:00:00 1970 +0000
178 @@ -0,0 +1,1 @@
179 +hello
180 $ cat <<EOF >testModeCommands
181 > a
182 > X
183 > EOF
184 $ hg commit -i -m "newly added file" -d "0 0"
185 saved backup bundle to $TESTTMP/a/.hg/strip-backup/2b0e9be4d336-28bbe4e2-amend-backup.hg (glob)
186 $ hg diff -c .
187 diff -r a6735021574d -r c1d239d165ae x
188 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
189 +++ b/x Thu Jan 01 00:00:00 1970 +0000
190 @@ -0,0 +1,1 @@
191 +hello world
General Comments 0
You need to be logged in to leave comments. Login now