3

我正在寻找一种解决方案,让一个 .hgrc 让 mercurial 在我所有的工作环境(win/lin/mac)中工作,就像一个 vimrc 来统治一切一样。

当我必须为某些扩展指定路径时会出现问题,例如 hg-git:

在窗户上:

[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 需要特定的选项。如何解决此类问题?

4

3 回答 3

4

如何使用 .hgrc 包含机制和三个单独的文件:

~/.hgrc
~/.hgrc-windows
~/.hgrc-linux

主要的 ~/.hgrc 有:

%include .hgrc-$OS

然后$OS在你的windows配置文件和你的linux配置文件中设置。或者,您可能会找到两个系统上已经存在的环境变量($USERNAME 通常已经在 Windows 和 unix 中设置,并且可能对您有所不同)。

于 2011-06-11T16:30:56.353 回答
3

这是以防万一您找不到只有一个.hgrc(或一组.hgrc*文件,根据 Oben Sonne 的评论)的方法。

我只面对 Windows 环境,所以我的mercurial.ini文件是相同的,除了 1 个路径。我在版本控制中保留了一份副本以及我的 Powershell 配置文件脚本。

但是,如果我面临更加多样化的环境,我会将配置抽象为跨平台语言(例如 Python)的脚本,该脚本会覆盖目标.hgrcmercurial.ini. 我可以通过简单的方法来区分每个操作系统/机器的不同部分,以便区分当前的环境。然后我会将该脚本保存在版本控制中,以帮助在每台机器上保持相同的版本。

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

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

于 2011-06-10T18:27:32.180 回答
1

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

于 2011-06-10T04:10:05.520 回答