[darcs-users] currently preferred way to import history from Git

Ivan Zakharyaschev imz at altlinux.org
Thu Jan 22 10:16:01 UTC 2015


Hi,

Thanks for all the replies!

2015-01-22 9:53 UTC+03:00, Ganesh Sittampalam <ganesh at earth.li>:

> 'darcs convert' is currently supported.

So, I believe 'darcs convert --import' doesn't have the notion of Git
branches, does it? (At least, there are no examples of using 'darcs
convert --import' on the wiki at all, so I can only guess.)

Then, I believe, I should proceed as follows if I want to import Git
branches AB, A, B from repo "repo", such that AB has been merged into
A and into B:

mkdir repo_darcsimport
cd repo_darcsimport

1. import AB into a darcs directory ("AB"):

mkdir AB
cd AB
(cd ../../repo; git fast-export AB) | darcs convert import
cd ..

2. import the complement of AB w.r.t. A into "A"

darcs get AB A
cd A
(cd ../../repo; git fast-export AB..A) | darcs convert import
cd ..


2. import the complement of AB w.r.t. B into "B" (analoguosly)

Correct?

Actually, after I make the transition to darcs, I'm thinking about a
workflow with a reduced number of branches (no intersection branch
AB), so I won't need a working darcs directory for AB. Does it make
sense?

Say, A is a feature I'm working on, and B is some implementation aspect.

(In Git, I had to have the AB branch to avoid the hassle of
cherry-picking a new patch from either A and B, and making sure that
it is clear from the history that there is a single patch which is
relevant for both A and B.)

When I'm hacking the implementation aspect B, I plan to work in the
darcs working directory "B", then pull the patches relevant for A (by
interactively selecting them):

cd ../A
darcs pull ../B

(and a similar situation will arise whenever I am working on feature
A, and have touched--among other changes--the aspect B of the
implementation, then I will want to pull the relevant subset of new
changes into B).

(There is a complication in this picture although: not to review the
patches I have already decided on, I should have a dir for the last
reviewed state of B, and another one--the actual working dir for B,
and:

cd ../A
darcs pull ../B.working --complement ../B.reviewed
# if successful then
cd ../B.reviewed
darcs pull --all ../B.working

I could use tags for marking reviewed patches, but then I would need a
supply of numerous tags, and a flood of meaningless tags in the repo.)

Whenever I want to show a simplified version of the program (without
aspect B, but with feature A), I can create a temporary darcs working
dir with the intersection of A and of the complement to B:

mkdir A_essence
cd A_essence
darcs pull ../A --complement ../B

>> These things seem not to be clarified on the wiki. At least, a note in
>> <http://darcs.net/DarcsBridgeUsage> stating that it is obsolete (if
>> this is true) and linking to the more fresh page would help.
>
> Good point, I've updated it as you suggest.
>
>> Also, if I'm using darcs-2.8.4 from my distro, and according to the
>> wiki, `darcs convert` is available in darcs-2.10 only, then should I
>> build a new darcs or try to build darcs-bridge?
>
> I'd suggest building a new darcs and using 'darcs convert'.

-- 
Ivan


More information about the darcs-users mailing list