Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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 保留特定于分支的设置文件_Git_Jenkins_Merge_Bitbucket - Fatal编程技术网

Git 保留特定于分支的设置文件

Git 保留特定于分支的设置文件,git,jenkins,merge,bitbucket,Git,Jenkins,Merge,Bitbucket,我目前正在为我的公司应用程序运行许多存储库 我们有两个存储库,它们需要设置文件才能运行构建。这些设置文件因本地版本、开发版本、暂存版本和生产版本而异 每个项目都有一个开发、阶段和生产分支 我添加了一个.gittributes文件,其中包含以下内容: gomo-campaign-api/src/main/webapp/WEB-INF/database.properties.xxx merge=ours gomo-campaign-api/src/main/webapp/WEB-INF/gomo-

我目前正在为我的公司应用程序运行许多存储库

我们有两个存储库,它们需要设置文件才能运行构建。这些设置文件因本地版本、开发版本、暂存版本和生产版本而异

每个项目都有一个开发、阶段和生产分支

我添加了一个.gittributes文件,其中包含以下内容:

gomo-campaign-api/src/main/webapp/WEB-INF/database.properties.xxx  merge=ours
gomo-campaign-api/src/main/webapp/WEB-INF/gomo-messenger-config.xml.xxx merge=ours
gomo-campaign-api/src/main/webapp/WEB-INF/hibernate.cfg.xml.xxx merge=ours
gomo-campaign-api/src/main/webapp/WEB-INF/legacy-session-mapping.properties.xxx merge=ours
gomo-campaign-api/src/main/webapp/WEB-INF/log4j.properties.xxx merge=ours
gomo-campaign-api/src/main/webapp/WEB-INF/messengerPublisher.properties.xxx merge=ours
git update-index --assume-unchanged gomo-campaign-api/src/main/config/messengerPublisher.properties.xxx
ECHO ignoring log4j.properties.xxx
git update-index --assume-unchanged gomo-campaign-api/src/main/config/log4j.properties.xxx
ECHO ignoring legacy-session-mapping.properties.xxx
git update-index --assume-unchanged gomo-campaign-api/src/main/config/legacy-session-mapping.properties.xxx
ECHO ignoring hibernate.cfg.xml.xxx
git update-index --assume-unchanged gomo-campaign-api/src/main/config/hibernate.cfg.xml.xxx
ECHO ignoring gomo-messenger-config.xml.xxx
git update-index --assume-unchanged gomo-campaign-api/src/main/config/gomo-messenger-config.xml.xxx
ECHO ignoring database.properties.xxx
git update-index --assume-unchanged gomo-campaign-api/src/main/config/database.properties.xxx
ECHO Initialisation completed.
我还有一个sh文件,运行时包含以下内容:

gomo-campaign-api/src/main/webapp/WEB-INF/database.properties.xxx  merge=ours
gomo-campaign-api/src/main/webapp/WEB-INF/gomo-messenger-config.xml.xxx merge=ours
gomo-campaign-api/src/main/webapp/WEB-INF/hibernate.cfg.xml.xxx merge=ours
gomo-campaign-api/src/main/webapp/WEB-INF/legacy-session-mapping.properties.xxx merge=ours
gomo-campaign-api/src/main/webapp/WEB-INF/log4j.properties.xxx merge=ours
gomo-campaign-api/src/main/webapp/WEB-INF/messengerPublisher.properties.xxx merge=ours
git update-index --assume-unchanged gomo-campaign-api/src/main/config/messengerPublisher.properties.xxx
ECHO ignoring log4j.properties.xxx
git update-index --assume-unchanged gomo-campaign-api/src/main/config/log4j.properties.xxx
ECHO ignoring legacy-session-mapping.properties.xxx
git update-index --assume-unchanged gomo-campaign-api/src/main/config/legacy-session-mapping.properties.xxx
ECHO ignoring hibernate.cfg.xml.xxx
git update-index --assume-unchanged gomo-campaign-api/src/main/config/hibernate.cfg.xml.xxx
ECHO ignoring gomo-messenger-config.xml.xxx
git update-index --assume-unchanged gomo-campaign-api/src/main/config/gomo-messenger-config.xml.xxx
ECHO ignoring database.properties.xxx
git update-index --assume-unchanged gomo-campaign-api/src/main/config/database.properties.xxx
ECHO Initialisation completed.
如果我进行自动合并,即

git checkout staging
git merge development
如果这些文件中有任何更改,它仍在尝试将更改移到其他位置

我是否遗漏了这些策略的配置

只有我和另外一个用户会执行dev>staging或staging>prod合并(甚至有权这样做) 其他用户必须创建pull请求,以使其分支进入开发。因此,我可以轻松地阻止其他用户更改dev文件并引入本地配置

但是,我确实需要进行合并,以便在合并时忽略这些文件

如果我要签出staging并进行更改,然后将其推送到repo中,我希望进行更改,但不希望将其转移到生产中

我希望我已经解释得足够详细了


提前感谢。

我们考虑的解决方案之一是将它们保存在单独的存储库中,但我们采用的解决方案是在maven中使用profile标记,并在repo中为每个环境创建设置文件


这不是最优雅的解决方案,但仍然是一个解决方案。

简单的回答是,你不能。(从理论上讲,您可以;您可能也想阅读,但这需要编写非平凡的代码。)这就是为什么版本控制配置文件总是一个坏主意。相反,版本控制可以使用示例或默认配置文件,并将实际配置放在版本控制软件肮脏的爪子之外。(或者,如果要进行版本控制,请在独立的存储库中进行,而不是在软件本身中进行。)