gpt4 book ai didi

SVN:如何创建分支到主干的差异,用于代码审查?

转载 作者:行者123 更新时间:2023-12-02 02:19:47 26 4
gpt4 key购买 nike

我有一个合并问题:

我通过复制主干创建了一个分支,创建了 rev 1000。然后我添加了一个新文件 blah.txt 到分支。现在我想合并这个(和other) 改回我对后备箱的结帐:

cd ~/trunk-checkout
svn merge -r 1000:2000 $REPOS/branches/foo
A blah.txt

这会在主干结帐中创建我的新文件 blah.txt。但是当我说:

svn diff blah.txt

输出为空。输出不应该是整个文件,因为它还不存在于后备箱中?

我怎样才能将 svn-diff 发送到主干,其中将包含全新文件 blah.txt

即使我这样说(在新文件 blah.txt 所在的目录中):

svn diff -r HEAD  $REPOS/trunk/foo

它是空的。

我的问题的背景是:我需要将我的代码(在分支上)的差异提交到主干以进行代码审查(参见 here )。差异应如下所示:

$ svn diff blah.txt
Index: blah.txt
===================================================================
--- blah.txt (revision 0)
+++ blah.txt (revision 0)
@@ -0,0 +1 @@
+hello world

最佳答案

如果您使用svn cp 从主干复制了分支,您应该使用svn merge --reintegrate 将其重新集成。您正在合并时没有 --reintegrate 并且具有特定的修订范围 -r ... (为什么?)。

所以,一般来说,工作流程应该是这样的:

svn cp ^/trunk/ ^/branch/foo

#In the foo branch working copy:
foo $ work, work, work...

#In the working copy of trunk:
trunk $ svn merge --reintegrate ^/branch/foo

然后运行 ​​svn diff 将显示您在分支中所做的所有更改:

trunk $ svn diff
... all the changes that were done in foo ...

还有另一种方法可以解决您的问题。要获得在特定分支中完成的所有(或部分)更改的差异,您不需要合并。使用 svn diff 就足够了:

确定您希望在差异中看到哪些更改。使用 svn log 检查工作完成的 FROM 和 TO 版本:

svn log -v |less

如果要确定在哪个修订版中创建了分支,请执行以下操作:

svn log -v --stop-on-copy | less

最后的日志条目将是分支的第一次修订。

现在用-r(范围)执行svn diff:

svn diff -r FROM-1:TO .

您可以使用 HEAD 关键字而不是修订号来指示分支中最后提交的修订。

因此,要获得所有分支工作的差异,您需要运行:

svn diff -r FIRST_BRANCH_REV:HEAD

其中 FIRST_BRANCH_REV 是分支的第一个修订版。

关于SVN:如何创建分支到主干的差异,用于代码审查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8884312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com