跨平台的hgrc解决方案?

时间:2011-06-10 04:05:52

标签: mercurial hgrc

我正在寻找一个解决办法让一个.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需要特定的选项。如何解决这类问题?

3 个答案:

答案 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)的脚本,以覆盖目标.hgrcmercurial.ini。我可以通过简单的方法来区分哪个环境是最新的,从而使每个操作系统/机器彼此不同。然后我会将该脚本保留在版本控制中,以帮助在每台机器上保持相同的版本。

由于我不经常更改它,我可能会在我下次访问时在每台机器上手动执行它。对于更多的机器或更频繁的更改,我会在登录时执行另一个脚本,从中央存储库中更改生成脚本,如果确实有新的更改,则更新到提示并运行脚本。

(哎呀,我现在很想安装这种设置。)

答案 2 :(得分:1)

为什么不使用自定义环境变量而不是硬编码路径?