[英]how to config git to overwrite non text file instead of version controlled it?
[英]Do not overwrite config file on Azure using GIT
我有一个托管在Azure上的Web应用程序。
当前,有一些网站使用的代码与从Bitbucket中检索到的代码相同。
各种安装之间的唯一区别是,它们在针对不同数据库的web.config
文件中具有不同的连接字符串。
每当我进行错误修复时,我都会在bitbucket上上传新代码,Azure会从BitBucket获取此代码。
当前有5个应用程序具有相同的代码,每次我在bitbucket上上传新代码时,都必须在Azure上手动编辑web.config
文件,以便为每个应用程序定位正确的数据库。
当它从Bitbucket接收新代码时,是否有一种方法指示Azure不要覆盖web.config
文件?
可能不是版本web.config
,而是模板文件web.config.tpl
和值文件(每个应用程序都有值)
然后,您可以使用内容过滤器驱动程序 ,并使用.gitattributes
声明 。
(图片来自“ 自定义Git-Git属性 ”,来自“ Pro Git书 ”)
生成的实际web.config
仍然被忽略( .gitignore
)。
这意味着您的实际工作树不会变得“肮脏”。
涂抹脚本选择正确的值文件,并根据在git checkout
期间应用涂抹脚本的模板生成正确的web.config
。
根据您要部署的网站更改设置的责任可能在发行版中。 VSTS支持从BitBucket等源向Azure发布软件。 创建一个VSTS帐户。 在帐户中创建一个项目。 创建一个新的版本并将BitBucket配置为源。 创建一个发布以将Web应用程序部署到五个位置中的每个位置。 使用变量为每个Web应用程序设置不同的连接字符串。
为什么根本不需要在web.config
中对连接字符串进行硬编码。 只需从“应用程序设置”中的代码中进行选择即可。
从https://azure.microsoft.com/zh-cn/documentation/articles/web-sites-configure/ :
对于.NET应用程序,这些连接字符串将在运行时注入到您的.NET配置connectionStrings设置中,并覆盖键等于链接的数据库名称的现有条目。
using System.Configuration;
// Define AzureSQLConnStr in Portal -> Web App -> Application Settings
string AzureSQLConnStr = ConfigurationManager.ConnectionStrings["AzureSQLConnStr"];
在门户中定义的应用程序设置/连接字符串将在运行时覆盖来自web.config
/ app.config
的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.