To find information about the history of a file or directory, use the svn log command. svn log will provide you with a record of who made changes to a file or directory, at what revision it changed, the time and date of that revision, and, if it was provided, the log message that accompanied the commit.
Examples. You can see the log messages for all the paths that changed in your working copy by running svn log from the top: $ svn log ------------------------------------------------------------------------ r20 | harry | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line Tweak.
Just use the recursive flag -R of svn ls . Then pipe the output to findstr .
On the file, simply right-click => Team => Switch to another branch/tag/revision. Besides the revision field, you click select, and you'll see all the versions of that file.
git svn clone <svn url>
git log -G<some regex>
svn log
in Apache Subversion 1.8 supports a new --search
option. So you can search Subversion repository history log messages without using 3'rd party tools and scripts.
svn log --search
searches in author, date, log message text and list of changed paths.
See SVNBook | svn log
command-line reference.
If you are running Windows have a look at SvnQuery. It maintains a full text index of local or remote repositories. Every document ever committed to a repository gets indexed. You can do google-like queries from a simple web interface.
I'm using a small shellscript, but this only works for a single file. You can ofcourse combine this with find to include more files.
#!/bin/bash
for REV in `svn log $1 | grep ^r[0-9] | awk '{print $1}'`; do
svn cat $1 -r $REV | grep -q $2
if [ $? -eq 0 ]; then
echo "$REV"
fi
done
If you really want to search everything, use the svnadmin dump
command and grep through that.
The best way that I've found to do this is with less:
svn log --verbose | less
Once less comes up with output, you can hit /
to search, like VIM.
Edit:
According to the author, he wants to search more than just the messages and the file names. In which case you will be required to ghetto-hack it together with something like:
svn diff -r0:HEAD | less
You can also substitute grep
or something else to do the searching for you. If you want to use this on a sub-directory of the repository, you will need to use svn log
to discern the first revision in which that directory existed, and use that revision instead of 0
.
svn log -v [repository] > somefile.log
for diff you can use the --diff
option
svn log -v --diff [repository] > somefile.log
then use vim or nano or whatever you like using, and do a search for what you're looking for. You'll find it pretty quickly.
It's not a fancy script or anything automated. But it works.
I have been looking for something similar. The best I have come up with is OpenGrok. I have not tried to implement it yet, but sounds promising.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With