【问题标题】:svn merge with revision not doing what I expectsvn 与修订版合并不符合我的预期
【发布时间】:2012-04-13 09:39:30
【问题描述】:

我正在尝试对从主干到分支的更改进行 svn 合并 (2001)。更改在修订版 614 的主干中。

我已经尝试了以下方法,但它们都没有做我想要的:

svn merge
svn merge -r 614:HEAD https://secreturl/trunk

但这似乎带来了很多我不想要的变化。

当我运行时:svn log -r 614 https://secreturl/trunk - 我看到了我想要合并的一小部分更改的签入注释。我在这里错过了什么?

【问题讨论】:

  • 你要合并到一个对应主干分支的文件夹吗?

标签: svn


【解决方案1】:

svn merge -r 614:HEAD https://secreturl/trunk 将合并修订版 614 和 HEAD 之间的所有更改。此外,它将以 614 作为基础修订版(可能不是您想要的:)

要合并来自特定修订的更改,您可以使用以下两种方法之一:

$ svn merge -c 614 https://secreturl/trunk$ svn merge -r 613:614 https://secreturl/trunk

第一种表示仅应用修订版 614 中的更改,而第二种形式表示获取从 r613 到 r614 所需的所有更改并在此处应用它们

【讨论】:

  • 我遗漏的一点是.... svn merge -c 或 svn merge -r ... 会影响您的本地工作副本。执行命令行后,您的本地工作副本将是(以前的)修订版。然后您可以选择(或者如果您不喜欢所看到的内容,则选择不)将更改提交到存储库。我在我的 COMMIT 中添加了一条看起来像这样的评论:“手动更改。修订版 614 已从存储库中拉出,然后将其设为 HEAD 修订版。” ...这样我就知道到底发生了什么。
【解决方案2】:

我想你想要 -r 613:HEAD。如果您只想更改 614,请执行 -r 613:614。

【讨论】:

  • SVN 要求使用前一个数字指定合并。您会看到,当 SVN 执行该合并时,正确的修订编号将在您的分支中检出。
【解决方案3】:

svn log -r 614 会显示具体的 614 版本。如果您只想合并 r614 的结果,请执行以下操作:

svn 合并 -r 613:614 https://secreturl/trunk

即合并613到614的变化。

【讨论】:

  • 谢谢 - 这就是我想要的。也感谢其他人的回答。
  • 嗯,这似乎仍然不起作用。这是我尝试过的: 08:55 AM[~/views/2001/platform/L3/src]$svn merge -r 613:614 secreturl/trunk 我希望这些更改将合并到我的 2001 视图中,我我已经加入了。但是合并的结果是空的。鉴于我在两个分支中看到的不同,我希望有一些更新。
【解决方案4】:

帮助您的好网站
Link 1

【讨论】:

  • 我阅读了 Phil 的链接,坦率地说,并不清楚。我知道,RTFM,但是在 RTFMing 之后我仍然没有得到它。
  • 你使用的是什么版本的 Subversion?
【解决方案5】:

我获取了上面的信息,并制作了一个 windows .bat 文件来展示如何编写脚本。 我的补充更明确地展示了您如何处理本地工作副本,然后提交回存储库。

在下面的 .bat 文件中,我输入了一个 svn.exe 状态来显示如果你提交会发生什么,然后是一个暂停,给你最后一次机会 X 退出而不执行提交。

这是.bat文件

仅供参考,我使用的是 svn.exe 1.6.15。

 set __SVNClient="C:\Program Files (x86)\CollabNet\Subversion Client\svn.exe"

 set __PreviousRevisionNumber=2594

 set __CheckoutFolder=".\MyCheckoutFolderRevision%__PreviousRevisionNumber%"


 RD %__CheckoutFolder% /Q /S



 %__SVNClient% checkout "https://www.myrepository.com/MyProject/trunk" %__CheckoutFolder% --username %USERNAME%


 CD %__CheckoutFolder%


%__SVNClient% merge --revision HEAD:%__PreviousRevisionNumber% "."



%__SVNClient% status "."



PAUSE



%__SVNClient% commit -m "Manual Change. Revision %__PreviousRevisionNumber% was pulled out of repository and then it was made the HEAD Revision." "." --username %USERNAME%

CD ..



set __CheckoutFolder=
set __PreviousRevisionNumber=
set __SVNClient=

下面的网站(和部分名称)给出了更多解释:

http://durak.org/sean/pubs/software/version-control-with-subversion-1.6/svn.branchmerge.basicmerging.html
(搜索“撤消更改”作为部分标题)

【讨论】:

    猜你喜欢
    • 2017-09-07
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多