Git 忽略capistrano'中的某些文件和更改;开发环境的当前目录
我们的部署策略:我们有环境范围的db配置和Git 忽略capistrano'中的某些文件和更改;开发环境的当前目录,git,deployment,capistrano,development-environment,environment,Git,Deployment,Capistrano,Development Environment,Environment,我们的部署策略:我们有环境范围的db配置和.htaccess文件(想想prod.htaccess,dev.htaccess和local.htaccess)。使用capistrano完成部署,首先签出要部署的分支,然后删除Capfile和范围外的.htaccess文件,并将范围内的htaccess从[env].htaccess重命名为.htaccess。完成此操作后,repository/public_html目录通过非删除rsync传输到apache webroot 背景:我工作的公司是一家在线
.htaccess
文件(想想prod.htaccess
,dev.htaccess
和local.htaccess
)。使用capistrano完成部署,首先签出要部署的分支,然后删除Capfile
和范围外的.htaccess
文件,并将范围内的htaccess从[env].htaccess
重命名为.htaccess
。完成此操作后,repository/public_html
目录通过非删除rsync传输到apache webroot
背景:我工作的公司是一家在线出版物
自1998年以来一直存在,部署战略错综复杂,因为
文件夹结构一团糟:受版本控制的文件就在旁边
生成的文件和用户上传的文件。既然如此,我们不能
只需将整个apache webroot文件夹符号链接到相应的
/current
中的文件夹。每次都会清除生成的文件
进行了新的部署,用户上传的文件分散在
目录必须从其他地方进行符号链接,等等
非删除rsync操作
不过,上面提到的当前的疯狂是另一天的问题
我想要的是一个解决方案,它不需要在部署时删除和重命名repo中的htaccess和db config文件。原因是,我们可以在/deploy/current
中工作并从中提交,而不必处理来自deploy的复杂本地更改
部署这样的环境范围文件的典型解决方案是什么?我是否应该将它们移动到
/config
文件夹上方的/public\u html
,并根据环境将其从apache webroot符号链接到/config
中的相关文件 我建议您采用以下方法:
- 仍然将所有
文件保留在存储库中李>[env].htaccess
部署后:更新
将所有
文件符号链接到[env].htaccess
符号链接(.htaccess
)ln--symbolic[env].htaccess.htaccess
- 不要删除
文件*.htaccess
- 让开发人员/系统操作人员编辑
文件(他们可以通过*.htaccess
符号链接访问作用域内的文件,也可以访问所有作用域外的[env].htaccess文件.htaccess
- 让开发者/sysops直接从
文件夹提交(但确保它是可以提交的有效存储库)deploy/current
- 将此过程用于处理的其他类型的文件
顺便问一下,为什么要在
deploy:update
之后删除Capfile
?听起来像是您的[env].htaccess
文件不应保存在存储库中。为什么不将它们放在您的共享
文件夹中,并在部署时将其符号链接到相应的文件夹中?您是否需要开发人员/系统操作人员同时处理.htaccess文件?如果需要,则保存多长时间?我有一个想法,但不知道它是否能满足您的需要@cdesrosiers如果不在存储库中,那么如何共享对文件的更改?您的意思是让Capistran在部署时从/current
中删除它们,而不是将/current
中的.htaccess
符号链接到[env].htaccess
在/shared?@Jeznet是的,在prod.htaccess
中添加新行并不少见,这也需要添加到local.htaccess
和dev.htaccess
中。谢谢!删除Capfile的原因有点牵扯其中。我工作的公司是一家在线出版物,自1998年以来就一直存在文件夹结构混乱:受版本控制的文件位于生成的文件和用户上载的文件旁边。在这种情况下,我们不能将整个文件夹符号链接到/current中的相应文件夹。相反,我们在对apache的webroot的repo中从public_html中执行非删除rsync。在rsync操作执行之前,会删除Capfile不过,我们可以从rsync操作中排除该文件。我们的想法是在中对新文件夹进行符号链接,然后慢慢清理混合文件夹,这样我们就可以将它们符号链接到中。因此,工作流将从rsync和符号链接中排除*.htaccess
[env].htaccess]到.htaccess
。如果像/system/config/这样的文件夹符号链接到current,但包含database.local.php
,database.dev.php
,database.prod.php
。请添加一个特殊的大小写规则,以避免将文件夹符号链接,而不是符号链接到各个范围正确的文件?我想这整件事似乎很复杂,很不雅观。有更好的解决办法吗?