Table of Contents
Getting Code in and out of Subversion
http://subversion.tigris.org/ Tortoise
SVN Book http://svnbook.red-bean.com/ pg 21 Subversion Architecture Diagram
Lock-Modify-Unlock Model can do this in SVN, but it is not cool. Copy-Modify-Merge Model is the way SVN operates and is optimistic.
Components Usually Have:
- Trunk - main code housed here
- Branches - under development/ not in production
- Tags - ID a release level of revisions in trunk
Subversion on Linux: Command Line Instructions
Help for SVN commands:
% svn help import % svn help mkdir
Import Code to Subversion
% svn import -m "Your Import Message" /path/to/FileOrFolderName \ http://svn.instance.org/repository/component/trunk/folder/filename Authentication realm: <http://svn.nccoos.org:80> nccoos Password for 'uid': Adding file.ext Committed revision 47.
Make Branches/Tags Subfolders
% svn mkdir http://svn.instance.org/repository/component/branches % svn mkdir http://svn.instance.org/repository/component/tags
Create a Working Copy - SVN Checkout
% svn co http://svn.instance.org/repository/component/trunk/Folder \ /path/to/workingcopy
Commit Changes Back to the Repository
% svn update /path/to/WorkingCopy % svn ci -m "comments" /path/to/WorkingCopy/
Subversion on Windows: Tortoise SVN
Create a Component
- Right Click to get Explorer Menu -> TortoiseSVN -> repo-browser
- Navigate to project of interest - right click
- Create folder... - component name
- navigate to new component - right click...
- Create folder... - "trunk"
- Create folder... - component name
- Create folder... - "branches"
- Create folder... - "tags"
- Create folder... - "trunk"
- navigate to new component - right click...
- Create folder... - component name
Import Code to Subversion
- Sub folders ready? Right click on local folder containing code to version control
- Choose Import in TortoiseSVN sub-menu
- typical URL: http://svn.instance.org/repository/component (e.g http://svn.nccoos.org/scratch/daqlib)
- Best practice = use trunk framework
- like http://svn.instance.org/repository/component/ trunk /component
- authenticate: UID and PW same as trac
- Files are then added to SVN
- Version numbers increase on an entire repository basis
- Adding new component will increase the entire repository version number
Create a Working Copy - SVN Checkout
- Right click (anywhere outside of a toolbar or application) and choose SVN Checkout from Explorer Menu
- Select the URL of the repository of interest
- Pick/Create a local Checkout Directory to create a Working Copy
- Choose the Head Revision or a Revision Number
- Folder is created: green check mark = folder has not changed from Checkout
- A .svn folder is also created on Checkout to hold Subversion bookkeeping - don't mess with this folder!
- Ready to make changes to code
Commit Changes Back to the Repository
- Can commit single changed file or entire container folder
- Right click and select SVN Update to check that files have not been changed since initial Checkout
- If files have changed
- Merge: other changes do not overlap your changes)
- Resolve Conflicts: other changes do overlap your changes
- If files have changed
- No external changes - right click on file or folder and select SVN Commit
- Add comments to describe the changes being committed
Export Code to Deploy
- Right Click -> Explorer Menu -> TortoiseSVN -> Export - like Checkout but with no bookkeeping
Remove an Entire Component
- Explorer Menu -> TortoiseSVN -> repo-browser - can remove an entire Component
- Removal actually creates a new version
- Can export a previous version to access removed component code
Working With Tags & Branches
- Using a working copy with trunk folder at least checked out
- Right Click on trunk folder -> Explorer Menu -> TortoiseSVN -> Branch/Tag
- select Tag URL: like http://svn.instance.org/repository/component/ Tags /tagname (i.e v1.0)
- add comments
- Tag is created (really a pointer)
- Can checkout Tags folder - but not recommended
- Usually work on the head revision in trunk
- until experimental or multiple people working on code - then branches