svnversion-controltortoisesvncornerstone

SVN: Way to determine revision by comparing file or file content


I have a scenario where I have a file and I need to know what revision in source this file is.

I may have hundreds of revisions on a particular file and have a file that matches one or more of those revisions. Is there any way in Tortoise, Cornerstone or through the command line to do this?

Apologies if the question isn't the clearest. To be honest I'm not sure how to phrase what I'm looking for.

I found a similar question about git here;

GIT: determine revision based on a file


Solution

  • Cribbing a bit off of this answer, here's a quick and dirty batch file that will do the job, assuming the input file is already under version control.

    @echo off
    
    set file=%1
    set temp_file="temp.file"
    
    if [%file%] == [] (
      echo Usage: "%0 <file>"
      exit /b
    )
    
    for /F "tokens=1 delims=-r " %%R in ('"svn log -q %file%"') do (
      svn cat -r %%R %file% > %temp_file%
      fc %temp_file% %file% > nul
      if errorlevel 0 if not errorlevel 1 echo Matches revision r%%R
      del /Q %temp_file%
    )
    

    This gets the log for the filename given, and for each revision does the following: