环境变量和存储库克隆

时间:2011-06-09 16:02:43

标签: visual-studio-2008 mercurial

阅读HgInit.com我意识到克隆是开展实验的好方法。很多时候,实验失败了,并且想要通过原始代码,理想情况下,同时逐步通过两者来比较值等,看看出了什么问题。对于我正在处理的项目,这是一个问题,因为它们依赖于路径的环境变量。

是否有一个很好的解决方法可以让我使用依赖于环境变量的项目来处理存储库克隆?我愿意声明更多的环境变量,只要它不容易出错且可扩展(也就是说,如果克隆实验成功,我只需提交而不必担心改变与环境变量相关的任何内容)

1 个答案:

答案 0 :(得分:1)

我有几种方法可以接近这种情况。

条件编译

有时我会使用现有的DEBUG符号或自己创建一个符号并执行此类操作来替换基于环境的配置:

#if EXPERIMENT
    string myVar = "experimental value";
    // or just look up a different envvar
#else
    string myVar = Environment.GetEnvironmentVariable("myvar");
如果你不再在项目设置中声明EXPERIMENT,那么

正常发布/调试版本将不包含它,并且它很容易搜索并编辑回正常。

临时补丁

然而,这是我更喜欢实验工作的方法。如果你从未使用补丁,条件编译会更容易,但清理它以删除临时更改也需要更长的时间。

我在Mercurial中启用了mq扩展,并为大多数实验工作创建了一个新补丁。我还在该补丁的顶部创建了一个补丁,用于任何一次性更改,例如硬编码文件路径或配置值以便测试某些东西。

HgInit.com不会进入补丁,但我相信Hg Book会这样做。在进行更改时,您必须小心哪个补丁是最顶层应用的补丁,并记得hg qrefresh更新补丁。