Basic Support for Push Certificates
Push certificates are used to verify the pusher's identity when a git server receives a signed pack
- Parsing of push certificates
- Storage of push certificates, they are stored in a special ref "refs/meta/push-certs". The filenames in the tree are ref names followed by the special suffix "cert", and the contents are the latest push cert affecting that ref.
- Configuration for server-side signed push verification
- Support for push certificates in BaseReceivePack and RefUpdate
Ignore Handling
- Allow leading/trailing spaces in ignore rules
- Allow leading literal '#' and '!' in ignore rules if they are escaped
- Don't trim trailing space if it is escaped with backslash
Other Enhancements
- Add setTargetBranch in RepoCommand.
- Add API to remove repositories from RepositoryCache
- Add new submodule layout to SubmoduleAddCommand
- Handle stale NFS file handles on packed-refs file
- Add a grace period for packfiles during GC so that they are retained during GC until configured expiration age is reached
Performance Improvements
- Use java.io.File instead of NIO to check existence of loose objects in ObjectDirectory to speed up inserting of loose objects
- Reduce memory consumption when creating bitmaps during writing pack files
Build and Release Engineering
- Enable annotation based NPE analysis in jgit
- Update Jetty to 9.2.13.v20150730
- Update org.apache.httpcomponents to 4.3