Deployment 如何更改symfony部署任务中rsync的顺序
我想部署symfony应用程序的一部分,比如说,它就像一个模块 我想先排除所有文件,然后只包括 我的新模块 对于部署,我使用以下symfony任务Deployment 如何更改symfony部署任务中rsync的顺序,deployment,symfony1,task,rsync,Deployment,Symfony1,Task,Rsync,我想部署symfony应用程序的一部分,比如说,它就像一个模块 我想先排除所有文件,然后只包括 我的新模块 对于部署,我使用以下symfony任务 php symfony project:deploy production -t 参数-t将所有文件打印到rsync此干运行中包含的输出 config/rsync_exclude.txt的内容只有*,因为我喜欢排除所有内容: * 在config/rsync_include.txt中,我列出了要包含的所有文件和文件夹: config/ confi
php symfony project:deploy production -t
参数-t将所有文件打印到rsync此干运行中包含的输出
config/rsync_exclude.txt的内容只有*,因为我喜欢排除所有内容:
*
在config/rsync_include.txt中,我列出了要包含的所有文件和文件夹:
config/
config/mysupermodule.yml
lib/model/doctrine/
lib/model/doctrine/MySuperclass.php
lib/model/doctrine/MySuperclassTable.php
lib/
lib/MySuperLibrary/
lib/MySuperLibrary/*
symfony任务生成以下rsync命令:
rsync --dry-run -azC --force --delete --progress --exclude-from=config/rsync_exclude.txt --include-from=config/rsync_include.txt -e "ssh -p22" ./ user@www.server.com:/test_deployment/
问题1:任务不同步任何文件。
解决方案1:变更单:先包含,然后排除。
我想如果我把我的需求改成这个:
我想包括新模块的所有文件,然后排除所有文件
其他的
这意味着使用以下命令:
rsync --dry-run -azC --force --delete --progress --include-from=config/rsync_include.txt --exclude-from=config/rsync_exclude.txt -e "ssh -p22" ./ user@www.server.com:/test_deployment/
rsync可以工作
问题2:使用symfony任务时,如何更改rsync的顺序?
symfony任务首先排除而不是包括
解决方案2:?这是不可能的
但是您可以在lib/task/project/sfProjectDeployTask.class.php
中编辑部署任务
替换此(SF 1.4中的第145至154行):
为此:
if (file_exists($options['rsync-dir'].'/rsync_include.txt'))
{
$parameters .= sprintf(' --include-from=%s/rsync_include.txt', $options['rsync-dir']);
}
if (file_exists($options['rsync-dir'].'/rsync_exclude.txt'))
{
$parameters .= sprintf(' --exclude-from=%s/rsync_exclude.txt', $options['rsync-dir']);
}
简而言之:切换这两个IF语句。这是不可能的
但是您可以在lib/task/project/sfProjectDeployTask.class.php
中编辑部署任务
替换此(SF 1.4中的第145至154行):
为此:
if (file_exists($options['rsync-dir'].'/rsync_include.txt'))
{
$parameters .= sprintf(' --include-from=%s/rsync_include.txt', $options['rsync-dir']);
}
if (file_exists($options['rsync-dir'].'/rsync_exclude.txt'))
{
$parameters .= sprintf(' --exclude-from=%s/rsync_exclude.txt', $options['rsync-dir']);
}
简而言之:切换这两个IF语句。让我们改变您想要的方式。 您应该只使用排除文件。仅排除已更改但不希望同步的目录
因为不管怎样,如果你使用模块/,应用程序/。。。目录没有更改,您不必将它们放在排除文件中,因为它们在两台服务器上都将保持不变。让我们更改您想要的方式。 您应该只使用排除文件。仅排除已更改但不希望同步的目录
因为不管怎样,如果你使用模块/,应用程序/。。。目录没有更改,您不必将它们放在排除文件中,因为它们在两台服务器上都将保持不变。谢谢,我以前这样做过,但实际上我不想碰这个类。回答得好!我不能投票,没有足够的声誉。但我认为,这是因为在框架中更改文件的提议不是正确的方式。我将扩展类sfProjectDeployTask并在此处实现更改的。无论如何,这个想法是正确的,答案也是正确的。谢谢你,我以前做过这个,但实际上我不想碰这个班。回答得好!我不能投票,没有足够的声誉。但我认为,这是因为在框架中更改文件的提议不是正确的方式。我将扩展类sfProjectDeployTask并在此处实现更改的。无论如何,这个想法是正确的,答案也是正确的。