threads / discuss / 23798

interactive rebase editor pathname variable

Subject: interactive rebase editor pathname variable

## tl;dr

3 messages between May 13, 2010 and May 14, 2010.

replies: 2people: 3as markdown or json

Neal Kreitzinger· May 13, 2010, 18:32 UTC · lore
Hi,

It appears that git-commit and git-tag pass a partial pathname to the core.editor, e.g. ".git/COMMIT_EDITMSG" that is relative to the working tree directory. However, git-rebase -i passes an absolute pathname to the core.editor, e.g. "home/someuser/someworkingtree/.git/rebase-merge/git-rebase-todo". This causes problems in our shop because our proprietary editor cannot handle pathnames beginning with a period (it translates the period to a slash) and therefore our entry for core.editor is 'someeditor "$PWD/$1"'. This breaks on git rebase -i when the $1 contains the full pathname. Can this be added to the bugfix list for git to make the $1 value passed to core.editor by all git commands to always be relative pathnames (or absolute pathnames). FWIW, I prefer absolute pathnames because a config entry of 'someeditor $1' is more straightforward than 'someeditor "$PWD/$1"'. (Note: the reason I must pass $1 is because the editor runs on top of a runtime and is actually called as 'someruntime someeditor "$1"')

v/r, Neal

Jonathan Nieder· May 14, 2010, 07:59 UTC · re: Neal Kreitzinger · lore

Re: interactive rebase editor pathname variable

Hi Neal,
Neal Kreitzinger wrote:
Show 6 quoted lines
> git-rebase -i passes an absolute pathname to the 
> core.editor, e.g. 
> "home/someuser/someworkingtree/.git/rebase-merge/git-rebase-todo".  This 
> causes problems in our shop because our proprietary editor cannot handle 
> pathnames beginning with a period (it translates the period to a slash) and 
> therefore our entry for core.editor is 'someeditor "$PWD/$1"'.
For your example, git uses the shell to run the following command.
  someeditor "$PWD/$1" "$@"
I would suggest something like the following instead.
  [core]
	editor = "sh -c '\
		case \"$1\" in \
		/*|[A-Za-z]:*) file=\"$1\";; \
		*) file=\"$(pwd)/$1\";; \
		esac; \
		someruntime someditor \"$file\"' -"

Hope that helps, Jonathan

Bert Wesarg· May 14, 2010, 12:49 UTC · re: Jonathan Nieder · lore

Re: interactive rebase editor pathname variable

On Fri, May 14, 2010 at 09:59, Jonathan Nieder <jrnieder@gmail.com> wrote:
Show 25 quoted lines
> Hi Neal,
>
> Neal Kreitzinger wrote:
>
>> git-rebase -i passes an absolute pathname to the
>> core.editor, e.g.
>> "home/someuser/someworkingtree/.git/rebase-merge/git-rebase-todo".  This
>> causes problems in our shop because our proprietary editor cannot handle
>> pathnames beginning with a period (it translates the period to a slash) and
>> therefore our entry for core.editor is 'someeditor "$PWD/$1"'.
>
> For your example, git uses the shell to run the following command.
>
>  someeditor "$PWD/$1" "$@"
>
> I would suggest something like the following instead.
>
>  [core]
>        editor = "sh -c '\
>                case \"$1\" in \
>                /*|[A-Za-z]:*) file=\"$1\";; \
>                *) file=\"$(pwd)/$1\";; \
>                esac; \
>                someruntime someditor \"$file\"' -"
>
Barely tested:
someditor "$PWD/${1/#$PWD\//}"
Bert
Show 7 quoted lines
> Hope that helps,
> Jonathan
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

← back to recent threads