瀏覽代碼

Merge pull request #30889 from aaronlehmann/addreference-tag-digest

reference: Handle combination of tag and digest in AddReference
Sebastiaan van Stijn 8 年之前
父節點
當前提交
584e399d96
共有 1 個文件被更改,包括 14 次插入0 次删除
  1. 14 0
      reference/store.go

+ 14 - 0
reference/store.go

@@ -107,6 +107,20 @@ func (store *store) AddDigest(ref reference.Canonical, id digest.Digest, force b
 }
 
 func (store *store) addReference(ref reference.Named, id digest.Digest, force bool) error {
+	// If the reference includes a digest and a tag, we must store only the
+	// digest.
+	canonical, isCanonical := ref.(reference.Canonical)
+	_, isNamedTagged := ref.(reference.NamedTagged)
+
+	if isCanonical && isNamedTagged {
+		trimmed, err := reference.WithDigest(reference.TrimNamed(canonical), canonical.Digest())
+		if err != nil {
+			// should never happen
+			return err
+		}
+		ref = trimmed
+	}
+
 	refName := reference.FamiliarName(ref)
 	refStr := reference.FamiliarString(ref)