{"record":{"id":"eee78e760e3bbd18","repo":"golang/go","slug":"unable-to-parse-output-of-svn-info-v","errorCode":null,"errorMessage":"unable to parse output of svn info: %v","messagePattern":"unable to parse output of svn info: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/cmd/go/internal/vcs/vcs.go","lineNumber":288,"sourceCode":"\tScheme:  []string{\"https\", \"http\", \"svn\", \"svn+ssh\"},\n\tPingCmd: \"info -- {scheme}://{repo}\",\n\tStatus:  svnStatus,\n}\n\nfunc svnStatus(vcsSvn *Cmd, rootDir string) (Status, error) {\n\tout, err := vcsSvn.runOutputVerboseOnly(rootDir, \"info --show-item last-changed-revision\")\n\tif err != nil {\n\t\treturn Status{}, err\n\t}\n\trev := strings.TrimSpace(string(out))\n\n\tout, err = vcsSvn.runOutputVerboseOnly(rootDir, \"info --show-item last-changed-date\")\n\tif err != nil {\n\t\treturn Status{}, err\n\t}\n\tcommitTime, err := time.Parse(time.RFC3339, strings.TrimSpace(string(out)))\n\tif err != nil {\n\t\treturn Status{}, fmt.Errorf(\"unable to parse output of svn info: %v\", err)\n\t}\n\n\tout, err = vcsSvn.runOutputVerboseOnly(rootDir, \"status\")\n\tif err != nil {\n\t\treturn Status{}, err\n\t}\n\tuncommitted := len(out) > 0\n\n\treturn Status{\n\t\tRevision:    rev,\n\t\tCommitTime:  commitTime,\n\t\tUncommitted: uncommitted,\n\t}, nil\n}\n\n// fossilRepoName is the name go get associates with a fossil repository. In the\n// real world the file can be named anything.\nconst fossilRepoName = \".fossil\"","sourceCodeStart":270,"sourceCodeEnd":306,"githubUrl":"https://github.com/golang/go/blob/b6b368adc57c96c3151d224d172029f233ead2c3/src/cmd/go/internal/vcs/vcs.go#L270-L306","documentation":"For Subversion repositories, the go tool runs `svn info --show-item last-changed-date` and parses the result as RFC3339. If the date string doesn't match the RFC3339 layout, parsing fails with the underlying time.Parse error wrapped for context.","triggerScenarios":"An SVN repository where `svn info --show-item last-changed-date` returns output that isn't valid RFC3339 — different SVN version, locale-specific date formatting, or unexpected svn output (error text, empty string).","commonSituations":"Older SVN client with different date output format; non-English locale affecting svn output; SVN server configuration returning unusual date formats; svn not installed or broken.","solutions":["Run `svn info --show-item last-changed-date` manually to inspect the actual output","Ensure svn is a reasonably modern version (1.9+) that supports --show-item","Set LC_ALL=C or LC_TIME=C to force consistent date formatting","Re-checkout the SVN working copy if metadata is corrupted"],"exampleFix":"# before: locale affects svn date output\nexport LC_TIME=de_DE.UTF-8\ngo get ./...\n\n# after: force C locale for consistent formatting\nexport LC_ALL=C\ngo get ./...","handlingStrategy":"try-catch","validationCode":"# Verify svn date output is parseable as RFC3339\nDATE=$(svn info --show-item last-changed-revision 2>/dev/null)\nif [ $? -ne 0 ]; then echo 'svn not available or repo not SVN'; fi\n# Force neutral locale for consistent output\nexport LC_ALL=C","typeGuard":null,"tryCatchPattern":"# Retry with neutral locale on SVN parse failure\nif ! go get ./... 2>&1 | grep -q 'unable to parse output of svn info'; then\n  echo 'ok'\nelse\n  LC_ALL=C go get ./...\nfi","preventionTips":["Set LC_ALL=C in CI environments to ensure consistent VCS output","Use modern svn versions that support --show-item","Verify svn is installed and the working copy is valid"],"tags":["vcs","svn","parsing","date","locale"],"backgroundTag":null,"analyzedSha":"b6b368adc57c96c3151d224d172029f233ead2c3","analyzedAt":"2026-08-12T00:22:02.250Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}