【问题标题】:How do I always use the 'remote' version of a file in mercurial?如何始终在 mercurial 中使用文件的“远程”版本?
【发布时间】:2011-04-06 15:40:57
【问题描述】:

Mercurial 新手,我正在开发一个使用 Sqlite 作为数据库的 Django 项目。我开发模板和 UI 的东西,而我的同事处理后端代码。我们都将更改推送到 Bitbucket。

他是唯一一个真正修改模型和相应的 SQLite 文件的人,但是仅仅由于我测试了应用程序,文件也发生了变化。在我完成测试之后和推送之前,我总是通过执行“hg revert database.sqlite”来放弃我的更改。

有没有一种简单的方法让我始终坚持使用他的 SQLite 文件版本,这样我们每次尝试同步时就不会遇到合并问题?有点像一个例外,说“如果有冲突,总是使用文件的远程版本”。我确实在某处的提示中看到过类似的内容,但我终生无法再次找到它。

【问题讨论】:

标签: sqlite mercurial


【解决方案1】:

我同意 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 合并工具,但您可能会发现它在概念上更简单,因为它模拟了您已经在做的事情。

【讨论】:

    【解决方案2】:

    只要您在 shell 上工作,有很多方法可以在您提交之前执行 hg revert database.sqlite

    bash:

    alias hgcommit = hg revert database.sqlite;hg commit
    

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

    【讨论】:

      猜你喜欢
      • 2016-07-09
      • 1970-01-01
      • 2011-01-07
      • 2012-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      相关资源
      最近更新 更多