Merge branch 'stable-6.2' into stable-6.3
* stable-6.2: Introduce core.trustPackedRefsStat config Fix documentation for core.trustFolderStat Change-Id: I48b6c095ac62dc859829d6fef45325accbb0a144
This commit is contained in:
commit
e4c2331af6
|
@ -45,7 +45,8 @@ For details on native git options see also the official [git config documentatio
|
|||
| `core.streamFileThreshold` | `50 MiB` | ⃞ | The size threshold beyond which objects must be streamed. |
|
||||
| `core.supportsAtomicFileCreation` | `true` | ⃞ | Whether the filesystem supports atomic file creation. |
|
||||
| `core.symlinks` | Auto detect if filesystem supports symlinks| ✅ | If false, symbolic links are checked out as small plain files that contain the link text. |
|
||||
| `core.trustFolderStat` | `true` | ⃞ | Whether to trust the pack folder's modification time. If `false` JGit will always scan the `.git/objects/pack` folder to check for new pack files. This can help to workaround caching issues on NFS, but reduces performance. If set to `true` it uses the `lastmodified` attribute of the folder and assumes that no new pack files can be in this folder if its modification time has not changed. |
|
||||
| `core.trustFolderStat` | `true` | ⃞ | Whether to trust the pack folder's and packed-refs file's file attributes (Java equivalent of stat command on *nix). When looking for pack files, if `false` JGit will always scan the `.git/objects/pack` folder and if set to `true` it assumes that pack files are unchanged if the file attributes of the pack folder are unchanged. When getting the list of packed refs, if `false` JGit will always read the packed-refs file and if set to `true` it uses the file attributes of the packed-refs file and will only read it if a file attribute has changed. Setting this option to `false` can help to workaround caching issues on NFS, but reduces performance.|
|
||||
| `core.trustPackedRefsStat` | `unset` | ⃞ | Whether to trust the file attributes (Java equivalent of stat command on *nix) of the packed-refs file. If `never` JGit will ignore the file attributes of the packed-refs file and always read it. If `always` JGit will trust the file attributes of the packed-refs file and will only read it if a file attribute has changed. `after_open` behaves the same as `always`, except that the packed-refs file is opened and closed before its file attributes are considered. An open/close of the packed-refs file is known to refresh its file attributes, at least on some NFS clients. If `unset`, JGit will use the behavior described in `trustFolderStat`. |
|
||||
| `core.worktree` | Root directory of the working tree if it is not the parent directory of the `.git` directory | ✅ | The path to the root of the working tree. |
|
||||
|
||||
## __gc__ options
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<component id="org.eclipse.jgit.http.server" version="2">
|
||||
<resource path="src/org/eclipse/jgit/http/server/UploadPackErrorHandler.java" type="org.eclipse.jgit.http.server.UploadPackErrorHandler">
|
||||
<filter id="1210056707">
|
||||
<message_arguments>
|
||||
<message_argument value="6.1.1"/>
|
||||
<message_argument value="statusCodeForThrowable(Throwable)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
</component>
|
|
@ -0,0 +1,175 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<component id="org.eclipse.jgit" version="2">
|
||||
<resource path="src/org/eclipse/jgit/lib/ConfigConstants.java" type="org.eclipse.jgit.lib.ConfigConstants">
|
||||
<filter id="1142947843">
|
||||
<message_arguments>
|
||||
<message_argument value="5.13.2"/>
|
||||
<message_argument value="SHA1_IMPLEMENTATION"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="1142947843">
|
||||
<message_arguments>
|
||||
<message_argument value="6.1.1"/>
|
||||
<message_argument value="CONFIG_KEY_TRUST_PACKED_REFS_STAT"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/lib/CoreConfig.java" type="org.eclipse.jgit.lib.CoreConfig$TrustPackedRefsStat">
|
||||
<filter id="1142947843">
|
||||
<message_arguments>
|
||||
<message_argument value="6.1.1"/>
|
||||
<message_argument value="TrustPackedRefsStat"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/merge/ResolveMerger.java" type="org.eclipse.jgit.merge.ResolveMerger">
|
||||
<filter id="336658481">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.merge.ResolveMerger"/>
|
||||
<message_argument value="workTreeUpdater"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="338755678">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.merge.ResolveMerger"/>
|
||||
<message_argument value="builder"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="338755678">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.merge.ResolveMerger"/>
|
||||
<message_argument value="implicitDirCache"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="338755678">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.merge.ResolveMerger"/>
|
||||
<message_argument value="toBeCheckedOut"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="338755678">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.merge.ResolveMerger"/>
|
||||
<message_argument value="toBeDeleted"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="338755678">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.merge.ResolveMerger"/>
|
||||
<message_argument value="workingTreeOptions"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="338792546">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.merge.ResolveMerger"/>
|
||||
<message_argument value="addCheckoutMetadata(Map<String,DirCacheCheckout.CheckoutMetadata>, String, Attributes)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="338792546">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.merge.ResolveMerger"/>
|
||||
<message_argument value="cleanUp()"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/merge/ResolveMerger.java" type="org.eclipse.jgit.merge.ResolveMerger$WorkTreeUpdater">
|
||||
<filter id="1142947843">
|
||||
<message_arguments>
|
||||
<message_argument value="6.3.1"/>
|
||||
<message_argument value="WorkTreeUpdater"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/transport/AwsRequestSignerV4.java" type="org.eclipse.jgit.transport.AwsRequestSignerV4">
|
||||
<filter id="1109393411">
|
||||
<message_arguments>
|
||||
<message_argument value="5.13.1"/>
|
||||
<message_argument value="org.eclipse.jgit.transport.AwsRequestSignerV4"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/util/HttpSupport.java" type="org.eclipse.jgit.util.HttpSupport">
|
||||
<filter id="1142947843">
|
||||
<message_arguments>
|
||||
<message_argument value="5.13.1"/>
|
||||
<message_argument value="urlEncode(String, boolean)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/util/Paths.java" type="org.eclipse.jgit.util.Paths">
|
||||
<filter id="337768515">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.Paths"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/util/sha1/SHA1.java" type="org.eclipse.jgit.util.sha1.SHA1">
|
||||
<filter id="337764418">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.sha1.SHA1"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="421650549">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.sha1.SHA1"/>
|
||||
<message_argument value="digest()"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="421650549">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.sha1.SHA1"/>
|
||||
<message_argument value="digest(MutableObjectId)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="421650549">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.sha1.SHA1"/>
|
||||
<message_argument value="hasCollision()"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="421650549">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.sha1.SHA1"/>
|
||||
<message_argument value="reset()"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="421650549">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.sha1.SHA1"/>
|
||||
<message_argument value="setDetectCollision(boolean)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="421650549">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.sha1.SHA1"/>
|
||||
<message_argument value="toObjectId()"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="421650549">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.sha1.SHA1"/>
|
||||
<message_argument value="update(byte)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="421650549">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.sha1.SHA1"/>
|
||||
<message_argument value="update(byte[])"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
<filter id="421650549">
|
||||
<message_arguments>
|
||||
<message_argument value="org.eclipse.jgit.util.sha1.SHA1"/>
|
||||
<message_argument value="update(byte[], int, int)"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
<resource path="src/org/eclipse/jgit/util/sha1/SHA1.java" type="org.eclipse.jgit.util.sha1.SHA1$Sha1Implementation">
|
||||
<filter id="1142947843">
|
||||
<message_arguments>
|
||||
<message_argument value="5.13.2"/>
|
||||
<message_argument value="Sha1Implementation"/>
|
||||
</message_arguments>
|
||||
</filter>
|
||||
</resource>
|
||||
</component>
|
|
@ -28,7 +28,9 @@
|
|||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.InterruptedIOException;
|
||||
import java.nio.file.DirectoryNotEmptyException;
|
||||
|
@ -59,6 +61,7 @@
|
|||
import org.eclipse.jgit.internal.JGitText;
|
||||
import org.eclipse.jgit.lib.ConfigConstants;
|
||||
import org.eclipse.jgit.lib.Constants;
|
||||
import org.eclipse.jgit.lib.CoreConfig.TrustPackedRefsStat;
|
||||
import org.eclipse.jgit.lib.ObjectId;
|
||||
import org.eclipse.jgit.lib.ObjectIdRef;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
|
@ -891,10 +894,37 @@ PackedRefList getPackedRefs() throws IOException {
|
|||
boolean trustFolderStat = getRepository().getConfig().getBoolean(
|
||||
ConfigConstants.CONFIG_CORE_SECTION,
|
||||
ConfigConstants.CONFIG_KEY_TRUSTFOLDERSTAT, true);
|
||||
TrustPackedRefsStat trustPackedRefsStat =
|
||||
getRepository().getConfig().getEnum(
|
||||
ConfigConstants.CONFIG_CORE_SECTION,
|
||||
null,
|
||||
ConfigConstants.CONFIG_KEY_TRUST_PACKED_REFS_STAT,
|
||||
TrustPackedRefsStat.UNSET);
|
||||
|
||||
final PackedRefList curList = packedRefs.get();
|
||||
if (trustFolderStat && !curList.snapshot.isModified(packedRefsFile)) {
|
||||
return curList;
|
||||
|
||||
switch (trustPackedRefsStat) {
|
||||
case NEVER:
|
||||
break;
|
||||
case AFTER_OPEN:
|
||||
try (InputStream stream = Files
|
||||
.newInputStream(packedRefsFile.toPath())) {
|
||||
// open the file to refresh attributes (on some NFS clients)
|
||||
} catch (FileNotFoundException e) {
|
||||
// Ignore as packed-refs may not exist
|
||||
}
|
||||
//$FALL-THROUGH$
|
||||
case ALWAYS:
|
||||
if (!curList.snapshot.isModified(packedRefsFile)) {
|
||||
return curList;
|
||||
}
|
||||
break;
|
||||
case UNSET:
|
||||
if (trustFolderStat
|
||||
&& !curList.snapshot.isModified(packedRefsFile)) {
|
||||
return curList;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
final PackedRefList newList = readPackedRefs();
|
||||
|
|
|
@ -886,4 +886,10 @@ public final class ConfigConstants {
|
|||
*/
|
||||
public static final String CONFIG_KEY_ABBREV = "abbrev";
|
||||
|
||||
/**
|
||||
* The "trustPackedRefsStat" key
|
||||
*
|
||||
* @since 6.1.1
|
||||
*/
|
||||
public static final String CONFIG_KEY_TRUST_PACKED_REFS_STAT = "trustPackedRefsStat";
|
||||
}
|
||||
|
|
|
@ -116,6 +116,27 @@ public enum LogRefUpdates {
|
|||
ALWAYS
|
||||
}
|
||||
|
||||
/**
|
||||
* Permissible values for {@code core.trustPackedRefsStat}.
|
||||
*
|
||||
* @since 6.1.1
|
||||
*/
|
||||
public enum TrustPackedRefsStat {
|
||||
/** Do not trust file attributes of the packed-refs file. */
|
||||
NEVER,
|
||||
|
||||
/** Trust file attributes of the packed-refs file. */
|
||||
ALWAYS,
|
||||
|
||||
/** Open and close the packed-refs file to refresh its file attributes
|
||||
* and then trust it. */
|
||||
AFTER_OPEN,
|
||||
|
||||
/** {@code core.trustPackedRefsStat} defaults to this when it is
|
||||
* not set */
|
||||
UNSET
|
||||
}
|
||||
|
||||
private final int compression;
|
||||
|
||||
private final int packIndexVersion;
|
||||
|
|
Loading…
Reference in New Issue