Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 忽略capistrano'中的某些文件和更改;开发环境的当前目录_Git_Deployment_Capistrano_Development Environment_Environment - Fatal编程技术网

Git 忽略capistrano'中的某些文件和更改;开发环境的当前目录

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 背景:我工作的公司是一家在线

我们的部署策略:我们有环境范围的db配置和
.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
    文件(他们可以通过
    .htaccess
    符号链接访问作用域内的文件,也可以访问所有作用域外的[env].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
。请添加一个特殊的大小写规则,以避免将文件夹符号链接,而不是符号链接到各个范围正确的文件?我想这整件事似乎很复杂,很不雅观。有更好的解决办法吗?