Wow!  I'm going to have to hire an IT person.

Your procedure sure makes sense though.  Thanks.

Scott 

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf 
> Of Jonathan Perret
> Sent: Wednesday, February 07, 2007 4:57 AM
> To: Vss2Svn Users
> Subject: Suggested vss2svn workflow (was RE: Invalid change ordering?)
> 
> > Regarding the "live" database, you can simply make a file 
> copy of the 
> > VSS files to your local computer and run the conversion 
> from there. If 
> > you do it in a silent minute, during the night, you could 
> probaply get 
> > a pristine copy.
> 
> Definitely ! A copy of the database should be the first thing 
> you do to begin your migration. Actually, in case anyone is 
> interested, here is the complete workflow I used for our migration :
> 
> 1. Choose a powerful, dedicated machine to run the migration. 
> It can be
>   your own laptop, or another server just as long as it is not the VSS
>   server. I used our automated build server since it already had Perl
>   and is a pretty beefy box that is somewhat underused. From 
> this point on
>   I'm assuming a Windows box was selected.
> 
> 2. Make sure the following software is available on that machine :
>  - SourceSafe 6.0d (please avoid VSS 8, I'm sorry to say this but they
>    actually managed to make it less stable). Make sure SS.exe and 
>    ANALYZE.exe are on the PATH.
>  - ROBOCOPY.EXE, you can get this from the Windows Resource Kits, or
>    many other places on the web. Make sure it is on the PATH too.
>  - vss2svn (preferably in Perl source form, so that you are ready for
>    a quick patch if anything goes wrong) and its dependencies.
>  - the latest Subversion, make sure it is in the PATH too.
> 
> 3. Log in to that machine using an account that has read-only 
> access to
>   the VSS share. I'll actually be altering the VSS database before the
>   migration and I'm a bit paranoid about accidentally destroying our
>   production database. Notice that this read-only access prevents the
>   SourceSafe client from accessing the VSS database, but that's
>   actually a good thing.
> 
> 4. Create a local copy of your VSS database using ROBOCOPY :
>  ROBOCOPY /MIR \\vssserver\vss C:\svnmigration\vsscopy
> 
> 5. Open srcsafe.ini in the VSS db copy, make sure to remove
>   any references to shadow folders and a journal file : again
>   we don't want local operations on this copy to disrupt the
>   production environment.
> 
> 5. Create a directory somewhere, call it something like
>   "C:\svnmigration\migration1".
> 
>   You'll be doing several migrations and you may want to compare the
>   results from one to another so it's a good idea to archive 
> the attempts.
>   I went further and copied the whole of vss2svn under this directory,
>   this allowed me to also archive what little tweaks I had made to the
>   script for each attempt.
> 
> 6. If you want to keep your hair through your migration, a key
>   word is "automate" ! Create a script using whatever systems 
> automation
>   language you are comfortable with. I guess Perl would be a logical
>   choice, but I selected CMD scripts (batch files) since I didn't know
>   enough Perl to do what I wanted. Your script should do the 
> following :
>    a. synchronize the data in the local copy of the VSS database :
> 
>       SET SSDIR=C:\svnmigration\vsscopy
>       ROBOCOPY /MIR \\vssserver\vss\data %SSDIR%\data
> 
>      (notice I synchronized only the data subdirectory since I want
>       to keep the local modifications to srcsafe.ini that I did above)
>      (notice also that the /MIR switch to ROBOCOPY makes it remove
>       files that are no longer present in the VSS db, and also
>       avoids copying files that have not been modified, which means
>       this operation should run pretty fast for each migration)
> 
>    b. "SS Destroy" any projects/files you don't want to migrate :
> 
>       SS Destroy -I-Y $/ProjectIDontWant
>     
>       (-I-Y means "shut up and do it" to SS.exe)
> 
>       I have found that destroying projects in a copy leads to
>       cleaner migrations than the alternative which is to
>       backup/restore only selected projects.
> 
>       Some of the projects/files that you don't want may have 
> been deleted,
>       but not purged. You need to recover them first :
> 
>       SS Recover $/MyProject/HugeFileThatWasCheckedInByMistake.zip
>       SS Destroy -I-Y
> $/MyProject/HugeFileThatWasCheckedInByMistake.zip
> 
>    c. Run ANALYZE on the database copy :
>       
>       rmdir /S/Q %SSDIR%\data\backup
>       ANALYZE -f -i- -v4 %SSDIR%\data
>       copy /Y %SSDIR%\data\backup\analyze.log .
> 
>       (ANALYZE flags : force repair, no interaction, deep analysis)
> 
>    d. Run vss2svn :
>       
>       perl -Ivss2svn vss2svn\vss2svn.pl --ssphys 
> vss2svn\ssphys.exe --vssdir %SSDIR% --verbose --timing > 
> vss2svn.log 2>&1
> 
>       (this assumes you made a local copy of vss2svn)
> 
>    e. Create and load the SVN repository :
> 
>       rmdir /S/Q repos
>       svnadmin create repos
>       svnadmin load repos < vss2svn-dumpfile.txt > svnadmin.log 2>&1
> 
>    f. Do any post-migration cleanup in svn :
> 
>       SET SVNREPOS=file:///%CD:\=/%/repos
>       svn mv %SVNREPOS%/MainBranch /trunk
>       svn rm %SVNREPOS%/OldProject
> 
>       (see point 10 for why it is sometimes better to remove 
> a directory from
>       the SVN repository than to purge it from VSS beforehand)
> 
> 7. Launch your script, making sure to redirect all output to 
> a log file
>    that you can analyze later for errors.
> 
>       migrate.cmd > migrate.log 2>&1
> 
> 8. Let time pass for a bit. If you want to know what the migration is
>    doing at any point, you may find 
> http://tailforwin32.sourceforge.net/
>    useful to look at the log files as they are being appended to.
> 
> 9. Once the migration is complete, take a look at the results. What
>    I did was launch an svnserve on the migration machine and browse
>    the repository from my laptop using TortoiseSVN.
> 
> 10. You'll find something you don't like about the migration results.
>    No problem, just create a "migration2" directory, copy vss2svn and
>    your script there, make any fixes you need and start again.
> 
>  Some random things to look out for :
> 
>  - It is a good idea to grep for ERROR in the vss2svn.log file, but
>    don't get frightened by every match : unfortunately 
> vss2svn does not
>    try very hard currently to rank the errors from benign to fatal.
> 
>  - Are there "too many" files in /orphaned ? You may have had 
> a heavy hand in step 6b above (destroying projects). Let's 
> say for example a file was initially created in 
> $/Version1/file.txt, and then $/Version1 was shared/branched 
> to $/Version2. If you destroy $/Version1, $/Version2/file.txt 
> is orphaned ! It is much better to keep $/Version1 in the 
> migration, then add "svn rm /Version1" to step 6f if you 
> truly want to hide that old project.
>    In short, try to only destroy truly irrelevant projects.
> 
>  - What are the biggest revisions in your new SVN repository 
> ? This is easy to find by peeking into repos\db\revs. Most of 
> these files should be pretty small, any that exceeds a few 
> megabytes is suspicious (well, depending on your data of 
> course, if you were handling large assets in VSS it could be 
> just fine). In my repository only 85 revisions out of 24500 
> exceed one megabyte.
>    To see the details of a "suspicious" revision :
> 
>       svn log svn://path/to/repository/root/ -v -rREV
> 
>    This could help you find the instances of 
> HugeFileThatWasCheckedInByMistake.zip that bloat your 
> repository for no good reason. Go then to step 6b and add 
> such files to the "black list".
> 
> That's it ! I hope these suggestions are useful to someone 
> going through a migration.
> Perhaps the vss2svn wiki should contain information of this kind ?
> 
> Cheers,
> --Jonathan
> 
> _______________________________________________
> vss2svn-users mailing list
> Project homepage:
> http://www.pumacode.org/projects/vss2svn/
> Subscribe/Unsubscribe/Admin:
> http://lists.pumacode.org/mailman/listinfo/vss2svn-users-lists
.pumacode.org
> Mailing list web interface (with searchable archives):
> http://dir.gmane.org/gmane.comp.version-control.subversion.vss
2svn.user
> 
> 

_______________________________________________
vss2svn-users mailing list
Project homepage:
http://www.pumacode.org/projects/vss2svn/
Subscribe/Unsubscribe/Admin:
http://lists.pumacode.org/mailman/listinfo/vss2svn-users-lists.pumacode.org
Mailing list web interface (with searchable archives):
http://dir.gmane.org/gmane.comp.version-control.subversion.vss2svn.user

Reply via email to