code: func HashControllerRevision(revision *apps.ControllerRevision, probe *int32) string {
  	hf := fnv.New32()
  	if len(revision.Data.Raw) > 0 {
  		hf.Write(revision.Data.Raw)
  	}
  	if revision.Data.Object != nil {
  		hashutil.DeepHashObject(hf, revision.Data.Object)
  	}
  	if probe != nil {
  		hf.Write([]byte(strconv.FormatInt(int64(*probe), 10)))
  	}
  	return rand.SafeEncodeString(fmt.Sprint(hf.Sum32()))
  }
docs: // HashControllerRevision hashes the contents of revision's Data using FNV hashing. If probe is not nil, the byte value
  // of probe is added written to the hash as well. The returned hash will be a safe encoded string to avoid bad words.