Switch from Subversion to Git

From LimeSurvey Manual


This is only meant as super quick guide to switch from Subversion to Git.

The new way... what's the difference

Git is a distributed version control system. It is designed to work offline and changes can be propagated along a number of repositories (which you usually do no need but just in case).

  • Instead of directly committing stuff to the main repository you commit everything to your own repository (which is stored locally) and if you are ready then you push your changes (along with their commit log) to the main repository (be it the LimeSurvey main repository or your own fork on GitHub)

If you are not a LimeSurvey team member and want to contribute.... have two choices. Either create a fork on GitHub, work in your own fork and at some point in time open a pull request for your changes.


Ask us to become a team member.

If you are LimeSurvey team member...

  • Contact [1] and I will give you write (push) access to our main repository at GitHub.
  • Login at GitHub and check out the latest repository from with the Git client of your choice (I am on Windows and using SmartGit -  check out these setup instructions). If you check out always the whole repository is checked out. There is no way to check out a single branch.
  • After the checkout is done the directory where you check out to will contain the 'master' branch (which was the 'stable' branch in Subversion). And it also will contain an (maybe invisible) directory named .git. This is where Git stores the whole repository. If you want to use another branch you can switch the branch at any time which will replace the current files from the 'Master' branch with the files from the selected branch.
  • If you are working in several branches at the same time (like you want to work in 'master'(=stable), 'Dev' (was 'limesurvey_dev) and 'Yii' (was limesurvey_yii) then just copy the whole directory (including the .git directory) to a new directory and switch the branch. In this example I would just copy my master checkout directory twice and rename the directories to 'limesurvey_dev' and 'limesurvey_yii'. Then switch to the related branches inside these two additional repositories.