Thanks a lot.
Things are much clearer now.
I think this mini tutorial will be very helpful for the ex-cvs users.
Mats Nilsson wrote:
>
> > Please, assume the following scenario and point me to the right track:
> >
> > A repository: http://server/svn/repos contains the following tree:
> >
> > /main.c
> > /utils/utils.h
> > /utils/utils.c
>
> Since branches and tags are represented by directories, this directory
> layout will be difficult to use.
>
> Instead, I'm assuming that the repository has a slightly different layout:
> /trunk/main.c
> /trunk/utils/utils.h
> /trunk/utils/utils.c
>
> Let's also prepare directories to keep tags and branches:
>
> $ svn mkdir http://server/svn/repos/tags
> $ svn mkdir http://server/svn/repos/branches
>
> > Let's say the tree is at revision 4.
> >
> > Step 1:
> > Programmer Bprog wants to make a tag (can he/she make a named tag?
> > how?) and after that
>
> $ svn cp http://server/svn/repos/trunk http://server/repos/tags/release-1.0
> (creating revision 5)
>
> > Step 2:
> > he/she wants to make a branch at this point.
>
> $ svn cp http://server/svn/repos/release-1.0
> http://server/repos/branches/bugfix-branch
> (creating revision 6)
> $ svn co http://server/repos/branches/bugfix-branch -d my-bugfix-sandbox
>
> > Step 3:
> > Programmer Hprog works further on the main trunk and,
> > when he/she arrives at revision 10, they want to merge the branch
> > on which Bprog was working (how does the revision numbers
> > get modified for his/her branch?) into the main trunk.
>
> assuming Hprog has a working copy of /trunk in .
>
> In this particular case, either one of the following commands will merge the
> changes on the bugfix-branch with the working copy:
>
> $ svn merge -r6:10 http://server/repos/branches/bugfix-branch
> $ svn merge -r6: http://server/repos/branches/bugfix-branch
> $ svn merge http://server/repos/trunk@4 http://server/repos/bugfix-branch
> $ svn merge http://server/repos/branches/release-1.0
> http://server/repos/bugfix-branch
>
> If there are conflicts (e.g. on file main.c) then resolve them manually and
> do
> $ svn resolve main.c
>
> Commit
> $ svn ci
>
> Revision numbers are global. Changes on either the /branches/whatever or the
> /trunk will increase the revision number.
>
> >
> > Step 4:
> > They want to make a tag here. How can Bprog continue working
> > on his branch (can he/she use the same branch
> > or does he/she has to make another one?)?
>
> $ svn cp http://server/svn/repos/trunk http://server/repos/tags/release-1.1
>
> or
>
> $ svn cp . http://server/repos/tags/release-1.1
>
> It's ok to continue working on the existing branch. Until svn remembers the
> merge history, however, subsequent merges from the branch to the main trunk
> will require that previously merged changes are not merged again. Use -r
> with non-overlapping intervals.
>
> Of course, if you make another branch from trunk after the merge, this
> branch will be up to date with the changes that occurred on the main trunk.
> This might or might not be what you want, but it will likely reduce the
> effort of resolving conflicts during later merges, since the different
> versions will have a more recent common ancestor.
>
> /Mats
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sun Jun 16 18:02:28 2002