final int indexVersion;
+ final long bigFileThreshold;
+
private PackConfig(Config rc) {
deltaWindow = rc.getInt("pack", "window", PackWriter.DEFAULT_DELTA_SEARCH_WINDOW_SIZE);
deltaWindowMemory = rc.getLong("pack", null, "windowmemory", 0);
deltaDepth = rc.getInt("pack", "depth", PackWriter.DEFAULT_MAX_DELTA_DEPTH);
compression = compression(rc);
indexVersion = rc.getInt("pack", "indexversion", 2);
+ bigFileThreshold = rc.getLong("core", null, "bigfilethreshold", PackWriter.DEFAULT_BIG_FILE_THRESHOLD);
}
private static int compression(Config rc) {
*/
public static final int DEFAULT_DELTA_SEARCH_WINDOW_SIZE = 10;
+ static final long DEFAULT_BIG_FILE_THRESHOLD = 50 * 1024 * 1024;
+
private static final int PACK_VERSION_GENERATED = 2;
@SuppressWarnings("unchecked")
private int indexVersion;
+ private long bigFileThreshold = DEFAULT_BIG_FILE_THRESHOLD;
+
private boolean thin;
private boolean ignoreMissingUninteresting = true;
maxDeltaDepth = pc.deltaDepth;
compressionLevel = pc.compression;
indexVersion = pc.indexVersion;
+ bigFileThreshold = pc.bigFileThreshold;
}
private static Config configOf(final Repository repo) {
deltaSearchWindowSize = objectCount;
}
+ /**
+ * Get the maximum file size that will be delta compressed.
+ * <p>
+ * Files bigger than this setting will not be delta compressed, as they are
+ * more than likely already highly compressed binary data files that do not
+ * delta compress well, such as MPEG videos.
+ *
+ * @return the configured big file threshold.
+ */
+ public long getBigFileThreshold() {
+ return bigFileThreshold;
+ }
+
+ /**
+ * Set the maximum file size that should be considered for deltas.
+ *
+ * @param bigFileThreshold
+ * the limit, in bytes.
+ */
+ public void setBigFileThreshold(long bigFileThreshold) {
+ this.bigFileThreshold = bigFileThreshold;
+ }
+
/** @return true if this writer is producing a thin pack. */
public boolean isThin() {
return thin;