# Teach the .git/config guard the skipFetchAll stamp

`4fab7de`→[main](/content/gh/entireio/cli/commits/main/index.html) ·  toothbrush · 4d ago · 1 file · +12 added/-5 removed

The integration harness normalizes away exactly the URL-keyed
promisor+partialclonefilter pair git writes during filtered fetches;
the new skipFetchAll/skipDefaultUpdate stamp made the section no longer
match, tripping the guard in TestHTTPS_OutOfSyncCheckpointBranchRebases.
Allow the two stamp keys in the section while still failing loudly when
the core promisor pair is incomplete or any other key appears.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

## Changes

1

- cmd/entire/cli/integration_test
  
  - Mtestenv.go +12/-5

```
312 unmodified lines

var gitConfigGuardRepositoryFormatVersionRE = regexp.MustCompile(`(?m)^([ \t]*)repositoryformatversion = [01]$`)

var gitConfigGuardTransportPromisorRemoteRE = regexp.MustCompile(
	`(?m)^
	\[remote "(?:(?:https?|ssh|file)://|/|[A-Za-z]:[\\]|[^"\n]+@[^"\n]+:[^"\n]+).+"\]
	(?:[ \t]+promisor = true\n[ \t]+partialclonefilter = blob:none\n?|[ \t]+partialclonefilter = blob:none\n[ \t]+promisor = true\n?)`,
	`(?m)^\[remote "(?:(?:https?|ssh|file)://|/|[A-Za-z]:[\\]|[^"\n]+@[^"\n]+:[^"\n]+).+"\]
	(?:[ \t]+(?:promisor = true|partialclonefilter = blob:none|skipFetchAll = true|skipDefaultUpdate = true)\n?){2,4}`,
)

func normalizeGitConfigForGuard(content string) string {
	content = gitConfigGuardRepositoryFormatVersionRE.ReplaceAllString(content, `${1}repositoryformatversion = <normalized>`)
	// Deliberately ignore only the full promisor+partialclonefilter pair that
	// git writes for transport-keyed remotes during filtered fetches. If git ever
	// writes a partial section, the guard should still fail loudly.
	content = gitConfigGuardTransportPromisorRemoteRE.ReplaceAllString(content, "")
	// Deliberately ignore only the URL-keyed remote sections written during
	// filtered fetches: git's promisor+partialclonefilter pair plus the
	// skipFetchAll/skipDefaultUpdate stamp the CLI adds so bulk fetches skip
	// the entry. A section without the full promisor pair (or with any other
	// key) still fails loudly.
	content = gitConfigGuardTransportPromisorRemoteRE.ReplaceAllStringFunc(content, func(section string) string {
		if strings.Contains(section, "promisor = true") && strings.Contains(section, "partialclonefilter = blob:none") {
			return ""
		}
		return section
	})
	return content
}
```

Mcmd/entire/cli/integration_test/testenv.go +12/-5
