Browse code

Store layer digests on pull

Currently digests are not stored on pull, causing a simple re-tag or re-push to send up all layers. Storing the digests on pull will allow subsequent pushes to the same repository to not push up content.
This does not address pushing content to a new repository. When content is pushed to a new repository, the digest will be recalculated. Since only one digest is currently stored, it may cause a new content push to the original repository.

Fixes #13883

Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)

Derek McGowan authored on 2015/06/16 03:06:21
Showing 1 changed files
... ...
@@ -654,6 +654,10 @@ func (s *TagStore) pullV2Tag(r *registry.Session, out io.Writer, endpoint *regis
654 654
 					return false, err
655 655
 				}
656 656
 
657
+				if err := s.graph.SetDigest(d.img.ID, d.digest); err != nil {
658
+					return false, err
659
+				}
660
+
657 661
 				// FIXME: Pool release here for parallel tag pull (ensures any downloads block until fully extracted)
658 662
 			}
659 663
 			out.Write(sf.FormatProgress(stringid.TruncateID(d.img.ID), "Pull complete", nil))