Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package digger-cli for openSUSE:Factory checked in at 2026-10-08 11:59:18 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/digger-cli (Old) and /work/SRC/openSUSE:Factory/.digger-cli.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "digger-cli" Thu Oct 8 11:59:18 2026 rev:57 rq:1383167 version:0.6.154 Changes: -------- --- /work/SRC/openSUSE:Factory/digger-cli/digger-cli.changes 2026-10-01 16:49:37.184511891 +0200 +++ /work/SRC/openSUSE:Factory/.digger-cli.new.3698736/digger-cli.changes 2026-10-08 12:00:08.109840058 +0200 @@ -1,0 +2,9 @@ +Thu Oct 08 05:19:08 UTC 2026 - Johannes Kastl <[email protected]> + +- Update to version 0.6.154: + * fix: carry git_timeout in the job spec so policy repo clones + honor it (#2740) +- Update to version 0.6.153: + * fix: respect git_timeout in drift policy checks (#2739) + +------------------------------------------------------------------- Old: ---- digger-cli-0.6.152.obscpio New: ---- digger-cli-0.6.154.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ digger-cli.spec ++++++ --- /var/tmp/diff_new_pack.CKKJEA/_old 2026-10-08 12:00:10.062921865 +0200 +++ /var/tmp/diff_new_pack.CKKJEA/_new 2026-10-08 12:00:10.067922075 +0200 @@ -19,7 +19,7 @@ %define executable_name digger Name: digger-cli -Version: 0.6.152 +Version: 0.6.154 Release: 0 Summary: CLI for the digger open source IaC orchestration tool License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.CKKJEA/_old 2026-10-08 12:00:10.152925635 +0200 +++ /var/tmp/diff_new_pack.CKKJEA/_new 2026-10-08 12:00:10.159925929 +0200 @@ -6,8 +6,8 @@ <param name="exclude">go.mod</param> <param name="exclude">go.work</param> <param name="exclude">go.work.sum</param> - <param name="revision">refs/tags/v0.6.152</param> - <param name="match-tag">v0.6.152</param> + <param name="revision">refs/tags/v0.6.154</param> + <param name="match-tag">v0.6.154</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.CKKJEA/_old 2026-10-08 12:00:10.196927478 +0200 +++ /var/tmp/diff_new_pack.CKKJEA/_new 2026-10-08 12:00:10.199927604 +0200 @@ -5,6 +5,6 @@ <param name="url">https://github.com/johanneskastl/digger</param> <param name="changesrevision">8fe377068e53e2050ff4c745388d8428d2b13bb0</param></service><service name="tar_scm"> <param name="url">https://github.com/diggerhq/digger.git</param> - <param name="changesrevision">9ac4e2237b7b8afa455f422b92737bfe106d495c</param></service></servicedata> + <param name="changesrevision">853f6abf3f7ad9d2fa20b8956e5a758441ddca1e</param></service></servicedata> (No newline at EOF) ++++++ digger-cli-0.6.152.obscpio -> digger-cli-0.6.154.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/backend/services/spec.go new/digger-cli-0.6.154/backend/services/spec.go --- old/digger-cli-0.6.152/backend/services/spec.go 2026-09-30 18:56:09.000000000 +0200 +++ new/digger-cli-0.6.154/backend/services/spec.go 2026-10-07 15:26:17.000000000 +0200 @@ -147,6 +147,23 @@ return variablesSpec } +// gitTimeoutFromBatch returns git_timeout (seconds) from the digger.yml stored on the batch, +// or 0 when it is absent or unreadable so the CLI keeps its default. +func gitTimeoutFromBatch(batch *models.DiggerBatch) int { + if batch == nil || batch.DiggerConfig == "" { + return 0 + } + configYaml, err := digger_config.LoadDiggerConfigYamlFromString(batch.DiggerConfig) + if err != nil { + slog.Warn("Could not read git_timeout from batch digger config", "batchId", batch.ID, "error", err) + return 0 + } + if configYaml.GitTimeout == nil { + return 0 + } + return *configYaml.GitTimeout +} + func GetSpecFromJob(job models.DiggerJob) (*spec.Spec, error) { var jobSpec scheduler.JobJson err := json.Unmarshal([]byte(job.SerializedJobSpec), &jobSpec) @@ -212,6 +229,7 @@ Variables: variablesSpec, Policy: spec.PolicySpec{ PolicyType: "http", + GitTimeout: gitTimeoutFromBatch(batch), }, CommentUpdater: spec.CommentUpdaterSpec{ CommentUpdaterType: digger_config.CommentRenderModeBasic, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/backend/services/spec_test.go new/digger-cli-0.6.154/backend/services/spec_test.go --- old/digger-cli-0.6.152/backend/services/spec_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/digger-cli-0.6.154/backend/services/spec_test.go 2026-10-07 15:26:17.000000000 +0200 @@ -0,0 +1,16 @@ +package services + +import ( + "testing" + + "github.com/diggerhq/digger/backend/models" + "github.com/stretchr/testify/assert" +) + +func TestGitTimeoutFromBatch(t *testing.T) { + assert.Equal(t, 0, gitTimeoutFromBatch(nil)) + assert.Equal(t, 0, gitTimeoutFromBatch(&models.DiggerBatch{})) + assert.Equal(t, 0, gitTimeoutFromBatch(&models.DiggerBatch{DiggerConfig: "projects: []\n"})) + assert.Equal(t, 0, gitTimeoutFromBatch(&models.DiggerBatch{DiggerConfig: "git_timeout: [\n"})) + assert.Equal(t, 300, gitTimeoutFromBatch(&models.DiggerBatch{DiggerConfig: "git_timeout: 300\nprojects: []\n"})) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/cli/pkg/github/github.go new/digger-cli-0.6.154/cli/pkg/github/github.go --- old/digger-cli-0.6.152/cli/pkg/github/github.go 2026-09-30 18:56:09.000000000 +0200 +++ new/digger-cli-0.6.154/cli/pkg/github/github.go 2026-10-07 15:26:17.000000000 +0200 @@ -6,6 +6,7 @@ "log/slog" "os" "strings" + "time" "github.com/diggerhq/digger/cli/pkg/digger" "github.com/diggerhq/digger/cli/pkg/drift" @@ -56,7 +57,6 @@ hostName := os.Getenv("DIGGER_HOSTNAME") token := os.Getenv("DIGGER_TOKEN") orgName := os.Getenv("DIGGER_ORGANISATION") - var policyChecker, _ = policyCheckerProvider.Get(hostName, token, orgName) ghToken := os.Getenv("GITHUB_TOKEN") if ghToken == "" { @@ -114,6 +114,16 @@ } slog.Info("Digger digger_config read successfully") + var policyChecker core_policy.Checker + if provider, ok := policyCheckerProvider.(core_policy.GitTimeoutPolicyCheckerProvider); ok { + policyChecker, err = provider.GetWithGitTimeout(hostName, orgName, token, time.Duration(diggerConfig.GitTimeout)*time.Second) + } else { + policyChecker, err = policyCheckerProvider.Get(hostName, orgName, token) + } + if err != nil { + usage.ReportErrorAndExit(githubActor, fmt.Sprintf("Failed to initialize policy checker. %s", err), 4) + } + if diggerConfig.PrLocks == false { slog.Info("Using noop lock as configured in digger.yml") lock = core_locking.NoOpLock{} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/docs/ce/reference/digger.yml.mdx new/digger-cli-0.6.154/docs/ce/reference/digger.yml.mdx --- old/digger-cli-0.6.152/docs/ce/reference/digger.yml.mdx 2026-09-30 18:56:09.000000000 +0200 +++ new/digger-cli-0.6.154/docs/ce/reference/digger.yml.mdx 2026-10-07 15:26:17.000000000 +0200 @@ -216,7 +216,7 @@ </ParamField> <ParamField path="git_timeout" type="integer" default="30"> - Timeout in seconds for each git command (clone, checkout) Digger runs when loading repository configuration. Increase this for large repositories, for example `git_timeout: 120`. Digger reads this setting through the Git provider API before cloning, using the requested branch or commit. It checks `digger.yml` first, then `digger.yaml`. An omitted, zero, or negative value uses the 30-second default. The initial API lookup has its own 30-second timeout. + Timeout in seconds for each git command (clone, checkout) Digger runs when loading repository configuration. Increase this for large repositories, for example `git_timeout: 120`. Digger reads this setting through the Git provider API before cloning, using the requested branch or commit. It checks `digger.yml` first, then `digger.yaml`. An omitted, zero, or negative value uses the 30-second default. The initial API lookup has its own 30-second timeout. The same value applies when a job clones the policy management repository (`DIGGER_MANAGEMENT_REPO`), including drift runs, so increase it if that repository is large. </ParamField> <ParamField path="projects" type="array"> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/drift/controllers/drift.go new/digger-cli-0.6.154/drift/controllers/drift.go --- old/digger-cli-0.6.152/drift/controllers/drift.go 2026-09-30 18:56:09.000000000 +0200 +++ new/digger-cli-0.6.154/drift/controllers/drift.go 2026-10-07 15:26:17.000000000 +0200 @@ -148,6 +148,7 @@ Variables: make([]spec.VariableSpec, 0), Policy: spec.PolicySpec{ PolicyType: "http", + GitTimeout: config.GitTimeout, }, CommentUpdater: spec.CommentUpdaterSpec{ CommentUpdaterType: "noop", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/ee/backend/controllers/spec.go new/digger-cli-0.6.154/ee/backend/controllers/spec.go --- old/digger-cli-0.6.152/ee/backend/controllers/spec.go 2026-09-30 18:56:09.000000000 +0200 +++ new/digger-cli-0.6.154/ee/backend/controllers/spec.go 2026-10-07 15:26:17.000000000 +0200 @@ -108,6 +108,7 @@ }, Policy: spec.PolicySpec{ PolicyType: "http", + GitTimeout: config.GitTimeout, }, } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/ee/cli/pkg/policy/policy.go new/digger-cli-0.6.154/ee/cli/pkg/policy/policy.go --- old/digger-cli-0.6.152/ee/cli/pkg/policy/policy.go 2026-09-30 18:56:09.000000000 +0200 +++ new/digger-cli-0.6.154/ee/cli/pkg/policy/policy.go 2026-10-07 15:26:17.000000000 +0200 @@ -1,6 +1,8 @@ package policy import ( + "time" + "github.com/diggerhq/digger/libs/git_utils" "github.com/samber/lo" "log/slog" @@ -20,6 +22,7 @@ type DiggerRepoPolicyProvider struct { ManagementRepoUrl string GitToken string + GitTimeout time.Duration } func getContents(filePath string) (string, error) { @@ -63,7 +66,7 @@ func (p DiggerRepoPolicyProvider) getPolicyFileContents(repo string, projectName string, projectDir string, fileName string) (string, error) { var contents string - err := git_utils.CloneGitRepoAndDoAction(p.ManagementRepoUrl, "main", "", p.GitToken, "", func(basePath string) error { + err := git_utils.CloneGitRepoAndDoActionWithTimeout(p.ManagementRepoUrl, "main", "", p.GitToken, "", p.gitTimeout(), func(basePath string) error { // we start with the project directory path prefixes as the highest priority prefixes := GetPrefixesForPath(path.Join(basePath, projectDir), fileName) @@ -96,6 +99,13 @@ return contents, nil } +func (p DiggerRepoPolicyProvider) gitTimeout() time.Duration { + if p.GitTimeout <= 0 { + return 30 * time.Second + } + return p.GitTimeout +} + // GetPolicy fetches policy for particular project, if not found then it will fallback to org level policy func (p DiggerRepoPolicyProvider) GetAccessPolicy(organisation string, repo string, projectName string, projectDir string) (string, error) { policy, err := p.getPolicyFileContents(repo, projectName, projectDir, "access.rego") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/ee/cli/pkg/policy/providers.go new/digger-cli-0.6.154/ee/cli/pkg/policy/providers.go --- old/digger-cli-0.6.152/ee/cli/pkg/policy/providers.go 2026-09-30 18:56:09.000000000 +0200 +++ new/digger-cli-0.6.154/ee/cli/pkg/policy/providers.go 2026-10-07 15:26:17.000000000 +0200 @@ -6,6 +6,7 @@ lib_spec "github.com/diggerhq/digger/libs/spec" "log" "os" + "time" ) type AdvancedPolicyProvider struct{} @@ -35,6 +36,7 @@ PolicyProvider: DiggerRepoPolicyProvider{ ManagementRepoUrl: managementRepo, GitToken: token, + GitTimeout: time.Duration(policySpec.GitTimeout) * time.Second, }, }, nil } @@ -46,6 +48,10 @@ type PolicyCheckerProviderAdvanced struct{} func (p PolicyCheckerProviderAdvanced) Get(hostname string, organisationName string, authToken string) (policy.Checker, error) { + return p.GetWithGitTimeout(hostname, organisationName, authToken, 0) +} + +func (p PolicyCheckerProviderAdvanced) GetWithGitTimeout(hostname string, organisationName string, authToken string, gitTimeout time.Duration) (policy.Checker, error) { managementRepo := os.Getenv("DIGGER_MANAGEMENT_REPO") if managementRepo != "" { token := os.Getenv("GITHUB_TOKEN") @@ -56,6 +62,7 @@ PolicyProvider: DiggerRepoPolicyProvider{ ManagementRepoUrl: managementRepo, GitToken: token, + GitTimeout: gitTimeout, }, }, nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/ee/cli/pkg/policy/providers_test.go new/digger-cli-0.6.154/ee/cli/pkg/policy/providers_test.go --- old/digger-cli-0.6.152/ee/cli/pkg/policy/providers_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/digger-cli-0.6.154/ee/cli/pkg/policy/providers_test.go 2026-10-07 15:26:17.000000000 +0200 @@ -0,0 +1,26 @@ +package policy + +import ( + "testing" + "time" + + "github.com/diggerhq/digger/libs/policy" + lib_spec "github.com/diggerhq/digger/libs/spec" + "github.com/stretchr/testify/assert" +) + +func TestGetPolicyProviderPassesSpecGitTimeoutToManagementRepo(t *testing.T) { + t.Setenv("DIGGER_MANAGEMENT_REPO", "https://github.com/example/policies") + t.Setenv("GITHUB_TOKEN", "test-token") + + checker, err := AdvancedPolicyProvider{}.GetPolicyProvider(lib_spec.PolicySpec{PolicyType: "http", GitTimeout: 300}, "", "", "", "noop") + assert.NoError(t, err) + provider := checker.(policy.DiggerPolicyChecker).PolicyProvider.(DiggerRepoPolicyProvider) + assert.Equal(t, "https://github.com/example/policies", provider.ManagementRepoUrl) + assert.Equal(t, 300*time.Second, provider.gitTimeout()) + + // a spec without git_timeout (older backend) keeps the 30 second default + checker, err = AdvancedPolicyProvider{}.GetPolicyProvider(lib_spec.PolicySpec{PolicyType: "http"}, "", "", "", "noop") + assert.NoError(t, err) + assert.Equal(t, 30*time.Second, checker.(policy.DiggerPolicyChecker).PolicyProvider.(DiggerRepoPolicyProvider).gitTimeout()) +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/libs/policy/core.go new/digger-cli-0.6.154/libs/policy/core.go --- old/digger-cli-0.6.152/libs/policy/core.go 2026-09-30 18:56:09.000000000 +0200 +++ new/digger-cli-0.6.154/libs/policy/core.go 2026-10-07 15:26:17.000000000 +0200 @@ -1,5 +1,7 @@ package policy +import "time" + type Provider interface { GetAccessPolicy(organisation string, repository string, projectname string, projectDir string) (string, error) GetPlanPolicy(organisation string, repository string, projectname string, projectDir string) (string, error) @@ -20,6 +22,10 @@ Get(hostname string, organisationName string, authToken string) (Checker, error) } +type GitTimeoutPolicyCheckerProvider interface { + GetWithGitTimeout(hostname string, organisationName string, authToken string, gitTimeout time.Duration) (Checker, error) +} + type AccessPolicyContext struct { SCMOrganisation string SCMrepository string diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/digger-cli-0.6.152/libs/spec/models.go new/digger-cli-0.6.154/libs/spec/models.go --- old/digger-cli-0.6.152/libs/spec/models.go 2026-09-30 18:56:09.000000000 +0200 +++ new/digger-cli-0.6.154/libs/spec/models.go 2026-10-07 15:26:17.000000000 +0200 @@ -38,6 +38,9 @@ type PolicySpec struct { PolicyType string `json:"policy_type"` + // GitTimeout is digger.yml git_timeout in seconds. The CLI applies it to each git + // command when the policy provider clones DIGGER_MANAGEMENT_REPO. Zero means the default. + GitTimeout int `json:"git_timeout,omitempty"` } type VariableSpec struct { ++++++ digger-cli.obsinfo ++++++ --- /var/tmp/diff_new_pack.CKKJEA/_old 2026-10-08 12:00:12.406020009 +0200 +++ /var/tmp/diff_new_pack.CKKJEA/_new 2026-10-08 12:00:12.417020470 +0200 @@ -1,5 +1,5 @@ name: digger-cli -version: 0.6.152 -mtime: 1790787369 -commit: 9ac4e2237b7b8afa455f422b92737bfe106d495c +version: 0.6.154 +mtime: 1791379577 +commit: 853f6abf3f7ad9d2fa20b8956e5a758441ddca1e ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/digger-cli/vendor.tar.gz /work/SRC/openSUSE:Factory/.digger-cli.new.3698736/vendor.tar.gz differ: char 15, line 1
