Hello,

I've recently stubled upon that very same problem and I think that I found a 
solution that at least solves some of the possible problems.

First here my guess what the problem is, why the conversion doesn't work. In 
the conversion process darcs might change the patch dependencies. That means 
that a patch P1 suddenly depends on a patch P2 after the conversion which it 
didn't before the conversion. Additionally these changes depend on the order 
the patches get presented to darcs in the conversion process. So we have to 
make sure that common patches are presented to the repository converter in 
the exactly same order. This order is dependent on the order the patches get 
added (recorded, pulled) to the repository.

First creating a tree that contains all patches converting that tree and then 
removing the pathes not wanted may but will probably not work because after 
the conversion the patch dependencies might have changed so that it might not 
be possible to remove exactly those patches that you want.

My setup has been a bit different. I was having one tree that contains the 
main branch (Base) and several trees containing additional patches 
(Branch1, ... BranchN).

The first step in the conversation progress was to create new darcs-1 trees 
containing the patches in the right order. So "darcs get" the Base tree 
again. Repeat that for all branches. Now you have a new base and new trees 
for the branches that all contain only the patches from the base tree. Now go 
to each new tree and pull the additional changes.

With this action you will make sure that the addional patches actually come 
AFTER the base patches in the darcs internal database. This might not be the 
case in the original branches because of the order the patches get recorded. 
Maybe you did pull patches from base to the branches after you recorded 
changes in the branches.

Anyway now you can convert those trees to darcs-2 each one independently. And 
it should also be possible to push and pull patches from the new trees.

In case I have written it up too confusing here a list of commands to convert 
2 trees base and 2 branches (with additional patches) to darcs-2.

darcs get base base_new
darcs get base branch1_new
darcs get base branch2_new
cd branch1_new
darcs pull ../branch1
cd ../branch2_new
darcs pull ../branch2
darcs convert base_new d2_base
darcs convert branch1_new d2_branch1
darcs convert branch2_new d2_branch2

now you have the converted 3 trees in d2_xxxxx

All this is without guarantee though. I used it to convert my 2 trees. But 
please try and see if you can still push your patches around in the new trees 
and if the results are what you expect.

Things become more complicated if the branches to not contain all the patches 
from the base. In that case you probably need to find the common base of the 
2 branches and then pull the additional changes of both trees into the 
conversion trees. 

I hope this helps and I hope I was able to make myself clear.

Andreas
_______________________________________________
darcs-users mailing list
[email protected]
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to