Mercurial 跨平台hgrc解决方案?

Mercurial 跨平台hgrc解决方案?,mercurial,hgrc,Mercurial,Hgrc,我正在寻找一个解决方案,使mercurial能够在我所有的工作环境(win/lin/mac)中使用一个.hgrc,就像用一个vimrc来管理所有环境一样 当我必须为某些扩展指定路径时,就会出现问题,例如,hg git: 在windows上: [extensions] hggit = E:\hg-git\hggit 在linux/mac上: [extensions] hggit = ~/hg-git/hggit 对于vimrc,我们有区分不同平台的解决方案,如 if has('win32')

我正在寻找一个解决方案,使mercurial能够在我所有的工作环境(win/lin/mac)中使用一个.hgrc,就像用一个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文件是否有类似的解决方案

或者其他解决方案

更新

感谢您提到使用“自定义环境变量而不是硬编码”,这适用于扩展的路径


然而,让扩展工作只是一个目标。我相信还有其他配置的行为取决于平台,例如,Windows和Mac需要特定的选项。如何解决这类问题?

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

这只是为了防止您找不到一种方法来只拥有一个
.hgrc
(或者根据Oben Sonne的评论,一组
.hgrc*
文件)

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

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

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


(见鬼,我现在很想操纵这种设置。)

使用.hgrc include机制和三个单独的文件怎么样:

~/.hgrc
~/.hgrc-windows
~/.hgrc-linux
其中主~/.hgrc具有:

%include .hgrc-$OS

然后在windows配置文件和linux配置文件中设置
$OS
。或者,您可能会发现两个系统上都存在一个env变量($USERNAME通常在windows和unix中都已设置,并且对您来说可能有所不同)。

是否有可能
$HOME/.hg git/hggit
对所有系统都有效?谢谢,是的,这适用于扩展。然而,我认为还有一些其他选择的工作。请看我的更新。只有一个hgrc文件是硬要求吗?如果没有,你可以使用。就我个人而言,我也使用这种方法。。很好,谢谢。使用env。变量可以解决扩展的问题。然而,我认为还有一些其他选择的工作。很抱歉一开始没把它们都提出来。请看我的更新。谢谢你的解决方案,我确实学到了一些东西。但是,该解决方案似乎是面向管理员的,更适合于不同用户的大量计算机。依我看,这和我的需要相比有点重。所以我选择了另一个作为答案。无论如何,谢谢。哇,我还没想过用这种方式使用环境变量,你们真的让我开窍了。谢谢。小心,Windows平台上的OS环境变量为“Windows\u NT”