* [PATCH (REVISED)] Add core.editor configuration variable
@ 2007-07-19 6:55 Adam Roben
2007-07-19 7:48 ` Andy Parkins
0 siblings, 1 reply; 11+ messages in thread
From: Adam Roben @ 2007-07-19 6:55 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Adam Roben
This variable lets you specify an editor that will be launched in preference to
the EDITOR and VISUAL environment variables.
Signed-off-by: Adam Roben <aroben@apple.com>
---
On Jul 18, 2007, at 11:23 PM, Shawn O. Pearce wrote:
> We only launch an editor for three reasons: commit messages, tag
> messages and git-rebase -i. If we were to ever add a new editor
> using thingy, odds are the user would want the same editor by
> default for that too.
Well, it turns out we already do launch an editor in other places, namely
"git am -i" and "git send-email --compose". So, this patch takes care of those
cases as well.
My original intent had been to have an editor that really was *just* for
commit messages, but I realize now that that is probably something that not too
many people want, whereas core.editor is much more generally useful. Thanks
Junio and Shawn for the advice.
Documentation/git-commit.txt | 9 +++++----
Documentation/git-send-email.txt | 4 ++--
git-am.sh | 2 +-
git-commit.sh | 13 +++++++------
git-rebase--interactive.sh | 2 +-
git-send-email.perl | 3 +--
git-tag.sh | 2 +-
7 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index f96142f..5caad56 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -244,10 +244,11 @@ on the Subject: line and the rest of the commit in the body.
include::i18n.txt[]
-ENVIRONMENT VARIABLES
----------------------
-The command specified by either the VISUAL or EDITOR environment
-variables is used to edit the commit log message.
+ENVIRONMENT AND CONFIGURATION VARIABLES
+---------------------------------------
+The editor used to edit the commit log message will be chosen from the
+core.editor configuration variable, the VISUAL environment variable, or the
+EDITOR environment variable (in that order).
HOOKS
-----
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 293686c..e7723c9 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -44,8 +44,8 @@ The --cc option must be repeated for each user you want on the cc list.
value; if that is unspecified, default to --chain-reply-to.
--compose::
- Use $EDITOR to edit an introductory message for the
- patch series.
+ Use core.editor, $VISUAL, or $EDITOR to edit an introductory message
+ for the patch series.
--from::
Specify the sender of the emails. This will default to
diff --git a/git-am.sh b/git-am.sh
index e5e6f2c..3a651ae 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -364,7 +364,7 @@ do
[yY]*) action=yes ;;
[aA]*) action=yes interactive= ;;
[nN]*) action=skip ;;
- [eE]*) "${VISUAL:-${EDITOR:-vi}}" "$dotest/final-commit"
+ [eE]*) "$(git config core.editor || echo ${VISUAL:-${EDITOR:-vi}})" "$dotest/final-commit"
action=again ;;
[vV]*) action=again
LESS=-S ${PAGER:-less} "$dotest/patch" ;;
diff --git a/git-commit.sh b/git-commit.sh
index 3f3de17..72e4cf0 100755
--- a/git-commit.sh
+++ b/git-commit.sh
@@ -544,18 +544,19 @@ fi
case "$no_edit" in
'')
- case "${VISUAL:-$EDITOR},$TERM" in
+ commit_editor=$(git config core.editor || echo ${VISUAL:-$EDITOR})
+ case "$commit_editor,$TERM" in
,dumb)
- echo >&2 "Terminal is dumb but no VISUAL nor EDITOR defined."
- echo >&2 "Please supply the commit log message using either"
- echo >&2 "-m or -F option. A boilerplate log message has"
- echo >&2 "been prepared in $GIT_DIR/COMMIT_EDITMSG"
+ echo >&2 "Terminal is dumb but core.editor, VISUAL, and EDITOR"
+ echo >&2 "are undefined. Please supply the commit log message"
+ echo >&2 "using either -m or -F option. A boilerplate log message"
+ echo >&2 "has been prepared in $GIT_DIR/COMMIT_EDITMSG"
exit 1
;;
esac
git-var GIT_AUTHOR_IDENT > /dev/null || die
git-var GIT_COMMITTER_IDENT > /dev/null || die
- ${VISUAL:-${EDITOR:-vi}} "$GIT_DIR/COMMIT_EDITMSG"
+ ${commit_editor:-vi} "$GIT_DIR/COMMIT_EDITMSG"
;;
esac
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index f395076..2e15abb 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -414,7 +414,7 @@ EOF
die_abort "Nothing to do"
cp "$TODO" "$TODO".backup
- ${VISUAL:-${EDITOR:-vi}} "$TODO" ||
+ $(git config core.editor || echo ${VISUAL:-${EDITOR:-vi}}) "$TODO" ||
die "Could not execute editor"
test -z "$(grep -ve '^$' -e '^#' < $TODO)" &&
diff --git a/git-send-email.perl b/git-send-email.perl
index 7552cac..ad17b4e 100755
--- a/git-send-email.perl
+++ b/git-send-email.perl
@@ -341,8 +341,7 @@ GIT: for the patch you are writing.
EOT
close(C);
- my $editor = $ENV{EDITOR};
- $editor = 'vi' unless defined $editor;
+ my $editor = $repo->config("core.editor") || $ENV{VISUAL} || $ENV{EDITOR} || "vi";
system($editor, $compose_filename);
open(C2,">",$compose_filename . ".final")
diff --git a/git-tag.sh b/git-tag.sh
index 1c25d88..9aa30b4 100755
--- a/git-tag.sh
+++ b/git-tag.sh
@@ -177,7 +177,7 @@ if [ "$annotate" ]; then
( echo "#"
echo "# Write a tag message"
echo "#" ) > "$GIT_DIR"/TAG_EDITMSG
- ${VISUAL:-${EDITOR:-vi}} "$GIT_DIR"/TAG_EDITMSG || exit
+ $(git config core.editor || echo ${VISUAL:-${EDITOR:-vi}}) "$GIT_DIR"/TAG_EDITMSG || exit
else
printf '%s\n' "$message" >"$GIT_DIR"/TAG_EDITMSG
fi
--
1.5.3.rc2.19.gc4fba-dirty
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH (REVISED)] Add core.editor configuration variable
2007-07-19 6:55 [PATCH (REVISED)] Add core.editor configuration variable Adam Roben
@ 2007-07-19 7:48 ` Andy Parkins
2007-07-19 10:00 ` Johannes Schindelin
2007-07-19 14:24 ` Brian Gernhardt
0 siblings, 2 replies; 11+ messages in thread
From: Andy Parkins @ 2007-07-19 7:48 UTC (permalink / raw)
To: git; +Cc: Adam Roben, Junio C Hamano
On Thursday 2007 July 19, Adam Roben wrote:
> Well, it turns out we already do launch an editor in other places,
> namely "git am -i" and "git send-email --compose". So, this patch takes
> care of those cases as well.
Perhaps I'm being overly pedantic, but it seems odd to put options that are
relevant only to porcelain under the "core" section.
core.pager is in the same category - but that's already in.
Would porcelain.editor be a better name for this variable?
Andy
--
Dr Andy Parkins, M Eng (hons), MIET
andyparkins@gmail.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH (REVISED)] Add core.editor configuration variable
2007-07-19 7:48 ` Andy Parkins
@ 2007-07-19 10:00 ` Johannes Schindelin
2007-07-19 10:48 ` Andy Parkins
2007-07-19 14:24 ` Brian Gernhardt
1 sibling, 1 reply; 11+ messages in thread
From: Johannes Schindelin @ 2007-07-19 10:00 UTC (permalink / raw)
To: Andy Parkins; +Cc: git, Adam Roben, Junio C Hamano
Hi,
On Thu, 19 Jul 2007, Andy Parkins wrote:
> On Thursday 2007 July 19, Adam Roben wrote:
>
> > Well, it turns out we already do launch an editor in other places,
> > namely "git am -i" and "git send-email --compose". So, this patch takes
> > care of those cases as well.
>
> Perhaps I'm being overly pedantic, but it seems odd to put options that are
> relevant only to porcelain under the "core" section.
>
> core.pager is in the same category - but that's already in.
>
> Would porcelain.editor be a better name for this variable?
>From my point of view you can put into "myWonderfulGit.editor". It does
not matter.
So why not just leave it in "core", also because -- strictly speaking --
those commands in git.git are not really your regular porcelain. They are
tested with almost every commit, and therefore have a much better chance
not to be broken inadvertently by changes to the core.
Ciao,
Dscho
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH (REVISED)] Add core.editor configuration variable
2007-07-19 10:00 ` Johannes Schindelin
@ 2007-07-19 10:48 ` Andy Parkins
2007-07-19 11:15 ` Johannes Schindelin
0 siblings, 1 reply; 11+ messages in thread
From: Andy Parkins @ 2007-07-19 10:48 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin, Adam Roben, Junio C Hamano
On Thursday 2007 July 19, Johannes Schindelin wrote:
> Hi,
>
> On Thu, 19 Jul 2007, Andy Parkins wrote:
> > On Thursday 2007 July 19, Adam Roben wrote:
> > > Well, it turns out we already do launch an editor in other places,
> > > namely "git am -i" and "git send-email --compose". So, this patch takes
> > > care of those cases as well.
> >
> > Perhaps I'm being overly pedantic, but it seems odd to put options that
> > are relevant only to porcelain under the "core" section.
> >
> > core.pager is in the same category - but that's already in.
> >
> > Would porcelain.editor be a better name for this variable?
>
> From my point of view you can put into "myWonderfulGit.editor". It does
> not matter.
By that argument, why do we bother with subsections at all. In fact why not
call the variable "xhxhxjjjll.yqlaoospsp"?
They are meant to help the human remembering it.
> So why not just leave it in "core", also because -- strictly speaking --
That's what I said for pager - since it's already there. However, since the
editor isn't already in, it's not a question of _leaving_ it anywhere.
Better that it goes in the right place when it is first introduced.
> those commands in git.git are not really your regular porcelain. They are
> tested with almost every commit, and therefore have a much better chance
So is every other porcelain command - almost by definition, porcelain commands
are the ones we use.
> not to be broken inadvertently by changes to the core.
I don't understand the point you're making here. Are you saying that we can
rely on porcelain not to change or the core not to change? I'm also
wondering about these "inadvertent" changes that are getting made to git
core - I've not noticed them before :-)
Andy
--
Dr Andy Parkins, M Eng (hons), MIET
andyparkins@gmail.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH (REVISED)] Add core.editor configuration variable
2007-07-19 10:48 ` Andy Parkins
@ 2007-07-19 11:15 ` Johannes Schindelin
2007-07-19 14:23 ` Andy Parkins
0 siblings, 1 reply; 11+ messages in thread
From: Johannes Schindelin @ 2007-07-19 11:15 UTC (permalink / raw)
To: Andy Parkins; +Cc: git, Adam Roben, Junio C Hamano
Hi,
On Thu, 19 Jul 2007, Andy Parkins wrote:
> On Thursday 2007 July 19, Johannes Schindelin wrote:
> >
> > On Thu, 19 Jul 2007, Andy Parkins wrote:
> >
> > > Would porcelain.editor be a better name for this variable?
> >
> > From my point of view you can put into "myWonderfulGit.editor". It
> > does not matter.
>
> By that argument, why do we bother with subsections at all. In fact why
> not call the variable "xhxhxjjjll.yqlaoospsp"?
No. I said, and I quote here, "From my point of view".
> They are meant to help the human remembering it.
>
> > So why not just leave it in "core", also because -- strictly speaking
> > --
>
> That's what I said for pager - since it's already there. However, since
> the editor isn't already in, it's not a question of _leaving_ it
> anywhere. Better that it goes in the right place when it is first
> introduced.
And how would having "core.pager" but "porcelain.editor" be easier to
remember? Nah, not really.
Ciao,
Dscho
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH (REVISED)] Add core.editor configuration variable
2007-07-19 11:15 ` Johannes Schindelin
@ 2007-07-19 14:23 ` Andy Parkins
2007-07-19 19:28 ` Nicolas Pitre
0 siblings, 1 reply; 11+ messages in thread
From: Andy Parkins @ 2007-07-19 14:23 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin, Adam Roben, Junio C Hamano
On Thursday 2007 July 19, Johannes Schindelin wrote:
> Hi,
>
> On Thu, 19 Jul 2007, Andy Parkins wrote:
> > On Thursday 2007 July 19, Johannes Schindelin wrote:
> > > On Thu, 19 Jul 2007, Andy Parkins wrote:
> > > > Would porcelain.editor be a better name for this variable?
> > >
> > > From my point of view you can put into "myWonderfulGit.editor". It
> > > does not matter.
> >
> > By that argument, why do we bother with subsections at all. In fact why
> > not call the variable "xhxhxjjjll.yqlaoospsp"?
>
> No. I said, and I quote here, "From my point of view".
That doesn't change my point - these things are named to give meaning, they
aren't just arbitrary strings of characters.
> And how would having "core.pager" but "porcelain.editor" be easier to
> remember? Nah, not really.
If there is no difference, then do you object so strongly?
Besides, memory isn't just about having words, it's about meaning too.
Categorisation and hierarchy are important. If I'm searching my brain for a
function that does something to strings then the fact that it starts
with "str" gets me a long way there. The fact that they _all_ start
with "str" is what's important.
I don't care _that_ strongly; just like you it won't make any difference to me
personally as I'll cope either way. I'm trying to think like a noob, and it
seems that coherency is broken when we make distinctions between porcelain
and plumbing and then don't stick to them in the config file.
Perhaps I am wrong in my assumption: I have always thought of core.* options
being those options which apply to plumbing - i.e. if I were a git-guru and
did everything with plumbing I would still need those options.
Andy
--
Dr Andy Parkins, M Eng (hons), MIET
andyparkins@gmail.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH (REVISED)] Add core.editor configuration variable
2007-07-19 14:23 ` Andy Parkins
@ 2007-07-19 19:28 ` Nicolas Pitre
0 siblings, 0 replies; 11+ messages in thread
From: Nicolas Pitre @ 2007-07-19 19:28 UTC (permalink / raw)
To: Andy Parkins; +Cc: git, Johannes Schindelin, Adam Roben, Junio C Hamano
On Thu, 19 Jul 2007, Andy Parkins wrote:
> On Thursday 2007 July 19, Johannes Schindelin wrote:
> > And how would having "core.pager" but "porcelain.editor" be easier to
> > remember? Nah, not really.
>
> If there is no difference, then do you object so strongly?
If anything I think it is core.pager which is a misnommer. A pager is
certainly more porcelainish. by nature.
Given that core.pager already exists, I think it would be yet another
mistake to put editor in a different section separate from pager.
IMHO both of them should have been user.pager and user.editor.
Nicolas
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH (REVISED)] Add core.editor configuration variable
2007-07-19 7:48 ` Andy Parkins
2007-07-19 10:00 ` Johannes Schindelin
@ 2007-07-19 14:24 ` Brian Gernhardt
2007-07-19 14:52 ` Andy Parkins
2007-07-19 19:32 ` Nicolas Pitre
1 sibling, 2 replies; 11+ messages in thread
From: Brian Gernhardt @ 2007-07-19 14:24 UTC (permalink / raw)
To: Andy Parkins; +Cc: git, Adam Roben, Junio C Hamano
On Jul 19, 2007, at 3:48 AM, Andy Parkins wrote:
> On Thursday 2007 July 19, Adam Roben wrote:
>
>> Well, it turns out we already do launch an editor in other places,
>> namely "git am -i" and "git send-email --compose". So, this patch
>> takes
>> care of those cases as well.
>
> Perhaps I'm being overly pedantic, but it seems odd to put options
> that are
> relevant only to porcelain under the "core" section.
>
> core.pager is in the same category - but that's already in.
Since I'm the one who added that, I feel compelled to add in my $0.02.
First, there wasn't much argument on the list when core.pager was
added... But that's not my major point.
To many git users (myself included), claiming that commands like git-
commit, git-log, and other "porcelain" isn't part of "core" git is
ridiculous. These are the commands that I use every day, and are a
part of the main git package, source, and repository. If the
porcelain was maintained separately from the pluming, like cognito
was, perhaps that would be a more compelling argument to me.
For many people commit is more "core" to their git usage than write-
tree and commit-tree. At this point, it's less an extra layer
porcelain and more the standard interface. It's a result of the
wonderful attempts to make git more user friendly.
As far as [core] being only for plumbing, I disagree with that
premise as well. Any option that is used across many of the git
commands is a core (meaning central) option.
~~ Brian
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH (REVISED)] Add core.editor configuration variable
2007-07-19 14:24 ` Brian Gernhardt
@ 2007-07-19 14:52 ` Andy Parkins
2007-07-19 19:32 ` Nicolas Pitre
1 sibling, 0 replies; 11+ messages in thread
From: Andy Parkins @ 2007-07-19 14:52 UTC (permalink / raw)
To: git; +Cc: Brian Gernhardt, Adam Roben, Junio C Hamano
On Thursday 2007 July 19, Brian Gernhardt wrote:
> As far as [core] being only for plumbing, I disagree with that
> premise as well. Any option that is used across many of the git
> commands is a core (meaning central) option.
Fair enough. With the definition core != plumbing; my argument has no weight.
Andy
--
Dr Andy Parkins, M Eng (hons), MIET
andyparkins@gmail.com
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH (REVISED)] Add core.editor configuration variable
2007-07-19 14:24 ` Brian Gernhardt
2007-07-19 14:52 ` Andy Parkins
@ 2007-07-19 19:32 ` Nicolas Pitre
2007-07-20 0:20 ` Junio C Hamano
1 sibling, 1 reply; 11+ messages in thread
From: Nicolas Pitre @ 2007-07-19 19:32 UTC (permalink / raw)
To: Brian Gernhardt; +Cc: Andy Parkins, git, Adam Roben, Junio C Hamano
On Thu, 19 Jul 2007, Brian Gernhardt wrote:
> For many people commit is more "core" to their git usage than write-tree and
> commit-tree. At this point, it's less an extra layer porcelain and more the
> standard interface. It's a result of the wonderful attempts to make git more
> user friendly.
>
> As far as [core] being only for plumbing, I disagree with that premise as
> well. Any option that is used across many of the git commands is a core
> (meaning central) option.
That pov certainly makes sense to me.
Nicolas
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH (REVISED)] Add core.editor configuration variable
2007-07-19 19:32 ` Nicolas Pitre
@ 2007-07-20 0:20 ` Junio C Hamano
0 siblings, 0 replies; 11+ messages in thread
From: Junio C Hamano @ 2007-07-20 0:20 UTC (permalink / raw)
To: Nicolas Pitre; +Cc: Brian Gernhardt, Andy Parkins, git, Adam Roben
Nicolas Pitre <nico@cam.org> writes:
> On Thu, 19 Jul 2007, Brian Gernhardt wrote:
>
>> For many people commit is more "core" to their git usage than write-tree and
>> commit-tree. At this point, it's less an extra layer porcelain and more the
>> standard interface. It's a result of the wonderful attempts to make git more
>> user friendly.
>>
>> As far as [core] being only for plumbing, I disagree with that premise as
>> well. Any option that is used across many of the git commands is a core
>> (meaning central) option.
>
> That pov certainly makes sense to me.
Good to see the discussion converged while I was trapped in the
day job. So core.editor it is?
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2007-07-20 0:21 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-19 6:55 [PATCH (REVISED)] Add core.editor configuration variable Adam Roben
2007-07-19 7:48 ` Andy Parkins
2007-07-19 10:00 ` Johannes Schindelin
2007-07-19 10:48 ` Andy Parkins
2007-07-19 11:15 ` Johannes Schindelin
2007-07-19 14:23 ` Andy Parkins
2007-07-19 19:28 ` Nicolas Pitre
2007-07-19 14:24 ` Brian Gernhardt
2007-07-19 14:52 ` Andy Parkins
2007-07-19 19:32 ` Nicolas Pitre
2007-07-20 0:20 ` Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).