mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 01:07:15 +03:00
01fdb5bf0d
Summary: creating a mercurial extension so that `hg record` functionality can be used via a text editor (instead of interactive command prompt or curses menu) Test Plan: `$ run-tests.py test-edrecord.t` Reviewers: durham, skreyen, most, #sourcecontrol, asriram, simonfar Reviewed By: simonfar Subscribers: quark, rmcelroy, simonfar, mjpieters, #nuclide Differential Revision: https://phabricator.intern.facebook.com/D4547080 Tasks: 15728734 Signature: t1:4547080:1487842609:8855e35010cac3b6d2b136a80d7effa369eb1da8
86 lines
1.9 KiB
Perl
86 lines
1.9 KiB
Perl
$ cat << '__EOF__' >> $HGRCPATH
|
|
> [ui]
|
|
> interface=editor
|
|
> [extensions]
|
|
> edrecord=$TESTDIR/../hgext3rd/edrecord.py
|
|
> __EOF__
|
|
|
|
$ hg init repo
|
|
$ cd repo
|
|
|
|
Setup:
|
|
|
|
$ echo "
|
|
> a" >> a
|
|
$ touch b
|
|
$ hg add a b
|
|
|
|
$ hg status a b
|
|
A a
|
|
A b
|
|
|
|
Commit interactively
|
|
Include nothing in the commit
|
|
|
|
$ cat > editor.sh << '__EOF__'
|
|
> #!/bin/sh
|
|
> : > "$1"
|
|
> __EOF__
|
|
$ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit -i -m "initial commit"
|
|
no changes to record
|
|
|
|
Only include changes in a to the commit
|
|
|
|
$ cat > editor.sh << '__EOF__'
|
|
> #!/bin/sh
|
|
> echo "\
|
|
> diff --git a/a b/a
|
|
> new file mode 100644
|
|
> --- /dev/null
|
|
> +++ b/a
|
|
> @@ -0,0 +1,1 @@
|
|
> +
|
|
> +a
|
|
> # Don't include b in this commit
|
|
> #" > "$1"
|
|
> __EOF__
|
|
$ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit -i -m "initial commit"
|
|
|
|
Check only a was committed but b still has changes
|
|
|
|
$ hg status a b
|
|
A b
|
|
|
|
Include all uncommitted changes in the next commit
|
|
|
|
$ HGEDITOR=: hg commit -i -m "second commit"
|
|
$ hg status a b
|
|
|
|
Test empty lines are handled
|
|
Note: empty lines are never actually part of a patch in mercurial,
|
|
but sometimes the editor being used to edit the patch may strip out trailing
|
|
whitespace on lines. Context lines begin with a single space, and display the
|
|
rest of the line. If an empty line is part of the context and the editor strips
|
|
out trailing whitespace, then the editor will strip out the character that
|
|
indicates that that line is context. Without handling this case, the patch
|
|
parser will get confused when it sees an empty line without any initial
|
|
character that describes what the line's function is, and will abort.
|
|
|
|
$ echo "a" >> a
|
|
$ hg status a b
|
|
M a
|
|
$ cat > editor.sh << '__EOF__'
|
|
> #!/bin/sh
|
|
> echo "\
|
|
> diff --git a/a b/a
|
|
> --- a/a
|
|
> +++ b/a
|
|
> @@ -1,2 +1,3 @@
|
|
> ""
|
|
> a
|
|
> +a
|
|
> #" > "$1"
|
|
> __EOF__
|
|
$ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg commit -i -m "third commit"
|
|
$ hg status a b
|