Hi, Fri, 23 Jan 2015 17:16 +0100, Ben Franksen <ben.frank...@online.de>: > Ivan Zakharyaschev wrote: >> 2015-01-22 9:53 UTC+03:00, Ganesh Sittampalam <gan...@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? > > Yes, that should work, assuming that AB indeed refers to the "splitting > point" beyond which A and B differ.
Now, after I've been into exploring these things more closely, I can tell that this is not quite possible yet with the current 'darcs convert import'. 'darcs convert import' only creates repos from scratch. So 2. is impossible; one can't feed extra history (in Git's notation: AB..A) to an existing repo (A) which was initially made a clone of AB. So I've tried another way. I've done an experiment where I independently did an import of AB and A into two darcs repos, hoping that the identical common source Git commits would result in identical darcs patches, but that's not true. cd A; darcs pull ../AB --dry-run reports another instance of the common patch. They have different IDs. (If someone is interested, I can post my complete shell session to demonstrate this.) I'm not quite sure whether this is expected and whether this could be fixed easily. So I looked into the code, and couldn't find out why the generated IDs should differ: -- Darcs/Patch/Index/Types.hs:80: makePatchID = PID . makePatchname -- Darcs/Patch/Info.hs:282: makePatchname :: PatchInfo -> SHA1 makePatchname pi = sha1PS sha1_me -- and PatchInfo seems to contain only the info that must be identical for identical Git commits: data PatchInfo = PatchInfo { _piDate :: !B.ByteString , _piName :: !B.ByteString , _piAuthor :: !B.ByteString , _piLog :: ![B.ByteString] , isInverted :: !Bool } -- Perhaps someone here has ideas whether the current behavior giving non-identical patches could and should be fixed. Best regards, -- Ivan _______________________________________________ darcs-users mailing list darcs-users@darcs.net http://lists.osuosl.org/mailman/listinfo/darcs-users