Mercurial新手在这里,我正在研究一个使用Sqlite作为数据库的Django项目。我开发模板&我的同事处理后端代码时的UI内容。我们都推动改变Bitbucket。
他是唯一一个实际修改模型的人,相应地,他是SQLite文件,但只是凭借我对应用程序的测试,文件也发生了变化。在我完成测试之后和推送之前,我总是通过执行'hg revert database.sqlite'来删除我的更改。
我是否有一种简单的方法可以始终坚持使用他的SQLite文件版本,这样我们每次尝试同步时都不会出现合并问题?排序 - 就像一个例外,说“如果有冲突,请始终使用文件的远程版本”。我确实在某个地方看到了这样的东西,但我不能再为我的生活找到它。
答案 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的原因)