问题标签 [githooks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
svn - 自动同步 Subversion 存储库和 Git 存储库
我的项目在网络文件系统上有一个 Subversion 存储库,一个新团队希望使用 Git 访问它,并能够提交它并从中获取更新。
我的想法是git-svn
在同一个网络文件系统上创建一个新的 Subversion 存储库的裸克隆,并确保两个存储库相对于彼此始终是最新的。
这样做的方法可能是为 Subversion 和新的 Git 存储库添加一个 post-commit 挂钩,这将各自更新对方的存储库。
Subversion post-commit 钩子将包括git svn rebase
, 和 Git 一个git svn dcommit
.
问题是我将不得不使用某种锁来确保没有人提交到任一存储库,而其他存储库也被提交,因为在任何提交之前它们始终必须保持同步。这有几个缺点,其中包括提交到 Subversion 或推送到 Git 存储库所需的时间(它必须等待钩子完成),以及一些用户可能无法运行的事实git svn
(因为它是未安装在他们的机器上),这意味着他们在提交/推送时无法更新其他存储库。
我该如何解决这些问题?Subversion 和 Git 挂钩会是什么样子?
git - 如何在 git 中的 fetch 或 pull 命令后立即执行命令?
我克隆了 GHC(格拉斯哥 Haskell 编译器)存储库。为了构建编译器,您需要几个库,它们都可以作为 git 存储库使用。为了方便人们使用,GHC 黑客包含了一个脚本sync-all
,该脚本在执行时会更新所有依赖的存储库。
现在我的问题是:我怎样才能让 git./sync-all pull
在我git pull
自动执行之后执行?我听说过一些关于使用钩子的事情,但我真的不知道,我必须做什么。
git - 将 PowerShell 脚本作为 git 挂钩运行
是否可以将 PowerShell 脚本作为 git 挂钩运行?
我在 PowerShell 提示符下运行 git,这应该没有任何区别,但我似乎无法让它们工作,因为挂钩的命名没有扩展名,并且 PowerShell 需要(AFAIK).ps1 扩展名。我不确定这是问题所在,还是其他问题。
hook - Gitolite钩子不传播
我一遍又一遍地阅读了大量的 gitolite 文档。这是我的配置:
Git 用户运行 gitolite,而我作为另一个用户安装了 Gitolite,该用户具有 root 权限。我使用 gl-system-install 方法安装。
现在,我看到了 hooks/common 目录的两个副本,/usr/local/share/gitolite/hooks/common
并且/home/git/.gitolite/
(我打算使用第一个副本来实现系统范围的实现)
gitolite-source位于/home/user/gitolite-source
我在/home/user/gitolite-source/hooks/common/
目录中放入了一些虚拟挂钩(post-udpate、post-update.secondary、post-receive 和 post-commit)。所有这些都设置了 exec 位。
如果我在此目录中编辑更新挂钩并再次重新运行设置,则较新的更新挂钩(在现有存储库中)将符号链接到/usr/local/share/gitolite/hooks/common
.
但是,即使 source/hooks/common 目录中的任何较新的挂钩都被复制到两个挂钩位置,较新的符号链接也不会出现在我现有的存储库中。
简而言之:gitolite 复制了自己的钩子,但忽略了我的。
知道为什么吗?
git - 如何设置一个 Git 钩子,以便在推送到 ssh://peter@foo.com/~/bar.com.git 后,它会转到 ~/bar.com 并执行 git pull?
有人建议我在远程服务器上设置
所以,从我的本地机器上,我可以做一个
它将推送到foo.com/~/bar.com.git
远程机器上(完整路径是ssh://peter@www.foo.com/~/bar.com.git
如何添加一个钩子,以便在推送之后,远程服务器会cd ~/bar.com
并做一个git pull
,以便更新所有内容(与本地机器相同)?(不需要git update
像 Mercurial 那样运行?)
(这与Cannot git clone a folder on a server and then edit and git push有关? 现在我可以ssh到foo.com
并cd ~/bar.com
在那里等待,并在本地机器git pull
之后git push
随时执行,但拥有它会很好自动完成)
更新:如果您知道具体细节以及如何做,请仅发布答案。如果你用谷歌搜索并在这里发布第一个或第二个谷歌结果,它不会有帮助。
更新 2:我去~/bar.com.git/hooks
并添加了一个post-receive
包含内容的新文件:
还有chmod 755 post-receive
,如果我在本地机器上编辑一个文件,然后git com -m "ok"
,git push
它不会使更改进入远程机器的文件夹~/bar.com
git - 我如何对 git hooks 中的新标签做出反应?
我想设置一个基于传入标签创建 CDN 样式目录结构的 git 挂钩。因此,例如,如果本地存储库中的最后一个标签是“v1.2.1”并且我使用“v1.2.2”拉取提交,它应该会看到新标签并将存储库直接克隆到新标签(../1.2 .2) 相应地。
我很确定我想将它附加到 post-receive,但是我在文档中找不到任何关于如何读取传入标签的 git hooks 的内容。他们是在不同的钩子上交付的吗?我真的需要让 shell 脚本运行一个 git 命令来查看是否有任何新提交有新标签吗?
谢谢!
git - 使用 git commit 钩子附加票号?
所以我的分支以 bugtracker 票号命名,类似于“issue-1234”,我们有一个约定,总是在提交消息中写下票号。我想知道是否可以在我处理 issue-* 分支时自动在提交消息中附加票号,而无需我明确输入。
我查看了 git commit 钩子,即 pre-commit、prepare-message 和 post-commit,它们似乎都不能做我想做的事。提交后挂钩接近,但您无法修改使用 -m 提交的消息。
重申一下,我想知道这是否可能:
在分支上:issue-1234
提交后,在 git log 中,它显示消息为:
git - 可以在暂存、添加或推送之前使用 git 挂钩替换密码吗?
可以在暂存、添加或推送之前使用 git 挂钩替换密码吗?
我希望在提交或推送之前用模板替换密码。
例如,假设我用“PWDEXLUDE_password”作为纯文本密码的前缀,而钩子用 <> 替换它,因此在部署阶段,脚本可以查找模板,在数据库中查找密码,并将该模板替换为生产密码.
git可以使用或可能使用类似的东西吗?
visual-studio-2010 - 子模块更新调用了哪些 githooks?
所以这里的情况。我有一个带有多个子模块的 git 存储库。顶级目录和所有子模块都包含 Visual Studio 2010 解决方案。
顶级存储库取决于子模块是否是最新的,并且每次更新子模块时都需要重新构建它们。我想做的是,因为有任意数量的子模块,所以在 git 中制作某种更新后挂钩来编译刚刚更新的子模块。
所以我的问题是:更新子模块时会调用哪些钩子(如果有)?似乎结帐后可能是我想要的,但我不确定。
我们使用 TortoiseGit 和 Git for Windows(msysgit) 作为后端,如果这有所作为的话。
git - 是否有一个钩子可以更新克隆/拉取文件中的 $Id$?
我有一个裸露的(远程)GIT 存储库,其中有几个有幸提交的用户。在存储库克隆/拉取上,我希望每个包含魔法的源文件$Id:$
都扩展为 smth。喜欢:$Id: <name-of-last-committer> <data>
。
如果这个展开/折叠的魔术字符串不会影响文件修改状态,那就太棒了。
我想它是通过钩子完成的。我想知道是否有任何现成的这样的钩子?或者我的任务如何$Id
解决?谢谢。