SAVANATransactional Workspaces for SVN
Hutsul Yaroslav
What is SAVANA
Simple tools for SVN created by Bazaarvoice Inc.
Help manage and work with user branches, release candidates
Transactional Workspaces - branches that are aware of the branch (or trunk) from which they were created
Contains metadata info about repository in .savana file
GNU Lesser General Public License
How to start
Install Savana
Checkout your project
Run “sav bootstrap <PROJECT_NAME> TRUNK” command (in case common repository structure)
Result – created .savana file with metadata about your project.
Commit .savana into the repository
User branch
Create user branch with command “cub”
Performed steps:- new branch was created in “branches/user” folder in
repository- current local directory was switched to new branch- info about branch and its parent added to .savanna file
If locally modified items are in the working copy then creating a user branch will fail. “—force” parameter can be used to create the branch anyway.
Release branch
Create release branch from trunk with command “crb”
Performed steps:- new branch was created in “branches” folder in
repository- current local directory was switched to new branch- info about branch and its parent added to .savanna file
Promotes can not be performed from release branches. Command “sav sync” cannot be used for release branches.
Synchronization with parent
Run “sav sync” to pull down changes from a source branch to a user branch.
Performed steps:- pulled down changes in the source branch that have
been made since the user branch was created or last synchronized
- merged changes into the working copy- updated the Savana metadata that tracks merge history
This command will not commit merged changes
Promote
Run “sav promote”
Performed steps: - switched to parent
- merged changes from branch into parent- committed changes - deleted branch after successful promote
There should be no modified files in local branch before run “promote” command
Promote wit promote.txt
Create promote.txt file in project root directory.
Run sav -F promote.txt promote. Result in svn logs:
Base development workflow
Base workflow with SAVANA
Possible issues
Rename of class can produce conflicts during processing of “sav sync” command
Promote will remove branch, so if you need merge changes not just into parent – need to do merge with other branches/trunk first.