当前位置:  开发笔记 > 编程语言 > 正文

SVN问题:仍然包含此代码段的最新修订版是什么?

如何解决《SVN问题:仍然包含此代码段的最新修订版是什么?》经验,为你挑选了1个好方法。

最好删除旧代码而不是仅仅将其注释掉.通常声称,如果需要,可以在旧的SVN存储库修订版中再次找到旧的代码部分.

但实际上,这并不容易,对吧?如果旧代码在某个未知的旧SVN版本中,则很难找到.

我现在正处于这种状况:有一个我不再需要的功能了,我应该抛弃它,因为它在SVN中,但我犹豫不决,因为我可能需要它,我担心它会发生难以在存储库中找到.

当然,总是可以发出一条提交消息,说"删除了函数myFunction",但有时你不能注意提交消息中的每一个小代码删除,并且查看所有提交消息再次查找内容也很繁琐. .

一个自动工具会更好,类似于

svn find "void myFunction\(" my-file.cc

这会告诉我不同​​版本的不同结果.这样的事情存在吗?

编辑:其他版本控制系统有吗?Git也许?(这就是改变的理由,我会说.)

更新:所以没有真正的答案,除了shell我偶然发现的微小的脆弱脚本(见下面的答案).我想,这对SVN来说真是太遗憾了.在早期版本中查找内容应该是版本控制的核心功能之一.有没有人有更多的信息?



1> Frank..:

我再搜索了一下,发现了以下脚本(见这里).我简单测试了一下它似乎工作正常:

rev_grep.sh
=====================
#!/bin/ksh

URL=$1
REGEX=$2

LAST_REV="n/a"

svn log -q $URL | perl -ne 'print "$1\n" if /^r(\d+)/' |
while read r
do
    ##svn cat -r $r $URL | grep "$REGEX" > /dev/null
    BUFFER=`svn cat -r $r $URL | grep "$REGEX"`
    RET=$?
    if [ $RET -eq 0 ]
    then
        echo "Match in revision: $r. Removed in $LAST_REV."
        echo $BUFFER

        exit 0

    elif [ $RET -ne 1 ]
    then
        ## grep hit an error
        exit 2
    fi

    LAST_REV=$r
done
exit 1 

唯一的问题是,如果您的存储库需要密码,您必须多次输入密码.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有