<p>According to the user guide it should be possible to <a href="http://kubernetes.io/docs/user-guide/deployments/#updating-a-deployment" rel="noreferrer">update a deployment's image</a> with <code>kubectl set/edit</code> and still get a meaningful <a href="http://kubernetes.io/docs/user-guide/deployments/#checking-rollout-history-of-a-deployment" rel="noreferrer">history</a>.</p>

<p>However i'm getting some errors instead, and no meaningful history, could this be a bug? </p>

<pre><code>$ kubectl create -f kubernetes/deployment.yml --record
deployment "nginx" created

$ kubectl set image deployment/nginx nginx=nginx:0.2.0
deployment "nginx" image updated
changes to deployments/nginx can't be recorded: Operation cannot be fulfilled on deployments.extensions "nginx": the object has been modified; please apply your changes to the latest version and try againc

$ kubectl set image deployment/nginx nginx=nginx:0.2.1
deployment "nginx" image updated
changes to deployments/nginx can't be recorded: Operation cannot be fulfilled on deployments.extensions "nginx": the object has been modified; please apply your changes to the latest version and try again

$ kb rollout history deployment/nginx
deployments "nginx":
REVISION  CHANGE-CAUSE
1   kubectl create -f kubernetes/deployment.yml --record
2   kubectl create -f kubernetes/deployment.yml --record
3   kubectl create -f kubernetes/deployment.yml --record

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.0+2831379", GitCommit:"283137936a498aed572ee22af6774b6fb6e9fd94", GitTreeState:"not a git tree", BuildDate:"2016-07-05T15:40:13Z", GoVersion:"go1.6.2", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"3", GitVersion:"v1.3.0", GitCommit:"283137936a498aed572ee22af6774b6fb6e9fd94", GitTreeState:"clean", BuildDate:"2016-07-01T19:19:19Z", GoVersion:"go1.6.2", Compiler:"gc", Platform:"linux/amd64"}
</code></pre>

<p>Thanks!</p>

<p>This is due to update conflict when we update the deployment's annotation (for recording its change history). This means that the deployment object is modified (most likely by server) when <code>kubectl</code> updates the deployment change history. <code>kubectl set image</code> currently won't retry change history update on conflict for you. </p>

<p>I've filed a <a href="https://github.com/kubernetes/kubernetes/pull/29300" rel="nofollow">fix</a> to mitigate this.</p>
