我有一个非常相同的应用程序正在开发两个机构。除了单个属性文件中的名称之外,所有代码都是100%相似的。将来,这两者之间也需要共同进行改进。是否有可能在一个git存储库下管理这两个应用程序的源代码,以便改进和错误修复将非常容易,但会有不同的属性文件?git为两个应用程序与一个不同的文件
回答
是的,使用分支机构。
首先提交一切,这是常见的,包括公共(可能永远不会成为实际使用的)文件的版本问题:
(1)
然后,创建一个分支,并添加修改该文件:
(2) <-- customer A
/
(1)
然后更新回原来的变更,并与其他更改了同一个文件创建另一个分支:
(2) <-- customer A
/
(1)
\
(3) <-- customer B
然后你从(1)
分支向前发展,融入各个分支,你认为合适(顾客):
(2)---------(6) <-- customer A
/ /
(1)---(4)---(5)---(8)---(9) <-- development trunk
\ \
(3)---------(7) <-- customer B
等
注意,这可能很快变得难以处理,如果你有很多客户,或许多这样的小差异,可能有其他方式来处理差异,例如构建系统,将文件替换为构建的一部分,而不是具有N分支来处理这些细微差异。换句话说,如果差异与每个客户有权访问的品牌和功能相关,则构建系统会为每个客户准备不同的分配,这些分配已经使用正确的文件和配置进行配置。这根本不需要额外的分支(超出了你应该已经与开发,测试,生产等有关的部分)。
非常清楚。这完全解决了我的问题,它只涉及两个客户。非常感谢你。 –
两个示例的方式来组织这两个项目:
对每个项目的一个分支。说,master-a
和master-b
。两者都遵循master
的字母,只有它们每个都有一个额外的提交,其中每个项目都有自定义属性文件。
更简单的解决方案:根本不要在Git存储库中包含目标属性文件。编写一个配置工具,将在部署时参数化属性。
在这种情况下,我不会在版本控制下放置配置文件 - 只需在README中声明应该提供基于给定示例模板的配置文件,例如,数据库凭证。
如果模板发生变化,您只需更新自述文件。
如果仅涉及单个文件,我发现为每个客户使用一个分支是多余的。
我会做到这一点是忽略了配置文件的方式(姑且称之为conf.properties)和versionning一个名为conf.properties - 距离包含默认配置信息。
您将部署的代码将相同,您只需要cp conf.properties{-dist,}
并编辑conf.properties以及有关该机构的信息。这些步骤通常是在第一次部署之后进行一次,并且随着时间的推移保持不变。
- 1. 为两个不同的团队设置一个应用程序
- 2. 同一个应用程序从两个不同的IP的
- 3. Log4net在同一应用程序中记录两个不同的文件
- 4. 两个不同的C程序正在访问一个文件
- 5. 同一个应用程序的两个窗口不能打开
- 6. 在同一应用程序实例中打开两个文件
- 7. 为什么iOS通用应用程序需要两个不同的xib文件?
- 8. 同一应用程序的两个不同版本
- 9. 如何为两个Kinect运行同一个应用程序的两个实例?
- 10. 通过一个文件保持两个Git分支不同
- 11. 一个Xcode项目,两个目标,两个应用程序,两个Default.png文件?
- 12. 将文件从两个不同的应用程序上传到同一个文件夹
- 13. 两个应用程序同时打开单个文件
- 14. 同步两个只有几个文件不同的GIT分支
- 15. 如何在同一个插件中有两个与不同应用程序相关的测试套件?
- 16. ApplicationData.GetPublisherCacheFolder返回两个不同的应用程序中的两个不同的文件夹
- 17. 为同一个XSL文件生成两个不同的输出?
- 18. JAVA:我的两个应用程序如何访问同一个文件?
- 19. 不同配置文件下的一个iOS应用程序
- 20. Firemonkey iOS从不同的应用程序访问一个文件
- 21. 两个域的一个应用程序
- 22. Angular在同一个应用程序中的两个不同的布局
- 23. 两个应用程序使用相同的索引文件与Hibernate搜索
- 24. 两个不同的jquery.js文件位于同一个html文件
- 25. 两个Android应用程序在一个文件中
- 26. iPhone - 两个相同的应用程序
- 27. 与Capistrano在一个文件内部署到不同的应用程序wi
- 28. 从同一个文件夹读取/写入两个ASP.net应用程序
- 29. 从两个不同的应用程序生成一个XML(LogData.xml)文件不带线程
- 30. 多个应用程序文件在一个Android应用程序
我认为你应该计划一个发布脚本,对文件进行重命名 –