Mercurial忽略文件
我试图让Mercurial忽略一个configuration文件,但我没能得到它的工作。
我用hg init
在服务器上创build了一个仓库,并将该仓库克隆到我的电脑。 然后我希望能够编辑configurationj文件,但不能将这些更改提交回服务器。
我已经尝试在我的克隆的根目录中创build一个.hgignore
,但是Mercurial用一个?
以及我是否承诺它仍然继续logging我的configuration更改。
我在错误的地方创build.hgignore
文件,这个文件需要被提交吗? 在我启动服务器上的存储库之前是否需要创build它?
- .hgignore不需要在init之前创build
- 这个configuration文件会被其他人使用,你最好提交.hgignore,这样别人就不必创build它了, 但是mercurial不需要忽略你的本地文件 (参见示例)
- 是.hgignore必须位于根目录中
简单的例子。
初始化回购:
$ mkdir test $ cd test $ hg init
创build一个文件
$ touch foo $ hg st ? foo
现在在repo的根目录下创build一个.hgignore:
$ echo 'foo' > .hgignore
foo
现在被忽略了:
$ hg st ? .hgignore
请注意.hgignore不需要承担这个工作。
有点棘手
如果configuration文件和.hgignore(忽略configuration文件)在repo中提交,那么是的,configuration文件的变化将被跟踪(换句话说,.hgignore将不起作用)
创buildconfiguration并提交它
$ touch config $ hg ci config -Am 'adding conf'
忽略它:
$ echo 'config' >> .hgignore
提交.hgignore:
$ hg ci .hgignore -Am '.hgignore'
那么如果你克隆回购:
$ cd .. $ hg clone test other-user $ cd other-user
并修改configuration:
$ echo 'new config param' >> config
那么hg会显示更改:
$ hg st M config
如何处理这个?
您可能希望在存储库global.cfg
拥有一个主版本的默认configuration文件
你会要求用户创build一个local.cfg
他们将把他们的本地设置。 如果有的话,你的脚本将获得local.cfg
:本地设置覆盖全局设置。 当然,添加一行到.hgignore
来忽略local.cfg
;)
可选:没有全局configuration文件,只有用户在本地复制和修改的config.example
。 这里的关键是你不会轻易跟踪版本之间的变化。
即使您忽略了文件,Mercurial也会在添加到存储库后对其进行跟踪。
要从存储库中删除你的configuration文件,你可以使用
hg remove -Af file.cfg
这将从版本库中删除文件(一旦提交),而不删除您的本地文件。 请参阅hg help remove
但是,现在有一个删除logging在回购中, 当您或其他人在该修订版本中更新时 , Mercurial将删除该文件 。
您也可以重命名它,并让人将主人复制到他们的本地文件,但您需要协调本地文件的更新。
hg rename file.cfg file.cfg.example
将.hgignore文件本身添加到.hgignore文件中:
syntax: glob .hgignore
或者,只需检查.hgignore文件到您的本地克隆…