git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[JGIT PATCH 06/12] Move PackFile.SIGNATURE to Constants.PACK_SIGNATURE

From
MZMarek Zawirski <marek.zawirski@gmail.com>
Date
Jun 2, 2008, 21:24 UTC
Message-ID
<1212441883-12990-7-git-send-email-marek.zawirski@gmail.com>
In-Reply-To
<1212441883-12990-6-git-send-email-marek.zawirski@gmail.com>

Move to avoid redundancy in reading and writing packfiles in 3 places. It seems to be a better place for format-related constant.

Signed-off-by: Marek Zawirski <marek.zawirski@gmail.com>
---
 .../src/org/spearce/jgit/lib/Constants.java        |    8 ++++++++
 .../src/org/spearce/jgit/lib/PackFile.java         |   12 +++++-------
 .../src/org/spearce/jgit/transport/IndexPack.java  |    8 +++-----
 3 files changed, 16 insertions(+), 12 deletions(-)
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/Constants.java b/org.spearce.jgit/src/org/spearce/jgit/lib/Constants.java
index d1e8a41..7c2cef9 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/Constants.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/Constants.java
@@ -188,6 +188,14 @@ public final class Constants {
 	 */
 	public static final int OBJ_REF_DELTA = 7;
 
+	/**
+	 * Pack file signature that occurs at file header - identifies file as Git
+	 * packfile formatted.
+	 * <p>
+	 * <b>This constant is fixed and is defined by the Git packfile format.</b>
+	 */
+	public static final byte[] PACK_SIGNATURE = { 'P', 'A', 'C', 'K' };
+	
 	/** Native character encoding for commit messages, file names... */
 	public static final String CHARACTER_ENCODING = "UTF-8";
 
diff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/PackFile.java b/org.spearce.jgit/src/org/spearce/jgit/lib/PackFile.java
index ccff47d..b1fbc2a 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/lib/PackFile.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/PackFile.java
@@ -50,8 +50,6 @@ import org.spearce.jgit.util.NB;
  * objects are similar.
  */
 public class PackFile {
-	private static final byte[] SIGNATURE = { 'P', 'A', 'C', 'K' };
-
 	private final WindowedFile pack;
 
 	private final PackIndex idx;
@@ -165,17 +163,17 @@ public class PackFile {
 	private void readPackHeader() throws IOException {
 		final WindowCursor curs = new WindowCursor();
 		long position = 0;
-		final byte[] sig = new byte[SIGNATURE.length];
+		final byte[] sig = new byte[Constants.PACK_SIGNATURE.length];
 		final byte[] intbuf = new byte[4];
 		final long vers;
 
-		if (pack.read(position, sig, curs) != SIGNATURE.length)
+		if (pack.read(position, sig, curs) != Constants.PACK_SIGNATURE.length)
 			throw new IOException("Not a PACK file.");
-		for (int k = 0; k < SIGNATURE.length; k++) {
-			if (sig[k] != SIGNATURE[k])
+		for (int k = 0; k < Constants.PACK_SIGNATURE.length; k++) {
+			if (sig[k] != Constants.PACK_SIGNATURE[k])
 				throw new IOException("Not a PACK file.");
 		}
-		position += SIGNATURE.length;
+		position += Constants.PACK_SIGNATURE.length;
 
 		pack.readFully(position, intbuf, curs);
 		vers = NB.decodeUInt32(intbuf, 0);
diff --git a/org.spearce.jgit/src/org/spearce/jgit/transport/IndexPack.java b/org.spearce.jgit/src/org/spearce/jgit/transport/IndexPack.java
index 0b5c962..bec211c 100644
--- a/org.spearce.jgit/src/org/spearce/jgit/transport/IndexPack.java
+++ b/org.spearce.jgit/src/org/spearce/jgit/transport/IndexPack.java
@@ -74,8 +74,6 @@ public class IndexPack {
 	/** Progress message when computing names of delta compressed objects. */
 	public static final String PROGRESS_RESOLVE_DELTA = "Resolving deltas";
 
-	private static final byte[] SIGNATURE = { 'P', 'A', 'C', 'K' };
-
 	private static final int BUFFER_SIZE = 2048;
 
 	/**
@@ -477,10 +475,10 @@ public class IndexPack {
 	}
 
 	private void readPackHeader() throws IOException {
-		final int hdrln = SIGNATURE.length + 4 + 4;
+		final int hdrln = Constants.PACK_SIGNATURE.length + 4 + 4;
 		final int p = fillFromInput(hdrln);
-		for (int k = 0; k < SIGNATURE.length; k++)
-			if (buf[p + k] != SIGNATURE[k])
+		for (int k = 0; k < Constants.PACK_SIGNATURE.length; k++)
+			if (buf[p + k] != Constants.PACK_SIGNATURE[k])
 				throw new IOException("Not a PACK file.");
 
 		final long vers = NB.decodeUInt32(buf, p + 4);
-- 
1.5.5.1
Previous: Marek ZawirskiNext: Marek Zawirski
Message 7 of 24 in “Extensions in core needed by PackWriter”
  1. 00/12 Extensions in core needed by PackWriterMarek Zawirski, Jun 2, 2008
  2. 01/12 Format PackFile classMarek Zawirski, Jun 2, 2008
  3. 02/12 Format PackIndex classMarek Zawirski, Jun 2, 2008
  4. 03/12 Format PackIndexV1 classMarek Zawirski, Jun 2, 2008
  5. 04/12 Add getType() method to RevObject hierarchyMarek Zawirski, Jun 2, 2008
  6. 05/12 Replace instanceof in WalkFetchConnection with getType()Marek Zawirski, Jun 2, 2008
  7. 06/12 Move PackFile.SIGNATURE to Constants.PACK_SIGNATUREMarek Zawirski, Jun 2, 2008
  8. 07/12 Add overload of fromRaw() in MutableObjectId accepting int[]Marek Zawirski, Jun 2, 2008
  9. 08/12 Copying constructor of MutableObjectIdMarek Zawirski, Jun 2, 2008
  10. 09/12 Add getSize() method to ObjectIdSubclassMapMarek Zawirski, Jun 2, 2008
  11. 10/12 Add getObjectCount() method to PackFileMarek Zawirski, Jun 2, 2008
  12. 11/12 Entries iterator in PackIndex and indirectly PackFileMarek Zawirski, Jun 2, 2008
  13. 12/12 Add PackIndex specific tests, currently only iterators testsMarek Zawirski, Jun 2, 2008
  14. Robin RosenbergJun 6, 2008
  15. 09/12 Add size() method to ObjectIdSubclassMapMarek Zawirski, Jun 7, 2008
  16. Robin RosenbergJun 6, 2008
  17. 04/12 Add getType() method to RevObject hierarchyMarek Zawirski, Jun 7, 2008
  18. Johannes SchindelinJun 2, 2008
  19. Marek ZawirskiJun 2, 2008
  20. Johannes SchindelinJun 2, 2008
  21. Robin RosenbergJun 6, 2008
  22. Marek ZawirskiJun 7, 2008
  23. Shawn O. PearceJun 7, 2008
  24. Robin RosenbergJun 10, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.