首先感谢你们这个精彩的网站(是的,我是新人,至少作为一个作家:p)。
由于我没有在这里找到我的问题的答案,我会尝试直接寻求帮助:)我看到here可能与HTTP有关但我不知道这篇文章现在已经很老了...
主要问题:
我想在远程服务器上运行一些钩子(在Linux系统上)。
当我尝试像使用TortoiseGit的客户端那样行动,然后尝试提交并推送一些修改时,所有操作都完成,而不启动远程服务器存储库上.git/hooks
文件夹中的任何远程脚本。我尝试使用名为update
的脚本和pre-receive
脚本。这些脚本有一个echo“hello”,并且在启动时不会在任何地方打印。
我已经检查过的内容:
扩展名“.sample”已经消失,脚本可以被执行,它们由良好的用户帐户拥有,我确实设法让钩子在客户端工作(如prepare-commit-msg
)。
更详细的示例:
为了更进一步,我尝试提交并推送不通过Windows上的TortoiseGit(如客户端),而是直接在Linux服务器上进行一种本地测试(在使用TortoiseGit再次尝试之前调查更接近问题.. )。
git clone http://{ID}@{serv}.corp/git/{FOLDER}/{REPO}.git .
Cloning into '.'...
(克隆没问题),然后切换到测试分支
git checkout test_hook
Branch test_hook set up to track remote branch test_hook from origin.
Switched to a new branch 'test_hook'
(我为测试挂钩创建的分支)
提交一些随机修改
git commit -a -m "test command line"
[test_hook a464a3e] test command line
1 file changed, 1 insertion(+), 1 deletion(-)
mode change 100644 => 100755 Makefile
最后推
git push --progress "origin" test_hook:test_hook
Fetching remote heads...
refs/
refs/tags/
refs/heads/
updating 'refs/heads/test_hook'
from 6d65df53f962a12e8445a137de173f50eeade819
to a464a3ef2cfca3648a4b7b4e94f377f13b82f852
sending 3 objects
done
Updating remote server info
To http://{ID}@{serv}.corp/git/{FOLDER}/{REPO}.git
6d65df5..a464a3e test_hook -> test_hook
我尝试将脚本放在{FOLDER}/{REPO}.git/hooks/
文件夹和主{FOLDER}/hooks
即使使用钩子脚本,如:
#!/bin/sh
# Testing Server-sided hooks
echo "Hello"
echo "Cancelling push."
exit 1
推完了,不打印任何东西......
如果您有任何想法可以帮助我,欢迎您:)
PS:奖金问题:
我确实尝试将我管理的脚本添加到prepare-commit-msg
的{{1}}我的存储库文件夹中。但是为什么当我克隆这个repo时,本地{FOLDER}/{REPO}.git/hooks
不包含我的脚本而只包含样本,为什么呢? (这将是一个简单的解决方案,可以制作一个在克隆回购时每次都在本地克隆的脚本。
编辑:格式化