Add GIT_EDITOR environment and core.editor configuration variables
These variables let you specify an editor that will be launched in preference to the EDITOR and VISUAL environment variables. The order of preference is GIT_EDITOR, core.editor, EDITOR, VISUAL. [jc: added a test and config variable documentation] Signed-off-by: Adam Roben <aroben@apple.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
a7738c77f1
commit
ef0c2abf3e
91
t/t7005-editor.sh
Executable file
91
t/t7005-editor.sh
Executable file
@ -0,0 +1,91 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='GIT_EDITOR, core.editor, and stuff'
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
for i in GIT_EDITOR core_editor EDITOR VISUAL vi
|
||||
do
|
||||
cat >e-$i.sh <<-EOF
|
||||
echo "Edited by $i" >"\$1"
|
||||
EOF
|
||||
chmod +x e-$i.sh
|
||||
done
|
||||
unset vi
|
||||
mv e-vi.sh vi
|
||||
PATH=".:$PATH"
|
||||
unset EDITOR VISUAL GIT_EDITOR
|
||||
|
||||
test_expect_success setup '
|
||||
|
||||
msg="Hand edited" &&
|
||||
echo "$msg" >expect &&
|
||||
git add vi &&
|
||||
test_tick &&
|
||||
git commit -m "$msg" &&
|
||||
git show -s --pretty=oneline |
|
||||
sed -e "s/^[0-9a-f]* //" >actual &&
|
||||
diff actual expect
|
||||
|
||||
'
|
||||
|
||||
TERM=dumb
|
||||
export TERM
|
||||
test_expect_success 'dumb should error out when falling back on vi' '
|
||||
|
||||
if git commit --amend
|
||||
then
|
||||
echo "Oops?"
|
||||
exit 1
|
||||
else
|
||||
: happy
|
||||
fi
|
||||
'
|
||||
|
||||
TERM=vt100
|
||||
export TERM
|
||||
for i in vi EDITOR VISUAL core_editor GIT_EDITOR
|
||||
do
|
||||
echo "Edited by $i" >expect
|
||||
unset EDITOR VISUAL GIT_EDITOR
|
||||
git config --unset-all core.editor
|
||||
case "$i" in
|
||||
core_editor)
|
||||
git config core.editor ./e-core_editor.sh
|
||||
;;
|
||||
[A-Z]*)
|
||||
eval "$i=./e-$i.sh"
|
||||
export $i
|
||||
;;
|
||||
esac
|
||||
test_expect_success "Using $i" '
|
||||
git commit --amend &&
|
||||
git show -s --pretty=oneline |
|
||||
sed -e "s/^[0-9a-f]* //" >actual &&
|
||||
diff actual expect
|
||||
'
|
||||
done
|
||||
|
||||
unset EDITOR VISUAL GIT_EDITOR
|
||||
git config --unset-all core.editor
|
||||
for i in vi EDITOR VISUAL core_editor GIT_EDITOR
|
||||
do
|
||||
echo "Edited by $i" >expect
|
||||
case "$i" in
|
||||
core_editor)
|
||||
git config core.editor ./e-core_editor.sh
|
||||
;;
|
||||
[A-Z]*)
|
||||
eval "$i=./e-$i.sh"
|
||||
export $i
|
||||
;;
|
||||
esac
|
||||
test_expect_success "Using $i (override)" '
|
||||
git commit --amend &&
|
||||
git show -s --pretty=oneline |
|
||||
sed -e "s/^[0-9a-f]* //" >actual &&
|
||||
diff actual expect
|
||||
'
|
||||
done
|
||||
|
||||
test_done
|
||||
Reference in New Issue
Block a user