[Halld-offline] putting changes on a branch after the fact
Mark M. Ito
marki at jlab.org
Fri Jul 11 14:40:55 EDT 2014
Paul and Richard,
Recall we talked about you two working on a common branch. The
difficulty was that Richard has already checked out the trunk and has
been making changes on to that "working copy". To do the
work-on-a-branch thing, we need to put those changes onto a branch that
does not exist at present. I am assuming that none of the modifications
to the working have been checked back in. If they have been checked in
that complicates matters and the following will not work in detail.
Here is the procedure for switching Richard's changes onto a branch.
1) Create the branch
1a) Determine the revision where Richard first checked out from the
trunk. Let us call that revision 10000.
1b) Create the branch with an svn copy. call it sim-recon-rj-pm for this
example. This is repository-to-repository copy, i. e., nothing changes
on the local disk.
svn copy https://halldsvn.jlab.org/repos/trunk/sim-recon@10000
https://halldsvn.jlab.org/repos/branches/sim-recon-rj-pm
Now we have a branch that is exactly the same as the trunk at the point
before Richard made changes. In particular, it does not contain any
changes made to the trunk after Richard did his checkout.
2) "Switch" Richard's changes onto the branch
2a) Backup the working copy, for obvious reasons.
2b) From within the sim-recon directory of the working copy execute a
switch:
svn switch https://halldsvn.jlab.org/repos/branches/sim-recon-rj-pm
Now the working copy thinks that it was originally checked out from the
branch. So any check-ins will not go to the trunk, but onto the branch.
Others, i. e., Paul, can check out the branch, get those changes and
continue working.
3) Merge back onto the trunk.
This is for the future, when work on the branch is complete and we want
to put all the changes back on the trunk. The rub is that we also want
to preserve any changes made to the trunk since revision 10000 as well.
3a) Check out an up-to-date version of the trunk
svn co https://halldsvn.jlab.org/repos/trunk/sim-recon
3b) Do the merge
cd sim-recon
svn merge https://halldsvn.jlab.org/repos/branches/sim-recon-rj-pm
Now the current directory contains all of the changes made on the branch
and all changes made on the trunk since branching. The changes made on
the trunk will be in the working copy, but none of them will have been
checked in. If there are conflicts then life gets interesting.
4) Check in the merged version. From the same directory (sim-recon).
svn checkin
And you are all done!
I tested this now on a junk directory of files that I keep around for
times like these.
All of this having being said, I am not fully convinced we want to go
this way. What do you guys think?
-- Mark
--
Mark M. Ito, Jefferson Lab, marki at jlab.org, (757)269-5295
More information about the Halld-offline
mailing list