diff --git a/cli/src/main/java/org/openjdk/skara/cli/GitOpenJDKImport.java b/cli/src/main/java/org/openjdk/skara/cli/GitOpenJDKImport.java index 6e9033a2c..f42f2c4f9 100644 --- a/cli/src/main/java/org/openjdk/skara/cli/GitOpenJDKImport.java +++ b/cli/src/main/java/org/openjdk/skara/cli/GitOpenJDKImport.java @@ -23,18 +23,19 @@ package org.openjdk.skara.cli; import org.openjdk.skara.args.*; -import org.openjdk.skara.json.*; +import org.openjdk.skara.json.JSON; import org.openjdk.skara.vcs.*; -import org.openjdk.skara.vcs.openjdk.*; import org.openjdk.skara.vcs.openjdk.convert.*; import org.openjdk.skara.version.Version; -import java.io.*; +import java.io.IOException; +import java.net.URI; import java.nio.file.*; import java.util.*; +import java.util.function.Supplier; +import java.util.logging.Level; + import static java.util.stream.Collectors.toList; -import java.util.function.*; -import java.util.logging.*; public class GitOpenJDKImport { private static void die(Exception e) { @@ -116,8 +117,8 @@ public static void main(String[] args) { .orElseThrow(error("%s is not a git repository", cwd)); var hgDir = arguments.at(0).via(Path::of); - var hgRepo = ReadOnlyRepository.get(hgDir) - .orElseThrow(error("%s is not a hg repository", hgDir)); + var hgRepo = Repository.get(hgDir) + .orElseThrow(error("%s is not a hg repository", hgDir)); var replacements = new HashMap<Hash, List<String>>(); if (arguments.contains("replacements")) { @@ -203,9 +204,21 @@ public static void main(String[] args) { } var converter = new HgToGitConverter(replacements, corrections, lowercase, punctuated, authors, contributors, sponsors); - var marks = converter.convert(hgRepo, gitRepo); - var hgCommits = gitRepo.root().resolve(".hgcommits"); + List<Mark> marks; + if (Files.exists(hgCommits)) { + var lines = Files.readAllLines(hgCommits); + marks = new ArrayList<>(); + for (int i = 0; i < lines.size(); ++i) { + var markHashes = lines.get(i).split(" "); + var mark = new Mark(i + 1, new Hash(markHashes[0]), new Hash(markHashes[1])); + marks.add(mark); + } + marks = converter.pull(hgRepo, URI.create(hgRepo.pullPath("default")), gitRepo, marks); + } else { + marks = converter.convert(hgRepo, gitRepo); + } + try (var writer = Files.newBufferedWriter(hgCommits)) { for (var mark : marks) { writer.write(mark.hg().hex());