The compatibility object format is only implemented for loose objects, not packed objects, so anyone attempting to push or fetch data into a repository with this option will likely not see it work as expected. In addition, the underlying storage of loose object mapping is likely to change because the current format is inefficient and does not handle important mapping information such as that of submodules. It would have been preferable to initially document that this was an experimental feature, but we did not do so. We hinted at the fact that this functionality is incomplete in the description, but did not say so explicitly. Let's do so now: indicate that this feature is experimental, incomplete, and subject to change. Signed-off-by: brian m. carlson <sandals@xxxxxxxxxxxxxxxxxxxx> --- This was spurred by the fact that I saw Gitolite had added SHA-256 support and then that users were expecting extensions.compatobjectformat to work, when it clearly does not (and, in fact, in some cases breaks pushing into the repository). I know that some people will not appreciate this feature being retroactively marked as experimental, but it is definitively broken for real-world use cases without the rest of my sha256-interop branch. Technically someone could always insert loose objects and then pack them, and because the old loose object mapping was present, the mapping would work, but, as mentioned, this would perform pathologically with even small repositories, so it's not a useful configuration. Documentation/config/extensions.adoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Documentation/config/extensions.adoc b/Documentation/config/extensions.adoc index 9e2f321a6d..292e95ddae 100644 --- a/Documentation/config/extensions.adoc +++ b/Documentation/config/extensions.adoc @@ -14,6 +14,9 @@ compatObjectFormat:: compatObjectFormat. As well as being able to use oids encoded in compatObjectFormat in addition to oids encoded with objectFormat to locally specify objects. ++ +Note that the functionality enabled by this option is experimental, incomplete, +and subject to change. noop:: This extension does not change git's behavior at all. It is useful only