部署时版本控制中的配置文件

Posted

技术标签:

【中文标题】部署时版本控制中的配置文件【英文标题】:configuration files in version control while deploying 【发布时间】:2011-03-23 19:33:44 【问题描述】:

我在配置文件和部署方面遇到了特殊问题。当我部署我的项目时,它最终会转移到两个不同的分支:staging 和 production(这里使用 SVN)

我从项目的本地工作副本创建分支。这最终会覆盖 staging 和 development 的配置文件副本,所以我每次部署时都必须手动进入并进行正确的更改。

从 SVN 中完全删除配置文件是否有意义,因为它是一成不变的?还是有其他方法可以做到这一点?

【问题讨论】:

【参考方案1】:

我通常做的是在存储库中维护多个配置文件,但不在实际名称下(例如,在从部署中排除的专用文件夹中)。然后我的部署脚本将适当的配置文件复制到最终位置。所以我的部署例程如下:

结帐 编译 运行部署脚本

【讨论】:

“部署脚本,然后将相应的配置文件复制到最终位置”你能详细说明一下吗? 我使用脚本将应用程序从离线文件夹复制到所需位置。这些脚本创建文件夹结构和复制文件,但它们也可以执行其他任务。对于这个特定的问题,我将许多不同的配置文件放到一个专用文件夹中,部署脚本将相应的配置文件复制到应用程序需要配置文件的实时位置。【参考方案2】:

您不想从 SVN 中删除文件 - 因为这会导致它在您部署时从服务器中删除它们。

SVN 提供了一个名为 svn: ignore 的功能,您可以使用它从版本控制中排除一个或多个单独的文件,或者匹配要忽略的文件名模式。基本上,忽略文件意味着 SVN 会将它们保留在每个工作副本或部署服务器上,因此它们在每个地方都可能不同。

有两种方法可以从命令行使用忽略。

A:编辑目录的忽略属性。

使用cd trunk/blah 切换到包含您要忽略的文件的目录。 使用svn propedit svn:ignore . 编辑此目录的忽略属性。这将打开一个文本编辑器。 在打开的文件中,添加或修改代表您要忽略的文件的行。例如,添加一行*.txt 将导致SVN 忽略所有以.txt 结尾的文件。添加一行config.php会导致SVN忽略config.php文件。 保存并退出文件。 提交属性更改。 svn commit -m "New Ignores"

B:使用单个命令在目录上设置 SVN 忽略属性。

使用cd trunk/blah 切换到包含您要忽略的文件的目录。 使用svn propset svn:ignore config.php . 设置SVN 忽略属性以忽略config.php 文件。 提交属性更改。 svn commit -m "New Ignores"

Good introductory article on svn:ignore。 "Official SVN documentation."

【讨论】:

以上是关于部署时版本控制中的配置文件的主要内容,如果未能解决你的问题,请参考以下文章

持续部署环境中的 dotnet 语义版本控制

gitlab版本控制

版本控制工具是啥?

Gitlab构建分布式版本控制系统

持续交付2-版本控制

Git版本控制系统安装部署