* feat: add --batch-size flag to push refs in batches Add support for pushing refs in smaller batches to avoid server-side limits and timeouts when syncing large repositories with many tags/branches. - Add --batch-size flag (default 0 = no batching, original behavior) - Add References() method to GitRepository interface - Implement collectRefs() and pushRefsInBatches() helpers - Add MinBatchSize validation (must be 0 or >= 10) This addresses issues where repositories with 1000+ refs fail to sync to GHES with 'command error on refs/heads/<branch>: failed' errors. * test: add tests for batch-size flag and push batching functionality * fix: pin tool dependencies to versions compatible with Go 1.21 * ci: fix docker compose v2 syntax and update setup-ruby action * refactor: address PR review feedback - Remove unused RefInfo struct from git.go - Remove redundant pushedAny variable tracking in pushRefsInBatches - Remove incomplete TestPushRefsInBatches_PartialUpToDate test (already covered by existing test case) * docs: add --batch-size flag to README
38 lines
855 B
Bash
Executable File
38 lines
855 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
|
|
test -z "${DEBUG:-}" || {
|
|
set -x
|
|
}
|
|
|
|
tools=$(pwd)/_tools
|
|
export GOBIN="${tools}/bin"
|
|
export GO111MODULE=on
|
|
|
|
mkdir -p "${GOBIN}"
|
|
cd "${tools}"
|
|
|
|
if [ ! -f go.mod ]; then
|
|
go mod init tools
|
|
fi
|
|
|
|
go get golang.org/x/tools/go/packages@v0.16.0
|
|
|
|
if [ ! -f "${GOBIN}/mockgen" ]; then
|
|
echo "mockgen was not found, installing..."
|
|
go get github.com/golang/mock/gomock@v1.6.0
|
|
go get github.com/golang/mock/mockgen@v1.6.0
|
|
fi
|
|
|
|
if [ ! -f "${GOBIN}/golangci-lint" ]; then
|
|
echo "golangci was not found, installing..."
|
|
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.55.2
|
|
fi
|
|
|
|
if [ ! -f "${GOBIN}/goimports" ]; then
|
|
echo "goimports was not found, installing..."
|
|
go get golang.org/x/tools/cmd/goimports@v0.16.0
|
|
fi
|