Skip to content

Commit f1137ec

Browse files
aanmtklauser
authored andcommitted
contrib/git: add merge drivers to automate post-merge commands
[ upstream commit a1fe9e3 ] Add merge driver configuration that automatically runs specific commands when certain files are merged. This automation helps maintain consistency by running essential tasks like `go mod tidy`, updating Kubernetes manifests, regenerating documentation, and fixing permissions after merge operations. Signed-off-by: André Martins <andre@cilium.io> Signed-off-by: Tobias Klauser <tobias@cilium.io>
1 parent 50ebdcd commit f1137ec

2 files changed

Lines changed: 51 additions & 0 deletions

File tree

.gitattributes

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,22 @@ Documentation/_static/* -diff
1616
pkg/k8s/client/clientset/** linguist-generated
1717
pkg/k8s/client/informers/** linguist-generated
1818
pkg/k8s/client/listers/** linguist-generated
19+
20+
# Merge driver configuration for specific paths
21+
# To set up these merge drivers locally, run:
22+
# contrib/git/setup-merge-drivers.sh
23+
#
24+
# This will configure Git to use the appropriate merge drivers for each file pattern.
25+
#
26+
go.mod merge=go-mod-tidy
27+
go.sum merge=go-mod-tidy
28+
vendor/** merge=go-mod-tidy
29+
install/kubernetes/** merge=kubernetes-update
30+
Documentation/helm-values.rst merge=helm-values-update
31+
images/cilium/Dockerfile merge=images-update
32+
images/operator/Dockerfile merge=images-update
33+
images/hubble-relay/Dockerfile merge=images-update
34+
.devcontainer/devcontainer.json merge=images-update
35+
Documentation/cmdref/** merge=cmdref-update
36+
install/kubernetes/cilium/values.schema.json merge=schema-permissions
37+
api/** merge=generate-apis

contrib/git/setup-merge-drivers.sh

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#!/bin/bash
2+
# Script to configure Git merge drivers
3+
4+
# Configure Go modules driver
5+
git config merge.go-mod-tidy.name "Go Modules Merge Driver"
6+
git config merge.go-mod-tidy.driver "go mod tidy && go mod vendor"
7+
8+
# Configure Kubernetes update driver
9+
git config merge.kubernetes-update.name "Kubernetes Update Merge Driver"
10+
git config merge.kubernetes-update.driver "make -C install/kubernetes && make -C Documentation update-helm-values"
11+
12+
# Configure Helm values update driver
13+
git config merge.helm-values-update.name "Helm Values Update Merge Driver"
14+
git config merge.helm-values-update.driver "make -C install/kubernetes && make -C Documentation update-helm-values"
15+
16+
# Configure Images update driver
17+
git config merge.images-update.name "Images Update Merge Driver"
18+
git config merge.images-update.driver "make -C images update-builder-image update-runtime-image"
19+
20+
# Configure cmdref update driver
21+
git config merge.cmdref-update.name "cmdref Update Merge Driver"
22+
git config merge.cmdref-update.driver "make -C Documentation update-cmdref"
23+
24+
# Configure Schema permissions driver
25+
git config merge.schema-permissions.name "Schema Permissions Merge Driver"
26+
git config merge.schema-permissions.driver "chmod 644 install/kubernetes/cilium/values.schema.json"
27+
28+
# Configure API generation driver
29+
git config merge.generate-apis.name "API Generation Merge Driver"
30+
git config merge.generate-apis.driver "make generate-apis"
31+
32+
echo "Git merge drivers configured successfully!"

0 commit comments

Comments
 (0)