From d5f431af20cf181bf5e6a0e1100cc9e8b0ab5cf1 Mon Sep 17 00:00:00 2001 From: Holger Freyther Date: Sun, 13 Jan 2008 17:08:33 +0000 Subject: * Import revisions without a parent properly! The diffing would have been all right but we have not diffed the two manifests at all. Now we are diffinf an empty manifest against the initial one. --- contrib/mtn2git/mtn2git.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/contrib/mtn2git/mtn2git.py b/contrib/mtn2git/mtn2git.py index 94f467598e..db29edf725 100755 --- a/contrib/mtn2git/mtn2git.py +++ b/contrib/mtn2git/mtn2git.py @@ -244,6 +244,12 @@ def fast_import(ops, revision): all_modifications = all_modifications.union(modified) all_deleted = all_deleted.union(deleted) + if len(revision["parent"]) == 0: + (added, modified, deleted) = diff_manifest(build_tree([],""), current_tree) + all_added = all_added.union(added) + all_modifications = all_modifications.union(modified) + all_deleted = all_deleted.union(deleted) + # TODO: # Readd the sanity check to see if we deleted and modified an entry. This # could probably happen if we have more than one parent (on a merge)? -- cgit v1.2.3 From 1052bee548c8194cbee9298e947c00937f68450a Mon Sep 17 00:00:00 2001 From: Holger Freyther Date: Sun, 13 Jan 2008 17:18:39 +0000 Subject: * Incrementally updating the former heads did not work right. Sometimes we have saved bogus data and it could be dangerous. * Back-out this change and save the heads at the end of the script. --- contrib/mtn2git/mtn2git.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/contrib/mtn2git/mtn2git.py b/contrib/mtn2git/mtn2git.py index db29edf725..1de3010756 100755 --- a/contrib/mtn2git/mtn2git.py +++ b/contrib/mtn2git/mtn2git.py @@ -430,10 +430,7 @@ def main(mtn_cli, db, rev): for head in heads: print >> sys.stderr, old_heads, head all_revs += ops.ancestry_difference(head, old_heads) - for rev in all_revs: - if not rev in branch_heads: - branch_heads[rev] = [] - branch_heads[rev].append(branch) + status.former_heads[branch] = heads sorted_revs = [rev for rev in ops.toposort(all_revs)] @@ -443,10 +440,6 @@ def main(mtn_cli, db, rev): else: print >> sys.stderr, "Going to import revision ", rev fast_import(ops, parse_revision(ops, rev)) - branches = branch_heads[rev] - for branch in branches: - status.former_heads[branch] = [rev] - if __name__ == "__main__": import optparse @@ -471,3 +464,4 @@ if __name__ == "__main__": print >> sys.stderr, "Failed to open the status file" main(options.mtn, options.database, options.rev) status.store(options.status) + -- cgit v1.2.3