2011-10-09 57 views
1

我正在与一个合作伙伴一起工作。我们的make文件略有差异,由不同的版本设置提供。正因为如此,迄今为止我们还没有跟踪这个文件。不过,至少有一个跟踪我们会很高兴。问题是,当完成并且其他人运行hg update时,他们的副本得到更新并且代码不会被编译。有选择地更新工作目录

有没有一种方法来跟踪文件,但让它可以选择性地更新工作目录?或者有其他方法可以解决这个问题吗?

回答

1

MQ扩展是最好的和正确的方式(TM)来做到这一点(不是最简单的,但是......)

存储文件在回购,个人个性化的公共部分 - 在自己的MQ-补丁

+2

这个问题的答案是这样一个基本的问题不应该是“学习的工具,它是如此复杂的零件,他们甚至没有默认启用。 “ – mpm

+0

他们不是“那么复杂”,他们只是在日常生活中不需要每一个人。我在不到一个小时的时间内完成了MQ,但它节省了我几个小时的复制粘贴工作。 –

+0

等一下,您告诉我*为什么默认情况下MQ不是? – mpm

1

是否可以合并您的Makefiles?那么不会因为不将它们存储在版本控制中而丢失不同的配置。

例如,您可以添加基于用户名的条件语句。我的用户名是瑞安,这个代码与我的名字相反,但如果它在您的计算机上运行,​​它可能会回显“不瑞安”。

all: 
    if [ `whoami` = "ryan" ]; then echo "ryan"; else echo "not ryan"; fi 
+0

**这种**情况的条件makefile是不好的风格 - 依赖于人为,管理不善和可扩展 - 想像团队中的10-20-50个开发人员 –

+0

当他们达到这个规模时,可以承担类似的构建环境:) – ryantm

6

这是一个标准的“我该如何处理配置文件”问题的轻微变体。 SVN,Mercurial和Git的标准答案是:不跟踪文件,而是跟踪<文件>。例如。然后每个用户将其复制到<文件>并根据需要调整它。

但Makefiles比配置文件有点聪明:它们执行代码并可以包含其他文件。在这种情况下,它开始有意义地正常跟踪Makefile,并使其包含另一个本地文件(如果存在该文件会覆盖默认规则)。例如,下面将与GNU使工作:

# pull in any local user tweaks 
-include Makefile.local