mirror of
				https://gitlab.archlinux.org/archlinux/devtools.git
				synced 2025-11-04 01:34:42 +01:00 
			
		
		
		
	Compare commits
	
		
			6 Commits
		
	
	
		
			mr-origin-
			...
			33a9d63e7c
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					33a9d63e7c | ||
| 
						 | 
					3f0ebbc6d2 | ||
| 
						 | 
					fc56ebedf3 | ||
| 
						 | 
					01757e6904 | ||
| 
						 | 
					c5fe8ff3e6 | ||
| 
						 | 
					d9ac6029d9 | 
@@ -24,7 +24,7 @@ test:
 | 
			
		||||
  stage: test
 | 
			
		||||
  needs: []
 | 
			
		||||
  script:
 | 
			
		||||
    - pacman -Syu --noconfirm m4 make openssh subversion rsync arch-install-scripts git bzr mercurial diffutils coreutils asciidoctor shellcheck nvchecker bats
 | 
			
		||||
    - pacman -Syu --noconfirm m4 make openssh subversion rsync arch-install-scripts git bzr mercurial diffutils coreutils asciidoctor shellcheck nvchecker bats bats-assert bats-support
 | 
			
		||||
    - make test BATS_EXTRA_ARGS='--formatter junit'
 | 
			
		||||
  artifacts:
 | 
			
		||||
    reports:
 | 
			
		||||
@@ -34,7 +34,7 @@ coverage:
 | 
			
		||||
  stage: test
 | 
			
		||||
  needs: []
 | 
			
		||||
  script:
 | 
			
		||||
    - pacman -Syu --noconfirm m4 make openssh subversion rsync arch-install-scripts git bzr mercurial diffutils coreutils asciidoctor shellcheck nvchecker bats kcov jq
 | 
			
		||||
    - pacman -Syu --noconfirm m4 make openssh subversion rsync arch-install-scripts git bzr mercurial diffutils coreutils asciidoctor shellcheck nvchecker bats bats-assert bats-support kcov jq
 | 
			
		||||
    - make coverage
 | 
			
		||||
  coverage: '/Percent covered\s+\d+\.\d+/'
 | 
			
		||||
  artifacts:
 | 
			
		||||
 
 | 
			
		||||
