我用源代码树创建了hg存储库.我想在存储库中保留一些文件的第一个版本,例如Makefile,然后即使我修改它也不会看到它被修改.
原始问题是./configure通常会修改Makefile,但我不希望构建文件在存储库中提交.所以我想在存储库中只保留configure和Makefile的第一个版本,以便克隆我的存储库的每个人都可以自己运行./configure而不是打扰存储库
我尝试了hg remove或hg忘记但是那些是停止跟踪并且还删除了下一版本的reporitory中的文件.
.hgignore也不做这件事.
我想hg每次运行时都会恢复./configure或make,但这不是有效的方法.
有没有更好的方法?
最佳答案 它通常很好的形式,根本不跟踪配置脚本.这有一些原因:
>它的巨大.我见过代码库,配置脚本和帮助器宏库的大小是正在编译的实际代码的十倍.
>当其他开发人员对configure.in(.ac)进行更改时,他们将需要提交新的配置脚本.如果有三个人这样做,那么Mercurial很可能会要求其中至少有一个人手动解决配置本身的合并冲突.请记住,配置是机器生成的,尝试读取它(更不用说解决合并冲突)可能会让你的眼睛流血.
通常,您将通过两种方法提供源代码形式的程序:
>下载发行档案(例如foo-1.2.3-rc2.zip),这可以包含配置脚本.
>使用Mercurial直接下载存储库.如果他们想要使用它,他们将需要安装autoconf.
在我的存储库的根目录中,我通常包含一个名为autogen.sh的文件,该文件运行所需的所有步骤(aclocal,autoconf,…),如果需要安装某些内容,它还会处理警告用户.即找不到工具aclocal,请安装autoconf包.
最好只使用autogen.sh方法.这意味着只跟踪configure.in(或configure.ac)和相关的Makefile(来自Makefile.in).让每个构建配置自己的,并提供一个distclean目标来删除configure生成的所有文件.最后,提供一个维护者清理目标来删除配置套件本身生成的任何内容,例如:配置.
这应该有助于使夜间构建变得容易.