CREATE A RELEASE BRANCH svn copy $REPO/trunk $REPO/branches/$BRANCH_NAME PORT BUGFIX ON RELESE BRANCHE (single commit N) cd branch_workingCopy_dir svn merge –dry-run -r N-1:N $REPO/branches/$BRANCH_NAME svn merge -r N-1:N $REPO/branches/$BRANCH_NAME svn commit -m”JARA-YYY: back porting of commit N, fixing JIRA-XXX” PORT BUGFIX ON RELESE BRANCHE (range of commit N-M) svn merge –dry-run -r N-1:M $REPO/branches/$BRANCH_NAME svn merge -r N-1:M $REPO/branches/$BRANCH_NAME svn commit -m”JARA-YYY: back porting of commit N-M , fixing JIRA-XXX” IN CASE OF RANGE OF COMMIT SOLVING DIFFERENT ISSUES, PREFER MULTIPLE SINGLE BACK PORTING THAN ONE RANGE COMMIT. TRY TO USE RANGE BACKPORTING JUST WHEN ONE FIXES NEEDED A RANGE OF COMMIT ON TRUNK CREATE A PERSONAL BRANCH svn copy $REPO/trunk $REPO/branches/$BRANCH_NAME -m”created branch” svn co $REPO/branches/$BRANCH_NAME branch_workingCopy_dir cd branch_workingCopy_dir svnmerge init svn commit -m”svnmerge initialized” MERGING FROM TRUNK TO PERSONAL BRANCH (FREQUENTELLY) cd branch_workingCopy_dir svnmerge merge svn commit -m”merged trunk to branch” MERGING INTO TRUNK FROM PERSONAL BRANCH cd branch_workingCopy_dir svnmerge merge svn commit -m”last merge of trunk to branch” remove property used to track merges svnmerge uninit svn commit -m”svnmerge uninit” cd trunk_workingCopy_dir svn update get the revison number....suppose 346 svn merge –dry-run $REPO/trunk@346 $REPO/branches/$BRANCH_NAME@346 svn merge $REPO/trunk@346 $REPO/branches/$BRANCH_NAME@346 svn commit -m”reported changes from $BRANCH_NAME trunk” svn delete $REPO/branches/$BRANCH_NAME@346