From d1a631cedb24c7c75affde7041d43217db64e5c0 Mon Sep 17 00:00:00 2001 From: Danny Yates Date: Wed, 27 Nov 2013 22:00:58 +0000 Subject: [PATCH] Only tag the top-most layer, not all interim layers --- server.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index 3641e2fdc8..f502661e9f 100644 --- a/server.go +++ b/server.go @@ -1098,11 +1098,16 @@ func (srv *Server) pushRepository(r *registry.Registry, out io.Writer, localName for _, ep := range repoData.Endpoints { out.Write(sf.FormatStatus("", "Pushing repository %s (%d tags)", localName, len(localRepo))) // This section can not be parallelized (each round depends on the previous one) - for _, round := range imgList { + for i, round := range imgList { // FIXME: This section can be parallelized for _, elem := range round { var pushTags func() error pushTags = func() error { + if i < (len(imgList) - 1) { + // Only tag the top layer in the repository + return nil + } + out.Write(sf.FormatStatus("", "Pushing tags for rev [%s] on {%s}", elem.ID, ep+"repositories/"+remoteName+"/tags/"+elem.Tag)) if err := r.PushRegistryTag(remoteName, elem.ID, elem.Tag, ep, repoData.Tokens); err != nil { return err