From a7d3c680151aa27608c6381db0983b51828c2358 Mon Sep 17 00:00:00 2001 From: Robin Rosenberg Date: Sun, 4 Sep 2011 16:34:15 +0200 Subject: [PATCH] Allow commit when submodule changes are present We do not yet check or validate submodules, but can accept that someone staged a change in a submodule with other tools. Change-Id: I642ede382314bfbd1892dd509a2222885cc5350a Signed-off-by: Robin Rosenberg --- .../org/eclipse/jgit/api/CommitCommand.java | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java index 2412e2c6c..d794c797b 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CommitCommand.java @@ -66,6 +66,7 @@ import org.eclipse.jgit.errors.UnmergedPathException; import org.eclipse.jgit.lib.CommitBuilder; import org.eclipse.jgit.lib.Constants; +import org.eclipse.jgit.lib.FileMode; import org.eclipse.jgit.lib.ObjectId; import org.eclipse.jgit.lib.ObjectInserter; import org.eclipse.jgit.lib.PersonIdent; @@ -341,17 +342,24 @@ private DirCache createTemporaryIndex(ObjectId headId, DirCache index) if (objectExists) { dcEntry.setObjectId(fTree.getEntryObjectId()); } else { - // insert object - if (inserter == null) - inserter = repo.newObjectInserter(); + if (FileMode.GITLINK.equals(dcEntry.getFileMode())) { + // Do not check the content of submodule entries + // Use the old entry information instead. + dcEntry.copyMetaData(index.getEntry(dcEntry + .getPathString())); + } else { + // insert object + if (inserter == null) + inserter = repo.newObjectInserter(); - InputStream inputStream = fTree.openEntryStream(); - try { - dcEntry.setObjectId(inserter.insert( - Constants.OBJ_BLOB, entryLength, - inputStream)); - } finally { - inputStream.close(); + InputStream inputStream = fTree.openEntryStream(); + try { + dcEntry.setObjectId(inserter.insert( + Constants.OBJ_BLOB, entryLength, + inputStream)); + } finally { + inputStream.close(); + } } }