tags:

views:

170

answers:

4

How do I take a range of commits in my SVN repository and combine them?

For example, revisions 4-10 exist in the repository and I want to combine them into a new revision 4 that contains all the changes in the previous 4-10.

I don't want to break any existing tags, which were created via svn copy.

This is because the repository was previously in ClearCase, and Polarion's migration tool left a huge number of single file commits that need to be cleaned up.

+2  A: 

Reading between the lines, take a look at svk, which should let you run a local repository then commit a number of changes at once to the main repository.

Draemon
+1  A: 

You can't do that without creating a new repository, so better just get over it.

If you really really need to do this you could probably do it with "svnadmin dump" and "svnadmin load".

Edit: If you just want to push the commits out of the history of the trunk but are fine with them remaining elsewhere in the repository then something similar to Manu's proposal is a workable solution: Rename trunk to old_trunk, copy the revision before the range you want to merge to trunk, then merge the revisions in the range and commit.

starblue
IIRC you couldn't do this with svnadmin dump and load, because there are no means to combine the commits in the dump.
Laurynas Biveinis
+4  A: 

You can create a branch at revision 3 and merge revisions 4-10 into the branch

Manu
probably a lot of work, but it's the only more or less clean way, I'm afraid
jeroenh
+1  A: 

If you really need to do this, then check out each revision (not single-file commit) from ClearCase and then manually copy the files over a new SVN checkout using a tool like WinMerge to make sure all file adds and deletions are copied over as well as changes. Then do an SVN commit.

If this is too much manual work due to the number of ClearCase commits (although you could probably automate this without too much difficulty), then consider just committing major revisions to SVN (e.g., point releases) manually.

If that is not feasible, then consider not bringing over any revision history from ClearCase - just start fresh with SVN. Perhaps commit a text file with the old change log from ClearCase for historical purposes, so that if someone needs to go back and get some old code, they can figure out what revision to look for.

RedFilter