Git钩子在更新存储库后自动重命名文件

Git钩子在更新存储库后自动重命名文件,git,githooks,Git,Githooks,我和我的团队已经在Linux服务器上建立了一个git存储库,其中包含一个PHP web应用程序,我们定期将其推送到Linux服务器上。我们已经使用了一个post-receive钩子,每当有人推某个东西时,我们都会通过电子邮件通知整个团队,这很好。 此外,我们将此repo签出到同一服务器上的不同位置,并将其用作其他同事的“暂存区”。web应用程序需要加载包含机器特定信息(例如绝对路径)的“config.php”文件,因此其内容取决于服务器及其运行位置。因此,repo中有几个配置文件: confi

我和我的团队已经在Linux服务器上建立了一个git存储库,其中包含一个PHP web应用程序,我们定期将其推送到Linux服务器上。我们已经使用了一个post-receive钩子,每当有人推某个东西时,我们都会通过电子邮件通知整个团队,这很好。 此外,我们将此repo签出到同一服务器上的不同位置,并将其用作其他同事的“暂存区”。web应用程序需要加载包含机器特定信息(例如绝对路径)的“config.php”文件,因此其内容取决于服务器及其运行位置。因此,repo中有几个配置文件:

  • config.sample.php(用于开发人员机器)
  • config.live.php(用于live服务器)
  • config.staging.php(用于临时区域)
文件“config.php”被添加到.gitignore,因此它不是repo的一部分。 我们想要实现的是以下自动化:每当有人提取staging repo时,就会删除现有文件“config.php”,并将文件“config.staging.php”复制为“config.php”。这样,我们希望确保对配置文件的更改在临时区域中自动更新


我们是否必须在“主回购”或“分期回购”中设置挂钩?我们必须使用哪种挂钩(例如post receive)?

一些评论。。。您可以通过符号链接实现同样的效果,我想这会表现得更好。在另一个应用程序上,我创建了一个完整的配置文件,里面有几个部分,应用程序本身根据软件收到的一些环境变量选择了一个。这也可能是当前的git分支名称。我也做过一次复制/移动/删除CI,所以文件总是一样的。为了专门处理钩子,您可以在以下位置找到git钩子管理工具(免责声明:我是hooks4git的作者)。希望这能给你一些想法…非常感谢你,洛瓦托!我们从未使用过符号链接,但这显然解决了我们的问题,使事情比我们原来的计划更容易。