[[PageOutline]] = Version Control with Subversion (svn) = == What is SVN? == * A free/open-source version control system. * Managing files and directories over time, placed into a central repository. * The repository remembers every changes ever made to the files and directories. * Accessible across networks, allowing to be used on different computers. * Runs on Many platforms. [http://subversion.apache.org Home Page] [[Image()]] == Good things... == * If you develop a software with some other people, it keeps track of who did what when and where changes. * even if you develop a software yourself... * When you made a stupid change and screwed up .... * Allows you to go back. * Revert to a previous revision of a file/directory. [[Image()]] == First things to do == * Create a repository on ''Cypress'' svnadmin create $HOME/repos This creates a repository under '$HOME/repos'. Note that $HOME is your home-directory on ''sphynx''. Once you did this, you don't have to do this again. Do not delete '$HOME/repos' !!! * Testing your repository On ''sphynx'', mkdir mywork cd mywork mkdir project1 echo "This is README.txt" > README.txt svn import file:///$HOME/repos/project1 -m"initial import" Now you have ''project1'' in your repository. Delete ''project1'' then checkout ''project1'' from the repository, cd .. rm -rf project1 svn co file:///$HOME/repos/project1 ./project1 === Working with SVN === * To download files in a repository, use ''''svn checkout'''' / ''''svn co'''' command. * If you made some changes to the files in your local machine and want to upload these to the repository, use ''''svn commit'''' command. * If you have files on your local machine and want to update these to the latest version in the repository, use ''''svn update'''' command. * If you want to add a file/direcotry, use ''''svn add'''' and commit. * If you want to delete a file/directory, use ''''svn delete'''' and commit. === What to Control === * Source Code * Documents * Variable data * Anything you want to share that isn't essentially static data. '''Do not upload.... Large sets of binary files; images, movie, music....''' === Accessing your Repository over Network === To access your Repository on ''sphynx' through ''ssh'' from other hosts, svn co svn+ssh://''USERNAME''@sphynx.ccs.tulane.edu/''HOME_DIRCTORY''/repos/project1 ./project1 You will be asked for typing your password on ''sphynx''. ''USERNAME'' and ''HOME_DIRCTORY'' are your login user name and home directory on ''sphynx''. To see the path of your home directory, on ''sphynx'' cat $HOME * Using svn-client software with GUI ** There are Windows Versions and Mac OS versions. ***[http://svn-ref.assembla.com/windows-svn-client-reviews.html Client Software Review] === Try using Your Repository === ==== Check out data ==== Somewhere on ''sphynx'', svn co file:///$HOME/repos/project1 ./project1 go into '''project1''' directory. cd project1 look at files ls ==== Edit README.txt ==== Edit '''README.txt''' to add your message. then commit it. svn commit -m"your message" ==== When you made a stupid change or delete a file by mistake ==== You can revert to a previous version. To look at the log svn log If you want to download version 1, svn -r 1 update When you delete '''README.txt by mistake, rm '''README.txt''' See the file you deleted does not exist. ls Download the missing file, svn update ==== Add files ==== Make a new file, then add it to svn by svn add NEW_FILE_YOU_MADE then svn commit -m"your message" ==== Check status ==== To check the status svn stat To see the difference between the repository and your working version svn diff ==== Upload ==== To upload your working version to the repository, svn commit -m"comment for current version" Look at the status and difference svn stat svn diff ==== Help ==== svn help