Git hooks don't run while commiting in worktree via git-gui

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

 



Hello.
There is a little difference in behavior when you are committing to
the worktree from CLI or some git client (tortoisegit/sourcetree) and
embedded git gui.

If you configure git hooks in your repository and then add a worktree
(via git worktree add), hooks from main repository works well both in
main directory and in worktree, if you are using CLI/third-party GUI.
Committing in the main directory via embedded git-gui works fine too,
hooks are running. But when you try to commit in the worktree
directory from git-gui, hooks don't work.

I think I've found the cause of this:
https://github.com/git/git/blob/master/git-gui/lib/commit.tcl#L238
variable fd equals {} because proc githook_read calls proc gitdir to
determine path to hooks.
https://github.com/git/git/blob/master/git-gui/git-gui.sh#L626
This proc use variable _gitdir for calculating result. This var equals
the result of executing git rev-parse --git-dir
https://github.com/git/git/blob/master/git-gui/git-gui.sh#L1245
So, the path to hooks for worktree is
path_to_main_repo/.git/worktrees/my_worktree/hooks, but there are no
hooks. Hooks are in path_to_main_repo/.git/hooks, from where they are
correctly (or not?) executed by git cli, while running from worktree
directory.

If we put hooks to path_to_main_repo/.git/worktrees/my_worktree/hooks
too, they will work both in git citool and CLI/third-party GUI. But
they will execute different files, and it may cause some problems.
-- 
Ivan Mogish
Support Engineer
Phone: +9115212057



[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]

  Powered by Linux