code: func copyDeploymentAnnotationsToReplicaSet(deployment *apps.Deployment, rs *apps.ReplicaSet) bool {
  	rsAnnotationsChanged := false
  	if rs.Annotations == nil {
  		rs.Annotations = make(map[string]string)
  	}
  	for k, v := range deployment.Annotations {
  		// newRS revision is updated automatically in getNewReplicaSet, and the deployment's revision number is then updated
  		// by copying its newRS revision number. We should not copy deployment's revision to its newRS, since the update of
  		// deployment revision number may fail (revision becomes stale) and the revision number in newRS is more reliable.
  		if skipCopyAnnotation(k) || rs.Annotations[k] == v {
  			continue
  		}
  		rs.Annotations[k] = v
  		rsAnnotationsChanged = true
  	}
  	return rsAnnotationsChanged
  }
docs: // copyDeploymentAnnotationsToReplicaSet copies deployment's annotations to replica set's annotations,
  // and returns true if replica set's annotation is changed.
  // Note that apply and revision annotations are not copied.