I am hoping that someone here can help to sort out my
understanding/misunderstanding of the merging of branches in subversion.
I think that somewhere along the line I have made an incorrect
assumption about how this is all meant to work, so I'll start with my
setup...

I have been asked to place a php document management application under
svn. I have also created a branch called devel where I am expecting all
development to take place, then when considered ready to go into
production, will be merged with trunk, at which point trunk will be
copied into production. Trunk will always be a copy of the production
codebase.

The way that I thought that this would work is that each developer would
have a working copy of both devel and trunk. They would work on code in
the devel branch only, committing after each change for testing on the
dev server, then merge the devel branch with trunk when the changes are
ready to go into production.

This doesn't seem to work as I expect however. I added a file to my
devel branch, then committed creating revision 3. I tried to merge with
trunk using examples in the subversion book, but I became confused over
the notion that merges only make local changes and the idea of merging
between certain revisions of one branch to the other. Trunk now says
that it is at revision 3 but does not include the file I added to my
devel branch.

I thought that I should be merging my working copy of devel with the
working copy of trunk (which has no local changes made to it) then
committing trunk. I simply want trunk to become a copy of the latest
devel branch at the time that the code is considered stable. Should I be
copying rather than merging?

I hope that I am not so confused as to be not making sense here. I have
never used cvs or similar version control systems before.