我在mercurial中有一个文件,我想让开发计算机来提取文件,但我希望部署服务器不要拉取文件(它有特殊的mods,开发计算机没有) 。这是可能的,或者我应该只是有一个自定义推送到服务器解决方案,而不是仅仅做一个hg拉?有条件的Mercurial忽略文件
6
A
回答
6
要做到这一点是做以下的典型方式:
您存储在库中的每个文件的副本,并正确命名。举例来说,如果有问题的文件是web.config
,你将存储在仓库中有以下两种:
web.server.config
web.dev.config
然后您将添加一个内置的步骤,以确保正确的文件被复制到实际web.config
文件,你可以使用一个批处理文件:
if "%COMPUTERNAME%" == "SERVER" copy web.server.config web.config
if not "%COMPUTERNAME%" == "SERVER" copy web.dev.config web.config
然后你将通过.hgignore忽略的web.config本身:
glob:web.config
1
这是可以在版本控制之外解决的问题吗?例如,将文件包含在存储库的所有副本中,但启用或禁用其与环境变量或类似用途的使用。这听起来并不像大多数版本控制系统要处理的东西,除非您在更新后使用令人讨厌的黑客来执行诸如添加/删除/修补程序文件等操作。
1
2
卡尔森的答案的一个变种,我总是使用。
我在项目中有/config
或/etc
目录。该目录通常会包含样CONFIGS:
dev.yaml
ci_server.yaml
然后我的应用程序从/etc/app.yaml
这是一个符号链接取决于它正在运行在主机上的正确配置拉。
最好考虑这样做是因为您没有变体代码路径(批处理脚本分支),其中消除了潜在的bug向量。这使您可以执行将在生产中使用的相同代码路径(直至寻找覆盖文件的位置)。
相关问题
- 1. Mercurial - 忽略大文件
- 2. Mercurial:全局忽略文件
- 3. Mercurial - 用户特定的忽略文件
- 4. 忽略mercurial中的文件夹
- 5. mercurial .hgignore - 不会忽略文件
- 6. mercurial暂时忽略版本化文件
- 7. Google App Engine App.yaml config用于忽略文件以忽略Mercurial文件
- 8. Mercurial - 基于其他文件的存在忽略某些文件
- 9. mercurial如何忽略jar文件中的文件?
- 10. 汇总所有在mercurial repository中被忽略的文件/目录
- 11. 此用户忽略Mercurial的文件有什么问题?
- 12. Mercurial/.hgignore - 如何忽略文件夹中的所有内容?
- 13. 如何忽略Mercurial中除node_modules内的所有bin文件夹?
- 14. Automapper:忽略条件
- 15. skip_before_filter忽略条件
- 16. js忽略条件
- 17. 的Git忽略不忽略一个文件,但所有文件
- 18. Mercurial hgignore文件不会忽略某个文件
- 19. 在mercurial中忽略'文件超过文件大小限制'?
- 20. Git中的条件忽略
- 21. JavaScript有条件的忽略IF
- 22. 忽略文件
- 23. .gitignore没有忽略文件
- 24. .tfignore没有忽略文件
- 25. 有条件地忽略gulp.src中的文件
- 26. 忽略未被忽略的文件
- 27. 使Mercurial忽略我的本地机器中的设置文件
- 28. 追溯从Mercurial中删除常见的被忽略的文件?
- 29. 有条件地忽略“> 0”吗?
- 30. 有条件加入以忽略空值
我同意,但是这个文件在服务器和开发机器上都是必需的。这是一个设置文件,其中包含通往web urls/db连接字符串/ etc的路径,并且这些值在服务器上与开发机器不同。 – Jan 2010-12-21 18:05:22