4

How could I let SVN list all files which were ever committed to a repository (if possible, along with location and revision).

More exactly: I need all ever existed paths.

If someone knows how to do a fulltext search on the entire repository (including all revisions), this would help me even better.

Example

Let's say I commit a file SomeFileOne.txt, later rename it to SomeFileTwo.txt.

After performing the required task (for which solution I'm looking for), I should get not only SomeFileTwo.txt, but also SomeFileOne.txt.

...
/trunk/SomeProject/SomeFileOne.txt - revision 100
/trunk/SomeProject/SomeFileTwo.txt - revision 101
...
Community
  • 1
  • 1
java.is.for.desktop
  • 10,748
  • 12
  • 69
  • 103

4 Answers4

3

Found out something by playing around.

A slow-and-dirty solution might be:

svnadmin dump MY_REPO | grep Node-path

Output looks like:

* Dumped revision 3039.
Node-path: trunk/proj1/src/p/keywords/main/NoOp.java
Node-path: trunk/proj1/src/p/keywords/main/ScopeDecl.java
* Dumped revision 3040.
Node-path: trunk/myCommons/src/i/IConverter.java
Node-path: trunk/myCommons/src/i/ListUtils.java
* Dumped revision 3041.
Node-path: trunk/proj1/src/p/execution/impl/IterativeExecuter.java
Node-path: trunk/proj1/src/p/keywords/DeclConstant.java

Well, at least it solves my problem.

NOTE: Dumped revision ... is shown, because it's stderr.

java.is.for.desktop
  • 10,748
  • 12
  • 69
  • 103
3

For an improved, structured output to svn log -v, use the following bash script:

$ svn log -v | egrep '^   A' | cut -c 6- | sort | uniq

Explained:

  • fetch the whole svn log of the given path
  • select only lines starting with ' A', which is the svn log output for an added file.
  • cut away the first 5 chars, which is the mentioned add info
  • sort the output
  • remove duplicate lines (e.g. if a file was readded later)

This also works for subpaths of the checkout, you don't even need a checkout at all, if you provide the repository path:

$ svn log -v https://github.com/schacon/kidgloves/ | egrep '^   A' | cut -c 6- | sort | uniq

Result:

/branches
/branches/testing (from /trunk:17)
/trunk
/trunk/README
/trunk/example.rb
/trunk/kidgloves.rb
/trunk/simple_rack.rb

Right, the file list may not be perfect for automated processing yet, but it goes a long way from just the log output, if I may say so. Enjoy.

dave
  • 1,314
  • 1
  • 11
  • 18
2

To me, svn log -v would have been a more intuitive method - or have you already tried that ? Is it possible to share the need for requiring such an extensive report on all the file commits ever made in the repository?

Critical Skill
  • 2,528
  • 2
  • 17
  • 22
0

If you just want to browse around you might get what you want with one of the svn web access tools. A roundup was written up over here.

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
DigitalRoss
  • 143,651
  • 25
  • 248
  • 329