【问题标题】:svn diff: getting 'real' diffs for removed/readded files after merge [duplicate]svn diff:合并后为删除/重新添加的文件获取“真实”差异[重复]
【发布时间】:2013-02-01 18:45:54
【问题描述】:

所以我有两个分支,b1b2。我有一份b1 的工作副本在某个修订版r1000 中签出,并且我已经合并了来自r1001b2 的一些更改。

我在我的工作副本中手动编辑了一个文件foo,使其现在与b1r1000 修订版相同。但是,当我执行svn diff 时,输出是与b2r1001 修订版的差异,而不是我所期望的与b1r1000 的(空)差异。

有没有一种通用的方法让svn diff 说“如果你签入,这就是存储库中将要发生的变化”,还是我必须在命令行上指定分支和修订号才能得到我想要的想要吗?

【问题讨论】:

  • 这与您在this question 末尾提出的问题有何不同? (另外,请避免使用所有“让我们称之为”的措辞;我们通常可以在没有它们的情况下继续使用。谢谢。)
  • 我先问了这个问题,没有得到任何答案,然后想也许我应该问一个不同的问题(这似乎有效,至少部分有效)。如果这是一个选项,我很乐意删除这个。
  • 我标记了这个供版主审查(带有指向另一个的链接)并询问是否有某种方法可以将两者合并。 :-)

标签: svn svn-merge


【解决方案1】:

svn help diff,请阅读!

当您在工作副本中使用svn diff <FILENAME> 修改文件时,它与文件的“原始副本”不同(没有其他选项),在您的情况下,它必须是 b1/foo@1000,不是 b2@1001 (顺便说一句 - 合并时,合并分支,而不是单个修订:来自 svn help merge,第 1 形式“可选的 '@REV' 指定 URL 的 peg 修订和 最新修订将考虑合并")

如果你想清楚地识别差异来源,你必须在命令中编写它并使用第三种形式的差异

diff OLD-URL[@OLDREV] NEW-URL[@NEWREV]

其中一个 URL 是 WC 中的文件,另一个 URL - repo 中文件的 URL(如果需要,使用 PEG 修订版)

如果您签入,这就是存储库中将发生的变化

"...if you commit" 我们在 SVN 世界中说,这是与 BASE-revision always 的差异,svn diff FILE(此差异包含- 合并和手动 - 更改(如果存在)/这种混合是不好的做法和反模式/)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2019-01-02
    相关资源
    最近更新 更多