Skip to content

Commit

Permalink
Allow continue after restart
Browse files Browse the repository at this point in the history
  • Loading branch information
bozaro committed Dec 11, 2016
1 parent c4c4b6d commit 0c82bd6
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 10 deletions.
19 changes: 11 additions & 8 deletions src/main/java/git/lfs/migrate/GitConverter.java
Expand Up @@ -112,7 +112,7 @@ public Iterable<TaskKey> depends() throws IOException {

@NotNull
@Override
public ObjectId convert(@NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
public ObjectId convert(@NotNull Repository dstRepo, @NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
return objectId;
}
};
Expand All @@ -131,7 +131,7 @@ public Iterable<TaskKey> depends() {

@NotNull
@Override
public ObjectId convert(@NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
public ObjectId convert(@NotNull Repository dstRepo, @NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
final ObjectId id = resolver.resolve(TaskType.Simple, "", revObject.getObject());
final TagBuilder builder = new TagBuilder();
builder.setMessage(revObject.getFullMessage());
Expand Down Expand Up @@ -159,7 +159,7 @@ public Iterable<TaskKey> depends() {

@NotNull
@Override
public ObjectId convert(@NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
public ObjectId convert(@NotNull Repository dstRepo, @NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
final CommitBuilder builder = new CommitBuilder();
builder.setAuthor(revObject.getAuthorIdent());
builder.setCommitter(revObject.getCommitterIdent());
Expand Down Expand Up @@ -220,7 +220,7 @@ public Iterable<TaskKey> depends() throws IOException {

@NotNull
@Override
public ObjectId convert(@NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
public ObjectId convert(@NotNull Repository dstRepo, @NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
final List<GitTreeEntry> entries = getEntries();
// Create new tree.
Collections.sort(entries);
Expand Down Expand Up @@ -270,14 +270,16 @@ public Iterable<TaskKey> depends() throws IOException {

@NotNull
@Override
public ObjectId convert(@NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
public ObjectId convert(@NotNull Repository dstRepo, @NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
final ObjectLoader loader = reader.open(id, Constants.OBJ_BLOB);
// Is empty blob (see #21)?
if (loader.getSize() == 0) {
if (dstRepo.hasObject(id)) return id;
return copy(inserter, loader);
}
// Is object already converted?
if (isLfsPointer(loader)) {
if (dstRepo.hasObject(id)) return id;
return copy(inserter, loader);
}
final String hash = (uploader == null) ? createLocalFile(id, loader) : createRemoteFile(id, loader, uploader);
Expand Down Expand Up @@ -388,7 +390,7 @@ public Iterable<TaskKey> depends() throws IOException {

@NotNull
@Override
public ObjectId convert(@NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
public ObjectId convert(@NotNull Repository dstRepo, @NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
final Set<String> attributes = new TreeSet<>();
for (String glob : globs) {
attributes.add(glob + "\tfilter=lfs diff=lfs merge=lfs -text");
Expand Down Expand Up @@ -423,7 +425,8 @@ public Iterable<TaskKey> depends() throws IOException {

@NotNull
@Override
public ObjectId convert(@NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
public ObjectId convert(@NotNull Repository dstRepo, @NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException {
if (dstRepo.hasObject(id)) return id;
return copy(inserter, reader.open(id));
}
};
Expand Down Expand Up @@ -469,7 +472,7 @@ public interface ConvertTask {
Iterable<TaskKey> depends() throws IOException;

@NotNull
ObjectId convert(@NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException;
ObjectId convert(@NotNull Repository dstRepo, @NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException;
}

@FunctionalInterface
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/git/lfs/migrate/Main.java
Expand Up @@ -156,6 +156,7 @@ public static void processRepository(@NotNull Path srcPath, @NotNull Path dstPat

try (DB cache = DBMaker.fileDB(cachePath.resolve("git-lfs-migrate.mapdb").toFile())
.fileMmapEnableIfSupported()
.checksumHeaderBypass()
.make()) {
final GitConverter converter = new GitConverter(cache, dstPath, globs);
dstRepo.create(true);
Expand Down Expand Up @@ -204,7 +205,7 @@ private static void processSingleThread(@NotNull GitConverter converter, @NotNul
}
}
if (taskReady) {
final ObjectId objectId = converter.convertTask(reader, taskKey).convert(inserter, converted::get, uploader);
final ObjectId objectId = converter.convertTask(reader, taskKey).convert(dstRepo, inserter, converted::get, uploader);
converted.put(taskKey, objectId);
reporter.increment();
}
Expand Down Expand Up @@ -259,7 +260,7 @@ private static Deque<TaskKey> processWithoutDependencies(@NotNull GitConverter c
while (!done.get()) {
final TaskKey taskKey = channel.take();
if (taskKey.getType() == GitConverter.TaskType.EndMark) break;
final ObjectId objectId = converter.convertTask(reader, taskKey).convert(inserter, converted::get, uploader);
final ObjectId objectId = converter.convertTask(reader, taskKey).convert(dstRepo, inserter, converted::get, uploader);
converted.put(taskKey, objectId);
reporter.increment();
}
Expand Down

0 comments on commit 0c82bd6

Please sign in to comment.