我正在寻找一个解决办法让一个.hgrc for mercurial在我所有的工作环境中工作(win / lin / mac),就像一个vimrc来统治所有。
当我必须为某些扩展指定路径时遇到问题,例如,hg-git:
在Windows上:
[extensions]
hggit = E:\hg-git\hggit
在linux / mac上:
[extensions]
hggit = ~/hg-git/hggit
对于vimrc,我们有解决方案来区分不同的平台,比如
if has('win32')
...
endif
知道mercurial的hgrc几乎不是普通的ini文件,我想知道hgrc文件是否有类似的解决方案。
或者其他一些解决方案?
更新
感谢您提及使用“自定义环境变量而不是硬编码”,这适用于扩展程序的路径。
但是,扩展工作只是一个目标。我相信其他配置的行为依赖于平台,例如在http://www.ogre3d.org/docs/OGREDeveloperGuide/index.html中,Windows和Mac需要特定的选项。如何解决这类问题?
答案 0 :(得分:4)
如何使用.hgrc包含机制和三个单独的文件:
~/.hgrc
~/.hgrc-windows
~/.hgrc-linux
主〜/。hgrc有:
%include .hgrc-$OS
然后在Windows配置文件和Linux配置文件中设置$OS
。或者,您可能会发现两个系统上已经存在的env变量($ USERNAME通常已在windows和unix中设置,并且可能因您而异。)
答案 1 :(得分:3)
这是为了防止您根据Oben Sonne的评论找不到只有一个.hgrc
(或一组.hgrc*
个文件的方法。
我只面对Windows环境,因此我的mercurial.ini
文件除1路径外都相同。我在版本控制中保留了一份副本以及我的Powershell配置文件脚本。
但是,如果我面对的环境更加多样化,我会将配置抽象为跨平台语言(例如Python)的脚本,以覆盖目标.hgrc
或mercurial.ini
。我可以通过简单的方法来区分哪个环境是最新的,从而使每个操作系统/机器彼此不同。然后我会将该脚本保留在版本控制中,以帮助在每台机器上保持相同的版本。
由于我不经常更改它,我可能会在我下次访问时在每台机器上手动执行它。对于更多的机器或更频繁的更改,我会在登录时执行另一个脚本,从中央存储库中更改生成脚本,如果确实有新的更改,则更新到提示并运行脚本。
(哎呀,我现在很想安装这种设置。)
答案 2 :(得分:1)
为什么不使用自定义环境变量而不是硬编码路径?