如何在mercurial中始终使用文件的“远程”版本?

时间:2010-09-01 07:02:53

标签: sqlite mercurial

Mercurial新手在这里,我正在研究一个使用Sqlite作为数据库的Django项目。我开发模板&我的同事处理后端代码时的UI内容。我们都推动改变Bitbucket。

他是唯一一个实际修改模型的人,相应地,他是SQLite文件,但只是凭借我对应用程序的测试,文件也发生了变化。在我完成测试之后和推送之前,我总是通过执行'hg revert database.sqlite'来删除我的更改。

我是否有一种简单的方法可以始终坚持使用他的SQLite文件版本,这样我们每次尝试同步时都不会出现合并问题?排序 - 就像一个例外,说“如果有冲突,请始终使用文件的远程版本”。我确实在某个地方看到了这样的东西,但我不能再为我的生活找到它。

2 个答案:

答案 0 :(得分:2)

我同意Matthew的评论,即最佳解决方案是不跟踪此文件。

但是,你要求Mercurial总是使用远程版本的想法实际上并不是那么远... :-)你通过configuring a merge tool为这个文件执行此操作,告诉Mercurial使用另一个(远程) )所有合并中的版本:

[merge-tools]
database.sqlite = internal:other

这应该确保您在合并时始终放弃对database.sqlite的更改。这可以让你做到

$ hg pull
$ hg merge

我还有另一个想法 - 使用预合并挂钩来恢复文件:

[hooks]
pre-merge = hg revert mydb.sqlite

这几乎相当于使用上面的internal:other合并工具,但您可能会发现它在概念上更简单,因为它模拟了您已经在做的事情。

答案 1 :(得分:1)

只要您使用shell,就可以通过多种方式在提交之前执行hg revert database.sqlite

bash

alias hgcommit = hg revert database.sqlite;hg commit

(它有点便宜,我知道,但这就是我喜欢使用shell的原因)