Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-05-10go: Bump module version from v15 to v16Patrick Steinhardt
We're about to release Gitaly v16.0. As we've landed a bunch of previously announced removals it's thus time to bump our Go module version from v15 to v16.
2023-02-08Extract file and executable permissionsJames Fargher
Bulk update all file and executable permissions to use the new perm package. Strictly speaking changing os.ModePerm to perm.PublicFile is a permission change (it goes from executable to normal), but since ModePerm is only used in tests this should be safe.
2022-07-15Pack auxiliary binaries in main Gitaly binarySami Hiltunen
Gitaly needs to carefully maintain backwards compatibility with its auxiliary commands to avoid issues during upgrades. Omnibus and source deployments upgrade the binaries in place which can cause a running Gitaly to invoke a binary from the newer release. This has been the root cause in multiple production issues. To avoid having to maintain backwards compatibility between Gitaly and its auxiliary binaries, we can pin the binaries in a manner that Gitaly only ever invokes the auxiliary binaries from the same build as the main binary. To do so, we can pack the auxiliary binaries into the main Gitaly binary and unpack them into a temporary directory when starting up. This way the upgrades happen atomically, as replacing the gitaly binary is an atomic operation and it contains the auxiliary binaries as well. This commit adds the functionality to pack and unpack binaries in the main Gitaly binary. When building the Gitaly binary, the auxiliary binaries are taken from _build/bin and embedded in the main binary. UnpackAuxiliaryBinaries can then be called on starting Gitaly to unpack the binaries into a temporary directory where they can be invoked from. In order to embed the binaries in Gitaly during the build, they have to be built prior to building Gitaly. Makefile is updated to set the packed binaries as dependencies of Gitaly's build. Gitaly depends on the fully built binaries so the GNU build-id remains intact in the packed binaries. The packed binaries are set also as dependencies for the prepare-test target so the binaries exist for the tests that exercise the packing related code. In similar fashion, the lint target requires the packed binaries to be present as otherwise the linter will fail as it will find build failures in Gitaly due to the embedding failing due to missing binaries. The packed executables are added as a dependency to the lint target. Same goes for the notice target which needs to have the packed binaries in place so the build succeeds. Packed binaries are also added as dependency for the notice target.