Is there any way to have a known directory or file.....from an older revision....and then (knowing it has been "moved" at a later time) find out to where it was moved?
Example.
https:\\myserver.com\Repository1\OldFolderStructure\Folder01\FolderA\MyFile01.txt
(this structure/file exists at revision 333)
........
svn mkdir "https:\\myserver.com\Repository1\NewFolderStructure\"
svn move "https:\\myserver.com\Repository1\OldFolderStructure\Folder01" "https:\\myserver.com\Repository1\NewFolderStructure"
svn ls "https:\\myserver.com\Repository1\NewFolderStructure\Folder01"
.......... (now pretend there are 1,000+ other check ins, but no more svn moves), so I jump to revision 1444.) ..........
So now, if I check out revision 333, I have this file "MyFile01.txt" (or folder "FolderA"). And I'm trying to figure out to where it exists in the HEAD revision.
You might be thinking, "why does he need this?" I wish I didn't. But it'd take me a 30 minutes to give you that revision history. (<< bad joke).
.........EDIT..............
So a few extra things.
One: svn info never gave me enough info to find the new home. The main reason for this was nesting of directories. I svn move some folders, but that folder has several subfolders that are nested at more than 1 level.
However, with svn diff, while I get alot of information (between revisions 1444 and 333)...the info is there. I mean, the svn diff task takes like 33 seconds, but once it comes back, I have the information in xml, and I am parsing it and putting it in some simple DTO objects.
Two (same file name issue):
If the original location of my item was:
https://mySvnServer.com/Repo1/SoccerClubWebSite/scripts/validationRoutines.js
and then I do a svn diff (detailed), and I have the following two items in the HEAD revision:
<path props="none" kind="file" item="add">https://mySvnServer.com/Repo1/WebSites/SoccerClubWebSite/scripts/validationRoutines.js</path>
<path props="none" kind="file" item="add">https://mySvnServer.com/Repo1/WebSites/CriticalBusinessAppWebSite/scripts/validationRoutines.js</path>
I encountered a few places where my filenames are not unique.
So I had to write a Uri Segment Matcher that tries to find matches.....by working the Uri backwards.
Example. In the 2 above items....I first try the last segment of the URI.
validationRoutines.js
I have 2 matches on that string. Thus I don't know the exact one I'm concerned about. I grab the parents folder and use that.
scripts/validationRoutines.js
still two matches.
Now I add the third uri segment (working right to left)
SoccerClubWebSite/scripts/validationRoutines.js
and now I found a unique match.
So the basic template of what I am now doing is:
(1) svn diff 333:HEAD
(fyi, this gives back ALOT of information).
(2) parse the xml and push it to simple DTO objects.
(3) look for items in that xml that are "add" or "modified", and use a matching system based on the segment logic listed above.
(3b) Because the same file could have been modified multiple times (and thus show up in the xml more than once (but with the same head svn-path)...I had to do a GROUP BY (svn-path). LINQ group by worked well here.
I still need to test my logic against some more examples. But YOUCH, this was not trivial.