So in this post its all about getting your existing Typo (or rails app) under version control with SVN.
Starting Point
- Have a rails site working and using lighttpd on your local dev box under /u/apps/sitename.com
- Your remote server has SVN installed (try svn -v) and Rails/Lighttpd installed
- Make sure you have an ssh key setup for accessing your server from your dev box
- If you will have multiple users checking in and out and using Capistrano/SVN – set them all up a with ssh keys and create a new ‘developer’ group on the server (that has permissions on svn repository folders and /u/apps/)
- Note: if you make a mistake, you can use this command to clean away all svn folders from the CWD downwards
find . -type d -name '.svn' -print0 | xargs -0 rm -rdf
Create SVN repository on svn server, checkin all rails code, then check out a working copy again
- Login to the server and create a top level directory svn to hold your repositories;
mkdir /svn
- Create a new repository in it with;
svnadmin create /svn/sitename.com
- On your dev box, import the entire rails app to this new repository on ‘server’ with a simple comment;
svn import -m "initial import" /u/apps/sitename.com svn+ssh://matt@server/svn/sitename.com
- On dev box, rename /u/apps/sitename.com to sitename.com.stepaside – you could delete it before checking out your working copy, but its safer to do this in case anything goes wrong.
mv /u/apps/sitename.com /u/apps/sitename.com.stepaside
- Now checkout from the new svn repository to your dev box with;
svn co svn+ssh://matt@server/svn/sitename.com /u/apps/sitename.com/
- If all is ok, you can now delete sitename.com.stepaside
rm -r /u/apps/sitename.com.stepaside
SVN Tips
- You can run svn update, to update your current working copy with the latest from the server repository;
svn update /u/apps/sitename.com
- You can run svn commit -m “comment” to commit all changes from your working copy to the repository on the server
svn commit -m "your comment" /u/apps/sitename.com
- You can run svn status to see what files have changed or are not under version control;
svn status /u/apps/sitename.com
- You can add files/folders to svn’s ignore list for a particular file under version control using propedit; e.g. to set whats to be ignored in the config/ folder;
svn propedit svn:ignore config/
- This will popup a text editor (usually vim) – allowing you to specify files/folders inside config/ to ignore – e.g. .rb or deploy etc. In vim, press I to start editing (inserting), edit the file and press Esc and ‘ZZ’ to save and exit. (easy!) – Of course for these ignores to take place you’ll have to do an svn commit.
- IMPORTANT for these ignores to work on files/folders that are already under SVN version control, you’ll first have to un-version and delete them; So back up the file/folder first then SVN remove it with;
svn remove /path/to/file
- Then place the backed up file/folder into your working copy again (if its a folder, delete any .svn folders in it) (Its a real pain, but ‘svn status’ is your friend during this process)
- You can run svn status —no-ignore to see what files you’ve added to svn’s ignore list (these don’t get version controlled
svn status --no-ignore /u/apps/sitename.com
References
no comments yet, add yours below