views:

133

answers:

3

I have a subversion repository that was used with VisualSVN before. Code was committed using https: urls. Now the repository is used without VisualSVN, only with TortoiseSVN. The paths are now file://...

There are several projects with older revisions commited through https: and newer ones commited through file:.

When I check out a newer revision of the project "Project 1" (as an example), everything works. This revision was commited using file:. Trying to check out an older revision that was committed using https:, I get an error message

Error: URL 'file://...../Project%201' does not exist

Looks like the paths using https: where encoded like urls and cannot be accessed using file: protocol ? What can I do to fix this and get my older revisions out of the repository?

Edit: I tried to compare old revision versus new revision, and that works. The diff program can read both revisions, but checkout of the older revision is not possible.

Edit 2: I was probably not very clear on my problem: I need to check out older revisions, but get the above error message. Checking out newer revisions (of the same repository folder) works as usual.


Edit 3: There is a different cause of the problem, please disregard the file: / https: topic. Sorry for the confusion.

I made some tests and could reproduce what is happening:

If I open the Repository Browser and move a folder to another location, I cannot access the revisions of that folder prior to the move anymore. Trying to checkout a revision prior to the move produces the above error message.

What can I do to get these pre-move revisions checked out?


I posted a new question about the problem I have after I found out that my assumptions on the cause were incorrect. Thanks to all for your answers!

+2  A: 

You need to use svn switch --relocate: http://svnbook.red-bean.com/en/1.1/re27.html. I don't know that VisualSVN gives you access to that command, but you can download the command-line version of svn and use it.

Christopher
TortoiseSVN gives access to the relocate command via the "Relocate" context menu item.
Avi
As I understand, SWITCH changes the path the working directory points to. My problem is that I can checkout a new revision to an empty directory, but not an older one. How can I check out an older revision? (see error message in my original post)
Holgerwa
@Avi: I just need to get a specific revision out of the repository, but Tortoise tells me that the path does not exist. I don't have a working directory yet.
Holgerwa
Are you using svn externals in the repository?
Christopher
No externals. The only difference I can see is that some revisions were committed through https: and the newer ones were submitted through file:. The newer once cam be checked out, the older ones not, they produce the error described.It's actually a bad situation for me, because I need to get access to an older revision and just cannot get the source code out :(
Holgerwa
If you have access to the actual repository, it doesn't matter "how" the stuff was committed. That only matters for your working copy, and for externals. Just checkout a new copy of the repository using the revision you are interested in.
Christopher
@Christopher: That is my goal. I can check out let's say the head revision, but I get the error when I try to check out an older one.I would have thought too, that it shouldn't matter how stuff gets in there. Maybe, there's something wrong with my repository, but I am not an expert with Subversion, I just use it.
Holgerwa
Have you tried using the "omit externals" option? Perhaps your HEAD revision doesn't have externals but the old one does?
Lasse V. Karlsen
please read Edit 3, there is another cause of my problem
Holgerwa
+1  A: 

A repository does as far as I know not contain any information about how it is accessed or where it is located. Making a fresh checkout using file:// should not be any problem. Can you access older revisions with the repository browser?

I also just tried this and I have no problem with checking out older revisions. What kind of repository do you use (FSFS or Berkley DB)? If you have Berkley and if you host the repository on a network share you may have corrupted your repository.

If nothing works I would probably try to make a dump of the repository and load it in a new repository.

Stefan Egli
A: 

I found the solution in this post. Thanks for the answers.

Holgerwa