[PATCH 1 of 1] record: allow splitting of hunks by manually editing patches
A. S. Budden
abudden at gmail.com
Wed Feb 8 08:13:56 UTC 2012
# HG changeset patch
# User A. S. Budden <abudden at gmail.com>
# Date 1328644441 0
# Node ID f63457e6722ba6e2a481ff963d57b98a63d68efc
# Parent 878bc4a62a735a1624e9b69c672d5fb5074d4855
record: allow splitting of hunks by manually editing patches
diff -r 878bc4a62a73 -r f63457e6722b hgext/record.py
--- a/hgext/record.py Thu Jan 19 14:31:05 2012 -0600
+++ b/hgext/record.py Tue Feb 07 19:54:01 2012 +0000
@@ -261,7 +261,7 @@
def filterpatch(ui, headers):
"""Interactively filter patch chunks into applied-only chunks"""
- def prompt(skipfile, skipall, query):
+ def prompt(skipfile, skipall, query, chunk):
"""prompt query, and process base inputs
- y/n for the rest of file
@@ -271,14 +271,16 @@
Return True/False and possibly updated skipfile and skipall.
"""
+ newpatches = None
if skipall is not None:
- return skipall, skipfile, skipall
+ return skipall, skipfile, skipall, newpatches
if skipfile is not None:
- return skipfile, skipfile, skipall
+ return skipfile, skipfile, skipall, newpatches
while True:
- resps = _('[Ynsfdaq?]')
+ resps = _('[Ynesfdaq?]')
choices = (_('&Yes, record this change'),
_('&No, skip this change'),
+ _('&Edit the change manually'),
_('&Skip remaining changes to this file'),
_('Record remaining changes to this &file'),
_('&Done, skip remaining changes and files'),
@@ -287,7 +289,7 @@
_('&?'))
r = ui.promptchoice("%s %s" % (query, resps), choices)
ui.write("\n")
- if r == 7: # ?
+ if r == 8: # ?
doc = gettext(record.__doc__)
c = doc.find('::') + 2
for l in doc[c:].splitlines():
@@ -298,17 +300,69 @@
ret = True
elif r == 1: # no
ret = False
- elif r == 2: # Skip
+ elif r == 2: # Edit patch
+ if chunk is None:
+ ui.write(_('cannot edit patch for whole file'))
+ ui.write("\n")
+ continue
+ if chunk.header.binary():
+ ui.write(_('cannot edit patch for binary file'))
+ ui.write("\n")
+ continue
+ # Patch comment based on the Git one (based on comment at end of
+ # http://mercurial.selenic.com/wiki/RecordExtension)
+ phelp = '---' + _("""
+To remove '-' lines, make them ' ' lines (context).
+To remove '+' lines, delete them.
+Lines starting with # will be removed from the patch.
+
+If the patch applies cleanly, the edited hunk will immediately be
+added to the record list. If it does not apply cleanly, a rejects
+file will be generated: you can use that when you try again. If
+all lines of the hunk are removed, then the edit is aborted and
+the hunk is left unchanged.
+""")
+ (patchfd, patchfn) = tempfile.mkstemp(prefix="hg-editor-",
+ suffix=".diff", text=True)
+ try:
+ # Write the initial patch
+ f = os.fdopen(patchfd, "w")
+ chunk.header.write(f)
+ chunk.write(f)
+ f.write('\n'.join(['# ' + i for i in phelp.splitlines()]))
+ f.close()
+ # Start the editor and wait for it to complete
+ editor = ui.geteditor()
+ util.system("%s \"%s\"" % (editor, patchfn),
+ environ={'HGUSER': ui.username()},
+ onerr=util.Abort, errprefix=_("edit failed"),
+ out=ui.fout)
+ # Remove comment lines
+ patchfp = open(patchfn)
+ ncpatchfp = cStringIO.StringIO()
+ for line in patchfp:
+ if not line.startswith('#'):
+ ncpatchfp.write(line)
+ patchfp.close()
+ ncpatchfp.seek(0)
+ newpatches = parsepatch(ncpatchfp)
+ finally:
+ os.unlink(patchfn)
+ del ncpatchfp
+ # Signal that the chunk shouldn't be applied as-is, but
+ # provide the new patch to be used instead.
+ ret = False
+ elif r == 3: # Skip
ret = skipfile = False
- elif r == 3: # file (Record remaining)
+ elif r == 4: # file (Record remaining)
ret = skipfile = True
- elif r == 4: # done, skip remaining
+ elif r == 5: # done, skip remaining
ret = skipall = False
- elif r == 5: # all
+ elif r == 6: # all
ret = skipall = True
- elif r == 6: # quit
+ elif r == 7: # quit
raise util.Abort(_('user quit'))
- return ret, skipfile, skipall
+ return ret, skipfile, skipall, newpatches
seen = set()
applied = {} # 'filename' -> [] of chunks
@@ -326,7 +380,7 @@
h.pretty(ui)
msg = (_('examine changes to %s?') %
_(' and ').join(map(repr, h.files())))
- r, skipfile, skipall = prompt(skipfile, skipall, msg)
+ r, skipfile, skipall, np = prompt(skipfile, skipall, msg, None)
if not r:
continue
applied[h.filename()] = [h]
@@ -342,12 +396,19 @@
idx = pos - len(h.hunks) + i
msg = _('record change %d/%d to %r?') % (idx, total,
chunk.filename())
- r, skipfile, skipall = prompt(skipfile, skipall, msg)
+ r, skipfile, skipall, newpatches = prompt(skipfile,
+ skipall, msg, chunk)
if r:
if fixoffset:
chunk = copy.copy(chunk)
chunk.toline += fixoffset
applied[chunk.filename()].append(chunk)
+ elif newpatches is not None:
+ for newpatch in newpatches:
+ for newhunk in newpatch.hunks:
+ if fixoffset:
+ newhunk.toline += fixoffset
+ applied[newhunk.filename()].append(newhunk)
else:
fixoffset += chunk.removed - chunk.added
return sum([h for h in applied.itervalues()
@@ -372,6 +433,7 @@
y - record this change
n - skip this change
+ e - edit this change manually
s - skip remaining changes to this file
f - record remaining changes to this file
diff -r 878bc4a62a73 -r f63457e6722b tests/test-diff-color.t
--- a/tests/test-diff-color.t Thu Jan 19 14:31:05 2012 -0600
+++ b/tests/test-diff-color.t Tue Feb 07 19:54:01 2012 +0000
@@ -85,7 +85,7 @@
\x1b[0;36;1mold mode 100644\x1b[0m (esc)
\x1b[0;36;1mnew mode 100755\x1b[0m (esc)
1 hunks, 1 lines changed
- \x1b[0;33mexamine changes to 'a'? [Ynsfdaq?]\x1b[0m (esc)
+ \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m (esc)
\x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc)
c
a
@@ -95,7 +95,7 @@
a
a
c
- \x1b[0;33mrecord this change to 'a'? [Ynsfdaq?]\x1b[0m (esc)
+ \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m (esc)
$ echo "[extensions]" >> $HGRCPATH
$ echo "mq=" >> $HGRCPATH
@@ -113,7 +113,7 @@
\x1b[0;36;1mold mode 100644\x1b[0m (esc)
\x1b[0;36;1mnew mode 100755\x1b[0m (esc)
1 hunks, 1 lines changed
- \x1b[0;33mexamine changes to 'a'? [Ynsfdaq?]\x1b[0m (esc)
+ \x1b[0;33mexamine changes to 'a'? [Ynesfdaq?]\x1b[0m (esc)
\x1b[0;35m@@ -2,7 +2,7 @@\x1b[0m (esc)
c
a
@@ -123,4 +123,4 @@
a
a
c
- \x1b[0;33mrecord this change to 'a'? [Ynsfdaq?]\x1b[0m (esc)
+ \x1b[0;33mrecord this change to 'a'? [Ynesfdaq?]\x1b[0m (esc)
diff -r 878bc4a62a73 -r f63457e6722b tests/test-keyword.t
--- a/tests/test-keyword.t Thu Jan 19 14:31:05 2012 -0600
+++ b/tests/test-keyword.t Tue Feb 07 19:54:01 2012 +0000
@@ -338,18 +338,18 @@
> EOF
diff --git a/a b/a
2 hunks, 2 lines changed
- examine changes to 'a'? [Ynsfdaq?]
+ examine changes to 'a'? [Ynesfdaq?]
@@ -1,3 +1,4 @@
expand $Id$
+foo
do not process $Id:
xxx $
- record change 1/2 to 'a'? [Ynsfdaq?]
+ record change 1/2 to 'a'? [Ynesfdaq?]
@@ -2,2 +3,3 @@
do not process $Id:
xxx $
+bar
- record change 2/2 to 'a'? [Ynsfdaq?]
+ record change 2/2 to 'a'? [Ynesfdaq?]
$ hg identify
d17e03c92c97+ tip
@@ -395,18 +395,18 @@
> EOF
diff --git a/a b/a
2 hunks, 2 lines changed
- examine changes to 'a'? [Ynsfdaq?]
+ examine changes to 'a'? [Ynesfdaq?]
@@ -1,3 +1,4 @@
expand $Id$
+foo
do not process $Id:
xxx $
- record change 1/2 to 'a'? [Ynsfdaq?]
+ record change 1/2 to 'a'? [Ynesfdaq?]
@@ -2,2 +3,3 @@
do not process $Id:
xxx $
+bar
- record change 2/2 to 'a'? [Ynsfdaq?]
+ record change 2/2 to 'a'? [Ynesfdaq?]
File a should be clean
@@ -462,7 +462,7 @@
> EOF
diff --git a/r b/r
new file mode 100644
- examine changes to 'r'? [Ynsfdaq?]
+ examine changes to 'r'? [Ynesfdaq?]
r
committed changeset 3:899491280810
overwriting r expanding keywords
@@ -486,7 +486,7 @@
> EOF
diff --git a/i b/i
new file mode 100644
- examine changes to 'i'? [Ynsfdaq?]
+ examine changes to 'i'? [Ynesfdaq?]
i
committed changeset 3:5f40fe93bbdc
$ cat i
diff -r 878bc4a62a73 -r f63457e6722b tests/test-mq-qrefresh-interactive.t
--- a/tests/test-mq-qrefresh-interactive.t Thu Jan 19 14:31:05 2012 -0600
+++ b/tests/test-mq-qrefresh-interactive.t Tue Feb 07 19:54:01 2012 +0000
@@ -185,22 +185,22 @@
> EOF
diff --git a/1.txt b/1.txt
2 hunks, 2 lines changed
- examine changes to '1.txt'? [Ynsfdaq?]
+ examine changes to '1.txt'? [Ynesfdaq?]
@@ -1,3 +1,3 @@
1
-2
+2 2
3
- record change 1/4 to '1.txt'? [Ynsfdaq?]
+ record change 1/4 to '1.txt'? [Ynesfdaq?]
@@ -3,3 +3,3 @@
3
-4
+4 4
5
- record change 2/4 to '1.txt'? [Ynsfdaq?]
+ record change 2/4 to '1.txt'? [Ynesfdaq?]
diff --git a/2.txt b/2.txt
1 hunks, 1 lines changed
- examine changes to '2.txt'? [Ynsfdaq?]
+ examine changes to '2.txt'? [Ynesfdaq?]
@@ -1,5 +1,5 @@
a
-b
@@ -208,10 +208,10 @@
c
d
e
- record change 3/4 to '2.txt'? [Ynsfdaq?]
+ record change 3/4 to '2.txt'? [Ynesfdaq?]
diff --git a/dir/a.txt b/dir/a.txt
1 hunks, 1 lines changed
- examine changes to 'dir/a.txt'? [Ynsfdaq?]
+ examine changes to 'dir/a.txt'? [Ynesfdaq?]
After partial qrefresh 'tip'
@@ -279,7 +279,7 @@
> EOF
diff --git a/1.txt b/1.txt
1 hunks, 1 lines changed
- examine changes to '1.txt'? [Ynsfdaq?]
+ examine changes to '1.txt'? [Ynesfdaq?]
@@ -1,5 +1,5 @@
1
2 2
@@ -287,17 +287,17 @@
-4
+4 4
5
- record change 1/2 to '1.txt'? [Ynsfdaq?]
+ record change 1/2 to '1.txt'? [Ynesfdaq?]
diff --git a/dir/a.txt b/dir/a.txt
1 hunks, 1 lines changed
- examine changes to 'dir/a.txt'? [Ynsfdaq?]
+ examine changes to 'dir/a.txt'? [Ynesfdaq?]
@@ -1,4 +1,4 @@
-hello world
+hello world!
someone
up
- record change 2/2 to 'dir/a.txt'? [Ynsfdaq?]
+ record change 2/2 to 'dir/a.txt'? [Ynesfdaq?]
After final qrefresh 'tip'
diff -r 878bc4a62a73 -r f63457e6722b tests/test-mq-subrepo.t
--- a/tests/test-mq-subrepo.t Thu Jan 19 14:31:05 2012 -0600
+++ b/tests/test-mq-subrepo.t Tue Feb 07 19:54:01 2012 +0000
@@ -268,7 +268,7 @@
% qrecord --config ui.interactive=1 -m0 0.diff
diff --git a/.hgsub b/.hgsub
new file mode 100644
- examine changes to '.hgsub'? [Ynsfdaq?]
+ examine changes to '.hgsub'? [Ynesfdaq?]
abort: uncommitted changes in subrepository sub
[255]
% update substate when adding .hgsub w/clean updated subrepo
@@ -276,7 +276,7 @@
% qrecord --config ui.interactive=1 -m0 0.diff
diff --git a/.hgsub b/.hgsub
new file mode 100644
- examine changes to '.hgsub'? [Ynsfdaq?]
+ examine changes to '.hgsub'? [Ynesfdaq?]
committing subrepository sub
path sub
source sub
@@ -293,11 +293,11 @@
% qrecord --config ui.interactive=1 -m1 1.diff
diff --git a/.hgsub b/.hgsub
1 hunks, 1 lines changed
- examine changes to '.hgsub'? [Ynsfdaq?]
+ examine changes to '.hgsub'? [Ynesfdaq?]
@@ -1,1 +1,2 @@
sub = sub
+sub2 = sub2
- record this change to '.hgsub'? [Ynsfdaq?]
+ record this change to '.hgsub'? [Ynesfdaq?]
abort: uncommitted changes in subrepository sub2
[255]
% update substate when modifying .hgsub w/clean updated subrepo
@@ -305,11 +305,11 @@
% qrecord --config ui.interactive=1 -m1 1.diff
diff --git a/.hgsub b/.hgsub
1 hunks, 1 lines changed
- examine changes to '.hgsub'? [Ynsfdaq?]
+ examine changes to '.hgsub'? [Ynesfdaq?]
@@ -1,1 +1,2 @@
sub = sub
+sub2 = sub2
- record this change to '.hgsub'? [Ynsfdaq?]
+ record this change to '.hgsub'? [Ynesfdaq?]
committing subrepository sub2
path sub
source sub
@@ -331,7 +331,7 @@
% qrecord --config ui.interactive=1 -m2 2.diff
diff --git a/.hgsub b/.hgsub
deleted file mode 100644
- examine changes to '.hgsub'? [Ynsfdaq?]
+ examine changes to '.hgsub'? [Ynesfdaq?]
% debugsub should be empty
$ hg qpop -qa
@@ -346,7 +346,7 @@
% qrecord --config ui.interactive=1 -m3 3.diff
diff --git a/.hgsub b/.hgsub
deleted file mode 100644
- examine changes to '.hgsub'? [Ynsfdaq?]
+ examine changes to '.hgsub'? [Ynesfdaq?]
% debugsub should be empty
$ cd ..
diff -r 878bc4a62a73 -r f63457e6722b tests/test-qrecord.t
--- a/tests/test-qrecord.t Thu Jan 19 14:31:05 2012 -0600
+++ b/tests/test-qrecord.t Tue Feb 07 19:54:01 2012 +0000
@@ -40,6 +40,7 @@
y - record this change
n - skip this change
+ e - edit this change manually
s - skip remaining changes to this file
f - record remaining changes to this file
@@ -245,22 +246,22 @@
> EOF
diff --git a/1.txt b/1.txt
2 hunks, 2 lines changed
- examine changes to '1.txt'? [Ynsfdaq?]
+ examine changes to '1.txt'? [Ynesfdaq?]
@@ -1,3 +1,3 @@
1
-2
+2 2
3
- record change 1/4 to '1.txt'? [Ynsfdaq?]
+ record change 1/4 to '1.txt'? [Ynesfdaq?]
@@ -3,3 +3,3 @@
3
-4
+4 4
5
- record change 2/4 to '1.txt'? [Ynsfdaq?]
+ record change 2/4 to '1.txt'? [Ynesfdaq?]
diff --git a/2.txt b/2.txt
1 hunks, 1 lines changed
- examine changes to '2.txt'? [Ynsfdaq?]
+ examine changes to '2.txt'? [Ynesfdaq?]
@@ -1,5 +1,5 @@
a
-b
@@ -268,10 +269,10 @@
c
d
e
- record change 3/4 to '2.txt'? [Ynsfdaq?]
+ record change 3/4 to '2.txt'? [Ynesfdaq?]
diff --git a/dir/a.txt b/dir/a.txt
1 hunks, 1 lines changed
- examine changes to 'dir/a.txt'? [Ynsfdaq?]
+ examine changes to 'dir/a.txt'? [Ynesfdaq?]
After qrecord a.patch 'tip'"
@@ -340,7 +341,7 @@
> EOF
diff --git a/1.txt b/1.txt
1 hunks, 1 lines changed
- examine changes to '1.txt'? [Ynsfdaq?]
+ examine changes to '1.txt'? [Ynesfdaq?]
@@ -1,5 +1,5 @@
1
2 2
@@ -348,17 +349,17 @@
-4
+4 4
5
- record change 1/2 to '1.txt'? [Ynsfdaq?]
+ record change 1/2 to '1.txt'? [Ynesfdaq?]
diff --git a/dir/a.txt b/dir/a.txt
1 hunks, 1 lines changed
- examine changes to 'dir/a.txt'? [Ynsfdaq?]
+ examine changes to 'dir/a.txt'? [Ynesfdaq?]
@@ -1,4 +1,4 @@
-hello world
+hello world!
someone
up
- record change 2/2 to 'dir/a.txt'? [Ynsfdaq?]
+ record change 2/2 to 'dir/a.txt'? [Ynesfdaq?]
After qrecord b.patch 'tip'
diff -r 878bc4a62a73 -r f63457e6722b tests/test-record.t
--- a/tests/test-record.t Thu Jan 19 14:31:05 2012 -0600
+++ b/tests/test-record.t Tue Feb 07 19:54:01 2012 +0000
@@ -20,7 +20,7 @@
> EOF
diff --git a/empty-rw b/empty-rw
new file mode 100644
- examine changes to 'empty-rw'? [Ynsfdaq?]
+ examine changes to 'empty-rw'? [Ynesfdaq?]
no changes to record
$ hg tip -p
@@ -39,7 +39,7 @@
> EOF
diff --git a/empty-rw b/empty-rw
new file mode 100644
- examine changes to 'empty-rw'? [Ynsfdaq?]
+ examine changes to 'empty-rw'? [Ynesfdaq?]
abort: empty commit message
[255]
@@ -59,7 +59,7 @@
> EOF
diff --git a/empty-rw b/empty-rw
new file mode 100644
- examine changes to 'empty-rw'? [Ynsfdaq?]
+ examine changes to 'empty-rw'? [Ynesfdaq?]
$ hg tip -p
changeset: 0:c0708cf4e46e
@@ -88,7 +88,7 @@
diff --git a/empty-rw b/empty-rename
rename from empty-rw
rename to empty-rename
- examine changes to 'empty-rw' and 'empty-rename'? [Ynsfdaq?]
+ examine changes to 'empty-rw' and 'empty-rename'? [Ynesfdaq?]
$ hg tip -p
changeset: 1:d695e8dcb197
@@ -108,7 +108,7 @@
diff --git a/empty-rename b/empty-copy
copy from empty-rename
copy to empty-copy
- examine changes to 'empty-rename' and 'empty-copy'? [Ynsfdaq?]
+ examine changes to 'empty-rename' and 'empty-copy'? [Ynesfdaq?]
$ hg tip -p
changeset: 2:1d4b90bea524
@@ -127,7 +127,7 @@
> EOF
diff --git a/empty-copy b/empty-copy
deleted file mode 100644
- examine changes to 'empty-copy'? [Ynsfdaq?]
+ examine changes to 'empty-copy'? [Ynesfdaq?]
$ hg tip -p
changeset: 3:b39a238f01a1
@@ -149,7 +149,7 @@
diff --git a/tip.bundle b/tip.bundle
new file mode 100644
this is a binary file
- examine changes to 'tip.bundle'? [Ynsfdaq?]
+ examine changes to 'tip.bundle'? [Ynesfdaq?]
$ hg tip -p
changeset: 4:ad816da3711e
@@ -171,7 +171,7 @@
> EOF
diff --git a/tip.bundle b/tip.bundle
this modifies a binary file (all or nothing)
- examine changes to 'tip.bundle'? [Ynsfdaq?]
+ examine changes to 'tip.bundle'? [Ynesfdaq?]
$ hg tip -p
changeset: 5:dccd6f3eb485
@@ -196,7 +196,7 @@
rename from tip.bundle
rename to top.bundle
this modifies a binary file (all or nothing)
- examine changes to 'tip.bundle' and 'top.bundle'? [Ynsfdaq?]
+ examine changes to 'tip.bundle' and 'top.bundle'? [Ynesfdaq?]
$ hg tip -p
changeset: 6:7fa44105f5b3
@@ -224,7 +224,7 @@
> EOF
diff --git a/plain b/plain
new file mode 100644
- examine changes to 'plain'? [Ynsfdaq?]
+ examine changes to 'plain'? [Ynesfdaq?]
$ hg tip -p
changeset: 7:11fb457c1be4
@@ -258,13 +258,13 @@
> EOF
diff --git a/plain b/plain
1 hunks, 1 lines changed
- examine changes to 'plain'? [Ynsfdaq?]
+ examine changes to 'plain'? [Ynesfdaq?]
@@ -8,3 +8,4 @@
8
9
10
+11
- record this change to 'plain'? [Ynsfdaq?]
+ record this change to 'plain'? [Ynesfdaq?]
Modify end of plain file, no EOL
@@ -275,14 +275,14 @@
> EOF
diff --git a/plain b/plain
1 hunks, 1 lines changed
- examine changes to 'plain'? [Ynsfdaq?]
+ examine changes to 'plain'? [Ynesfdaq?]
@@ -9,3 +9,4 @@
9
10
11
+7264f99c5f5ff3261504828afa4fb4d406c3af54
\ No newline at end of file
- record this change to 'plain'? [Ynsfdaq?]
+ record this change to 'plain'? [Ynesfdaq?]
Modify end of plain file, add EOL
@@ -296,7 +296,7 @@
> EOF
diff --git a/plain b/plain
1 hunks, 1 lines changed
- examine changes to 'plain'? [Ynsfdaq?]
+ examine changes to 'plain'? [Ynesfdaq?]
@@ -9,4 +9,4 @@
9
10
@@ -304,10 +304,10 @@
-7264f99c5f5ff3261504828afa4fb4d406c3af54
\ No newline at end of file
+7264f99c5f5ff3261504828afa4fb4d406c3af54
- record change 1/2 to 'plain'? [Ynsfdaq?]
+ record change 1/2 to 'plain'? [Ynesfdaq?]
diff --git a/plain2 b/plain2
new file mode 100644
- examine changes to 'plain2'? [Ynsfdaq?]
+ examine changes to 'plain2'? [Ynesfdaq?]
Modify beginning, trim end, record both, add another file to test
changes numbering
@@ -327,28 +327,28 @@
> EOF
diff --git a/plain b/plain
2 hunks, 3 lines changed
- examine changes to 'plain'? [Ynsfdaq?]
+ examine changes to 'plain'? [Ynesfdaq?]
@@ -1,4 +1,4 @@
-1
+2
2
3
4
- record change 1/3 to 'plain'? [Ynsfdaq?]
+ record change 1/3 to 'plain'? [Ynesfdaq?]
@@ -8,5 +8,3 @@
8
9
10
-11
-7264f99c5f5ff3261504828afa4fb4d406c3af54
- record change 2/3 to 'plain'? [Ynsfdaq?]
+ record change 2/3 to 'plain'? [Ynesfdaq?]
diff --git a/plain2 b/plain2
1 hunks, 1 lines changed
- examine changes to 'plain2'? [Ynsfdaq?]
+ examine changes to 'plain2'? [Ynesfdaq?]
@@ -1,1 +1,2 @@
1
+2
- record change 3/3 to 'plain2'? [Ynsfdaq?]
+ record change 3/3 to 'plain2'? [Ynesfdaq?]
$ hg tip -p
changeset: 11:21df83db12b8
@@ -396,7 +396,7 @@
> EOF
diff --git a/plain b/plain
2 hunks, 4 lines changed
- examine changes to 'plain'? [Ynsfdaq?]
+ examine changes to 'plain'? [Ynesfdaq?]
@@ -1,9 +1,6 @@
-2
-2
@@ -407,7 +407,7 @@
7
8
9
- record change 1/2 to 'plain'? [Ynsfdaq?]
+ record change 1/2 to 'plain'? [Ynesfdaq?]
@@ -4,7 +1,7 @@
4
5
@@ -417,7 +417,7 @@
9
-10
+10.new
- record change 2/2 to 'plain'? [Ynsfdaq?]
+ record change 2/2 to 'plain'? [Ynesfdaq?]
$ hg tip -p
changeset: 12:99337501826f
@@ -445,7 +445,7 @@
> EOF
diff --git a/plain b/plain
1 hunks, 3 lines changed
- examine changes to 'plain'? [Ynsfdaq?]
+ examine changes to 'plain'? [Ynesfdaq?]
@@ -1,6 +1,3 @@
-2
-2
@@ -453,7 +453,7 @@
4
5
6
- record this change to 'plain'? [Ynsfdaq?]
+ record this change to 'plain'? [Ynesfdaq?]
$ hg tip -p
changeset: 13:bbd45465d540
@@ -490,7 +490,7 @@
> EOF
diff --git a/plain b/plain
2 hunks, 4 lines changed
- examine changes to 'plain'? [Ynsfdaq?]
+ examine changes to 'plain'? [Ynesfdaq?]
@@ -1,6 +1,9 @@
+1
+2
@@ -501,7 +501,7 @@
7
8
9
- record change 1/2 to 'plain'? [Ynsfdaq?]
+ record change 1/2 to 'plain'? [Ynesfdaq?]
@@ -1,7 +4,6 @@
4
5
@@ -510,7 +510,7 @@
8
9
-10.new
- record change 2/2 to 'plain'? [Ynsfdaq?]
+ record change 2/2 to 'plain'? [Ynesfdaq?]
Add to beginning, middle, end
@@ -529,14 +529,14 @@
> EOF
diff --git a/plain b/plain
3 hunks, 7 lines changed
- examine changes to 'plain'? [Ynsfdaq?]
+ examine changes to 'plain'? [Ynesfdaq?]
@@ -1,2 +1,5 @@
+1
+2
+3
4
5
- record change 1/3 to 'plain'? [Ynsfdaq?]
+ record change 1/3 to 'plain'? [Ynesfdaq?]
@@ -1,6 +4,8 @@
4
5
@@ -546,7 +546,7 @@
7
8
9
- record change 2/3 to 'plain'? [Ynsfdaq?]
+ record change 2/3 to 'plain'? [Ynesfdaq?]
@@ -3,4 +8,6 @@
6
7
@@ -554,7 +554,7 @@
9
+10
+11
- record change 3/3 to 'plain'? [Ynsfdaq?]
+ record change 3/3 to 'plain'? [Ynesfdaq?]
$ hg tip -p
changeset: 15:f34a7937ec33
@@ -587,14 +587,14 @@
> EOF
diff --git a/plain b/plain
1 hunks, 2 lines changed
- examine changes to 'plain'? [Ynsfdaq?]
+ examine changes to 'plain'? [Ynesfdaq?]
@@ -9,3 +9,5 @@
7
8
9
+10
+11
- record this change to 'plain'? [Ynsfdaq?]
+ record this change to 'plain'? [Ynesfdaq?]
$ hg tip -p
changeset: 16:f9900b71a04c
@@ -627,11 +627,11 @@
> EOF
diff --git a/subdir/a b/subdir/a
1 hunks, 1 lines changed
- examine changes to 'subdir/a'? [Ynsfdaq?]
+ examine changes to 'subdir/a'? [Ynesfdaq?]
@@ -1,1 +1,2 @@
a
+a
- record this change to 'subdir/a'? [Ynsfdaq?]
+ record this change to 'subdir/a'? [Ynesfdaq?]
$ hg tip -p
changeset: 18:61be427a9deb
@@ -665,16 +665,17 @@
> EOF
diff --git a/subdir/f1 b/subdir/f1
1 hunks, 1 lines changed
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
y - record this change
n - skip this change
+ e - edit this change manually
s - skip remaining changes to this file
f - record remaining changes to this file
d - done, skip remaining changes and files
a - record all changes to all remaining files
q - quit, recording no changes
? - display help
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
abort: user quit
[255]
@@ -685,10 +686,10 @@
> EOF
diff --git a/subdir/f1 b/subdir/f1
1 hunks, 1 lines changed
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
diff --git a/subdir/f2 b/subdir/f2
1 hunks, 1 lines changed
- examine changes to 'subdir/f2'? [Ynsfdaq?] abort: response expected
+ examine changes to 'subdir/f2'? [Ynesfdaq?] abort: response expected
[255]
No
@@ -698,10 +699,10 @@
> EOF
diff --git a/subdir/f1 b/subdir/f1
1 hunks, 1 lines changed
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
diff --git a/subdir/f2 b/subdir/f2
1 hunks, 1 lines changed
- examine changes to 'subdir/f2'? [Ynsfdaq?] abort: response expected
+ examine changes to 'subdir/f2'? [Ynesfdaq?] abort: response expected
[255]
f, quit
@@ -712,10 +713,10 @@
> EOF
diff --git a/subdir/f1 b/subdir/f1
1 hunks, 1 lines changed
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
diff --git a/subdir/f2 b/subdir/f2
1 hunks, 1 lines changed
- examine changes to 'subdir/f2'? [Ynsfdaq?]
+ examine changes to 'subdir/f2'? [Ynesfdaq?]
abort: user quit
[255]
@@ -727,10 +728,10 @@
> EOF
diff --git a/subdir/f1 b/subdir/f1
1 hunks, 1 lines changed
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
diff --git a/subdir/f2 b/subdir/f2
1 hunks, 1 lines changed
- examine changes to 'subdir/f2'? [Ynsfdaq?]
+ examine changes to 'subdir/f2'? [Ynesfdaq?]
$ hg tip -p
changeset: 20:b3df3dda369a
@@ -754,7 +755,7 @@
> EOF
diff --git a/subdir/f1 b/subdir/f1
1 hunks, 1 lines changed
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
$ hg tip -p
changeset: 21:38ec577f126b
@@ -784,12 +785,12 @@
old mode 100644
new mode 100755
1 hunks, 1 lines changed
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
@@ -1,2 +1,3 @@
a
a
+a
- record this change to 'subdir/f1'? [Ynsfdaq?]
+ record this change to 'subdir/f1'? [Ynesfdaq?]
$ hg tip --config diff.git=True -p
changeset: 22:3261adceb075
@@ -819,13 +820,13 @@
> EOF
diff --git a/subdir/f1 b/subdir/f1
1 hunks, 1 lines changed
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
@@ -1,3 +1,4 @@
a
a
a
+b
- record this change to 'subdir/f1'? [Ynsfdaq?]
+ record this change to 'subdir/f1'? [Ynesfdaq?]
$ hg tip --config diff.git=True -p
changeset: 23:b429867550db
@@ -857,13 +858,13 @@
old mode 100755
new mode 100644
1 hunks, 1 lines changed
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
@@ -2,3 +2,4 @@
a
a
b
+c
- record this change to 'subdir/f1'? [Ynsfdaq?]
+ record this change to 'subdir/f1'? [Ynesfdaq?]
$ hg tip --config diff.git=True -p
changeset: 24:0b082130c20a
@@ -937,13 +938,13 @@
> EOF
diff --git a/subdir/f1 b/subdir/f1
1 hunks, 1 lines changed
- examine changes to 'subdir/f1'? [Ynsfdaq?]
+ examine changes to 'subdir/f1'? [Ynesfdaq?]
@@ -3,3 +3,4 @@
a
b
c
+d
- record this change to 'subdir/f1'? [Ynsfdaq?]
+ record this change to 'subdir/f1'? [Ynesfdaq?]
$ hg tip -p
changeset: 26:b8306e70edc4
@@ -962,3 +963,145 @@
c
+d
+Editing patch
+
+ $ cat > editor << '__EOF__'
+ > #!/bin/sh
+ > sed -i -e 7d -e '5s/^-/ /' "$1"
+ > __EOF__
+ $ chmod +x editor
+ $ cat > editedfile << '__EOF__'
+ > This is the first line
+ > This is the second line
+ > This is the third line
+ > __EOF__
+ $ hg add editedfile
+ $ hg commit -mx
+ $ cat > editedfile << '__EOF__'
+ > This line has changed
+ > This change will be committed
+ > This is the third line
+ > __EOF__
+ $ HGEDITOR="'`pwd`'"/editor hg record -my <<EOF
+ > y
+ > e
+ > EOF
+ diff --git a/editedfile b/editedfile
+ 1 hunks, 2 lines changed
+ examine changes to 'editedfile'? [Ynesfdaq?]
+ @@ -1,3 +1,3 @@
+ -This is the first line
+ -This is the second line
+ +This line has changed
+ +This change will be committed
+ This is the third line
+ record this change to 'editedfile'? [Ynesfdaq?]
+ $ cat editedfile
+ This line has changed
+ This change will be committed
+ This is the third line
+ $ hg cat -r tip editedfile
+ This is the first line
+ This change will be committed
+ This is the third line
+ $ hg revert editedfile
+
+Trying to edit patch for whole file
+
+ $ echo "This is the fourth line" >> editedfile
+ $ hg record <<EOF
+ > e
+ > q
+ > EOF
+ diff --git a/editedfile b/editedfile
+ 1 hunks, 1 lines changed
+ examine changes to 'editedfile'? [Ynesfdaq?]
+ cannot edit patch for whole file
+ examine changes to 'editedfile'? [Ynesfdaq?]
+ abort: user quit
+ [255]
+ $ hg revert editedfile
+
+Removing changes from patch
+
+ $ sed -i -e '3s/third/second/' -e '2s/will/will not/' -e 1d editedfile
+ $ echo "This line has been added" >> editedfile
+ $ cat > editor << '__EOF__'
+ > #!/bin/sh
+ > sed -i -e 's/^[-+]/ /' "$1"
+ > __EOF__
+ $ chmod +x editor
+ $ HGEDITOR="'`pwd`'"/editor hg record <<EOF
+ > y
+ > e
+ > EOF
+ diff --git a/editedfile b/editedfile
+ 1 hunks, 3 lines changed
+ examine changes to 'editedfile'? [Ynesfdaq?]
+ @@ -1,3 +1,3 @@
+ -This is the first line
+ -This change will be committed
+ -This is the third line
+ +This change will not be committed
+ +This is the second line
+ +This line has been added
+ record this change to 'editedfile'? [Ynesfdaq?]
+ no changes to record
+ $ cat editedfile
+ This change will not be committed
+ This is the second line
+ This line has been added
+ $ hg cat -r tip editedfile
+ This is the first line
+ This change will be committed
+ This is the third line
+ $ hg revert editedfile
+
+Invalid patch
+
+ $ sed -i -e '3s/third/second/' -e '2s/will/will not/' -e 1d editedfile
+ $ echo "This line has been added" >> editedfile
+ $ cat > editor << '__EOF__'
+ > #!/bin/sh
+ > sed -i s/This/That/ "$1"
+ > __EOF__
+ $ chmod +x editor
+ $ HGEDITOR="'`pwd`'"/editor hg record <<EOF
+ > y
+ > e
+ > EOF
+ diff --git a/editedfile b/editedfile
+ 1 hunks, 3 lines changed
+ examine changes to 'editedfile'? [Ynesfdaq?]
+ @@ -1,3 +1,3 @@
+ -This is the first line
+ -This change will be committed
+ -This is the third line
+ +This change will not be committed
+ +This is the second line
+ +This line has been added
+ record this change to 'editedfile'? [Ynesfdaq?]
+ patching file editedfile
+ Hunk #1 FAILED at 0
+ 1 out of 1 hunks FAILED -- saving rejects to file editedfile.rej
+ abort: patch failed to apply
+ [255]
+ $ cat editedfile
+ This change will not be committed
+ This is the second line
+ This line has been added
+ $ hg cat -r tip editedfile
+ This is the first line
+ This change will be committed
+ This is the third line
+ $ cat editedfile.rej
+ --- editedfile
+ +++ editedfile
+ @@ -1,3 +1,3 @@
+ -That is the first line
+ -That change will be committed
+ -That is the third line
+ +That change will not be committed
+ +That is the second line
+ +That line has been added
+ $ hg revert editedfile
More information about the Mercurial-devel
mailing list