我正在尝试使用git来管理我的实时网站的部署。 我遇到的问题是我有几个设置文件,当我推向生产时我不想更新
我正在做的是使用钩子或涂抹/清洁来更改文件内容,例如从
<?php
define('DB_NAME', 'live');
define('DB_HOST', '127.0.0.1');
define('DB_USER', 'live_user');
define('DB_PASS', 'livePass');
到
<?php
define('DB_NAME', 'local');
define('DB_HOST', '127.0.0.1');
define('DB_USER', 'local_user');
define('DB_PASS', 'localPass');
是否有人可以通过这个过程与我联系
我确实想知道使用post-receive hook和shell脚本来替换内容,但理想情况下我希望在运行git checkout -f之前更改repo中的内容
之后的实时副本没有改变答案 0 :(得分:6)
理想情况下,我希望在运行git checkout之前更改仓库中的内容-f
之后未在实时副本中更改
最接近的是过滤器内容驱动程序,它将替换 {/ 1}}的值。
(来自Scott Schacon的Pro Git book页Git Attributes:“关键字扩展”部分
所以在你的情况下:一个涂抹过滤器,在git checkout
文件中声明。
请参阅“Can git automatically switch between spaces and tabs?”,除非您使用sed将本地替换为live(如this example所示)
答案 1 :(得分:0)
我认为,你必须从头到尾阅读Git Book中的主题Customizing Git - Git Attributes才能全面了解,但要特别仔细检查部分“关键字扩展”,其中自定义手工脚本用于转换KEYWORD在存储库中工作目录中的最终文本(以及后面)。它们是任何代码,可以在带有工作目录的主机上执行,从.gitattributes文件引用
注意:因为你必须有不同的清理过滤器输出(对于本地和实时),你可能在普通文件名下的本地和实时WorkingDir上有两个略有不同(内容中)的干净脚本(在本书的样本中,清除结果对所有位置都相同 - 使用单个脚本。