Rename PackFile to Pack

Pack better represents the purpose of the object and paves the way to
add a PackFile object that extends File.

Change-Id: I39b4f697902d395e9b6df5e8ce53078ce72fcea3
Signed-off-by: Nasser Grainawi <quic_nasserg@quicinc.com>
This commit is contained in:
Nasser Grainawi 2021-02-10 22:42:41 -07:00
parent fe4b2a4656
commit efb154fc24
37 changed files with 265 additions and 262 deletions

View File

@ -20,7 +20,7 @@
import javax.servlet.http.HttpServletResponse;
import org.eclipse.jgit.internal.storage.file.ObjectDirectory;
import org.eclipse.jgit.internal.storage.file.PackFile;
import org.eclipse.jgit.internal.storage.file.Pack;
import org.eclipse.jgit.lib.ObjectDatabase;
/** Sends the current list of pack files, sorted most recent first. */
@ -38,7 +38,7 @@ private static String packList(HttpServletRequest req) {
final StringBuilder out = new StringBuilder();
final ObjectDatabase db = getRepository(req).getObjectDatabase();
if (db instanceof ObjectDirectory) {
for (PackFile pack : ((ObjectDirectory) db).getPacks()) {
for (Pack pack : ((ObjectDirectory) db).getPacks()) {
out.append("P ");
out.append(pack.getPackFile().getName());
out.append('\n');

View File

@ -43,7 +43,7 @@
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.internal.storage.file.LockFile;
import org.eclipse.jgit.internal.storage.file.ObjectDirectory;
import org.eclipse.jgit.internal.storage.file.PackFile;
import org.eclipse.jgit.internal.storage.file.Pack;
import org.eclipse.jgit.internal.storage.file.PackIndex.MutableEntry;
import org.eclipse.jgit.internal.storage.pack.PackWriter;
import org.eclipse.jgit.lib.AnyObjectId;
@ -773,7 +773,7 @@ protected void writeFile(String name, byte[] bin)
rw.writeInfoRefs();
final StringBuilder w = new StringBuilder();
for (PackFile p : fr.getObjectDatabase().getPacks()) {
for (Pack p : fr.getObjectDatabase().getPacks()) {
w.append("P ");
w.append(p.getPackFile().getName());
w.append('\n');
@ -954,7 +954,7 @@ public void close() {
}
private static void prunePacked(ObjectDirectory odb) throws IOException {
for (PackFile p : odb.getPacks()) {
for (Pack p : odb.getPacks()) {
for (MutableEntry e : p)
FileUtils.delete(odb.fileFor(e.toObjectId()));
}

View File

@ -157,7 +157,7 @@ public void testNotPackTwice(boolean aggressive) throws Exception {
.create();
tr.update("refs/tags/t1", second);
Collection<PackFile> oldPacks = tr.getRepository().getObjectDatabase()
Collection<Pack> oldPacks = tr.getRepository().getObjectDatabase()
.getPacks();
assertEquals(0, oldPacks.size());
stats = gc.getStatistics();
@ -171,7 +171,7 @@ public void testNotPackTwice(boolean aggressive) throws Exception {
stats = gc.getStatistics();
assertEquals(0, stats.numberOfLooseObjects);
List<PackFile> packs = new ArrayList<>(
List<Pack> packs = new ArrayList<>(
repo.getObjectDatabase().getPacks());
assertEquals(11, packs.get(0).getObjectCount());
}

View File

@ -156,8 +156,8 @@ public void repackAndUploadPack() throws Exception {
}
}
PackFile getSinglePack(FileRepository r) {
Collection<PackFile> packs = r.getObjectDatabase().getPacks();
Pack getSinglePack(FileRepository r) {
Collection<Pack> packs = r.getObjectDatabase().getPacks();
assertEquals(1, packs.size());
return packs.iterator().next();
}
@ -206,11 +206,11 @@ public void testInterruptGc() throws Exception {
SampleDataRepositoryTestCase.copyCGitTestPacks(repo);
ExecutorService executor = Executors.newSingleThreadExecutor();
final CountDownLatch latch = new CountDownLatch(1);
Future<Collection<PackFile>> result = executor.submit(() -> {
Future<Collection<Pack>> result = executor.submit(() -> {
long start = System.currentTimeMillis();
System.out.println("starting gc");
latch.countDown();
Collection<PackFile> r = gc.gc();
Collection<Pack> r = gc.gc();
System.out.println(
"gc took " + (System.currentTimeMillis() - start) + " ms");
return r;

View File

@ -36,9 +36,9 @@ public void testKeepFiles() throws Exception {
assertEquals(4, stats.numberOfPackedObjects);
assertEquals(1, stats.numberOfPackFiles);
Iterator<PackFile> packIt = repo.getObjectDatabase().getPacks()
Iterator<Pack> packIt = repo.getObjectDatabase().getPacks()
.iterator();
PackFile singlePack = packIt.next();
Pack singlePack = packIt.next();
assertFalse(packIt.hasNext());
String packFileName = singlePack.getPackFile().getPath();
String keepFileName = packFileName.substring(0,
@ -58,7 +58,7 @@ public void testKeepFiles() throws Exception {
assertEquals(2, stats.numberOfPackFiles);
// check that no object is packed twice
Iterator<PackFile> packs = repo.getObjectDatabase().getPacks()
Iterator<Pack> packs = repo.getObjectDatabase().getPacks()
.iterator();
PackIndex ind1 = packs.next().getIndex();
assertEquals(4, ind1.getObjectCount());

View File

@ -72,14 +72,14 @@ public void testSamePackDifferentCompressionDetectChecksumChanged()
c.setInt(ConfigConstants.CONFIG_GC_SECTION, null,
ConfigConstants.CONFIG_KEY_AUTOPACKLIMIT, 1);
c.save();
Collection<PackFile> packs = gc(Deflater.NO_COMPRESSION);
Collection<Pack> packs = gc(Deflater.NO_COMPRESSION);
assertEquals("expected 1 packfile after gc", 1, packs.size());
PackFile p1 = packs.iterator().next();
Pack p1 = packs.iterator().next();
PackFileSnapshot snapshot = p1.getFileSnapshot();
packs = gc(Deflater.BEST_COMPRESSION);
assertEquals("expected 1 packfile after gc", 1, packs.size());
PackFile p2 = packs.iterator().next();
Pack p2 = packs.iterator().next();
File pf = p2.getPackFile();
// changing compression level with aggressive gc may change size,
@ -153,11 +153,11 @@ public void testDetectModificationAlthoughSameSizeAndModificationtime()
createTestRepo(testDataSeed, testDataLength);
// repack to create initial packfile
PackFile pf = repackAndCheck(5, null, null, null);
Path packFilePath = pf.getPackFile().toPath();
AnyObjectId chk1 = pf.getPackChecksum();
String name = pf.getPackName();
Long length = Long.valueOf(pf.getPackFile().length());
Pack p = repackAndCheck(5, null, null, null);
Path packFilePath = p.getPackFile().toPath();
AnyObjectId chk1 = p.getPackChecksum();
String name = p.getPackName();
Long length = Long.valueOf(p.getPackFile().length());
FS fs = db.getFS();
Instant m1 = fs.lastModifiedInstant(packFilePath);
@ -207,16 +207,16 @@ public void testDetectModificationAlthoughSameSizeAndModificationtimeAndFileKey(
createTestRepo(testDataSeed, testDataLength);
// Repack to create initial packfile. Make a copy of it
PackFile pf = repackAndCheck(5, null, null, null);
Path packFilePath = pf.getPackFile().toPath();
Pack p = repackAndCheck(5, null, null, null);
Path packFilePath = p.getPackFile().toPath();
Path fn = packFilePath.getFileName();
assertNotNull(fn);
String packFileName = fn.toString();
Path packFileBasePath = packFilePath
.resolveSibling(packFileName.replaceAll(".pack", ""));
AnyObjectId chk1 = pf.getPackChecksum();
String name = pf.getPackName();
Long length = Long.valueOf(pf.getPackFile().length());
AnyObjectId chk1 = p.getPackChecksum();
String name = p.getPackName();
Long length = Long.valueOf(p.getPackFile().length());
copyPack(packFileBasePath, "", ".copy1");
// Repack to create second packfile. Make a copy of it
@ -280,10 +280,10 @@ private Path copyPack(Path base, String srcSuffix, String dstSuffix)
Paths.get(base + ".pack" + dstSuffix));
}
private PackFile repackAndCheck(int compressionLevel, String oldName,
private Pack repackAndCheck(int compressionLevel, String oldName,
Long oldLength, AnyObjectId oldChkSum)
throws IOException, ParseException {
PackFile p = getSinglePack(gc(compressionLevel));
Pack p = getSinglePack(gc(compressionLevel));
File pf = p.getPackFile();
// The following two assumptions should not cause the test to fail. If
// on a certain platform we get packfiles (containing the same git
@ -298,14 +298,14 @@ private PackFile repackAndCheck(int compressionLevel, String oldName,
return p;
}
private PackFile getSinglePack(Collection<PackFile> packs) {
Iterator<PackFile> pIt = packs.iterator();
PackFile p = pIt.next();
private Pack getSinglePack(Collection<Pack> packs) {
Iterator<Pack> pIt = packs.iterator();
Pack p = pIt.next();
assertFalse(pIt.hasNext());
return p;
}
private Collection<PackFile> gc(int compressionLevel)
private Collection<Pack> gc(int compressionLevel)
throws IOException, ParseException {
GC gc = new GC(db);
PackConfig pc = new PackConfig(db.getConfig());

View File

@ -160,7 +160,7 @@ public void singlePack() throws Exception {
}
assertPacksOnly();
List<PackFile> packs = listPacks();
List<Pack> packs = listPacks();
assertEquals(1, packs.size());
assertEquals(3, packs.get(0).getObjectCount());
@ -193,7 +193,7 @@ public void multiplePacks() throws Exception {
}
assertPacksOnly();
List<PackFile> packs = listPacks();
List<Pack> packs = listPacks();
assertEquals(2, packs.size());
assertEquals(1, packs.get(0).getObjectCount());
assertEquals(1, packs.get(1).getObjectCount());
@ -216,9 +216,9 @@ public void largeBlob() throws Exception {
}
assertPacksOnly();
Collection<PackFile> packs = listPacks();
Collection<Pack> packs = listPacks();
assertEquals(1, packs.size());
PackFile p = packs.iterator().next();
Pack p = packs.iterator().next();
assertEquals(1, p.getObjectCount());
try (ObjectReader reader = db.newObjectReader()) {
@ -237,9 +237,9 @@ public void overwriteExistingPack() throws Exception {
}
assertPacksOnly();
List<PackFile> packs = listPacks();
List<Pack> packs = listPacks();
assertEquals(1, packs.size());
PackFile pack = packs.get(0);
Pack pack = packs.get(0);
assertEquals(1, pack.getObjectCount());
String inode = getInode(pack.getPackFile());
@ -372,7 +372,7 @@ public void readBackSmallFiles() throws Exception {
}
assertPacksOnly();
List<PackFile> packs = listPacks();
List<Pack> packs = listPacks();
assertEquals(1, packs.size());
assertEquals(2, packs.get(0).getObjectCount());
@ -489,16 +489,16 @@ public void readBackSmallObjectBeforeLargeObject() throws Exception {
}
}
private List<PackFile> listPacks() throws Exception {
List<PackFile> fromOpenDb = listPacks(db);
List<PackFile> reopened;
private List<Pack> listPacks() throws Exception {
List<Pack> fromOpenDb = listPacks(db);
List<Pack> reopened;
try (FileRepository db2 = new FileRepository(db.getDirectory())) {
reopened = listPacks(db2);
}
assertEquals(fromOpenDb.size(), reopened.size());
for (int i = 0 ; i < fromOpenDb.size(); i++) {
PackFile a = fromOpenDb.get(i);
PackFile b = reopened.get(i);
Pack a = fromOpenDb.get(i);
Pack b = reopened.get(i);
assertEquals(a.getPackName(), b.getPackName());
assertEquals(
a.getPackFile().getAbsolutePath(), b.getPackFile().getAbsolutePath());
@ -508,9 +508,9 @@ private List<PackFile> listPacks() throws Exception {
return fromOpenDb;
}
private static List<PackFile> listPacks(FileRepository db) throws Exception {
private static List<Pack> listPacks(FileRepository db) throws Exception {
return db.getObjectDatabase().getPacks().stream()
.sorted(comparing(PackFile::getPackName)).collect(toList());
.sorted(comparing(Pack::getPackName)).collect(toList());
}
private PackInserter newInserter() {

View File

@ -57,7 +57,7 @@
import org.junit.Before;
import org.junit.Test;
public class PackFileTest extends LocalDiskRepositoryTestCase {
public class PackTest extends LocalDiskRepositoryTestCase {
private int streamThreshold = 16 * 1024;
private TestRng rng;
@ -228,21 +228,21 @@ public void testDelta_FailsOver2GiB() throws Exception {
PackedObjectInfo a = new PackedObjectInfo(idA);
PackedObjectInfo b = new PackedObjectInfo(idB);
TemporaryBuffer.Heap pack = new TemporaryBuffer.Heap(64 * 1024);
packHeader(pack, 2);
a.setOffset(pack.length());
objectHeader(pack, Constants.OBJ_BLOB, base.length);
deflate(pack, base);
TemporaryBuffer.Heap packContents = new TemporaryBuffer.Heap(64 * 1024);
packHeader(packContents, 2);
a.setOffset(packContents.length());
objectHeader(packContents, Constants.OBJ_BLOB, base.length);
deflate(packContents, base);
ByteArrayOutputStream tmp = new ByteArrayOutputStream();
DeltaEncoder de = new DeltaEncoder(tmp, base.length, 3L << 30);
de.copy(0, 1);
byte[] delta = tmp.toByteArray();
b.setOffset(pack.length());
objectHeader(pack, Constants.OBJ_REF_DELTA, delta.length);
idA.copyRawTo(pack);
deflate(pack, delta);
byte[] footer = digest(pack);
b.setOffset(packContents.length());
objectHeader(packContents, Constants.OBJ_REF_DELTA, delta.length);
idA.copyRawTo(packContents);
deflate(packContents, delta);
byte[] footer = digest(packContents);
File dir = new File(repo.getObjectDatabase().getDirectory(),
"pack");
@ -250,7 +250,7 @@ public void testDelta_FailsOver2GiB() throws Exception {
File idxName = new File(dir, idA.name() + ".idx");
try (FileOutputStream f = new FileOutputStream(packName)) {
f.write(pack.toByteArray());
f.write(packContents.toByteArray());
}
try (FileOutputStream f = new FileOutputStream(idxName)) {
@ -261,14 +261,14 @@ public void testDelta_FailsOver2GiB() throws Exception {
new PackIndexWriterV1(f).write(list, footer);
}
PackFile packFile = new PackFile(packName, PackExt.INDEX.getBit());
Pack pack = new Pack(packName, PackExt.INDEX.getBit());
try {
packFile.get(wc, b);
pack.get(wc, b);
fail("expected LargeObjectException.ExceedsByteArrayLimit");
} catch (LargeObjectException.ExceedsByteArrayLimit bad) {
assertNull(bad.getObjectId());
} finally {
packFile.close();
pack.close();
}
}
}

View File

@ -72,7 +72,7 @@ public class PackWriterTest extends SampleDataRepositoryTestCase {
private ByteArrayOutputStream os;
private PackFile pack;
private Pack pack;
private ObjectInserter inserter;
@ -840,7 +840,7 @@ private void verifyOpenPack(boolean thin) throws IOException {
p.setAllowThin(thin);
p.setIndexVersion(2);
p.parse(NullProgressMonitor.INSTANCE);
pack = p.getPackFile();
pack = p.getPack();
assertNotNull("have PackFile after parsing", pack);
}

View File

@ -32,8 +32,8 @@ public void test003_lookupCompressedObject() throws IOException {
final ObjectId id;
final ObjectLoader or;
PackFile pr = null;
for (PackFile p : db.getObjectDatabase().getPacks()) {
Pack pr = null;
for (Pack p : db.getObjectDatabase().getPacks()) {
if (PACK_NAME.equals(p.getPackName())) {
pr = p;
break;

View File

@ -29,7 +29,7 @@
import org.eclipse.jgit.errors.TooLargeObjectInPackException;
import org.eclipse.jgit.internal.JGitText;
import org.eclipse.jgit.internal.storage.file.ObjectDirectoryPackParser;
import org.eclipse.jgit.internal.storage.file.PackFile;
import org.eclipse.jgit.internal.storage.file.Pack;
import org.eclipse.jgit.junit.JGitTestUtil;
import org.eclipse.jgit.junit.RepositoryTestCase;
import org.eclipse.jgit.junit.TestRepository;
@ -63,16 +63,16 @@ public void test1() throws IOException {
try (InputStream is = new FileInputStream(packFile)) {
ObjectDirectoryPackParser p = (ObjectDirectoryPackParser) index(is);
p.parse(NullProgressMonitor.INSTANCE);
PackFile file = p.getPackFile();
Pack pack = p.getPack();
assertTrue(file.hasObject(ObjectId.fromString("4b825dc642cb6eb9a060e54bf8d69288fbee4904")));
assertTrue(file.hasObject(ObjectId.fromString("540a36d136cf413e4b064c2b0e0a4db60f77feab")));
assertTrue(file.hasObject(ObjectId.fromString("5b6e7c66c276e7610d4a73c70ec1a1f7c1003259")));
assertTrue(file.hasObject(ObjectId.fromString("6ff87c4664981e4397625791c8ea3bbb5f2279a3")));
assertTrue(file.hasObject(ObjectId.fromString("82c6b885ff600be425b4ea96dee75dca255b69e7")));
assertTrue(file.hasObject(ObjectId.fromString("902d5476fa249b7abc9d84c611577a81381f0327")));
assertTrue(file.hasObject(ObjectId.fromString("aabf2ffaec9b497f0950352b3e582d73035c2035")));
assertTrue(file.hasObject(ObjectId.fromString("c59759f143fb1fe21c197981df75a7ee00290799")));
assertTrue(pack.hasObject(ObjectId.fromString("4b825dc642cb6eb9a060e54bf8d69288fbee4904")));
assertTrue(pack.hasObject(ObjectId.fromString("540a36d136cf413e4b064c2b0e0a4db60f77feab")));
assertTrue(pack.hasObject(ObjectId.fromString("5b6e7c66c276e7610d4a73c70ec1a1f7c1003259")));
assertTrue(pack.hasObject(ObjectId.fromString("6ff87c4664981e4397625791c8ea3bbb5f2279a3")));
assertTrue(pack.hasObject(ObjectId.fromString("82c6b885ff600be425b4ea96dee75dca255b69e7")));
assertTrue(pack.hasObject(ObjectId.fromString("902d5476fa249b7abc9d84c611577a81381f0327")));
assertTrue(pack.hasObject(ObjectId.fromString("aabf2ffaec9b497f0950352b3e582d73035c2035")));
assertTrue(pack.hasObject(ObjectId.fromString("c59759f143fb1fe21c197981df75a7ee00290799")));
}
}
@ -88,20 +88,20 @@ public void test2() throws IOException {
try (InputStream is = new FileInputStream(packFile)) {
ObjectDirectoryPackParser p = (ObjectDirectoryPackParser) index(is);
p.parse(NullProgressMonitor.INSTANCE);
PackFile file = p.getPackFile();
Pack pack = p.getPack();
assertTrue(file.hasObject(ObjectId.fromString("02ba32d3649e510002c21651936b7077aa75ffa9")));
assertTrue(file.hasObject(ObjectId.fromString("0966a434eb1a025db6b71485ab63a3bfbea520b6")));
assertTrue(file.hasObject(ObjectId.fromString("09efc7e59a839528ac7bda9fa020dc9101278680")));
assertTrue(file.hasObject(ObjectId.fromString("0a3d7772488b6b106fb62813c4d6d627918d9181")));
assertTrue(file.hasObject(ObjectId.fromString("1004d0d7ac26fbf63050a234c9b88a46075719d3")));
assertTrue(file.hasObject(ObjectId.fromString("10da5895682013006950e7da534b705252b03be6")));
assertTrue(file.hasObject(ObjectId.fromString("1203b03dc816ccbb67773f28b3c19318654b0bc8")));
assertTrue(file.hasObject(ObjectId.fromString("15fae9e651043de0fd1deef588aa3fbf5a7a41c6")));
assertTrue(file.hasObject(ObjectId.fromString("16f9ec009e5568c435f473ba3a1df732d49ce8c3")));
assertTrue(file.hasObject(ObjectId.fromString("1fd7d579fb6ae3fe942dc09c2c783443d04cf21e")));
assertTrue(file.hasObject(ObjectId.fromString("20a8ade77639491ea0bd667bf95de8abf3a434c8")));
assertTrue(file.hasObject(ObjectId.fromString("2675188fd86978d5bc4d7211698b2118ae3bf658")));
assertTrue(pack.hasObject(ObjectId.fromString("02ba32d3649e510002c21651936b7077aa75ffa9")));
assertTrue(pack.hasObject(ObjectId.fromString("0966a434eb1a025db6b71485ab63a3bfbea520b6")));
assertTrue(pack.hasObject(ObjectId.fromString("09efc7e59a839528ac7bda9fa020dc9101278680")));
assertTrue(pack.hasObject(ObjectId.fromString("0a3d7772488b6b106fb62813c4d6d627918d9181")));
assertTrue(pack.hasObject(ObjectId.fromString("1004d0d7ac26fbf63050a234c9b88a46075719d3")));
assertTrue(pack.hasObject(ObjectId.fromString("10da5895682013006950e7da534b705252b03be6")));
assertTrue(pack.hasObject(ObjectId.fromString("1203b03dc816ccbb67773f28b3c19318654b0bc8")));
assertTrue(pack.hasObject(ObjectId.fromString("15fae9e651043de0fd1deef588aa3fbf5a7a41c6")));
assertTrue(pack.hasObject(ObjectId.fromString("16f9ec009e5568c435f473ba3a1df732d49ce8c3")));
assertTrue(pack.hasObject(ObjectId.fromString("1fd7d579fb6ae3fe942dc09c2c783443d04cf21e")));
assertTrue(pack.hasObject(ObjectId.fromString("20a8ade77639491ea0bd667bf95de8abf3a434c8")));
assertTrue(pack.hasObject(ObjectId.fromString("2675188fd86978d5bc4d7211698b2118ae3bf658")));
// and lots more...
}
}

View File

@ -13,8 +13,7 @@
import java.io.IOException;
/**
* Thrown when a PackFile is found not to contain the pack signature defined by
* git.
* Thrown when a Pack is found not to contain the pack signature defined by git.
*
* @since 4.5
*/

View File

@ -17,7 +17,7 @@
import org.eclipse.jgit.internal.JGitText;
/**
* Thrown when a PackFile previously failed and is known to be unusable
* Thrown when a Pack previously failed and is known to be unusable
*/
public class PackInvalidException extends IOException {
private static final long serialVersionUID = 1L;

View File

@ -13,7 +13,7 @@
import java.io.IOException;
/**
* Thrown when a PackFile no longer matches the PackIndex.
* Thrown when a Pack no longer matches the PackIndex.
*/
public class PackMismatchException extends IOException {
private static final long serialVersionUID = 1L;

View File

@ -16,7 +16,7 @@
import org.eclipse.jgit.internal.JGitText;
/**
* Thrown when a PackFile uses a pack version not supported by JGit.
* Thrown when a Pack uses a pack version not supported by JGit.
*
* @since 4.5
*/

View File

@ -25,7 +25,7 @@
final class ByteArrayWindow extends ByteWindow {
private final byte[] array;
ByteArrayWindow(PackFile pack, long o, byte[] b) {
ByteArrayWindow(Pack pack, long o, byte[] b) {
super(pack, o, b.length);
array = b;
}

View File

@ -27,7 +27,7 @@
final class ByteBufferWindow extends ByteWindow {
private final ByteBuffer buffer;
ByteBufferWindow(PackFile pack, long o, ByteBuffer b) {
ByteBufferWindow(Pack pack, long o, ByteBuffer b) {
super(pack, o, b.capacity());
buffer = b;
}

View File

@ -27,7 +27,7 @@
* </p>
*/
abstract class ByteWindow {
protected final PackFile pack;
protected final Pack pack;
protected final long start;
@ -37,13 +37,13 @@ abstract class ByteWindow {
* Constructor for ByteWindow.
*
* @param p
* a {@link org.eclipse.jgit.internal.storage.file.PackFile}.
* a {@link org.eclipse.jgit.internal.storage.file.Pack}.
* @param s
* where the byte window starts in the pack file
* @param n
* size of the byte window
*/
protected ByteWindow(PackFile p, long s, int n) {
protected ByteWindow(Pack p, long s, int n) {
pack = p;
start = s;
end = start + n;
@ -53,8 +53,8 @@ final int size() {
return (int) (end - start);
}
final boolean contains(PackFile neededFile, long neededPos) {
return pack == neededFile && start <= neededPos && neededPos < end;
final boolean contains(Pack neededPack, long neededPos) {
return pack == neededPack && start <= neededPos && neededPos < end;
}
/**

View File

@ -239,7 +239,7 @@ InsertLooseObjectResult insertUnpackedObject(File tmp, ObjectId objectId,
}
@Override
PackFile openPack(File pack) throws IOException {
Pack openPack(File pack) throws IOException {
return wrapped.openPack(pack);
}
@ -250,7 +250,7 @@ void selectObjectRepresentation(PackWriter packer, ObjectToPack otp,
}
@Override
Collection<PackFile> getPacks() {
Collection<Pack> getPacks() {
return wrapped.getPacks();
}

View File

@ -49,7 +49,7 @@ static void reconfigure(WindowCacheConfig cfg) {
cache = new Slot[CACHE_SZ];
}
Entry get(PackFile pack, long position) {
Entry get(Pack pack, long position) {
Slot e = cache[hash(position)];
if (e == null)
return null;
@ -63,7 +63,7 @@ Entry get(PackFile pack, long position) {
return null;
}
void store(final PackFile pack, final long position,
void store(final Pack pack, final long position,
final byte[] data, final int objectType) {
if (data.length > maxByteCount)
return; // Too large to cache.
@ -146,7 +146,7 @@ private static class Slot {
Slot lruNext;
PackFile provider;
Pack provider;
long position;

View File

@ -71,7 +71,7 @@ abstract ObjectLoader openLooseObject(WindowCursor curs, AnyObjectId id)
abstract InsertLooseObjectResult insertUnpackedObject(File tmp,
ObjectId id, boolean createDuplicate) throws IOException;
abstract PackFile openPack(File pack) throws IOException;
abstract Pack openPack(File pack) throws IOException;
abstract Collection<PackFile> getPacks();
abstract Collection<Pack> getPacks();
}

View File

@ -205,16 +205,16 @@ public GC(FileRepository repo) {
* gc.log.
*
* @return the collection of
* {@link org.eclipse.jgit.internal.storage.file.PackFile}'s which
* {@link org.eclipse.jgit.internal.storage.file.Pack}'s which
* are newly created
* @throws java.io.IOException
* @throws java.text.ParseException
* If the configuration parameter "gc.pruneexpire" couldn't be
* parsed
*/
// TODO(ms): change signature and return Future<Collection<PackFile>>
// TODO(ms): change signature and return Future<Collection<Pack>>
@SuppressWarnings("FutureReturnValueIgnored")
public Collection<PackFile> gc() throws IOException, ParseException {
public Collection<Pack> gc() throws IOException, ParseException {
if (!background) {
return doGc();
}
@ -224,9 +224,9 @@ public Collection<PackFile> gc() throws IOException, ParseException {
return Collections.emptyList();
}
Callable<Collection<PackFile>> gcTask = () -> {
Callable<Collection<Pack>> gcTask = () -> {
try {
Collection<PackFile> newPacks = doGc();
Collection<Pack> newPacks = doGc();
if (automatic && tooManyLooseObjects()) {
String message = JGitText.get().gcTooManyUnpruned;
gcLog.write(message);
@ -258,14 +258,14 @@ private ExecutorService executor() {
return (executor != null) ? executor : WorkQueue.getExecutor();
}
private Collection<PackFile> doGc() throws IOException, ParseException {
private Collection<Pack> doGc() throws IOException, ParseException {
if (automatic && !needGc()) {
return Collections.emptyList();
}
pm.start(6 /* tasks */);
packRefs();
// TODO: implement reflog_expire(pm, repo);
Collection<PackFile> newPacks = repack();
Collection<Pack> newPacks = repack();
prune(Collections.emptySet());
// TODO: implement rerere_gc(pm);
return newPacks;
@ -281,7 +281,7 @@ private Collection<PackFile> doGc() throws IOException, ParseException {
* @param existing
* @throws IOException
*/
private void loosen(ObjectDirectoryInserter inserter, ObjectReader reader, PackFile pack, HashSet<ObjectId> existing)
private void loosen(ObjectDirectoryInserter inserter, ObjectReader reader, Pack pack, HashSet<ObjectId> existing)
throws IOException {
for (PackIndex.MutableEntry entry : pack) {
ObjectId oid = entry.toObjectId();
@ -313,10 +313,10 @@ private void loosen(ObjectDirectoryInserter inserter, ObjectReader reader, PackF
* @throws ParseException
* @throws IOException
*/
private void deleteOldPacks(Collection<PackFile> oldPacks,
Collection<PackFile> newPacks) throws ParseException, IOException {
private void deleteOldPacks(Collection<Pack> oldPacks,
Collection<Pack> newPacks) throws ParseException, IOException {
HashSet<ObjectId> ids = new HashSet<>();
for (PackFile pack : newPacks) {
for (Pack pack : newPacks) {
for (PackIndex.MutableEntry entry : pack) {
ids.add(entry.toObjectId());
}
@ -329,12 +329,12 @@ private void deleteOldPacks(Collection<PackFile> oldPacks,
prunePreserved();
long packExpireDate = getPackExpireDate();
oldPackLoop: for (PackFile oldPack : oldPacks) {
oldPackLoop: for (Pack oldPack : oldPacks) {
checkCancelled();
String oldName = oldPack.getPackName();
// check whether an old pack file is also among the list of new
// pack files. Then we must not delete it.
for (PackFile newPack : newPacks)
for (Pack newPack : newPacks)
if (oldName.equals(newPack.getPackName()))
continue oldPackLoop;
@ -438,7 +438,7 @@ private void prunePack(String packName) {
*/
public void prunePacked() throws IOException {
ObjectDirectory objdb = repo.getObjectDatabase();
Collection<PackFile> packs = objdb.getPacks();
Collection<Pack> packs = objdb.getPacks();
File objects = repo.getObjectsDirectory();
String[] fanout = objects.list();
@ -466,7 +466,7 @@ public void prunePacked() throws IOException {
continue;
}
boolean found = false;
for (PackFile p : packs) {
for (Pack p : packs) {
checkCancelled();
if (p.hasObject(id)) {
found = true;
@ -788,8 +788,8 @@ public void packRefs() throws IOException {
* reflog-entries or during writing to the packfiles
* {@link java.io.IOException} occurs
*/
public Collection<PackFile> repack() throws IOException {
Collection<PackFile> toBeDeleted = repo.getObjectDatabase().getPacks();
public Collection<Pack> repack() throws IOException {
Collection<Pack> toBeDeleted = repo.getObjectDatabase().getPacks();
long time = System.currentTimeMillis();
Collection<Ref> refsBefore = getAllRefs();
@ -821,10 +821,10 @@ public Collection<PackFile> repack() throws IOException {
}
List<ObjectIdSet> excluded = new LinkedList<>();
for (PackFile f : repo.getObjectDatabase().getPacks()) {
for (Pack p : repo.getObjectDatabase().getPacks()) {
checkCancelled();
if (f.shouldBeKept())
excluded.add(f.getIndex());
if (p.shouldBeKept())
excluded.add(p.getIndex());
}
// Don't exclude tags that are also branch tips
@ -842,8 +842,8 @@ public Collection<PackFile> repack() throws IOException {
nonHeads.clear();
}
List<PackFile> ret = new ArrayList<>(2);
PackFile heads = null;
List<Pack> ret = new ArrayList<>(2);
Pack heads = null;
if (!allHeadsAndTags.isEmpty()) {
heads = writePack(allHeadsAndTags, PackWriter.NONE, allTags,
tagTargets, excluded);
@ -853,13 +853,13 @@ public Collection<PackFile> repack() throws IOException {
}
}
if (!nonHeads.isEmpty()) {
PackFile rest = writePack(nonHeads, allHeadsAndTags, PackWriter.NONE,
Pack rest = writePack(nonHeads, allHeadsAndTags, PackWriter.NONE,
tagTargets, excluded);
if (rest != null)
ret.add(rest);
}
if (!txnHeads.isEmpty()) {
PackFile txn = writePack(txnHeads, PackWriter.NONE, PackWriter.NONE,
Pack txn = writePack(txnHeads, PackWriter.NONE, PackWriter.NONE,
null, excluded);
if (txn != null)
ret.add(txn);
@ -1129,7 +1129,7 @@ private Set<ObjectId> listNonHEADIndexObjects()
}
}
private PackFile writePack(@NonNull Set<? extends ObjectId> want,
private Pack writePack(@NonNull Set<? extends ObjectId> want,
@NonNull Set<? extends ObjectId> have, @NonNull Set<ObjectId> tags,
Set<ObjectId> tagTargets, List<ObjectIdSet> excludeObjects)
throws IOException {
@ -1356,13 +1356,13 @@ public String toString() {
*/
public RepoStatistics getStatistics() throws IOException {
RepoStatistics ret = new RepoStatistics();
Collection<PackFile> packs = repo.getObjectDatabase().getPacks();
for (PackFile f : packs) {
ret.numberOfPackedObjects += f.getIndex().getObjectCount();
Collection<Pack> packs = repo.getObjectDatabase().getPacks();
for (Pack p : packs) {
ret.numberOfPackedObjects += p.getIndex().getObjectCount();
ret.numberOfPackFiles++;
ret.sizeOfPackedObjects += f.getPackFile().length();
if (f.getBitmapIndex() != null)
ret.numberOfBitmaps += f.getBitmapIndex().getBitmapCount();
ret.sizeOfPackedObjects += p.getPackFile().length();
if (p.getBitmapIndex() != null)
ret.numberOfBitmaps += p.getBitmapIndex().getBitmapCount();
}
File objDir = repo.getObjectsDirectory();
String[] fanout = objDir.list();

View File

@ -30,12 +30,12 @@ class LargePackedWholeObject extends ObjectLoader {
private final int headerLength;
private final PackFile pack;
private final Pack pack;
private final FileObjectDatabase db;
LargePackedWholeObject(int type, long size, long objectOffset,
int headerLength, PackFile pack, FileObjectDatabase db) {
int headerLength, Pack pack, FileObjectDatabase db) {
this.type = type;
this.size = size;
this.objectOffset = objectOffset;

View File

@ -25,31 +25,31 @@ class LocalCachedPack extends CachedPack {
private final String[] packNames;
private PackFile[] packs;
private Pack[] packs;
LocalCachedPack(ObjectDirectory odb, List<String> packNames) {
this.odb = odb;
this.packNames = packNames.toArray(new String[0]);
}
LocalCachedPack(List<PackFile> packs) {
LocalCachedPack(List<Pack> packs) {
odb = null;
packNames = null;
this.packs = packs.toArray(new PackFile[0]);
this.packs = packs.toArray(new Pack[0]);
}
/** {@inheritDoc} */
@Override
public long getObjectCount() throws IOException {
long cnt = 0;
for (PackFile pack : getPacks())
for (Pack pack : getPacks())
cnt += pack.getObjectCount();
return cnt;
}
void copyAsIs(PackOutputStream out, WindowCursor wc)
throws IOException {
for (PackFile pack : getPacks())
for (Pack pack : getPacks())
pack.copyPackAsIs(out, wc);
}
@ -58,7 +58,7 @@ void copyAsIs(PackOutputStream out, WindowCursor wc)
public boolean hasObject(ObjectToPack obj, StoredObjectRepresentation rep) {
try {
LocalObjectRepresentation local = (LocalObjectRepresentation) rep;
for (PackFile pack : getPacks()) {
for (Pack pack : getPacks()) {
if (local.pack == pack)
return true;
}
@ -68,9 +68,9 @@ public boolean hasObject(ObjectToPack obj, StoredObjectRepresentation rep) {
}
}
private PackFile[] getPacks() throws FileNotFoundException {
private Pack[] getPacks() throws FileNotFoundException {
if (packs == null) {
PackFile[] p = new PackFile[packNames.length];
Pack[] p = new Pack[packNames.length];
for (int i = 0; i < packNames.length; i++)
p[i] = getPackFile(packNames[i]);
packs = p;
@ -78,8 +78,8 @@ private PackFile[] getPacks() throws FileNotFoundException {
return packs;
}
private PackFile getPackFile(String packName) throws FileNotFoundException {
for (PackFile pack : odb.getPacks()) {
private Pack getPackFile(String packName) throws FileNotFoundException {
for (Pack pack : odb.getPacks()) {
if (packName.equals(pack.getPackName()))
return pack;
}

View File

@ -16,40 +16,40 @@
import org.eclipse.jgit.lib.ObjectId;
class LocalObjectRepresentation extends StoredObjectRepresentation {
static LocalObjectRepresentation newWhole(PackFile f, long p, long length) {
static LocalObjectRepresentation newWhole(Pack pack, long offset, long length) {
LocalObjectRepresentation r = new LocalObjectRepresentation() {
@Override
public int getFormat() {
return PACK_WHOLE;
}
};
r.pack = f;
r.offset = p;
r.pack = pack;
r.offset = offset;
r.length = length;
return r;
}
static LocalObjectRepresentation newDelta(PackFile f, long p, long n,
static LocalObjectRepresentation newDelta(Pack pack, long offset, long length,
ObjectId base) {
LocalObjectRepresentation r = new Delta();
r.pack = f;
r.offset = p;
r.length = n;
r.pack = pack;
r.offset = offset;
r.length = length;
r.baseId = base;
return r;
}
static LocalObjectRepresentation newDelta(PackFile f, long p, long n,
static LocalObjectRepresentation newDelta(Pack pack, long offset, long length,
long base) {
LocalObjectRepresentation r = new Delta();
r.pack = f;
r.offset = p;
r.length = n;
r.pack = pack;
r.offset = offset;
r.length = length;
r.baseOffset = base;
return r;
}
PackFile pack;
Pack pack;
long offset;

View File

@ -17,7 +17,7 @@
/** {@link ObjectToPack} for {@link ObjectDirectory}. */
class LocalObjectToPack extends ObjectToPack {
/** Pack to reuse compressed data from, otherwise null. */
PackFile pack;
Pack pack;
/** Offset of the object's header in {@link #pack}. */
long offset;

View File

@ -51,7 +51,7 @@
* This is the classical object database representation for a Git repository,
* where objects are stored loose by hashing them into directories by their
* {@link org.eclipse.jgit.lib.ObjectId}, or are stored in compressed containers
* known as {@link org.eclipse.jgit.internal.storage.file.PackFile}s.
* known as {@link org.eclipse.jgit.internal.storage.file.Pack}s.
* <p>
* Optionally an object database can reference one or more alternates; other
* ObjectDatabase instances that are searched in addition to the current
@ -206,7 +206,7 @@ public void close() {
/** {@inheritDoc} */
@Override
public Collection<PackFile> getPacks() {
public Collection<Pack> getPacks() {
return packed.getPacks();
}
@ -216,7 +216,7 @@ public Collection<PackFile> getPacks() {
* Add a single existing pack to the list of available pack files.
*/
@Override
public PackFile openPack(File pack)
public Pack openPack(File pack)
throws IOException {
final String p = pack.getName();
if (p.length() != 50 || !p.startsWith("pack-") || !p.endsWith(".pack")) //$NON-NLS-1$ //$NON-NLS-2$
@ -235,7 +235,7 @@ public PackFile openPack(File pack)
}
}
PackFile res = new PackFile(pack, extensions);
Pack res = new Pack(pack, extensions);
packed.insert(res);
return res;
}
@ -509,7 +509,7 @@ void closeAllPackHandles(File packFile) {
// PackConfig) then make sure we get rid of all handles on the file.
// Windows will not allow for rename otherwise.
if (packFile.exists()) {
for (PackFile p : packed.getPacks()) {
for (Pack p : packed.getPacks()) {
if (packFile.getPath().equals(p.getPackFile().getPath())) {
p.close();
break;

View File

@ -88,7 +88,7 @@ public class ObjectDirectoryPackParser extends PackParser {
private Deflater def;
/** The pack that was created, if parsing was successful. */
private PackFile newPack;
private Pack newPack;
private PackConfig pconfig;
@ -129,14 +129,14 @@ public void setKeepEmpty(boolean empty) {
}
/**
* Get the imported {@link org.eclipse.jgit.internal.storage.file.PackFile}.
* Get the imported {@link org.eclipse.jgit.internal.storage.file.Pack}.
* <p>
* This method is supplied only to support testing; applications shouldn't
* be using it directly to access the imported data.
*
* @return the imported PackFile, if parsing was successful.
*/
public PackFile getPackFile() {
public Pack getPack() {
return newPack;
}

View File

@ -69,13 +69,13 @@
* delta packed format yielding high compression of lots of object where some
* objects are similar.
*/
public class PackFile implements Iterable<PackIndex.MutableEntry> {
private static final Logger LOG = LoggerFactory.getLogger(PackFile.class);
public class Pack implements Iterable<PackIndex.MutableEntry> {
private static final Logger LOG = LoggerFactory.getLogger(Pack.class);
/**
* Sorts PackFiles to be most recently created to least recently created.
*/
public static final Comparator<PackFile> SORT = (a, b) -> b.packLastModified
public static final Comparator<Pack> SORT = (a, b) -> b.packLastModified
.compareTo(a.packLastModified);
private final File packFile;
@ -136,7 +136,7 @@ public class PackFile implements Iterable<PackIndex.MutableEntry> {
* @param extensions
* additional pack file extensions with the same base as the pack
*/
public PackFile(File packFile, int extensions) {
public Pack(File packFile, int extensions) {
this.packFile = packFile;
this.fileSnapshot = PackFileSnapshot.save(packFile);
this.packLastModified = fileSnapshot.lastModifiedInstant();
@ -1201,7 +1201,7 @@ private boolean hasExt(PackExt ext) {
@SuppressWarnings("nls")
@Override
public String toString() {
return "PackFile [packFileName=" + packFile.getName() + ", length="
return "Pack [packFileName=" + packFile.getName() + ", length="
+ packFile.length() + ", packChecksum="
+ ObjectId.fromRaw(packChecksum).name() + "]";
}

View File

@ -47,16 +47,17 @@
/**
* Traditional file system packed objects directory handler.
* <p>
* This is the {@code PackFile}s object representation for a Git object
* database, where objects are stored in compressed containers known as
* {@link org.eclipse.jgit.internal.storage.file.PackFile}s.
* This is the {@link org.eclipse.jgit.internal.storage.file.Pack}s object
* representation for a Git object database, where objects are stored in
* compressed containers known as
* {@link org.eclipse.jgit.internal.storage.file.Pack}s.
*/
class PackDirectory {
private final static Logger LOG = LoggerFactory
.getLogger(PackDirectory.class);
private static final PackList NO_PACKS = new PackList(FileSnapshot.DIRTY,
new PackFile[0]);
new Pack[0]);
private final Config config;
@ -94,18 +95,18 @@ void create() throws IOException {
void close() {
PackList packs = packList.get();
if (packs != NO_PACKS && packList.compareAndSet(packs, NO_PACKS)) {
for (PackFile p : packs.packs) {
for (Pack p : packs.packs) {
p.close();
}
}
}
Collection<PackFile> getPacks() {
Collection<Pack> getPacks() {
PackList list = packList.get();
if (list == NO_PACKS) {
list = scanPacks(list);
}
PackFile[] packs = list.packs;
Pack[] packs = list.packs;
return Collections.unmodifiableCollection(Arrays.asList(packs));
}
@ -126,7 +127,7 @@ boolean has(AnyObjectId objectId) {
PackList pList;
do {
pList = packList.get();
for (PackFile p : pList.packs) {
for (Pack p : pList.packs) {
try {
if (p.hasObject(objectId)) {
return true;
@ -167,7 +168,7 @@ boolean resolve(Set<ObjectId> matches, AbbreviatedObjectId id,
PackList pList;
do {
pList = packList.get();
for (PackFile p : pList.packs) {
for (Pack p : pList.packs) {
try {
p.resolve(matches, id, matchLimit);
p.resetTransientErrorCount();
@ -187,7 +188,7 @@ ObjectLoader open(WindowCursor curs, AnyObjectId objectId) {
do {
SEARCH: for (;;) {
pList = packList.get();
for (PackFile p : pList.packs) {
for (Pack p : pList.packs) {
try {
ObjectLoader ldr = p.get(curs, objectId);
p.resetTransientErrorCount();
@ -213,7 +214,7 @@ long getSize(WindowCursor curs, AnyObjectId id) {
do {
SEARCH: for (;;) {
pList = packList.get();
for (PackFile p : pList.packs) {
for (Pack p : pList.packs) {
try {
long len = p.getObjectSize(curs, id);
p.resetTransientErrorCount();
@ -239,7 +240,7 @@ void selectRepresentation(PackWriter packer, ObjectToPack otp,
WindowCursor curs) {
PackList pList = packList.get();
SEARCH: for (;;) {
for (PackFile p : pList.packs) {
for (Pack p : pList.packs) {
try {
LocalObjectRepresentation rep = p.representation(curs, otp);
p.resetTransientErrorCount();
@ -259,7 +260,7 @@ void selectRepresentation(PackWriter packer, ObjectToPack otp,
}
}
private void handlePackError(IOException e, PackFile p) {
private void handlePackError(IOException e, Pack p) {
String warnTmpl = null;
int transientErrorCount = 0;
String errTmpl = JGitText.get().exceptionWhileReadingPack;
@ -322,7 +323,7 @@ boolean searchPacksAgain(PackList old) {
&& old != scanPacks(old);
}
void insert(PackFile pf) {
void insert(Pack pack) {
PackList o, n;
do {
o = packList.get();
@ -331,33 +332,33 @@ void insert(PackFile pf) {
// (picked up by a concurrent thread that did a scan?) we
// do not want to insert it a second time.
//
final PackFile[] oldList = o.packs;
final String name = pf.getPackFile().getName();
for (PackFile p : oldList) {
final Pack[] oldList = o.packs;
final String name = pack.getPackFile().getName();
for (Pack p : oldList) {
if (name.equals(p.getPackFile().getName())) {
return;
}
}
final PackFile[] newList = new PackFile[1 + oldList.length];
newList[0] = pf;
final Pack[] newList = new Pack[1 + oldList.length];
newList[0] = pack;
System.arraycopy(oldList, 0, newList, 1, oldList.length);
n = new PackList(o.snapshot, newList);
} while (!packList.compareAndSet(o, n));
}
private void remove(PackFile deadPack) {
private void remove(Pack deadPack) {
PackList o, n;
do {
o = packList.get();
final PackFile[] oldList = o.packs;
final Pack[] oldList = o.packs;
final int j = indexOf(oldList, deadPack);
if (j < 0) {
break;
}
final PackFile[] newList = new PackFile[oldList.length - 1];
final Pack[] newList = new Pack[oldList.length - 1];
System.arraycopy(oldList, 0, newList, 0, j);
System.arraycopy(oldList, j + 1, newList, j, newList.length - j);
n = new PackList(o.snapshot, newList);
@ -365,7 +366,7 @@ private void remove(PackFile deadPack) {
deadPack.close();
}
private static int indexOf(PackFile[] list, PackFile pack) {
private static int indexOf(Pack[] list, Pack pack) {
for (int i = 0; i < list.length; i++) {
if (list[i] == pack) {
return i;
@ -395,10 +396,10 @@ private PackList scanPacks(PackList original) {
}
private PackList scanPacksImpl(PackList old) {
final Map<String, PackFile> forReuse = reuseMap(old);
final Map<String, Pack> forReuse = reuseMap(old);
final FileSnapshot snapshot = FileSnapshot.save(directory);
final Set<String> names = listPackDirectory();
final List<PackFile> list = new ArrayList<>(names.size() >> 2);
final List<Pack> list = new ArrayList<>(names.size() >> 2);
boolean foundNew = false;
for (String indexName : names) {
// Must match "pack-[0-9a-f]{40}.idx" to be an index.
@ -425,7 +426,7 @@ private PackList scanPacksImpl(PackList old) {
final String packName = base + PACK.getExtension();
final File packFile = new File(directory, packName);
final PackFile oldPack = forReuse.get(packName);
final Pack oldPack = forReuse.get(packName);
if (oldPack != null
&& !oldPack.getFileSnapshot().isModified(packFile)) {
forReuse.remove(packName);
@ -433,7 +434,7 @@ private PackList scanPacksImpl(PackList old) {
continue;
}
list.add(new PackFile(packFile, extensions));
list.add(new Pack(packFile, extensions));
foundNew = true;
}
@ -447,7 +448,7 @@ private PackList scanPacksImpl(PackList old) {
return old;
}
for (PackFile p : forReuse.values()) {
for (Pack p : forReuse.values()) {
p.close();
}
@ -455,14 +456,14 @@ private PackList scanPacksImpl(PackList old) {
return new PackList(snapshot, NO_PACKS.packs);
}
final PackFile[] r = list.toArray(new PackFile[0]);
Arrays.sort(r, PackFile.SORT);
final Pack[] r = list.toArray(new Pack[0]);
Arrays.sort(r, Pack.SORT);
return new PackList(snapshot, r);
}
private static Map<String, PackFile> reuseMap(PackList old) {
final Map<String, PackFile> forReuse = new HashMap<>();
for (PackFile p : old.packs) {
private static Map<String, Pack> reuseMap(PackList old) {
final Map<String, Pack> forReuse = new HashMap<>();
for (Pack p : old.packs) {
if (p.invalid()) {
// The pack instance is corrupted, and cannot be safely used
// again. Do not include it in our reuse map.
@ -471,7 +472,7 @@ private static Map<String, PackFile> reuseMap(PackList old) {
continue;
}
final PackFile prior = forReuse.put(p.getPackFile().getName(), p);
final Pack prior = forReuse.put(p.getPackFile().getName(), p);
if (prior != null) {
// This should never occur. It should be impossible for us
// to have two pack files with the same name, as all of them
@ -504,10 +505,10 @@ static final class PackList {
/** State just before reading the pack directory. */
final FileSnapshot snapshot;
/** All known packs, sorted by {@link PackFile#SORT}. */
final PackFile[] packs;
/** All known packs, sorted by {@link Pack#SORT}. */
final Pack[] packs;
PackList(FileSnapshot monitor, PackFile[] packs) {
PackList(FileSnapshot monitor, Pack[] packs) {
this.snapshot = monitor;
this.packs = packs;
}

View File

@ -34,7 +34,7 @@
/**
* Access path to locate objects by {@link org.eclipse.jgit.lib.ObjectId} in a
* {@link org.eclipse.jgit.internal.storage.file.PackFile}.
* {@link org.eclipse.jgit.internal.storage.file.Pack}.
* <p>
* Indexes are strictly redundant information in that we can rebuild all of the
* data held in the index file from the on disk representation of the pack file

View File

@ -25,7 +25,7 @@
/**
* Creates a table of contents to support random access by
* {@link org.eclipse.jgit.internal.storage.file.PackFile}.
* {@link org.eclipse.jgit.internal.storage.file.Pack}.
* <p>
* Pack index files (the <code>.idx</code> suffix in a pack file pair) provides
* random access to any object in the pack by associating an ObjectId to the

View File

@ -16,11 +16,11 @@
class PackInputStream extends InputStream {
private final WindowCursor wc;
private final PackFile pack;
private final Pack pack;
private long pos;
PackInputStream(PackFile pack, long pos, WindowCursor wc)
PackInputStream(Pack pack, long pos, WindowCursor wc)
throws IOException {
this.pack = pack;
this.pos = pos;

View File

@ -18,7 +18,7 @@
import org.eclipse.jgit.util.FileUtils;
/**
* Keeps track of a {@link org.eclipse.jgit.internal.storage.file.PackFile}'s
* Keeps track of a {@link org.eclipse.jgit.internal.storage.file.Pack}'s
* associated <code>.keep</code> file.
*/
public class PackLock {

View File

@ -25,7 +25,7 @@
* </p>
*
* @see PackIndex
* @see PackFile
* @see Pack
*/
public class PackReverseIndex {
/** Index we were created from, and that has our ObjectId data. */

View File

@ -33,7 +33,7 @@
import org.eclipse.jgit.util.Monitoring;
/**
* Caches slices of a {@link org.eclipse.jgit.internal.storage.file.PackFile} in
* Caches slices of a {@link org.eclipse.jgit.internal.storage.file.Pack} in
* memory for faster read access.
* <p>
* The WindowCache serves as a Java based "buffer cache", loading segments of a
@ -41,7 +41,7 @@
* only tiny slices of a file, the WindowCache tries to smooth out these tiny
* reads into larger block-sized IO operations.
* <p>
* Whenever a cache miss occurs, {@link #load(PackFile, long)} is invoked by
* Whenever a cache miss occurs, {@link #load(Pack, long)} is invoked by
* exactly one thread for the given <code>(PackFile,position)</code> key tuple.
* This is ensured by an array of locks, with the tuple hashed to a lock
* instance.
@ -80,10 +80,10 @@
* <p>
* This cache has an implementation rule such that:
* <ul>
* <li>{@link #load(PackFile, long)} is invoked by at most one thread at a time
* <li>{@link #load(Pack, long)} is invoked by at most one thread at a time
* for a given <code>(PackFile,position)</code> tuple.</li>
* <li>For every <code>load()</code> invocation there is exactly one
* {@link #createRef(PackFile, long, ByteWindow)} invocation to wrap a
* {@link #createRef(Pack, long, ByteWindow)} invocation to wrap a
* SoftReference or a StrongReference around the cached entity.</li>
* <li>For every Reference created by <code>createRef()</code> there will be
* exactly one call to {@link #clear(PageRef)} to cleanup any resources associated
@ -91,10 +91,10 @@
* </ul>
* <p>
* Therefore, it is safe to perform resource accounting increments during the
* {@link #load(PackFile, long)} or
* {@link #createRef(PackFile, long, ByteWindow)} methods, and matching
* {@link #load(Pack, long)} or
* {@link #createRef(Pack, long, ByteWindow)} methods, and matching
* decrements during {@link #clear(PageRef)}. Implementors may need to override
* {@link #createRef(PackFile, long, ByteWindow)} in order to embed additional
* {@link #createRef(Pack, long, ByteWindow)} in order to embed additional
* accounting information into an implementation specific
* {@link org.eclipse.jgit.internal.storage.file.WindowCache.PageRef} subclass, as
* the cached entity may have already been evicted by the JRE's garbage
@ -170,7 +170,7 @@ static interface StatsRecorder {
* @param delta
* delta of cached bytes
*/
void recordOpenBytes(PackFile pack, int delta);
void recordOpenBytes(Pack pack, int delta);
/**
* Returns a snapshot of this recorder's stats. Note that this may be an
@ -242,7 +242,7 @@ public void recordOpenFiles(int delta) {
}
@Override
public void recordOpenBytes(PackFile pack, int delta) {
public void recordOpenBytes(Pack pack, int delta) {
openByteCount.add(delta);
String repositoryId = repositoryId(pack);
LongAdder la = openByteCountPerRepository
@ -254,9 +254,8 @@ public void recordOpenBytes(PackFile pack, int delta) {
}
}
private static String repositoryId(PackFile pack) {
// use repository's gitdir since packfile doesn't know its
// repository
private static String repositoryId(Pack pack) {
// use repository's gitdir since Pack doesn't know its repository
return pack.getPackFile().getParentFile().getParentFile()
.getParent();
}
@ -380,7 +379,7 @@ public static WindowCache getInstance() {
return cache.publishMBeanIfNeeded();
}
static final ByteWindow get(PackFile pack, long offset)
static final ByteWindow get(Pack pack, long offset)
throws IOException {
final WindowCache c = cache;
final ByteWindow r = c.getOrLoad(pack, c.toStart(offset));
@ -395,7 +394,7 @@ static final ByteWindow get(PackFile pack, long offset)
return r;
}
static final void purge(PackFile pack) {
static final void purge(Pack pack) {
cache.removeAll(pack);
}
@ -506,7 +505,7 @@ private int hash(int packHash, long off) {
return packHash + (int) (off >>> windowSizeShift);
}
private ByteWindow load(PackFile pack, long offset) throws IOException {
private ByteWindow load(Pack pack, long offset) throws IOException {
long startTime = System.nanoTime();
if (pack.beginWindowCache())
statsRecorder.recordOpenFiles(1);
@ -525,7 +524,7 @@ private ByteWindow load(PackFile pack, long offset) throws IOException {
}
}
private PageRef<ByteWindow> createRef(PackFile p, long o, ByteWindow v) {
private PageRef<ByteWindow> createRef(Pack p, long o, ByteWindow v) {
final PageRef<ByteWindow> ref = useStrongRefs
? new StrongRef(p, o, v, queue)
: new SoftRef(p, o, v, (SoftCleanupQueue) queue);
@ -539,7 +538,7 @@ private void clear(PageRef<ByteWindow> ref) {
close(ref.getPack());
}
private void close(PackFile pack) {
private void close(Pack pack) {
if (pack.endWindowCache()) {
statsRecorder.recordOpenFiles(-1);
}
@ -578,9 +577,9 @@ private static int lockCount(WindowCacheConfig cfg) {
* @return the object reference.
* @throws IOException
* the object reference was not in the cache and could not be
* obtained by {@link #load(PackFile, long)}.
* obtained by {@link #load(Pack, long)}.
*/
private ByteWindow getOrLoad(PackFile pack, long position)
private ByteWindow getOrLoad(Pack pack, long position)
throws IOException {
final int slot = slot(pack, position);
final Entry e1 = table.get(slot);
@ -623,7 +622,7 @@ private ByteWindow getOrLoad(PackFile pack, long position)
return v;
}
private ByteWindow scan(Entry n, PackFile pack, long position) {
private ByteWindow scan(Entry n, Pack pack, long position) {
for (; n != null; n = n.next) {
final PageRef<ByteWindow> r = n.ref;
if (r.getPack() == pack && r.getPosition() == position) {
@ -704,7 +703,7 @@ private void removeAll() {
/**
* Clear all entries related to a single file.
* <p>
* Typically this method is invoked during {@link PackFile#close()}, when we
* Typically this method is invoked during {@link Pack#close()}, when we
* know the pack is never going to be useful to us again (for example, it no
* longer exists on disk). A concurrent reader loading an entry from this
* same pack may cause the pack to become stuck in the cache anyway.
@ -712,7 +711,7 @@ private void removeAll() {
* @param pack
* the file to purge all entries of.
*/
private void removeAll(PackFile pack) {
private void removeAll(Pack pack) {
for (int s = 0; s < tableSize; s++) {
final Entry e1 = table.get(s);
boolean hasDead = false;
@ -733,11 +732,11 @@ private void gc() {
queue.gc();
}
private int slot(PackFile pack, long position) {
private int slot(Pack pack, long position) {
return (hash(pack.hash, position) >>> 1) % tableSize;
}
private Lock lock(PackFile pack, long position) {
private Lock lock(Pack pack, long position) {
return locks[(hash(pack.hash, position) >>> 1) % locks.length];
}
@ -799,16 +798,20 @@ private static interface PageRef<T> {
boolean kill();
/**
* Get the packfile the referenced cache page is allocated for
* Get the {@link org.eclipse.jgit.internal.storage.file.Pack} the
* referenced cache page is allocated for
*
* @return the packfile the referenced cache page is allocated for
* @return the {@link org.eclipse.jgit.internal.storage.file.Pack} the
* referenced cache page is allocated for
*/
PackFile getPack();
Pack getPack();
/**
* Get the position of the referenced cache page in the packfile
* Get the position of the referenced cache page in the
* {@link org.eclipse.jgit.internal.storage.file.Pack}
*
* @return the position of the referenced cache page in the packfile
* @return the position of the referenced cache page in the
* {@link org.eclipse.jgit.internal.storage.file.Pack}
*/
long getPosition();
@ -844,7 +847,7 @@ private static interface PageRef<T> {
/** A soft reference wrapped around a cached object. */
private static class SoftRef extends SoftReference<ByteWindow>
implements PageRef<ByteWindow> {
private final PackFile pack;
private final Pack pack;
private final long position;
@ -852,7 +855,7 @@ private static class SoftRef extends SoftReference<ByteWindow>
private long lastAccess;
protected SoftRef(final PackFile pack, final long position,
protected SoftRef(final Pack pack, final long position,
final ByteWindow v, final SoftCleanupQueue queue) {
super(v, queue);
this.pack = pack;
@ -861,7 +864,7 @@ protected SoftRef(final PackFile pack, final long position,
}
@Override
public PackFile getPack() {
public Pack getPack() {
return pack;
}
@ -900,7 +903,7 @@ public boolean isStrongRef() {
private static class StrongRef implements PageRef<ByteWindow> {
private ByteWindow referent;
private final PackFile pack;
private final Pack pack;
private final long position;
@ -910,7 +913,7 @@ private static class StrongRef implements PageRef<ByteWindow> {
private CleanupQueue queue;
protected StrongRef(final PackFile pack, final long position,
protected StrongRef(final Pack pack, final long position,
final ByteWindow v, final CleanupQueue queue) {
this.pack = pack;
this.position = position;
@ -920,7 +923,7 @@ protected StrongRef(final PackFile pack, final long position,
}
@Override
public PackFile getPack() {
public Pack getPack() {
return pack;
}

View File

@ -86,7 +86,7 @@ public ObjectReader newReader() {
/** {@inheritDoc} */
@Override
public BitmapIndex getBitmapIndex() throws IOException {
for (PackFile pack : db.getPacks()) {
for (Pack pack : db.getPacks()) {
PackBitmapIndex index = pack.getBitmapIndex();
if (index != null)
return new BitmapIndexImpl(index);
@ -98,7 +98,7 @@ public BitmapIndex getBitmapIndex() throws IOException {
@Override
public Collection<CachedPack> getCachedPacksAndUpdate(
BitmapBuilder needBitmap) throws IOException {
for (PackFile pack : db.getPacks()) {
for (Pack pack : db.getPacks()) {
PackBitmapIndex index = pack.getBitmapIndex();
if (needBitmap.removeAllOrNone(index))
return Collections.<CachedPack> singletonList(
@ -218,7 +218,7 @@ public void writeObjects(PackOutputStream out, List<ObjectToPack> list)
* this cursor does not match the provider or id and the proper
* window could not be acquired through the provider's cache.
*/
int copy(final PackFile pack, long position, final byte[] dstbuf,
int copy(final Pack pack, long position, final byte[] dstbuf,
int dstoff, final int cnt) throws IOException {
final long length = pack.length;
int need = cnt;
@ -239,7 +239,7 @@ public void copyPackAsIs(PackOutputStream out, CachedPack pack)
((LocalCachedPack) pack).copyAsIs(out, this);
}
void copyPackAsIs(final PackFile pack, final long length,
void copyPackAsIs(final Pack pack, final long length,
final PackOutputStream out) throws IOException {
long position = 12;
long remaining = length - (12 + 20);
@ -275,7 +275,7 @@ void copyPackAsIs(final PackFile pack, final long length,
* the inflater encountered an invalid chunk of data. Data
* stream corruption is likely.
*/
int inflate(final PackFile pack, long position, final byte[] dstbuf,
int inflate(final Pack pack, long position, final byte[] dstbuf,
boolean headerOnly) throws IOException, DataFormatException {
prepareInflater();
pin(pack, position);
@ -293,7 +293,7 @@ int inflate(final PackFile pack, long position, final byte[] dstbuf,
}
}
ByteArrayWindow quickCopy(PackFile p, long pos, long cnt)
ByteArrayWindow quickCopy(Pack p, long pos, long cnt)
throws IOException {
pin(p, pos);
if (window instanceof ByteArrayWindow
@ -314,7 +314,7 @@ private void prepareInflater() {
inf.reset();
}
void pin(PackFile pack, long position)
void pin(Pack pack, long position)
throws IOException {
final ByteWindow w = window;
if (w == null || !w.contains(pack, position)) {