我想将“vendor/assets”目录中子模块中的一些文件复制到另一个目录——“public/assets”。我听说过更新挂钩,但我不确定它们是否适用于子模块。我写了一个简单的钩子并从命令行运行更新,但它没有用。
我的更新挂钩如下所示:
#.git/gooks/update.rb
#!/usr/bin/env ruby
puts "Copying files..."
那么这甚至可能吗?
顺便说一句,我正在使用 Braid 来管理我的子模块。
我想将“vendor/assets”目录中子模块中的一些文件复制到另一个目录——“public/assets”。我听说过更新挂钩,但我不确定它们是否适用于子模块。我写了一个简单的钩子并从命令行运行更新,但它没有用。
我的更新挂钩如下所示:
#.git/gooks/update.rb
#!/usr/bin/env ruby
puts "Copying files..."
那么这甚至可能吗?
顺便说一句,我正在使用 Braid 来管理我的子模块。
该update
钩子仅在有人推送到当前存储库时运行,这听起来不像您想要的。post-commit
如果您想在每次在存储库中创建提交时将这些文件复制到适当的位置,则可以使用该钩子。(这应该足够了,因为当您更改子模块的提交时,您需要在主项目中提交任何子模块的新版本。这将是更新文件的自然点public/assets
。)
你说你的测试钩子没有运行——这可能只是因为你的名字错误。更新挂钩必须是一个名为.git/hooks/update
(nb without a .rb
suffix) 的可执行文件。同样,提交后挂钩必须是.git/hooks/post-commit
.
您不应为此任务在任何特定子模块中创建挂钩,因为挂钩将采取的操作特定于主项目。因此,您担心的更改是由于提交了新版本的子模块还是只是更新了任何随机文件,这并不重要。
对于编写钩子,你会发现官方的 githooks文档很有用,可能还有这些额外的技巧。