No announcement yet.

Newly loaded SVN repo is missing part of the history

  • Filter
  • Time
  • Show
Clear All
new posts

  • Newly loaded SVN repo is missing part of the history

    First of all, thank you all for this forum. I am new SVN & the messages here have helped a lot. Here is my current challenge. I am migrating several projects to a different server. On the biggest project, we have decided break it into 3 separate repositories.
    The structure in the old repo:

    Main repo:

    FolderD1 (sub to FolderD)
    FolderD2 (sub to FolderD)

    I was able to move FolderD2 fine with all histories to its own repo on the new server. However, when moving FolderC, I only have the history of the last 2 months whereas the original repo has the history since 2014. I used the below commands to take the dumps & load into the new server.

    1- Take a dump on old server: svnrdump dump [url]https://PATH[/url] > FolderC.dump

    2- Edit dump file: replace "Node-path: old path" with "Node-path: trunk". AND "Node-copyfrom-path: old path" with "Node-copyfrom-path: trunk"

    3- Copy the dump to the new server through: \\C$

    4- On new server, create repository for FolderC,

    5- then load the dump using
    svnadmin load C:\csvn\data\repositories\FolderC-Repo < FolderC.dump > FolderC-LOG.log

    The new repository has all the files; but it is only showing the history of the past two months. The rest is missing. When I check the load log, I see that the older revisions are committed but they are missing from 'svn log'. What am I missing? I would appreciate your help.

  • #2
    Is it possible that the files/directories that are currently in FolderD2 were originally elsewhere? If so then your global replacement might not have caught all of the paths. So what you get out depends on the actual "svn log" command arguments you used. Could you provide an example of the "svn log" command you used?


    • #3
      I used svn log https:FolderC-Repo/trunk. Both FolderC and FolderD ( and sub folders) were branches of the main repository.


      • #4
        Please try doing "svn log https://<server>/FolderC-Repo/" (not "trunk") and see what it says. This might guide you to what paths might need to be corrected in the dump before removing the repo, re-creating it and then re-importing the modified dump file. Cheers.


        • #5
          DougR, thanks for your help! I did the svn log with the complete path of the repo. At top level, the 2 (old & new) repo have matching history. However, when I go inside directories (11 levels deep where the Dev manager is doing the validation), the new repo only has the data since August 10 2017 whereas the old repo has the data from April 23 2014. I see what's missing but I don't how I missed that & how to fix it.

          Thanks again!


          • #6
            Pick one of the files that is there in the original and try using the "svn log --stop-on-copy FILE" on it. It might be that it was copied from some other location and that your filter is eliminating that alternate path.


            • #7
              Good morning DougR,
              I tried the svn log --stop-on-copy FILE"; you are right, the files were copied from another location. Now, how do I carry over that alternate path to the new repository? I don't know which filter I am using to eliminate the alternate path. I used 'svnrdump dump' to copy the old repo and 'svnadmin load' to load it to the new repo.
              Thanks again!


              • #8
                How you dump'd the data is critical. Could you supply a suitably redacted copy of the command you used to dump it? Just change the names, IPs, paths, etc. to something meaningless but something that you can map back into what you did.


                • #9
                  Yes, the data is critical & the Dev won't start using the new svn until they have all their data. Please find the commands I used below:
                  Take a dump on old server: svnrdump dump ]https://PATH[/url] > FolderC.dump

                  Edit dump file: replace "Node-path: old path" with "Node-path: trunk". AND "Node-copyfrom-path: old path" with "Node-copyfrom-path: trunk"

                  On new server, create repository for FolderC,

                  load the dump: svnadmin load C:\csvn\data\repositories\FolderC-Repo < FolderC.dump > FolderC-LOG.log


                  • #10
                    Ok, so you asked ONLY for the stuff in FolderC but some of the history is elsewhere. You're going to have to dump the whole repo and then filter out only the records that you need. That's definitely complicated given folks have been moving stuff around. Unfortunately there's no choice. I would definitely try to use the "svndumpfilter" command and hope there's a set of patterns that you can use. Check out the man page and give it a whirl.


                    • #11

                      Thanks for the suggestion. I have used 'svndumpfilter' before. I was trying to avoid that because the repo is huge & I am not sure I have enough space on the C drive to take a dump for it. I will try it & let you know.


                      • #12
                        Arg! Windows. If they've fixed the pipe operation then you can simply pipe the output of the dump into the filter and the space needed will only be a few dozen KB over the output of the filter. If they haven't fixed the semantics of pipe yet then, you're right, you might as well simply dump the repo and then filter it.


                        • #13
                          @[URL=""]DougR[/URL]/ All,

                          Thank you for your help. I finally was able to migrate the project with all the history (including copied path). It was actually simple. I did a svnrdump dump of the entire repo; loaded it all into the new repo; & deleted the folders I didn't need. I didn't have to update the Node-path/Node-copyfrom-path in the .dump file. The Dev Team is now using the new SVN.


                          • #14
                            Nice. For what it's worth, what you've done is "hidden" the directories you don't need, not removed them from the repository. People can still check them out by specifying a revision prior to your change. As long as that's ok with you then it is a perfectly good way to handle this! Cheers.