@@ -150,6 +150,7 @@ _pkgctl_cmds=(
 | 
			
		||||
	db
 | 
			
		||||
	diff
 | 
			
		||||
	issue
 | 
			
		||||
	license
 | 
			
		||||
	release
 | 
			
		||||
	repo
 | 
			
		||||
	search
 | 
			
		||||
 
 | 
			
		||||
@@ -155,7 +155,7 @@ if (( ${#needsversioning[*]} )); then
 | 
			
		||||
		if [[ ! -f "${file}" ]]; then
 | 
			
		||||
			continue
 | 
			
		||||
		fi
 | 
			
		||||
		if ! git ls-files --error-unmatch "$file"; then
 | 
			
		||||
		if ! git ls-files --error-unmatch "$file" >/dev/null; then
 | 
			
		||||
			die "%s is not under version control" "$file"
 | 
			
		||||
		fi
 | 
			
		||||
	done
 | 
			
		||||
 
 | 
			
		||||
@@ -188,10 +188,13 @@ path = [
 | 
			
		||||
    "README.md",
 | 
			
		||||
    "keys/**",
 | 
			
		||||
    ".SRCINFO",
 | 
			
		||||
    ".gitignore",
 | 
			
		||||
    ".nvchecker.toml",
 | 
			
		||||
    "*.install",
 | 
			
		||||
    "*.sysusers",
 | 
			
		||||
    "*sysusers.conf",
 | 
			
		||||
    "*.tmpfiles",
 | 
			
		||||
    "*tmpfiles.conf",
 | 
			
		||||
    "*.logrotate",
 | 
			
		||||
    "*.pam",
 | 
			
		||||
    "*.service",
 | 
			
		||||
 
 | 
			
		||||
@@ -109,6 +109,11 @@ pkgctl_repo_configure() {
 | 
			
		||||
	local -r command=${_DEVTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
 | 
			
		||||
	local path realpath pkgbase remote_url project_path hook
 | 
			
		||||
	local PACKAGER GPGKEY packager_name packager_email
 | 
			
		||||
	
 | 
			
		||||
	# Check if we're in a git repo
 | 
			
		||||
	if ! git rev-parse --git-dir &>/dev/null; then
 | 
			
		||||
		die "Not in a git repository"
 | 
			
		||||
	fi
 | 
			
		||||
 | 
			
		||||
	while (( $# )); do
 | 
			
		||||
		case $1 in
 | 
			
		||||
@@ -150,7 +155,8 @@ pkgctl_repo_configure() {
 | 
			
		||||
 | 
			
		||||
	# check if invoked without any path from within a packaging repo
 | 
			
		||||
	if (( ${#paths[@]} == 0 )); then
 | 
			
		||||
		if [[ -f PKGBUILD ]]; then
 | 
			
		||||
		if [[ -d .git ]] || git rev-parse --git-dir &>/dev/null; then
 | 
			
		||||
			# We're in a git repository, so use current directory
 | 
			
		||||
			paths=(".")
 | 
			
		||||
		else
 | 
			
		||||
			pkgctl_repo_configure_usage
 | 
			
		||||
@@ -226,10 +232,19 @@ pkgctl_repo_configure() {
 | 
			
		||||
 | 
			
		||||
		pushd "${path}" >/dev/null
 | 
			
		||||
 | 
			
		||||
		project_path=$(gitlab_project_name_to_path "${pkgbase}")
 | 
			
		||||
		remote_url="${GIT_REPO_BASE_URL}/${project_path}.git"
 | 
			
		||||
		if ! git remote add origin "${remote_url}" &>/dev/null; then
 | 
			
		||||
			git remote set-url origin "${remote_url}"
 | 
			
		||||
		# Check if this is a packaging repository
 | 
			
		||||
		local is_packaging_repo=0
 | 
			
		||||
		if [[ -f PKGBUILD ]]; then
 | 
			
		||||
			is_packaging_repo=1
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		# Configure remote only for packaging repositories
 | 
			
		||||
		if (( is_packaging_repo )); then
 | 
			
		||||
			project_path=$(gitlab_project_name_to_path "${pkgbase}")
 | 
			
		||||
			remote_url="${GIT_REPO_BASE_URL}/${project_path}.git"
 | 
			
		||||
			if ! git remote add origin "${remote_url}" &>/dev/null; then
 | 
			
		||||
				git remote set-url origin "${remote_url}"
 | 
			
		||||
			fi
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		# move the master branch to main
 | 
			
		||||
@@ -239,7 +254,7 @@ pkgctl_repo_configure() {
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		# configure spec version and variant to avoid using development hooks in production
 | 
			
		||||
		git config devtools.version "${GIT_REPO_SPEC_VERSION}"
 | 
			
		||||
		git config devtools.version "${GIT_REPO_SPEC_VERSION:-1.0.0}"
 | 
			
		||||
		if [[ ${_DEVTOOLS_LIBRARY_DIR} == /usr/share/devtools ]]; then
 | 
			
		||||
			git config devtools.variant canonical
 | 
			
		||||
		else
 | 
			
		||||
@@ -249,8 +264,12 @@ pkgctl_repo_configure() {
 | 
			
		||||
 | 
			
		||||
		git config pull.rebase true
 | 
			
		||||
		git config branch.autoSetupRebase always
 | 
			
		||||
		git config branch.main.remote origin
 | 
			
		||||
		git config branch.main.rebase true
 | 
			
		||||
		
 | 
			
		||||
		# Configure branch remote settings only for packaging repositories with remotes
 | 
			
		||||
		if (( is_packaging_repo )) && git remote | grep -q "^origin$"; then
 | 
			
		||||
			git config branch.main.remote origin
 | 
			
		||||
			git config branch.main.rebase true
 | 
			
		||||
		fi
 | 
			
		||||
 | 
			
		||||
		git config transfer.fsckobjects true
 | 
			
		||||
		git config fetch.fsckobjects true
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										71
									
								
								test/case/repo-configure.bats
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								test/case/repo-configure.bats
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
#!/usr/bin/env bats
 | 
			
		||||
bats_require_minimum_version 1.5.0
 | 
			
		||||
 | 
			
		||||
# Load bats libraries
 | 
			
		||||
load "/usr/lib/bats/bats-support/load.bash"
 | 
			
		||||
load "/usr/lib/bats/bats-assert/load.bash"
 | 
			
		||||
 | 
			
		||||
export _DEVTOOLS_LIBRARY_DIR="${PWD}/src"
 | 
			
		||||
 | 
			
		||||
_pkgctl_repo_configure() {
 | 
			
		||||
	source "${_DEVTOOLS_LIBRARY_DIR}"/lib/repo/configure.sh
 | 
			
		||||
	pkgctl_repo_configure "$@"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "repo-configure-valid-packaging" {
 | 
			
		||||
	local tmpdir
 | 
			
		||||
	tmpdir=$(mktemp -dt devtools.test.repo-configure.XXXXXX)
 | 
			
		||||
	pushd "${tmpdir}"
 | 
			
		||||
	git init
 | 
			
		||||
	git remote add origin "https://gitlab.archlinux.org/archlinux/packaging/packages/devtools.git"
 | 
			
		||||
	run _pkgctl_repo_configure
 | 
			
		||||
	assert_success
 | 
			
		||||
	popd
 | 
			
		||||
	rm -rf "${tmpdir}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "repo-configure-non-packaging" {
 | 
			
		||||
	local tmpdir
 | 
			
		||||
	tmpdir=$(mktemp -dt devtools.test.repo-configure.XXXXXX)
 | 
			
		||||
	pushd "${tmpdir}"
 | 
			
		||||
	git init
 | 
			
		||||
	git remote add origin "https://gitlab.com/kicad/libraries/kicad-packages3D.git"
 | 
			
		||||
	run _pkgctl_repo_configure
 | 
			
		||||
	assert_success
 | 
			
		||||
	popd
 | 
			
		||||
	rm -rf "${tmpdir}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "repo-configure-non-arch" {
 | 
			
		||||
	local tmpdir
 | 
			
		||||
	tmpdir=$(mktemp -dt devtools.test.repo-configure.XXXXXX)
 | 
			
		||||
	pushd "${tmpdir}"
 | 
			
		||||
	git init
 | 
			
		||||
	git remote add origin "https://github.com/torvalds/linux.git"
 | 
			
		||||
	run _pkgctl_repo_configure
 | 
			
		||||
	assert_success
 | 
			
		||||
	popd
 | 
			
		||||
	rm -rf "${tmpdir}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "repo-configure-no-git" {
 | 
			
		||||
	local tmpdir
 | 
			
		||||
	tmpdir=$(mktemp -dt devtools.test.repo-configure.XXXXXX)
 | 
			
		||||
	pushd "${tmpdir}"
 | 
			
		||||
	run ! _pkgctl_repo_configure
 | 
			
		||||
	assert_failure
 | 
			
		||||
	assert_output --partial "Not in a git repository"
 | 
			
		||||
	popd
 | 
			
		||||
	rm -rf "${tmpdir}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "repo-configure-local-git" {
 | 
			
		||||
	local tmpdir
 | 
			
		||||
	tmpdir=$(mktemp -dt devtools.test.repo-configure.XXXXXX)
 | 
			
		||||
	pushd "${tmpdir}"
 | 
			
		||||
	git init
 | 
			
		||||
	run _pkgctl_repo_configure
 | 
			
		||||
	assert_success
 | 
			
		||||
	popd
 | 
			
		||||
	rm -rf "${tmpdir}"
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user