Thread (6 messages) flat view 6 messages, 4 authors, 2021-08-23

Re: [PATCH] Give support for hooks based on platform

From: Rafael Santiago <hidden>
Date: 2021-08-23 01:07:52

Well, you are taking into consideration that every git user that needs to
automate some stuff during a scm event will do it from a shell
(I meant true shell or a mocked up one such as cygwin, msys, etc)
and it is true, by design.

However, not all git users (out unix) uses git from "bash-like"
environments. I know people that prefers using it from a well-cooked
IDE by clicking and dragging things or even from command prompt when
on Windows. Those people are not able to handle some scm event
automation as unix users because git hook in its essence presupposes
the existence/necessity of a powerful shell (okay, it is possible to
put a shebang and call a batch file on windows, maybe, but it is a
little clumsy, in my opinion). On Windows, users can do a bunch of stuff
just by using the ready to go powershell, but open an if/else on a bash
script to run a cygwin instance by calling powershell from there is not a
good and clean solution for this type of user. Presupposing shell for git,
limitates the idea behind the scm event handling with hooks, because
currently it is strongly dependent from shell to work on every git
supported platform.

The idea of having hooks being executed by platform would be the first
step to give support to execute commands on scm events without
obligating users out of a unix have a shell interpreter to access
native stuff. Currently, this commit does not implement it but would be
possible to do and in a  less noisy way for all unix-like stuff. I am not sure
but currently a _windows hook out from cygwin would result on a spawn
error, would not?

Git hooks are useful features but would be more useful if it breaked up
the shell jail. It could make git much more integrated with the current
platform.  Being possible to make it powerful as it is on a unix even on
a total different platform as Windows, let's say.

For sure, this commit are not a "panacea" but intends to start making
git-hooks more independent from 3rd party software to work on as expected,
on every platform that a git-repo is expected to be handled.

I hope I was clearer from this time.

Rafael Santiago
--
22 de ago. de 2021 19:07 por sandals@crustytoothpaste.net:
On 2021-08-21 at 23:11:27, Rafael Santiago wrote:
quoted
In my opinion "binary hooks" (hooks that execute specific binaries not
present in the system as a default tool) should be versioned and built
as a support tool into the repository or in the worst case downloaded
from somewhere, even because versioning binaries into git repos is
considered a bad practice that could make bloated repos.
Yes, I agree binary hooks should not be checked into the repository.
quoted
The point is that in many cases a dependency with a script language is
created only to make the hook actions portable from a platform to
other, but what this script in its essence does is a thing that could
be done with basic tools delivered with the current operating system.
Then, in general, it can be done in a shell script containing an if-then
statement per platform using the native tools, so I'm not seeing the
particular reason that this series is necessary if the hooks being
executed aren't binaries.  All systems on which Git runs must contain a
POSIX-compatible shell.

Can you explain the rationale for your proposal in more detail so that
we can understand why this change is necessary?  Typically this is done
in the commit message, but I don't think I understand why you want to do
this.
quoted
There is no problem on using cygwin on windows, you should use
standard hook and do all the effort to make it unique for cygwin
environments and true unix boxes (in other words: you would continue
doing what you are doing, because it attends yours requirements).
Notice that everything that have been working will stay working as
before. Anyway, if cygwin becomes a point of incompatibility at some
point, you could use the "_windows" version by coding your "cygwin
script" there.
Right, my point is that your commit message proposes using "windows" for
Cygwin.  The patch doesn't, but your commit message says that every
version of Windows is considered "windows".
-- 
brian m. carlson (he/him or they/them)
Toronto, Ontario, CA
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help