Add setLength(long) to DirCacheEntry

Applications should favor the long style interface, especially when
their source input is a long type, e.g. coming from java.io.File.
This way when the index format is later changed to support a
larger file size than 2 GiB we can handle it by just changing the
entry code, and not need to fix a lot of applications.

Change-Id: I332563caeb110014e2d544dc33050ce67ae9e897
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Shawn O. Pearce 2010-08-23 10:29:50 -07:00
parent 6df5d3397c
commit edd8029558
3 changed files with 18 additions and 0 deletions

View File

@ -328,6 +328,7 @@ shortReadOfBlock=Short read of block.
shortReadOfOptionalDIRCExtensionExpectedAnotherBytes=Short read of optional DIRC extension {0}; expected another {1} bytes within the section.
shortSkipOfBlock=Short skip of block.
similarityScoreMustBeWithinBounds=Similarity score must be between 0 and 100.
sizeExceeds2GB=Path {0} size {1} exceeds 2 GiB limit.
smartHTTPPushDisabled=smart HTTP push disabled
sourceDestinationMustMatch=Source/Destination must match.
sourceIsNotAWildcard=Source is not a wildcard.

View File

@ -387,6 +387,7 @@ public static JGitText get() {
/***/ public String shortReadOfOptionalDIRCExtensionExpectedAnotherBytes;
/***/ public String shortSkipOfBlock;
/***/ public String similarityScoreMustBeWithinBounds;
/***/ public String sizeExceeds2GB;
/***/ public String smartHTTPPushDisabled;
/***/ public String sourceDestinationMustMatch;
/***/ public String sourceIsNotAWildcard;

View File

@ -486,6 +486,22 @@ public void setLength(final int sz) {
NB.encodeInt32(info, infoOffset + P_SIZE, sz);
}
/**
* Set the cached size (in bytes) of this file.
*
* @param sz
* new cached size of the file, as bytes.
* @throws IllegalArgumentException
* if the size exceeds the 2 GiB barrier imposed by current file
* format limitations.
*/
public void setLength(final long sz) {
if (Integer.MAX_VALUE <= sz)
throw new IllegalArgumentException(MessageFormat.format(JGitText
.get().sizeExceeds2GB, getPathString(), sz));
setLength((int) sz);
}
/**
* Obtain the ObjectId for the entry.
* <p>