Repository: kubernetes
Issue: Versioned feature gate lint error need to provide clear directions on what to do
Labels: sig/api-machinery,triage/accepted

When migrating `RetryGenerateName` from unversioned to versioned, I removed the feature gate from `pkg/features/kube_features.go` and added it to `/pkg/features/kube_features.go`.

I then ran:

```
hack/update-featuregates.sh  
```

And got the following error:

```
found 40 features in FeatureSpecMap var defaultKubernetesFeatureGates in file: /home/jpbetz/projects/kubernetes/pkg/features/kube_features.go
found 2 features in FeatureSpecMap var defaultKubernetesFeatureGates in file: /home/jpbetz/projects/kubernetes/staging/src/k8s.io/apiextensions-apiserver/pkg/features/kube_features.go
found 31 features in FeatureSpecMap var defaultKubernetesFeatureGates in file: /home/jpbetz/projects/kubernetes/staging/src/k8s.io/apiserver/pkg/features/kube_features.go
found 3 features in FeatureSpecMap of func featureGates in file: /home/jpbetz/projects/kubernetes/staging/src/k8s.io/component-base/logs/api/v1/kube_features.go
found 1 features in FeatureSpecMap of func featureGates in file: /home/jpbetz/projects/kubernetes/staging/src/k8s.io/component-base/metrics/features/kube_features.go
found 1 features in FeatureSpecMap var cloudPublicFeatureGates in file: /home/jpbetz/projects/kubernetes/staging/src/k8s.io/controller-manager/pkg/features/kube_features.go
panic: feature RetryGenerateName changed with diff:   cmd.featureInfo{
	  	Name:     "RetryGenerateName",
	  	FullName: "",
	  	VersionedSpecs: []cmd.featureSpec{
	  		{
	  			Default:       true,
	- 			LockToDefault: false,
	+ 			LockToDefault: true,
	- 			PreRelease:    "Beta",
	+ 			PreRelease:    "GA",
	  			Version:       "",
	  		},
	  	},
	  }
	

goroutine 1 [running]:
k8s.io/kubernetes/test/featuregates_linter/cmd.updateFeatureListFunc(0xc0001b6d00?, {0x695a38?, 0x4?, 0x6959e8?})
	/home/jpbetz/projects/kubernetes/test/featuregates_linter/cmd/feature_gates.go:108 +0x91
github.com/spf13/cobra.(*Command).execute(0xc0001c4908, {0x8c7e00, 0x0, 0x0})
	/home/jpbetz/projects/kubernetes/vendor/github.com/spf13/cobra/command.go:989 +0xa91
github.com/spf13/cobra.(*Command).ExecuteC(0x8a3cc0)
	/home/jpbetz/projects/kubernetes/vendor/github.com/spf13/cobra/command.go:1117 +0x3ff
github.com/spf13/cobra.(*Command).Execute(...)
	/home/jpbetz/projects/kubernetes/vendor/github.com/spf13/cobra/command.go:1041
k8s.io/kubernetes/test/featuregates_linter/cmd.Execute()
	/home/jpbetz/projects/kubernetes/test/featuregates_linter/cmd/root.go:32 +0x1a
main.main()
	/home/jpbetz/projects/kubernetes/test/featuregates_linter/main.go:22 +0xf
exit status 2
```

The error is caused by the feature still being present in `staging/src/k8s.io/apiserver/pkg/features/kube_features.go`, but nothing about the linter error states this, nor does it explain _why_ the panic was raised.  Note that the linter has a comment in the code explaining why the error is returned, but that information is not surfaced to end users in the error:

https://github.com/kubernetes/kubernetes/blob/ae945462fb2d12a4e38d074de8fe77267460624b/test/featuregates_linter/cmd/feature_gates.go#L152-L159