diff --git a/src/main/java/git/lfs/migrate/GitConverter.java b/src/main/java/git/lfs/migrate/GitConverter.java index 53a5b15..30ed2e2 100644 --- a/src/main/java/git/lfs/migrate/GitConverter.java +++ b/src/main/java/git/lfs/migrate/GitConverter.java @@ -262,10 +262,13 @@ public Iterable depends() throws IOException { @Override public ObjectId convert(@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) { + return copy(inserter, loader); + } // Is object already converted? if (isLfsPointer(loader)) { - inserter.insert(loader.getType(), loader.getBytes()); - return id; + return copy(inserter, loader); } final String hash = (uploader == null) ? createLocalFile(id, loader) : createRemoteFile(id, loader, uploader); // Create pointer. @@ -279,6 +282,13 @@ public ObjectId convert(@NotNull ObjectInserter inserter, @NotNull ConvertResolv }; } + @NotNull + private ObjectId copy(@NotNull ObjectInserter inserter, @NotNull ObjectLoader loader) throws IOException { + try (ObjectStream stream = loader.openStream()) { + return inserter.insert(loader.getType(), loader.getSize(), stream); + } + } + @NotNull private String createRemoteFile(@NotNull ObjectId id, @NotNull ObjectLoader loader, @NotNull Uploader uploader) throws IOException { // Create LFS stream. @@ -408,11 +418,7 @@ public Iterable depends() throws IOException { @NotNull @Override public ObjectId convert(@NotNull ObjectInserter inserter, @NotNull ConvertResolver resolver, @Nullable Uploader uploader) throws IOException { - final ObjectLoader loader = reader.open(id); - try (ObjectStream stream = loader.openStream()) { - inserter.insert(loader.getType(), loader.getSize(), stream); - } - return id; + return copy(inserter, reader.open(id)); } }; }