Fra*_*ank 10 language-agnostic svn version-control
最好删除旧代码而不是仅仅将其注释掉.通常声称,如果需要,可以在旧的SVN存储库修订版中再次找到旧的代码部分.
但实际上,这并不容易,对吧?如果旧代码在某个未知的旧SVN版本中,则很难找到.
我现在正处于这种状况:有一个我不再需要的功能了,我应该抛弃它,因为它在SVN中,但我犹豫不决,因为我可能需要它,我担心它会发生难以在存储库中找到.
当然,总是可以发出一条提交消息,说"删除了函数myFunction",但有时你不能注意提交消息中的每一个小代码删除,并且查看所有提交消息再次查找内容也很繁琐. .
一个自动工具会更好,类似于
svn find "void myFunction\(" my-file.cc
Run Code Online (Sandbox Code Playgroud)
这会告诉我不同版本的不同结果.这样的事情存在吗?
编辑:其他版本控制系统有吗?Git也许?(这就是改变的理由,我会说.)
更新:所以没有真正的答案,除了shell
我偶然发现的微小的脆弱脚本(见下面的答案).我想,这对SVN来说真是太遗憾了.在早期版本中查找内容应该是版本控制的核心功能之一.有没有人有更多的信息?
我再搜索了一下,发现了以下脚本(见这里).我简单测试了一下它似乎工作正常:
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
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,如果您的存储库需要密码,您必须多次输入密码.