BIBD
BIBD

Reputation: 15414

Is there a way to append one svn trunk onto another, including the change history?

I have a developer who got a little ambitious, and didn't understand branching in SVN and came up with their own solution. They needed to make a big change, but didn't want to impede any bug fixes in the main trunk. So, they created a new folder at the same level as main project folder for this change.

The original looks like this (at rev 100)

/bigProj/branch
        /tag
        /trunk/config
              /docs
              /src 

and the new folder looks like this (at rev 150)

/bigProjChange/trunk/config
                    /docs
                    /src

What I'd love to do, is airlift the contents of bigProjChange either into a branch of bigProj or append those ~50 revisions onto the end of the trunk of bigProj (there were no bug fixes, so this creativity served no purpose). And then blow away bigProjChange because of the confusion it is causing.

Is there a way to do this and keep the changes/comments from everything that happened in bigProjChange? Or am I stuck taking the contents of Rev 150 of bigProjChange and doing a mas update of bigProj's trunk?

Upvotes: 2

Views: 49

Answers (1)

Friedrich
Friedrich

Reputation: 4846

If both bigProj and bigProjChanged live in the same repository, you can simply svn merge them as you would with any branch. Keep in mind the so-called standard layout with trunk/branches/tags is purely by convention. To Subversion, the directory names don't make a difference.

The easy way to resolve this is as you would do any reintegrate-merge:

svn switch ^/bigProj/trunk
svn merge ^/bigProjChanged/trunk .
# resolve conflicts, if any
svn commit -m"Reintegrate bigProjChanged"

svn rm ^/bigProjChanged -m"Blow away!"

I would even allow for the hypothesis that the developer who created those branches had a pretty good understanding of branching in Subversion.

Upvotes: 3

Related Questions