Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLevente Polyak <anthraxx@archlinux.org>2023-06-11 23:31:18 +0200
committerLevente Polyak <anthraxx@archlinux.org>2023-12-19 20:06:26 +0100
commitd00a2b989044fe452792e108a15b6c901a1a1d4c (patch)
tree03206fb052b24ffeadf02251264aade56065d310 /src
parentc2d73d73aec9c21ffdb0677a7e3ef96a42c1ba47 (diff)
feat(configure): ship default ignore via exclude
BREAKING CHANGE: Increments the repo spec version which requires to reconfigure all existing packaging repo clones. Fixes #129 Component: pkgctl repo configure Signed-off-by: Levente Polyak <anthraxx@archlinux.org>
Diffstat (limited to 'src')
-rw-r--r--src/commitpkg.in6
-rw-r--r--src/lib/common.sh2
-rw-r--r--src/lib/repo/configure.sh25
3 files changed, 31 insertions, 2 deletions
diff --git a/src/commitpkg.in b/src/commitpkg.in
index 6d4b014..016ab22 100644
--- a/src/commitpkg.in
+++ b/src/commitpkg.in
@@ -71,6 +71,12 @@ if ! repo_spec=$(git config --local devtools.version) || [[ ${repo_spec} != "${G
exit 1
fi
+if ! repo_variant=$(git config --local devtools.variant) || [[ ${repo_variant} != canonical ]]; then
+ error "cannot release from a repository with none canonical specs (%s), try:" "${repo_variant:-development}"
+ msg2 'pkgctl repo configure'
+ exit 1
+fi
+
if [[ "$(git symbolic-ref --short HEAD)" != main ]]; then
die 'must be run from the main branch'
fi
diff --git a/src/lib/common.sh b/src/lib/common.sh
index 7589120..82fdd2e 100644
--- a/src/lib/common.sh
+++ b/src/lib/common.sh
@@ -22,7 +22,7 @@ export BUILDTOOLVER=@buildtoolver@
# Set common properties
export PACMAN_KEYRING_DIR=/etc/pacman.d/gnupg
export GITLAB_HOST=gitlab.archlinux.org
-export GIT_REPO_SPEC_VERSION=1
+export GIT_REPO_SPEC_VERSION=2
export GIT_PACKAGING_NAMESPACE=archlinux/packaging/packages
export GIT_PACKAGING_NAMESPACE_ID=11323
export GIT_PACKAGING_URL_SSH="git@${GITLAB_HOST}:${GIT_PACKAGING_NAMESPACE}"
diff --git a/src/lib/repo/configure.sh b/src/lib/repo/configure.sh
index 1ddb1b8..b3c188c 100644
--- a/src/lib/repo/configure.sh
+++ b/src/lib/repo/configure.sh
@@ -17,6 +17,7 @@ source /usr/share/makepkg/util/config.sh
source /usr/share/makepkg/util/message.sh
set -e
+shopt -s nullglob
pkgctl_repo_configure_usage() {
@@ -34,6 +35,8 @@ pkgctl_repo_configure_usage() {
address by choosing SSH for all official packager identities and
read-only HTTPS otherwise.
+ Git default excludes and hooks are applied to the configured repo.
+
OPTIONS
--protocol https Configure remote url to use https
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
@@ -104,7 +107,7 @@ pkgctl_repo_configure() {
# variables
local -r command=${_DEVTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
- local path realpath pkgbase remote_url project_path
+ local path realpath pkgbase remote_url project_path hook
local PACKAGER GPGKEY packager_name packager_email
while (( $# )); do
@@ -230,7 +233,15 @@ pkgctl_repo_configure() {
git config branch.main.merge refs/heads/main
fi
+ # configure spec version and variant to avoid using development hooks in production
git config devtools.version "${GIT_REPO_SPEC_VERSION}"
+ if [[ ${_DEVTOOLS_LIBRARY_DIR} == /usr/share/devtools ]]; then
+ git config devtools.variant canonical
+ else
+ warning "Configuring with development version of pkgctl, do not use this repo in production"
+ git config devtools.variant development
+ fi
+
git config pull.rebase true
git config branch.autoSetupRebase always
git config branch.main.remote origin
@@ -257,6 +268,18 @@ pkgctl_repo_configure() {
git config user.signingKey "${GPGKEY}"
fi
+ # set default git exclude
+ mkdir -p .git/info
+ ln -sf "${_DEVTOOLS_LIBRARY_DIR}/git.conf.d/template/info/exclude" \
+ .git/info/exclude
+
+ # set default git hooks
+ mkdir -p .git/hooks
+ rm -f .git/hooks/*.sample
+ for hook in "${_DEVTOOLS_LIBRARY_DIR}"/git.conf.d/template/hooks/*; do
+ ln -sf "${hook}" ".git/hooks/$(basename "${hook}")"
+ done
+
if ! git ls-remote origin &>/dev/null; then
warning "configured remote origin may not exist, run:"
msg2 "pkgctl repo create ${pkgbase}"