Reputation: 67057
When I add a new tool to git-gui
, the dialog indicates that I could use some variables to be passed to the tool ($REVISION
, $ARGS
, $FILENAME
).
Are there any other parameters that are not documented (for example the current repo directory, etc.)? Why are they not contained in the documentation of the git-gui
?
My current use case is that I have two scripts that enable/disable a pre-commit hook. Currently, I have to open my Windows Explorer and double-click the batch-files which is a bit clumsy. Easier way would be to do that directly out of git-gui
...
As an alternative (side-question), I would also be interested in bypassing the pre-commit hook (i.e. pass --no-verify
when committing) out of git-gui
.
Upvotes: 12
Views: 2605
Reputation: 11
Two notes to the previous solution:
to post non empty $FILENAMES to the command it is neccessary to declare selected_paths as global
to post files containing spaces use "${FILENAMES[@]}" instead of plain $FILENAMES.
You can see how the pathes are sent to a command by using command printf '\"%s\" ' e.g.
printf '\"%s\" ' FILENAMES= "${FILENAMES[@]}"
Upvotes: 1
Reputation: 31
I personal extended git-gui
for having tools working on multiple files
In the tools.tcl
file, add the following 2 lines
set env(GIT_GUITOOL) $fullname
set env(FILENAME) $current_diff_path
>> set env(FILENAMES) [array names selected_paths]
and :
unset env(GIT_GUITOOL)
unset env(FILENAME)
>> unset env(FILENAMES)
Use $FILENAMES
instead of $FILENAME
in your tool, and list of files will be passed on separated by spaces (very useful for creating a tool like : rm $FILENAMES
)
Note on $FILENAME
(and $FILENAMES
)
Git gui tool mechanism doesn't work with files containing spaces
I tried quoting each file, by writing
set env(FILENAMES) [string map { \{ \" \} \" } [array names selected_paths]]
But Console::exec
seems to separate args on space and escape each argument.
Upvotes: 3
Reputation: 1324935
When looking at the git-gui
sources, I find (not present in git-gui man page):
git-gui.sh
:
$GITGUI_VERBOSE
, to enable verbose loadingSSH_ASKPASS
, to suggest our implementation of askpass, if none is setGIT_DIR
and GIT_WORK_TREE
, for repository setupUpvotes: 5