Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

#46 Breakage with SVN 1.7 when not run in working directory

open
nobody
None
5
2014-06-30
2013-01-28
Warren Jones
No

tkdiff doesn't work with Subversion 1.7 unless it's run in an SVN working directory. It will result in an error if tkdiff is run in some other directory and invoked like this:

tkdiff -rHEAD /some/path/to/working/directory/file.txt

This will give the following error:

"File '/some/path/to/working/directory/file.txt' is not part of a revision control system."

tkdiff 4.1.4 would decide whether it was dealing with SVN by looking for a ".svn" subdirectory in the parent directory of the file specified on the command line. tkdiff 4.2 is smart enough to know that SVN 1.7 no longer puts a ".svn" directory in every working directory, so it checks for SVN by running "svn info". Unfortunately, it always runs "svn info" in the current working directory.
The fix is simple:

The fix is this one line patch:

793c793
< } elseif {! [catch {eval "exec svn info"}]} {
---
> } elseif {! [catch {eval "exec svn info $dirname"}]} {

Discussion

  • Trevor
    Trevor
    2014-06-30

    We ran in to this at my company as well. We just migrated from svn 1.6 to 1.8. I came up with basically the same fix, but i called svn info on the $f instead of $dirname (which is probably slightly better, since it will give you the proper error message if the directory is under svn control but the file is not):

    -    } elseif {! [catch {eval "exec svn info"}]} {
    +    } elseif {! [catch {eval "exec svn info $f"}]} {