Today, I needed to archive and clean up old machines that were used for a project that has reached its end-of-life. These PCs were used in a laboratory setup, controlling custom electronics.
We run our custom lab software on those PCs and the installation is done by checking out a copy of the source, and doing a local compile. Problem is that these machines have been off the network for a while and some local modifications were necessary. While cleaning up, I found that these modifications were not committed to the SVN repository.
In the meantime however, we worked hard on the software and now I cannot just do an update and commit these old modifications. The solution is to create a branch and commit the changes to that branch.
First, find out what the local version is:
$ svnversion . 1143:1150M
We'll make a branch of revision 1150 first. Then we'll check out that branch in another directory:
$ mkdir ~/tmp $ cd ~/tmp $ svn copy -r 1150 http://repository.example.com/svn/our_software/trunk \ http://repository.example.com/svn/our_software/branch-project-pc0054 Committed revision 2011. $ svn co http://repository.example.com/svn/our_software/branch-project-pc0054 Checked out revision 2011.
Then we'll go to the local copy that was running all the time on this PC, and create a patch of the local version:
$ cd ~/sw $ svn diff > ~/hackwork.patch
Go back to the directory with the newly created branch. Apply that patch to the branch, then commit.
$ cd ~/tmp/our_software/branch-project-pc0054 $ patch -p 0 < ~/hackwork.patch $ svn ci -m "Archiving local modifications" Committed revision 2012.