我试图将最新的更改从主干合并到项目的一个分支中,但是问题是我不知道我最终从哪个分支创建了分支。我认为SVN会将其记录在某个地方。有人知道如何找到修订版本号吗?
(换句话说,Subversion等效于git merge-base master branch-name
)
Answers:
在命令行中,--stop-on-copy标志可用于帮助您显示从何处复制分支的位置:
svn log --stop-on-copy --verbose --limit 1 -r0:HEAD ^/branches/feature
(feature
您的分支的名称在哪里)
的最后一行将说出这样的内容:
Changed paths:
A /branches/feature (from /trunk:1234)
git merge-base master feature-branch
。它非常适合脚本编写。
--verbose
才能使用当前的TortoiseSVN svn命令行工具实际看到更改的路径
也许有点晚了。
如果您当前在分支机构中,则可以运行:
svn log -r 1:HEAD --limit 1 --stop-on-copy
它显示分支的第一个修订版,即创建时的版本。
-v
选项添加到上述命令中,以便您也可以获取(from path:rev)
消息。
您正在使用TortoiseSvn还是命令行?
命令行:svn log --stop-on-copy
然后查看最小的转速。
乌龟SVN: right-click, tortoise-svn, show log, make sure 'stop on copy' is *checked* and press refresh. Scroll to the bottom and find the smallest rev number.
svn copy -r 1234 svn://foo.com/trunk svn://foo.com/branches/b1
。基本修订版本不一定与分支创建时的版本相同。@richq的答案显示了如何正确获取它。
如果您曾经svn copy
创建过一个tag/branch
,那么svn log
可以告诉您分支中的内容是从哪里复制的。例如,假设svn://svn/trunk/foo
我们已经创建了一个branch svn://svn/branches/super_foo
。运行svn log -v svn://svn/branches/super_foo
,它将告诉您类似-的信息/branches/super_foo from /trunk/foo:22890
,这意味着您已经将trunk的修订22890复制到了分支中。
svn merge ^/trunk .
会自己解决的。如果那没有发生,那么您可能必须进入svnadmin upgrade
存储库。