我们首先使用TFS GIT和linq2sql / entity框架数据库时遇到问题。问题在于edml.edmx设计器和布局文件不断变化。合并这些文件的更改会导致多个冲突,如果管理不当,则会导致数据丢失。
我意识到设计器和布局文件是用户特定的,但是不能忽略git中的这些文件,因为它们是相关文件。
有没有人对合并这些文件的良好做法有任何建议。
答案 0 :(得分:0)
我知道这个问题有点陈旧,但此刻与我有关。正如@ErikEJ在评论中提到的那样,您应该考虑迁移到EF Code First(或者沿着这些行)。
话虽如此,我们也遇到了您在上面提到的相同问题。经过一些研究后,似乎问题(偶尔也会发生w / .csproj文件)是一个已知的问题,而Git的合并驱动程序显然没有保证任何关注。
它绝对值得我亲自动手,特别是对于这样一个笨拙的文件。我们已经离开了重建模型,但你必须检查更改的结果,以确保你没有失去任何东西。
此外, {插入无耻插件,以保持您的变更集尽可能小}
修改:如果您有兴趣,请进一步阅读https://haacked.com/archive/2014/04/16/csproj-merge-conflicts/。
编辑:我使用"耐心"用于进行合并的diff算法。它绝对可以通过合并XML来清理它。它仍然不漂亮或令人敬畏,但你可能想尝试一下。
从Git merge using recursive strategy and patience option,您可以致电
git merge -s recursive -X patience other-branch
使用耐心算法执行合并。或者您只需使用--patience
标记进行差异。
最后,您可能希望对耐心算法做一些额外的阅读,或者自己比较合并冲突的输出。我发现我总体上更喜欢它并将其添加到我的全局.gitconfig。
如果您有兴趣,可以在这里阅读更多内容。
The patience diff algorithm (external)
TIL: Diffing with Patience (external)
Git Source Code Review: Diff Algorithms (external) - 包含来自Patience算法作者的更多信息的链接,但我的公司代理目前阻止我去那里,所以我还没有阅读它们。