Skip to content

Gediminas/vss2git

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

--------------------------------------------------------------------------------
INFO
--------------------------------------------------------------------------------

vss2git / vss2svn  application converts Microsoft Visual SourceSafe database to GIT / SVN repository

Simple cycle "ss get" "git/svn commit" is used.
Commits are grouped by user but split by date



--------------------------------------------------------------------------------
COMPILE
--------------------------------------------------------------------------------

Microsoft Visual C++ 6.0

stlport                   (recomended; should work without it)


--------------------------------------------------------------------------------
BEFORE CONVERSION
--------------------------------------------------------------------------------

1. ENVIRONMENT VARIABLES should be set
   
   To set:
   My Computer -> Properties -> Advanced -> enviroment variables -> User variable... (e.g.):
 
     ssDir  = C:\VSS\MyVssDatabaseDir
     ssUser = Admin
     ssPwd  = *******

   Use Microsoft Visual SourceSafe 6.0 -> help -> search for more info


2. "tmp" folder should be EMPTY or DELETED

3. Check your DATE-TIME FORMAT.

     Control Panel -> Regional and Language Options -> Regional Options -> Customize ->
      Date -> Short date format

       'yyyy-MM-dd'
         or
       'yyyy.MM.dd'

     Control Panel -> Regional and Language Options -> Regional Options -> Customize ->
      Time -> Time format

       'HH:mm:ss'  (24 hour NO AM/PM symbol!!!)



--------------------------------------------------------------------------------
CONVERSION
--------------------------------------------------------------------------------

Conversion is devided into 4 steps:

Step 1: 

  Step1_VssDir.txt       - current VSS database tree dumped using VSS command "ss dir"


Step 2: 

  Step2_Info.txt         - file+version list; used VSS command "ss history" for every file
  Step2_SkippedPaths.txt - list of files that will be skipped by import


  Currently only *.cpp && *.h files are imported (other skipped)
  This is hardcoded in src/Functions/Processor.cpp -> Step2_CollectInfo()


Step 3:
  Step3_Grouped.txt      - data prepared for git/svn commit actions (separated by ****)
                           grouped by user but splitter by date
                           file list contains only last VSS versions to use (intermediate skipped)


Step 4:
  Step4_Import.txt       - import log
                           
                           "ss get"         - used to get VSS file particular version
                           "git/svn commit" - commit everything and adjust commit date


When particular step is successfully finished file Step*.txt.DONE is generated.
Such step will be skipped during next Conversion.
Delete this file to regenerate data.



IMPORTED  GIT  REPOSITORY IS GENERATED TO FOLDER: tmp/Working
          SVN  REPOSITORY IS GENERATED TO FOLDER: tmp/repo



--------------------------------------------------------------------------------
AFTER CONVERSION
--------------------------------------------------------------------------------


Converted git/svn repository will contain only *.cpp && *.h file. 

You should manually copy (overwrite) all files you need from
original VSS folder on top of new git/svn working copy and commit.

Configure ".gitignore"

And commit.



--------------------------------------------------------------------------------
REPOSITORY UPDATE
--------------------------------------------------------------------------------


You can update already imported repository (if VSS database has changed during conversion).
Or import database from specified date ignoring previous history

Copy  bak/FromDate.cfg --> tmp/FromDate.cfg

Edit stored date in tmp/FromDate.cfg

Run conversion application.
Warning should be echoed.



--------------------------------------------------------------------------------
TROUBLESHOOTING
--------------------------------------------------------------------------------


1. Wrong dates in git/svn repository after/during conversion.

   FIX:
     Not supported system date/time format.
     See "BEFORE CONVERSION" 3. how to change it or simply select "Lithuanian"
      in Control Panel -> Regional and Language Options -> Regional Options

2. git/svn repository not created and Step4_Import.txt shows no git/svn activity (only vss is shown)

   FIX:
     git/svn is not installed.



--------------------------------------------------------------------------------
KNOWN BUGS
--------------------------------------------------------------------------------

#1: Sometimes file history is lost

    CAUSE:
      VSS command "ss Dir" gives unexpected output
      See file bak/D_Step1_VssDir.txt as example, find
      "AppInit.cpp         Tomas         09.10.28 11:55"
      Such output is not supported (yet)


#2:

About

Microsoft Visual SourceSafe to GIT / SVN repository migration tool

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published