Re: Git fails to detect subcommand when hook is symlinked to a builtin

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Todd Zullinger <tmz@xxxxxxxxx> writes:

> I'm not sure if this is a bug or more of a "don't do that" sort of
> thing.  At fedorahosted.org, the git repositories are mounted on a
> filesystem with noexec.  As such, we have all hooks symlinked
> elsewhere.  For the post-update hook we used to link directly to
> git-update-server-info.
>
> This worked until we upgraded the system to git-1.7.4.1 recently.

I have a suspicion that we may end up saying "don't do that", but let's
ponder a bit with some technical background first.  The "git" wrapper and
builtin commands are all the same binary, and as a consequence, their
main() function needs to decide what to do based on argv[0].  If argv[0]
is "git", we know argv[1] is the name of the subcommand, and if argv[0] is
"git-foo", it might be the internal call from the "git" wrapper that was
invoked with argv[] = { "git", "foo", ... }, but we don't expect that
argv[0] to be things like "post-update".

But it is curious why the resulting behaviour changed recently.  The
symptom hints that the link target (git-update-server-info in your case)
used to be given as argv[0] (which still wouldn't have been kosher---you
are not supposed to use dashed form since 1.5.4 or so without adding
$GIT_EXEC_PATH at the beginning of your $PATH, and that is why I said the
first sentence in this reply), but we recently changed something and now
we are getting "hooks/post-update" in argv[0].

I suspect the recent change to run hooks via run_command() interface has
something to do with it.  From what version did you update to 1.7.4.1?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]