You can't do a "reorg", but you could possibly recreate the branches.
Perhaps a pain, but you certainly could build a script that iterates through the changes on your branch, and recreates them by taking advantage of Subversion's three way merge functionality (using --ignore-ancestry!). More specifically: 1) identify the point in history on the old branch where it exactly matched trunk 2) Create new branch from that point in time that you just identified 3) Do a log on the old branch, identifying each change that was applied to the branch. 4) Checkout a working copy of the new branch 5) For each revision on the *old* branch, do a three way merge followed by commit (make sure you're in the working copy for the new branch!): svn merge --ignore-ancestry -r___:___ /branches/oldbranch You'll need to walk through each revision in the old branch. Start with the branch point revision # to first change revision #. Then first change revision # to second change revision #. Etc. Make sense? Eric. On Thu, Mar 19, 2015 at 4:34 AM, Buddy Butterfly <buddy.butter...@web.de> wrote: > > thanks for explanation. > Yes, indeed it looks like the branches have not been branched from trunk. > So there is no way to reorg and get the "old" branches to be recognized as > correct branches? I did a test and branched from the new trunk and copied > that content of the old branch into it. Now the branch is detected as such > and it can be switched to from trunk. But this means we would have to redo > manually all branches and tags etc? I was hoping there is some other way. > > Am 18.03.2015 um 22:01 schrieb Bert Huijben: > > > > You can avoid the error by passing --ignore-ancestry to switch… but that > doesn’t fix the ancestry problem > > > > > > > > What it tries to tell you is that the branches were not created from > trunk. > > > > > > > > Usually you would > > > > * create trunk > > > > * apply some changes to trunk > > > > * copy that to a branch > > > > * apply some changes to trunk > > > > * copy that to a branch > > > > * update trunk…. > > > > *… > > > > > > > > That way the branches share ancestry with trunk (and thereby with each > other). Further updates on the branches are possible, but they still share > (some) history, as they all originated from the original trunk. > > > > > > > > > > > > Your script says that you created the branches as new, so Subversion is > right that the branches don’t share ancestry with trunk. Usually you only > want to switch between related branches. (A common error is to branch to > the wrong directory level. This is caught by this check). The > --ignore-ancestry override works for those cases that there is no shared > ancestry… but this might tell you that everything will be deleted and > checked out clean (depends on more things), so perhaps in some cases just > deleting and a clean checkout may be faster. > > > > > > > > Bert > > > > > > > > *From:*Eric Johnson [mailto:e...@tibco.com <e...@tibco.com>] > > *Sent:* dinsdag 17 maart 2015 23:14 > > *To:* buddy.butter...@web.de > > *Cc:* users@subversion.apache.org > > *Subject:* Re: Reoganizing svn structure and error "shares no common > ancestry" > > > > > > > > > Does switching to a new branch work before the reorganization that you > did? > > > > > > > > What version of Subversion are you using? > > > > > > > > Can you reproduce the problem with a mock version of your repository? > > > > > > > > When you do an svn log of your new branch, does the history go back to a > common revision with the new trunk? Likewise, with your new trunk, does an > svn log show a common revision with the branch? > > > > > > > > Eric > > > > > > > > > > > > On Mon, Mar 16, 2015 at 3:18 AM, Buddy Butterfly <buddy.butter...@web.de > <mailto:buddy.butter...@web.de> <buddy.butter...@web.de>> wrote: > > > > > > Hi, > > > > finally we would like to restructure our badly structured svn repo. > > Over time a lot of stuff flew into this repo. I have used kdesvn for > > moving the trees online in the repo. kdesvn does a copy and delete > > when moving. I have also tried to use a svn move. Steps were as > follows: > > > > 1. Created a new repo path to the project. > > 2. Created branches, tags and trunk below ist. > > 3. Moved (like described above) original project below the new trunk. > > 4. Similar like 3. for branches with creating the branches/<branch> > and > > moving the old branches to the new ones. > > 5. Checked out the new trunk. > > 6. Tried to switch to one of the new branches. > > > > Step 6. always give the error switching not possible "shares no > common > > ancestry". > > > > The moving like described above is very convenient and would allow > the reorg > > in an acceptable time frame. How is it possible to do this and > create or > > manipulate the history such that a common ancester will be created? > > > > Do you propose another workflow to acomplish this in an easy way? > > > > Thanks a lot and cheers, > > Buddy > > > > > > > > > >