diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java index 2bf8160e2..959bf4334 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/storage/file/PackFile.java @@ -96,6 +96,8 @@ public class PackFile implements Iterable { private final File packFile; + private volatile String packName; + final int hash; private RandomAccessFile fd; @@ -177,11 +179,15 @@ public class PackFile implements Iterable { /** @return name extracted from {@code pack-*.pack} pattern. */ public String getPackName() { - String name = getPackFile().getName(); - if (name.startsWith("pack-")) - name = name.substring("pack-".length()); - if (name.endsWith(".pack")) - name = name.substring(0, name.length() - ".pack".length()); + String name = packName; + if (name == null) { + name = getPackFile().getName(); + if (name.startsWith("pack-")) + name = name.substring("pack-".length()); + if (name.endsWith(".pack")) + name = name.substring(0, name.length() - ".pack".length()); + packName = name; + } return name; }