Repository: distribution/distribution
Pull request #3225 (2020-08-24 11:25:10)

go.mod: change imports to github.com/distribution/distribution/v3
Go 1.13 and up enforce import paths to be versioned if a project
contains a go.mod.

The current v2.x branches (and releases) do not yet have a go.mod,
and therefore are still allowed to be imported with a non-versioned
import path (go modules add a `+incompatible` annotation in that case).

However, now that this project has a `go.mod` file, incompatible
import paths will not be accepted by go modules, and attempting
to use code from this repository will fail.

This patch uses `v3` for the import-paths (not `v2`), because changing
import paths itself is a breaking change, which means that  the
next release should increment the "major" version to comply with
SemVer (as go modules dictate).


thaJeztah: With this repository being moved to https://github.com/distribution/distribution, we should probably rename the module (and imports) accordingly, further qualifying next release to be v3.0.0
milosgajdos: Whilst I'm waiting for the GH org invite so I can start GH review, @thaJeztah could you please change the `import` paths to the new GH org URL?
thaJeztah: Yup; will update the PR to use the new home 👍 
thaJeztah: Updated 👍 
wy65701436: Can we merge it? Then the dependencies can update their source.
joaodrp: > Can we merge it? Then the dependencies can update their source.

I think so, it just needs a rebase.

Patch:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9b9a3f69..9dd01f91 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -24,7 +24,7 @@ jobs:
     steps:
     - uses: actions/checkout@v2
       with:
-        path: src/github.com/docker/distribution
+        path: src/github.com/distribution/distribution
         fetch-depth: 50
 
     - name: Set up Go
@@ -39,7 +39,7 @@ jobs:
           cd /tmp && go get -u github.com/vbatts/git-validation
 
     - name: Build
-      working-directory: ./src/github.com/docker/distribution
+      working-directory: ./src/github.com/distribution/distribution
       run: |
         DCO_VERBOSITY=-q script/validate/dco
         GO111MODULE=on script/setup/install-dev-tools
@@ -52,4 +52,4 @@ jobs:
 
     - uses: codecov/codecov-action@v1
       with:
-        directory: ./src/github.com/docker/distribution
+        directory: ./src/github.com/distribution/distribution
diff --git a/BUILDING.md b/BUILDING.md
index 2981d016..7fd9b24f 100644
--- a/BUILDING.md
+++ b/BUILDING.md
@@ -29,7 +29,7 @@ environment.
 If a Go development environment is setup, one can use `go get` to install the
 `registry` command from the current latest:
 
-    go get github.com/docker/distribution/cmd/registry
+    go get github.com/distribution/distribution/cmd/registry
 
 The above will install the source repository into the `GOPATH`.
 
@@ -43,17 +43,17 @@ The `registry`
 binary can then be run with the following:
 
     $ $GOPATH/bin/registry --version
-    $GOPATH/bin/registry github.com/docker/distribution v2.0.0-alpha.1+unknown
+    $GOPATH/bin/registry github.com/distribution/distribution v2.0.0-alpha.1+unknown
 
 > __NOTE:__ While you do not need to use `go get` to checkout the distribution
 > project, for these build instructions to work, the project must be checked
 > out in the correct location in the `GOPATH`. This should almost always be
-> `$GOPATH/src/github.com/docker/distribution`.
+> `$GOPATH/src/github.com/distribution/distribution`.
 
 The registry can be run with the default config using the following
 incantation:
 
-    $ $GOPATH/bin/registry serve $GOPATH/src/github.com/docker/distribution/cmd/registry/config-example.yml
+    $ $GOPATH/bin/registry serve $GOPATH/src/github.com/distribution/distribution/cmd/registry/config-example.yml
     INFO[0000] endpoint local-5003 disabled, skipping        app.id=34bbec38-a91a-494a-9a3f-b72f9010081f version=v2.0.0-alpha.1+unknown
     INFO[0000] endpoint local-8083 disabled, skipping        app.id=34bbec38-a91a-494a-9a3f-b72f9010081f version=v2.0.0-alpha.1+unknown
     INFO[0000] listening on :5000                            app.id=34bbec38-a91a-494a-9a3f-b72f9010081f version=v2.0.0-alpha.1+unknown
@@ -64,7 +64,7 @@ If it is working, one should see the above log messages.
 ### Repeatable Builds
 
 For the full development experience, one should `cd` into
-`$GOPATH/src/github.com/docker/distribution`. From there, the regular `go`
+`$GOPATH/src/github.com/distribution/distribution`. From there, the regular `go`
 commands, such as `go test`, should work per package (please see
 [Developing](#developing) if they don't work).
 
@@ -87,20 +87,20 @@ build:
     github.com/docker/libtrust
     ...
     github.com/yvasiyarov/gorelic
-    github.com/docker/distribution/registry/handlers
-    github.com/docker/distribution/cmd/registry
+    github.com/distribution/distribution/registry/handlers
+    github.com/distribution/distribution/cmd/registry
     + test
     ...
-    ok    github.com/docker/distribution/digest 7.875s
-    ok    github.com/docker/distribution/manifest 0.028s
-    ok    github.com/docker/distribution/notifications  17.322s
-    ?     github.com/docker/distribution/registry [no test files]
-    ok    github.com/docker/distribution/registry/api/v2  0.101s
-    ?     github.com/docker/distribution/registry/auth  [no test files]
-    ok    github.com/docker/distribution/registry/auth/silly  0.011s
+    ok    github.com/distribution/distribution/digest 7.875s
+    ok    github.com/distribution/distribution/manifest 0.028s
+    ok    github.com/distribution/distribution/notifications  17.322s
+    ?     github.com/distribution/distribution/registry [no test files]
+    ok    github.com/distribution/distribution/registry/api/v2  0.101s
+    ?     github.com/distribution/distribution/registry/auth  [no test files]
+    ok    github.com/distribution/distribution/registry/auth/silly  0.011s
     ...
-    + /Users/sday/go/src/github.com/docker/distribution/bin/registry
-    + /Users/sday/go/src/github.com/docker/distribution/bin/registry-api-descriptor-template
+    + /Users/sday/go/src/github.com/distribution/distribution/bin/registry
+    + /Users/sday/go/src/github.com/distribution/distribution/bin/registry-api-descriptor-template
     + binaries
 
 The above provides a repeatable build using the contents of the vendor
@@ -109,7 +109,7 @@ testing and generating tagged binaries. We can verify this worked by running
 the registry binary generated in the "./bin" directory:
 
     $ ./bin/registry --version
-    ./bin/registry github.com/docker/distribution v2.0.0-alpha.2-80-g16d8b2c.m
+    ./bin/registry github.com/distribution/distribution v2.0.0-alpha.2-80-g16d8b2c.m
 
 ### Optional build tags
 
diff --git a/Dockerfile b/Dockerfile
index 269b1974..170fea8f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,7 +2,7 @@ ARG GO_VERSION=1.13.8
 
 FROM golang:${GO_VERSION}-alpine3.11 AS build
 
-ENV DISTRIBUTION_DIR /go/src/github.com/docker/distribution
+ENV DISTRIBUTION_DIR /go/src/github.com/distribution/distribution
 ENV BUILDTAGS include_oss include_gcs
 
 ARG GOOS=linux
@@ -24,7 +24,7 @@ RUN set -ex \
     && apk add --no-cache ca-certificates
 
 COPY cmd/registry/config-dev.yml /etc/docker/registry/config.yml
-COPY --from=build /go/src/github.com/docker/distribution/bin/registry /bin/registry
+COPY --from=build /go/src/github.com/distribution/distribution/bin/registry /bin/registry
 VOLUME ["/var/lib/registry"]
 EXPOSE 5000
 ENTRYPOINT ["registry"]
diff --git a/GOVERNANCE.md b/GOVERNANCE.md
index 7c05543f..2fe6627b 100644
--- a/GOVERNANCE.md
+++ b/GOVERNANCE.md
@@ -1,4 +1,4 @@
-# docker/distribution Project Governance
+# distribution/distribution Project Governance
 
 Docker distribution abides by the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).
 
diff --git a/Makefile b/Makefile
index 84aef5f4..5e01549f 100644
--- a/Makefile
+++ b/Makefile
@@ -6,7 +6,7 @@ VERSION ?= $(shell git describe --match 'v[0-9]*' --dirty='.m' --always)
 REVISION ?= $(shell git rev-parse HEAD)$(shell if ! git diff --no-ext-diff --quiet --exit-code; then echo .m; fi)
 
 
-PKG=github.com/docker/distribution
+PKG=github.com/distribution/distribution/v3
 
 # Project packages.
 PACKAGES=$(shell go list -tags "${BUILDTAGS}" ./... | grep -v /vendor/)
diff --git a/blobs.go b/blobs.go
index 2a659eaa..33273213 100644
--- a/blobs.go
+++ b/blobs.go
@@ -8,7 +8,7 @@ import (
 	"net/http"
 	"time"
 
-	"github.com/docker/distribution/reference"
+	"github.com/distribution/distribution/v3/reference"
 	"github.com/opencontainers/go-digest"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
 )
diff --git a/cmd/digest/main.go b/cmd/digest/main.go
index 308be461..744cc88a 100644
--- a/cmd/digest/main.go
+++ b/cmd/digest/main.go
@@ -7,7 +7,7 @@ import (
 	"log"
 	"os"
 
-	"github.com/docker/distribution/version"
+	"github.com/distribution/distribution/v3/version"
 	"github.com/opencontainers/go-digest"
 
 	_ "crypto/sha256"
diff --git a/cmd/registry-api-descriptor-template/main.go b/cmd/registry-api-descriptor-template/main.go
index e69e6b2c..e59fd768 100644
--- a/cmd/registry-api-descriptor-template/main.go
+++ b/cmd/registry-api-descriptor-template/main.go
@@ -20,8 +20,8 @@ import (
 	"regexp"
 	"text/template"
 
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
 )
 
 var spaceRegex = regexp.MustCompile(`\n\s*`)
diff --git a/cmd/registry/main.go b/cmd/registry/main.go
index 06a3cf19..09a09260 100644
--- a/cmd/registry/main.go
+++ b/cmd/registry/main.go
@@ -3,21 +3,21 @@ package main
 import (
 	_ "net/http/pprof"
 
-	"github.com/docker/distribution/registry"
-	_ "github.com/docker/distribution/registry/auth/htpasswd"
-	_ "github.com/docker/distribution/registry/auth/silly"
-	_ "github.com/docker/distribution/registry/auth/token"
-	_ "github.com/docker/distribution/registry/proxy"
-	_ "github.com/docker/distribution/registry/storage/driver/azure"
-	_ "github.com/docker/distribution/registry/storage/driver/filesystem"
-	_ "github.com/docker/distribution/registry/storage/driver/gcs"
-	_ "github.com/docker/distribution/registry/storage/driver/inmemory"
-	_ "github.com/docker/distribution/registry/storage/driver/middleware/alicdn"
-	_ "github.com/docker/distribution/registry/storage/driver/middleware/cloudfront"
-	_ "github.com/docker/distribution/registry/storage/driver/middleware/redirect"
-	_ "github.com/docker/distribution/registry/storage/driver/oss"
-	_ "github.com/docker/distribution/registry/storage/driver/s3-aws"
-	_ "github.com/docker/distribution/registry/storage/driver/swift"
+	"github.com/distribution/distribution/v3/registry"
+	_ "github.com/distribution/distribution/v3/registry/auth/htpasswd"
+	_ "github.com/distribution/distribution/v3/registry/auth/silly"
+	_ "github.com/distribution/distribution/v3/registry/auth/token"
+	_ "github.com/distribution/distribution/v3/registry/proxy"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/azure"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/filesystem"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/gcs"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/middleware/alicdn"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/middleware/cloudfront"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/middleware/redirect"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/oss"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/s3-aws"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/swift"
 )
 
 func main() {
diff --git a/context/context.go b/context/context.go
index ab686546..0a199615 100644
--- a/context/context.go
+++ b/context/context.go
@@ -4,7 +4,7 @@ import (
 	"context"
 	"sync"
 
-	"github.com/docker/distribution/uuid"
+	"github.com/distribution/distribution/v3/uuid"
 )
 
 // instanceContext is a context that provides only an instance id. It is
@@ -21,7 +21,7 @@ func (ic *instanceContext) Value(key interface{}) interface{} {
 			// We want to lazy initialize the UUID such that we don't
 			// call a random generator from the package initialization
 			// code. For various reasons random could not be available
-			// https://github.com/docker/distribution/issues/782
+			// https://github.com/distribution/distribution/issues/782
 			ic.id = uuid.Generate().String()
 		})
 		return ic.id
diff --git a/context/http.go b/context/http.go
index bc22f0bb..548e4e17 100644
--- a/context/http.go
+++ b/context/http.go
@@ -9,7 +9,7 @@ import (
 	"sync"
 	"time"
 
-	"github.com/docker/distribution/uuid"
+	"github.com/distribution/distribution/v3/uuid"
 	"github.com/gorilla/mux"
 	log "github.com/sirupsen/logrus"
 )
diff --git a/context/trace.go b/context/trace.go
index 5b88ddaf..9476afa9 100644
--- a/context/trace.go
+++ b/context/trace.go
@@ -5,7 +5,7 @@ import (
 	"runtime"
 	"time"
 
-	"github.com/docker/distribution/uuid"
+	"github.com/distribution/distribution/v3/uuid"
 )
 
 // WithTrace allocates a traced timing span in a new context. This allows a
@@ -33,7 +33,7 @@ import (
 // If the function ran for roughly 1s, such a usage would emit a log message
 // as follows:
 //
-// 	INFO[0001] this will be the log message  trace.duration=1.004575763s trace.func=github.com/docker/distribution/context.traceOperation trace.id=<id> ...
+// 	INFO[0001] this will be the log message  trace.duration=1.004575763s trace.func=github.com/distribution/distribution/context.traceOperation trace.id=<id> ...
 //
 // Notice that the function name is automatically resolved, along with the
 // package and a trace id is emitted that can be linked with parent ids.
diff --git a/contrib/docker-integration/Dockerfile b/contrib/docker-integration/Dockerfile
index 7a047a68..17e34830 100644
--- a/contrib/docker-integration/Dockerfile
+++ b/contrib/docker-integration/Dockerfile
@@ -6,4 +6,4 @@ RUN apk add --no-cache git
 
 ENV TMPDIR /var/lib/docker/tmp
 
-WORKDIR /go/src/github.com/docker/distribution/contrib/docker-integration
+WORKDIR /go/src/github.com/distribution/distribution/contrib/docker-integration
diff --git a/contrib/docker-integration/README.md b/contrib/docker-integration/README.md
index 2b44e88c..20b7c0f2 100644
--- a/contrib/docker-integration/README.md
+++ b/contrib/docker-integration/README.md
@@ -38,7 +38,7 @@ the [release page](https://github.com/docker/golem/releases/tag/v0.1).
 Additionally golem can be run as a docker image requiring no additional
 installation.
 
-`docker run --privileged -v "$GOPATH/src/github.com/docker/distribution/contrib/docker-integration:/test" -w /test distribution/golem golem -rundaemon .`
+`docker run --privileged -v "$GOPATH/src/github.com/distribution/distribution/contrib/docker-integration:/test" -w /test distribution/golem golem -rundaemon .`
 
 #### Golem custom images
 
diff --git a/contrib/token-server/errors.go b/contrib/token-server/errors.go
index bcac8ee3..29783239 100644
--- a/contrib/token-server/errors.go
+++ b/contrib/token-server/errors.go
@@ -3,7 +3,7 @@ package main
 import (
 	"net/http"
 
-	"github.com/docker/distribution/registry/api/errcode"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
 )
 
 var (
diff --git a/contrib/token-server/main.go b/contrib/token-server/main.go
index 8f9029ea..e722cd8e 100644
--- a/contrib/token-server/main.go
+++ b/contrib/token-server/main.go
@@ -10,10 +10,10 @@ import (
 	"strings"
 	"time"
 
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/api/errcode"
-	"github.com/docker/distribution/registry/auth"
-	_ "github.com/docker/distribution/registry/auth/htpasswd"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	"github.com/distribution/distribution/v3/registry/auth"
+	_ "github.com/distribution/distribution/v3/registry/auth/htpasswd"
 	"github.com/docker/libtrust"
 	"github.com/gorilla/mux"
 	"github.com/sirupsen/logrus"
diff --git a/contrib/token-server/token.go b/contrib/token-server/token.go
index 8df5b6a8..a66c767d 100644
--- a/contrib/token-server/token.go
+++ b/contrib/token-server/token.go
@@ -12,9 +12,9 @@ import (
 	"strings"
 	"time"
 
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/auth"
-	"github.com/docker/distribution/registry/auth/token"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/auth"
+	"github.com/distribution/distribution/v3/registry/auth/token"
 	"github.com/docker/libtrust"
 )
 
diff --git a/docs/configuration.md b/docs/configuration.md
index f2c7d954..c386f203 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -55,7 +55,7 @@ $ docker run -d -p 5000:5000 --restart=always --name registry \
 ```
 
 Use this
-[example YAML file](https://github.com/docker/distribution/blob/master/cmd/registry/config-example.yml)
+[example YAML file](https://github.com/distribution/distribution/blob/master/cmd/registry/config-example.yml)
 as a starting point.
 
 ## List of configuration options
@@ -1206,7 +1206,7 @@ This example configures the registry instance to run on port `5000`, binding to
 verbose.
 
 See
-[config-example.yml](https://github.com/docker/distribution/blob/master/cmd/registry/config-example.yml)
+[config-example.yml](https://github.com/distribution/distribution/blob/master/cmd/registry/config-example.yml)
 for another simple configuration. Both examples are generally useful for local
 development.
 
diff --git a/docs/spec/auth/jwt.md b/docs/spec/auth/jwt.md
index ef729efe..7959707f 100644
--- a/docs/spec/auth/jwt.md
+++ b/docs/spec/auth/jwt.md
@@ -6,9 +6,9 @@ keywords: registry, on-prem, images, tags, repository, distribution, JWT authent
 
 # Docker Registry v2 Bearer token specification
 
-This specification covers the `docker/distribution` implementation of the
+This specification covers the `distribution/distribution` implementation of the
 v2 Registry's authentication schema.  Specifically, it describes the JSON
-Web Token schema that `docker/distribution` has adopted to implement the
+Web Token schema that `distribution/distribution` has adopted to implement the
 client-opaque Bearer token issued by an authentication service and
 understood by the registry.
 
diff --git a/docs/spec/auth/scope.md b/docs/spec/auth/scope.md
index 037fd676..1bf9504c 100644
--- a/docs/spec/auth/scope.md
+++ b/docs/spec/auth/scope.md
@@ -100,7 +100,7 @@ alpha-numeric           := /[a-z0-9]+/
 separator               := /[_.]|__|[-]*/
 ```
 Full reference grammar is defined
-[here](https://godoc.org/github.com/docker/distribution/reference). Currently
+[here](https://godoc.org/github.com/distribution/distribution/reference). Currently
 the scope name grammar is a subset of the reference grammar.
 
 > **NOTE:** that the `resourcename` may contain one `:` due to a possible port
diff --git a/docs/spec/implementations.md b/docs/spec/implementations.md
index 34746535..cd042838 100644
--- a/docs/spec/implementations.md
+++ b/docs/spec/implementations.md
@@ -6,7 +6,7 @@ published: false
 
 This is a list of known implementations of the Distribution API spec.
 
-## [Docker Distribution Registry](https://github.com/docker/distribution)
+## [Docker Distribution Registry](https://github.com/distribution/distribution)
 
 Docker distribution is the reference implementation of the distribution API
 specification. It aims to fully implement the entire specification.
diff --git a/docs/spec/manifest-v2-1.md b/docs/spec/manifest-v2-1.md
index 335509b0..82be05df 100644
--- a/docs/spec/manifest-v2-1.md
+++ b/docs/spec/manifest-v2-1.md
@@ -12,7 +12,7 @@ release](https://github.com/docker/docker/commit/9f482a66ab37ec396ac61ed0c00d591
 It is a provisional manifest to provide a compatibility with the [V1 Image
 format](https://github.com/docker/docker/blob/master/image/spec/v1.md), as the
 requirements are defined for the [V2 Schema 2
-image](https://github.com/docker/distribution/pull/62).
+image](https://github.com/distribution/distribution/pull/62).
 
 
 Image manifests describe the various constituents of a docker image.  Image
diff --git a/go.mod b/go.mod
index d2208837..61d7ec16 100644
--- a/go.mod
+++ b/go.mod
@@ -1,4 +1,4 @@
-module github.com/docker/distribution
+module github.com/distribution/distribution/v3
 
 go 1.12
 
diff --git a/health/api/api.go b/health/api/api.go
index a323a127..826b1b01 100644
--- a/health/api/api.go
+++ b/health/api/api.go
@@ -4,7 +4,7 @@ import (
 	"errors"
 	"net/http"
 
-	"github.com/docker/distribution/health"
+	"github.com/distribution/distribution/v3/health"
 )
 
 var (
diff --git a/health/checks/checks.go b/health/checks/checks.go
index 7760f610..500e1029 100644
--- a/health/checks/checks.go
+++ b/health/checks/checks.go
@@ -10,7 +10,7 @@ import (
 	"strconv"
 	"time"
 
-	"github.com/docker/distribution/health"
+	"github.com/distribution/distribution/v3/health"
 )
 
 // FileChecker checks the existence of a file and returns an error
diff --git a/health/doc.go b/health/doc.go
index 877f4dac..b2a70205 100644
--- a/health/doc.go
+++ b/health/doc.go
@@ -17,14 +17,14 @@
 //
 // To install health, just import it in your application:
 //
-//  import "github.com/docker/distribution/health"
+//  import "github.com/distribution/distribution/v3/health"
 //
 // You can also (optionally) import "health/api" that will add two convenience
 // endpoints: "/debug/health/down" and "/debug/health/up". These endpoints add
 // "manual" checks that allow the service to quickly be brought in/out of
 // rotation.
 //
-//  import _ "github.com/docker/distribution/health/api"
+//  import _ "github.com/distribution/distribution/v3/health/api"
 //
 //  # curl localhost:5001/debug/health
 //  {}
@@ -105,7 +105,7 @@
 // You can also use the predefined Checkers that come included with the health
 // package. First, import the checks:
 //
-//  import "github.com/docker/distribution/health/checks
+//  import "github.com/distribution/distribution/v3/health/checks
 //
 // After that you can make use of any of the provided checks. An example of
 // using a `FileChecker` to take the application out of rotation if a certain
diff --git a/health/health.go b/health/health.go
index 93f8d6d1..35991cb0 100644
--- a/health/health.go
+++ b/health/health.go
@@ -7,8 +7,8 @@ import (
 	"sync"
 	"time"
 
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/api/errcode"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
 )
 
 // A Registry is a collection of checks. Most applications will use the global
diff --git a/manifest/manifestlist/manifestlist.go b/manifest/manifestlist/manifestlist.go
index 3a1d73e8..833a6d50 100644
--- a/manifest/manifestlist/manifestlist.go
+++ b/manifest/manifestlist/manifestlist.go
@@ -5,8 +5,8 @@ import (
 	"errors"
 	"fmt"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
 	"github.com/opencontainers/go-digest"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
 )
diff --git a/manifest/ocischema/builder.go b/manifest/ocischema/builder.go
index b89bf5b7..7d99c184 100644
--- a/manifest/ocischema/builder.go
+++ b/manifest/ocischema/builder.go
@@ -4,8 +4,8 @@ import (
 	"context"
 	"errors"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
 	"github.com/opencontainers/go-digest"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
 )
diff --git a/manifest/ocischema/manifest.go b/manifest/ocischema/manifest.go
index c5e85f28..968de6e3 100644
--- a/manifest/ocischema/manifest.go
+++ b/manifest/ocischema/manifest.go
@@ -5,8 +5,8 @@ import (
 	"errors"
 	"fmt"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
 	"github.com/opencontainers/go-digest"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
 )
diff --git a/manifest/schema1/config_builder.go b/manifest/schema1/config_builder.go
index a96dc3d2..8d7221ed 100644
--- a/manifest/schema1/config_builder.go
+++ b/manifest/schema1/config_builder.go
@@ -8,9 +8,9 @@ import (
 	"fmt"
 	"time"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/reference"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/reference"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/manifest/schema1/manifest.go b/manifest/schema1/manifest.go
index 9fef4dc7..ecbef3d3 100644
--- a/manifest/schema1/manifest.go
+++ b/manifest/schema1/manifest.go
@@ -4,8 +4,8 @@ import (
 	"encoding/json"
 	"fmt"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/manifest/schema1/reference_builder.go b/manifest/schema1/reference_builder.go
index 0f1d386a..26ad5784 100644
--- a/manifest/schema1/reference_builder.go
+++ b/manifest/schema1/reference_builder.go
@@ -5,9 +5,9 @@ import (
 	"errors"
 	"fmt"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/reference"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/reference"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/manifest/schema2/builder.go b/manifest/schema2/builder.go
index 3facaae6..52da82e3 100644
--- a/manifest/schema2/builder.go
+++ b/manifest/schema2/builder.go
@@ -3,7 +3,7 @@ package schema2
 import (
 	"context"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/manifest/schema2/manifest.go b/manifest/schema2/manifest.go
index 41f48029..e96d8632 100644
--- a/manifest/schema2/manifest.go
+++ b/manifest/schema2/manifest.go
@@ -5,8 +5,8 @@ import (
 	"errors"
 	"fmt"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/notifications/bridge.go b/notifications/bridge.go
index bf62806d..58a1d3fc 100644
--- a/notifications/bridge.go
+++ b/notifications/bridge.go
@@ -4,10 +4,10 @@ import (
 	"net/http"
 	"time"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/uuid"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/uuid"
 	events "github.com/docker/go-events"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/notifications/endpoint.go b/notifications/endpoint.go
index da6b9622..f67e8cfe 100644
--- a/notifications/endpoint.go
+++ b/notifications/endpoint.go
@@ -4,7 +4,7 @@ import (
 	"net/http"
 	"time"
 
-	"github.com/docker/distribution/configuration"
+	"github.com/distribution/distribution/v3/configuration"
 	events "github.com/docker/go-events"
 )
 
diff --git a/notifications/event.go b/notifications/event.go
index 864783e1..2a3c4e21 100644
--- a/notifications/event.go
+++ b/notifications/event.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 	"time"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 	events "github.com/docker/go-events"
 )
 
diff --git a/notifications/listener.go b/notifications/listener.go
index 98ad8da9..9c0d2708 100644
--- a/notifications/listener.go
+++ b/notifications/listener.go
@@ -4,10 +4,10 @@ import (
 	"context"
 	"net/http"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/notifications/metrics.go b/notifications/metrics.go
index d9432f0a..c520f332 100644
--- a/notifications/metrics.go
+++ b/notifications/metrics.go
@@ -6,7 +6,7 @@ import (
 	"net/http"
 	"sync"
 
-	prometheus "github.com/docker/distribution/metrics"
+	prometheus "github.com/distribution/distribution/v3/metrics"
 	events "github.com/docker/go-events"
 	"github.com/docker/go-metrics"
 )
diff --git a/reference/normalize.go b/reference/normalize.go
index 944e2817..6a02a317 100644
--- a/reference/normalize.go
+++ b/reference/normalize.go
@@ -4,7 +4,7 @@ import (
 	"fmt"
 	"strings"
 
-	"github.com/docker/distribution/digestset"
+	"github.com/distribution/distribution/v3/digestset"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry.go b/registry.go
index 6c321098..658f2df0 100644
--- a/registry.go
+++ b/registry.go
@@ -3,7 +3,7 @@ package distribution
 import (
 	"context"
 
-	"github.com/docker/distribution/reference"
+	"github.com/distribution/distribution/v3/reference"
 )
 
 // Scope defines the set of items that match a namespace.
diff --git a/registry/api/v2/descriptors.go b/registry/api/v2/descriptors.go
index cffacc3c..56bfdcdf 100644
--- a/registry/api/v2/descriptors.go
+++ b/registry/api/v2/descriptors.go
@@ -4,8 +4,8 @@ import (
 	"net/http"
 	"regexp"
 
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/api/errcode"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/api/v2/errors.go b/registry/api/v2/errors.go
index 97d6923a..c413efbb 100644
--- a/registry/api/v2/errors.go
+++ b/registry/api/v2/errors.go
@@ -3,7 +3,7 @@ package v2
 import (
 	"net/http"
 
-	"github.com/docker/distribution/registry/api/errcode"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
 )
 
 const errGroup = "registry.api.v2"
diff --git a/registry/api/v2/urls.go b/registry/api/v2/urls.go
index 876a190c..075b430e 100644
--- a/registry/api/v2/urls.go
+++ b/registry/api/v2/urls.go
@@ -6,7 +6,7 @@ import (
 	"net/url"
 	"strings"
 
-	"github.com/docker/distribution/reference"
+	"github.com/distribution/distribution/v3/reference"
 	"github.com/gorilla/mux"
 )
 
diff --git a/registry/auth/htpasswd/access.go b/registry/auth/htpasswd/access.go
index 2611a23b..f3d43717 100644
--- a/registry/auth/htpasswd/access.go
+++ b/registry/auth/htpasswd/access.go
@@ -18,8 +18,8 @@ import (
 
 	"golang.org/x/crypto/bcrypt"
 
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/auth"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/auth"
 )
 
 type accessController struct {
diff --git a/registry/auth/htpasswd/htpasswd.go b/registry/auth/htpasswd/htpasswd.go
index 83205160..56f31b6e 100644
--- a/registry/auth/htpasswd/htpasswd.go
+++ b/registry/auth/htpasswd/htpasswd.go
@@ -6,7 +6,7 @@ import (
 	"io"
 	"strings"
 
-	"github.com/docker/distribution/registry/auth"
+	"github.com/distribution/distribution/v3/registry/auth"
 
 	"golang.org/x/crypto/bcrypt"
 )
diff --git a/registry/auth/silly/access.go b/registry/auth/silly/access.go
index 3ead560d..11f0103b 100644
--- a/registry/auth/silly/access.go
+++ b/registry/auth/silly/access.go
@@ -13,8 +13,8 @@ import (
 	"net/http"
 	"strings"
 
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/auth"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/auth"
 )
 
 // accessController provides a simple implementation of auth.AccessController
diff --git a/registry/auth/token/accesscontroller.go b/registry/auth/token/accesscontroller.go
index fa924f0b..ec001ad1 100644
--- a/registry/auth/token/accesscontroller.go
+++ b/registry/auth/token/accesscontroller.go
@@ -12,8 +12,8 @@ import (
 	"os"
 	"strings"
 
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/auth"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/auth"
 	"github.com/docker/libtrust"
 )
 
diff --git a/registry/auth/token/token.go b/registry/auth/token/token.go
index 7f87d496..2f86120a 100644
--- a/registry/auth/token/token.go
+++ b/registry/auth/token/token.go
@@ -13,7 +13,7 @@ import (
 	"github.com/docker/libtrust"
 	log "github.com/sirupsen/logrus"
 
-	"github.com/docker/distribution/registry/auth"
+	"github.com/distribution/distribution/v3/registry/auth"
 )
 
 const (
diff --git a/registry/client/auth/session.go b/registry/client/auth/session.go
index 5d2322f3..8a1723f6 100644
--- a/registry/client/auth/session.go
+++ b/registry/client/auth/session.go
@@ -10,9 +10,9 @@ import (
 	"sync"
 	"time"
 
-	"github.com/docker/distribution/registry/client"
-	"github.com/docker/distribution/registry/client/auth/challenge"
-	"github.com/docker/distribution/registry/client/transport"
+	"github.com/distribution/distribution/v3/registry/client"
+	"github.com/distribution/distribution/v3/registry/client/auth/challenge"
+	"github.com/distribution/distribution/v3/registry/client/transport"
 )
 
 var (
diff --git a/registry/client/blob_writer.go b/registry/client/blob_writer.go
index cc6e88ca..75ff20f9 100644
--- a/registry/client/blob_writer.go
+++ b/registry/client/blob_writer.go
@@ -9,7 +9,7 @@ import (
 	"net/http"
 	"time"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 )
 
 type httpBlobUpload struct {
diff --git a/registry/client/errors.go b/registry/client/errors.go
index 52d49d5d..7e5d1236 100644
--- a/registry/client/errors.go
+++ b/registry/client/errors.go
@@ -8,8 +8,8 @@ import (
 	"io/ioutil"
 	"net/http"
 
-	"github.com/docker/distribution/registry/api/errcode"
-	"github.com/docker/distribution/registry/client/auth/challenge"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	"github.com/distribution/distribution/v3/registry/client/auth/challenge"
 )
 
 // ErrNoErrorsInBody is returned when an HTTP response body parses to an empty
diff --git a/registry/client/repository.go b/registry/client/repository.go
index 679d09ca..00b31a48 100644
--- a/registry/client/repository.go
+++ b/registry/client/repository.go
@@ -14,12 +14,12 @@ import (
 	"strings"
 	"time"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/reference"
-	v2 "github.com/docker/distribution/registry/api/v2"
-	"github.com/docker/distribution/registry/client/transport"
-	"github.com/docker/distribution/registry/storage/cache"
-	"github.com/docker/distribution/registry/storage/cache/memory"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/reference"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
+	"github.com/distribution/distribution/v3/registry/client/transport"
+	"github.com/distribution/distribution/v3/registry/storage/cache"
+	"github.com/distribution/distribution/v3/registry/storage/cache/memory"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/handlers/app.go b/registry/handlers/app.go
index f2be2b0d..6ace01ac 100644
--- a/registry/handlers/app.go
+++ b/registry/handlers/app.go
@@ -15,27 +15,27 @@ import (
 	"strings"
 	"time"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/configuration"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/health"
-	"github.com/docker/distribution/health/checks"
-	prometheus "github.com/docker/distribution/metrics"
-	"github.com/docker/distribution/notifications"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
-	"github.com/docker/distribution/registry/auth"
-	registrymiddleware "github.com/docker/distribution/registry/middleware/registry"
-	repositorymiddleware "github.com/docker/distribution/registry/middleware/repository"
-	"github.com/docker/distribution/registry/proxy"
-	"github.com/docker/distribution/registry/storage"
-	memorycache "github.com/docker/distribution/registry/storage/cache/memory"
-	rediscache "github.com/docker/distribution/registry/storage/cache/redis"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/factory"
-	storagemiddleware "github.com/docker/distribution/registry/storage/driver/middleware"
-	"github.com/docker/distribution/version"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/configuration"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/health"
+	"github.com/distribution/distribution/v3/health/checks"
+	prometheus "github.com/distribution/distribution/v3/metrics"
+	"github.com/distribution/distribution/v3/notifications"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
+	"github.com/distribution/distribution/v3/registry/auth"
+	registrymiddleware "github.com/distribution/distribution/v3/registry/middleware/registry"
+	repositorymiddleware "github.com/distribution/distribution/v3/registry/middleware/repository"
+	"github.com/distribution/distribution/v3/registry/proxy"
+	"github.com/distribution/distribution/v3/registry/storage"
+	memorycache "github.com/distribution/distribution/v3/registry/storage/cache/memory"
+	rediscache "github.com/distribution/distribution/v3/registry/storage/cache/redis"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
+	storagemiddleware "github.com/distribution/distribution/v3/registry/storage/driver/middleware"
+	"github.com/distribution/distribution/v3/version"
 	events "github.com/docker/go-events"
 	"github.com/docker/go-metrics"
 	"github.com/docker/libtrust"
diff --git a/registry/handlers/blob.go b/registry/handlers/blob.go
index 515fdad0..714b1166 100644
--- a/registry/handlers/blob.go
+++ b/registry/handlers/blob.go
@@ -3,10 +3,10 @@ package handlers
 import (
 	"net/http"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
 	"github.com/gorilla/handlers"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/registry/handlers/blobupload.go b/registry/handlers/blobupload.go
index d0351e3e..edb9c11d 100644
--- a/registry/handlers/blobupload.go
+++ b/registry/handlers/blobupload.go
@@ -5,12 +5,12 @@ import (
 	"net/http"
 	"net/url"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
-	"github.com/docker/distribution/registry/storage"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
+	"github.com/distribution/distribution/v3/registry/storage"
 	"github.com/gorilla/handlers"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/registry/handlers/catalog.go b/registry/handlers/catalog.go
index 15fb3951..d27b85ac 100644
--- a/registry/handlers/catalog.go
+++ b/registry/handlers/catalog.go
@@ -8,8 +8,8 @@ import (
 	"net/url"
 	"strconv"
 
-	"github.com/docker/distribution/registry/api/errcode"
-	"github.com/docker/distribution/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
 	"github.com/gorilla/handlers"
 )
 
diff --git a/registry/handlers/context.go b/registry/handlers/context.go
index b1b7a13d..cac97a04 100644
--- a/registry/handlers/context.go
+++ b/registry/handlers/context.go
@@ -5,11 +5,11 @@ import (
 	"fmt"
 	"net/http"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
-	"github.com/docker/distribution/registry/auth"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
+	"github.com/distribution/distribution/v3/registry/auth"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/handlers/helpers.go b/registry/handlers/helpers.go
index b02338e9..2e89c65b 100644
--- a/registry/handlers/helpers.go
+++ b/registry/handlers/helpers.go
@@ -6,7 +6,7 @@ import (
 	"io"
 	"net/http"
 
-	dcontext "github.com/docker/distribution/context"
+	dcontext "github.com/distribution/distribution/v3/context"
 )
 
 // closeResources closes all the provided resources after running the target
diff --git a/registry/handlers/manifests.go b/registry/handlers/manifests.go
index e71fe2c3..ac56c209 100644
--- a/registry/handlers/manifests.go
+++ b/registry/handlers/manifests.go
@@ -7,16 +7,16 @@ import (
 	"net/http"
 	"strings"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest/manifestlist"
-	"github.com/docker/distribution/manifest/ocischema"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/manifest/schema2"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
-	"github.com/docker/distribution/registry/auth"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest/manifestlist"
+	"github.com/distribution/distribution/v3/manifest/ocischema"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/manifest/schema2"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
+	"github.com/distribution/distribution/v3/registry/auth"
 	"github.com/gorilla/handlers"
 	"github.com/opencontainers/go-digest"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
diff --git a/registry/handlers/tags.go b/registry/handlers/tags.go
index 1e90642d..72d1dc8f 100644
--- a/registry/handlers/tags.go
+++ b/registry/handlers/tags.go
@@ -4,9 +4,9 @@ import (
 	"encoding/json"
 	"net/http"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
 	"github.com/gorilla/handlers"
 )
 
diff --git a/registry/middleware/registry/middleware.go b/registry/middleware/registry/middleware.go
index 49defd82..c9d80ef3 100644
--- a/registry/middleware/registry/middleware.go
+++ b/registry/middleware/registry/middleware.go
@@ -4,8 +4,8 @@ import (
 	"context"
 	"fmt"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/registry/storage"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/registry/storage"
 )
 
 // InitFunc is the type of a RegistryMiddleware factory function and is
diff --git a/registry/middleware/repository/middleware.go b/registry/middleware/repository/middleware.go
index f1554b70..8c1cc8ef 100644
--- a/registry/middleware/repository/middleware.go
+++ b/registry/middleware/repository/middleware.go
@@ -4,7 +4,7 @@ import (
 	"context"
 	"fmt"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 )
 
 // InitFunc is the type of a RepositoryMiddleware factory function and is
diff --git a/registry/proxy/proxyauth.go b/registry/proxy/proxyauth.go
index 09a0973e..07d80b48 100644
--- a/registry/proxy/proxyauth.go
+++ b/registry/proxy/proxyauth.go
@@ -5,9 +5,9 @@ import (
 	"net/url"
 	"strings"
 
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/client/auth"
-	"github.com/docker/distribution/registry/client/auth/challenge"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/client/auth"
+	"github.com/distribution/distribution/v3/registry/client/auth/challenge"
 )
 
 const challengeHeader = "Docker-Distribution-Api-Version"
diff --git a/registry/proxy/proxyblobstore.go b/registry/proxy/proxyblobstore.go
index bc13a34b..013d2012 100644
--- a/registry/proxy/proxyblobstore.go
+++ b/registry/proxy/proxyblobstore.go
@@ -7,10 +7,10 @@ import (
 	"strconv"
 	"sync"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/proxy/scheduler"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/proxy/scheduler"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/proxy/proxymanifeststore.go b/registry/proxy/proxymanifeststore.go
index 9b017a0b..0b29386a 100644
--- a/registry/proxy/proxymanifeststore.go
+++ b/registry/proxy/proxymanifeststore.go
@@ -4,10 +4,10 @@ import (
 	"context"
 	"time"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/proxy/scheduler"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/proxy/scheduler"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/proxy/proxyregistry.go b/registry/proxy/proxyregistry.go
index e8a8f352..00f560da 100644
--- a/registry/proxy/proxyregistry.go
+++ b/registry/proxy/proxyregistry.go
@@ -7,17 +7,17 @@ import (
 	"net/url"
 	"sync"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/configuration"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/client"
-	"github.com/docker/distribution/registry/client/auth"
-	"github.com/docker/distribution/registry/client/auth/challenge"
-	"github.com/docker/distribution/registry/client/transport"
-	"github.com/docker/distribution/registry/proxy/scheduler"
-	"github.com/docker/distribution/registry/storage"
-	"github.com/docker/distribution/registry/storage/driver"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/configuration"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/client"
+	"github.com/distribution/distribution/v3/registry/client/auth"
+	"github.com/distribution/distribution/v3/registry/client/auth/challenge"
+	"github.com/distribution/distribution/v3/registry/client/transport"
+	"github.com/distribution/distribution/v3/registry/proxy/scheduler"
+	"github.com/distribution/distribution/v3/registry/storage"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
 )
 
 // proxyingRegistry fetches content from a remote registry and caches it locally
diff --git a/registry/proxy/proxytagservice.go b/registry/proxy/proxytagservice.go
index 6a925639..6bc08dba 100644
--- a/registry/proxy/proxytagservice.go
+++ b/registry/proxy/proxytagservice.go
@@ -3,7 +3,7 @@ package proxy
 import (
 	"context"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 )
 
 // proxyTagService supports local and remote lookup of tags.
diff --git a/registry/proxy/scheduler/scheduler.go b/registry/proxy/scheduler/scheduler.go
index f3c1caa0..8e5f4160 100644
--- a/registry/proxy/scheduler/scheduler.go
+++ b/registry/proxy/scheduler/scheduler.go
@@ -7,9 +7,9 @@ import (
 	"sync"
 	"time"
 
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/driver"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
 )
 
 // onTTLExpiryFunc is called when a repository's TTL expires
diff --git a/registry/registry.go b/registry/registry.go
index 20190c11..95dc3caa 100644
--- a/registry/registry.go
+++ b/registry/registry.go
@@ -24,13 +24,13 @@ import (
 	"golang.org/x/crypto/acme"
 	"golang.org/x/crypto/acme/autocert"
 
-	"github.com/docker/distribution/configuration"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/health"
-	"github.com/docker/distribution/registry/handlers"
-	"github.com/docker/distribution/registry/listener"
-	"github.com/docker/distribution/uuid"
-	"github.com/docker/distribution/version"
+	"github.com/distribution/distribution/v3/configuration"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/health"
+	"github.com/distribution/distribution/v3/registry/handlers"
+	"github.com/distribution/distribution/v3/registry/listener"
+	"github.com/distribution/distribution/v3/uuid"
+	"github.com/distribution/distribution/v3/version"
 )
 
 // this channel gets notified when process receives signal. It is global to ease unit testing
diff --git a/registry/root.go b/registry/root.go
index 94d22f3c..e32e0984 100644
--- a/registry/root.go
+++ b/registry/root.go
@@ -4,10 +4,10 @@ import (
 	"fmt"
 	"os"
 
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/storage"
-	"github.com/docker/distribution/registry/storage/driver/factory"
-	"github.com/docker/distribution/version"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/storage"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
+	"github.com/distribution/distribution/v3/version"
 	"github.com/docker/libtrust"
 	"github.com/spf13/cobra"
 )
diff --git a/registry/storage/blobserver.go b/registry/storage/blobserver.go
index 57d4f907..6392e355 100644
--- a/registry/storage/blobserver.go
+++ b/registry/storage/blobserver.go
@@ -6,8 +6,8 @@ import (
 	"net/http"
 	"time"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/registry/storage/driver"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/blobstore.go b/registry/storage/blobstore.go
index 1008aad8..2e4d14c1 100644
--- a/registry/storage/blobstore.go
+++ b/registry/storage/blobstore.go
@@ -4,9 +4,9 @@ import (
 	"context"
 	"path"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/storage/driver"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/blobwriter.go b/registry/storage/blobwriter.go
index 54c79b6f..163e03a5 100644
--- a/registry/storage/blobwriter.go
+++ b/registry/storage/blobwriter.go
@@ -8,9 +8,9 @@ import (
 	"path"
 	"time"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
 	"github.com/opencontainers/go-digest"
 	"github.com/sirupsen/logrus"
 )
diff --git a/registry/storage/blobwriter_nonresumable.go b/registry/storage/blobwriter_nonresumable.go
index 32f13097..3213f144 100644
--- a/registry/storage/blobwriter_nonresumable.go
+++ b/registry/storage/blobwriter_nonresumable.go
@@ -3,7 +3,7 @@
 package storage
 
 import (
-	"github.com/docker/distribution/context"
+	"github.com/distribution/distribution/v3/context"
 )
 
 // resumeHashAt is a noop when resumable digest support is disabled.
diff --git a/registry/storage/blobwriter_resumable.go b/registry/storage/blobwriter_resumable.go
index b970e865..4cefe1ef 100644
--- a/registry/storage/blobwriter_resumable.go
+++ b/registry/storage/blobwriter_resumable.go
@@ -10,7 +10,7 @@ import (
 	"path"
 	"strconv"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
 	"github.com/sirupsen/logrus"
 )
 
diff --git a/registry/storage/cache/cache.go b/registry/storage/cache/cache.go
index 10a39091..0aa9dd4a 100644
--- a/registry/storage/cache/cache.go
+++ b/registry/storage/cache/cache.go
@@ -5,7 +5,7 @@ package cache
 import (
 	"fmt"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 )
 
 // BlobDescriptorCacheProvider provides repository scoped
diff --git a/registry/storage/cache/cachecheck/suite.go b/registry/storage/cache/cachecheck/suite.go
index 12d6e45d..5b92e8ac 100644
--- a/registry/storage/cache/cachecheck/suite.go
+++ b/registry/storage/cache/cachecheck/suite.go
@@ -5,8 +5,8 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/registry/storage/cache"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/registry/storage/cache"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/cache/cachedblobdescriptorstore.go b/registry/storage/cache/cachedblobdescriptorstore.go
index f25d68d9..b9131c54 100644
--- a/registry/storage/cache/cachedblobdescriptorstore.go
+++ b/registry/storage/cache/cachedblobdescriptorstore.go
@@ -3,9 +3,9 @@ package cache
 import (
 	"context"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	prometheus "github.com/docker/distribution/metrics"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	prometheus "github.com/distribution/distribution/v3/metrics"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/cache/memory/memory.go b/registry/storage/cache/memory/memory.go
index 42d94d9b..c2b1142e 100644
--- a/registry/storage/cache/memory/memory.go
+++ b/registry/storage/cache/memory/memory.go
@@ -4,9 +4,9 @@ import (
 	"context"
 	"sync"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/cache"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/cache"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/cache/metrics/prom.go b/registry/storage/cache/metrics/prom.go
index 7b50e93f..5401e12f 100644
--- a/registry/storage/cache/metrics/prom.go
+++ b/registry/storage/cache/metrics/prom.go
@@ -4,9 +4,9 @@ import (
 	"context"
 	"time"
 
-	"github.com/docker/distribution"
-	prometheus "github.com/docker/distribution/metrics"
-	"github.com/docker/distribution/registry/storage/cache"
+	"github.com/distribution/distribution/v3"
+	prometheus "github.com/distribution/distribution/v3/metrics"
+	"github.com/distribution/distribution/v3/registry/storage/cache"
 	"github.com/docker/go-metrics"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/registry/storage/cache/redis/redis.go b/registry/storage/cache/redis/redis.go
index 5f84249b..a4b31737 100644
--- a/registry/storage/cache/redis/redis.go
+++ b/registry/storage/cache/redis/redis.go
@@ -4,10 +4,10 @@ import (
 	"context"
 	"fmt"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/cache"
-	"github.com/docker/distribution/registry/storage/cache/metrics"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/cache"
+	"github.com/distribution/distribution/v3/registry/storage/cache/metrics"
 	"github.com/gomodule/redigo/redis"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/registry/storage/catalog.go b/registry/storage/catalog.go
index a903fb39..55500694 100644
--- a/registry/storage/catalog.go
+++ b/registry/storage/catalog.go
@@ -7,8 +7,8 @@ import (
 	"path"
 	"strings"
 
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/driver"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
 )
 
 // Returns a list, or partial list, of repositories in the registry.
diff --git a/registry/storage/driver/azure/azure.go b/registry/storage/driver/azure/azure.go
index 58c6293b..e39897e0 100644
--- a/registry/storage/driver/azure/azure.go
+++ b/registry/storage/driver/azure/azure.go
@@ -13,9 +13,9 @@ import (
 	"strings"
 	"time"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/base"
-	"github.com/docker/distribution/registry/storage/driver/factory"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/base"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
 
 	azure "github.com/Azure/azure-sdk-for-go/storage"
 )
@@ -127,7 +127,7 @@ func (d *driver) PutContent(ctx context.Context, path string, contents []byte) e
 	}
 
 	// Historically, blobs uploaded via PutContent used to be of type AppendBlob
-	// (https://github.com/docker/distribution/pull/1438). We can't replace
+	// (https://github.com/distribution/distribution/pull/1438). We can't replace
 	// these blobs atomically via a single "Put Blob" operation without
 	// deleting them first. Once we detect they are BlockBlob type, we can
 	// overwrite them with an atomically "Put Blob" operation.
diff --git a/registry/storage/driver/base/base.go b/registry/storage/driver/base/base.go
index 4511f002..ff780340 100644
--- a/registry/storage/driver/base/base.go
+++ b/registry/storage/driver/base/base.go
@@ -42,9 +42,9 @@ import (
 	"io"
 	"time"
 
-	dcontext "github.com/docker/distribution/context"
-	prometheus "github.com/docker/distribution/metrics"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
+	dcontext "github.com/distribution/distribution/v3/context"
+	prometheus "github.com/distribution/distribution/v3/metrics"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
 	"github.com/docker/go-metrics"
 )
 
diff --git a/registry/storage/driver/base/regulator.go b/registry/storage/driver/base/regulator.go
index 9c5e6cc4..1c42a33e 100644
--- a/registry/storage/driver/base/regulator.go
+++ b/registry/storage/driver/base/regulator.go
@@ -8,7 +8,7 @@ import (
 	"strconv"
 	"sync"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
 )
 
 type regulator struct {
diff --git a/registry/storage/driver/factory/factory.go b/registry/storage/driver/factory/factory.go
index a9c04ec5..3a4b57ce 100644
--- a/registry/storage/driver/factory/factory.go
+++ b/registry/storage/driver/factory/factory.go
@@ -3,7 +3,7 @@ package factory
 import (
 	"fmt"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
 )
 
 // driverFactories stores an internal mapping between storage driver names and their respective
@@ -16,7 +16,7 @@ var driverFactories = make(map[string]StorageDriverFactory)
 // func (below) in their init() funcs, and as such they should be imported anonymously before use.
 // See below for an example of how to register and get a StorageDriver for S3
 //
-//	import _ "github.com/docker/distribution/registry/storage/driver/s3-aws"
+//	import _ "github.com/distribution/distribution/v3/registry/storage/driver/s3-aws"
 //	s3Driver, err = factory.Create("s3", storageParams)
 //	// assuming no error, s3Driver is the StorageDriver that communicates with S3 according to storageParams
 type StorageDriverFactory interface {
diff --git a/registry/storage/driver/filesystem/driver.go b/registry/storage/driver/filesystem/driver.go
index ef6cc972..0f7b6660 100644
--- a/registry/storage/driver/filesystem/driver.go
+++ b/registry/storage/driver/filesystem/driver.go
@@ -11,9 +11,9 @@ import (
 	"path"
 	"time"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/base"
-	"github.com/docker/distribution/registry/storage/driver/factory"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/base"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
 )
 
 const (
diff --git a/registry/storage/driver/gcs/gcs.go b/registry/storage/driver/gcs/gcs.go
index 7931239e..9353e65f 100644
--- a/registry/storage/driver/gcs/gcs.go
+++ b/registry/storage/driver/gcs/gcs.go
@@ -31,9 +31,9 @@ import (
 	"strings"
 	"time"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/base"
-	"github.com/docker/distribution/registry/storage/driver/factory"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/base"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
 	"github.com/sirupsen/logrus"
 	"golang.org/x/oauth2"
 	"golang.org/x/oauth2/google"
diff --git a/registry/storage/driver/inmemory/driver.go b/registry/storage/driver/inmemory/driver.go
index 4b1f5f48..e1d9ccfe 100644
--- a/registry/storage/driver/inmemory/driver.go
+++ b/registry/storage/driver/inmemory/driver.go
@@ -8,9 +8,9 @@ import (
 	"sync"
 	"time"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/base"
-	"github.com/docker/distribution/registry/storage/driver/factory"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/base"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
 )
 
 const driverName = "inmemory"
diff --git a/registry/storage/driver/middleware/alicdn/middleware.go b/registry/storage/driver/middleware/alicdn/middleware.go
index 51993161..33d51c26 100755
--- a/registry/storage/driver/middleware/alicdn/middleware.go
+++ b/registry/storage/driver/middleware/alicdn/middleware.go
@@ -7,9 +7,9 @@ import (
 	"strings"
 	"time"
 
-	dcontext "github.com/docker/distribution/context"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	storagemiddleware "github.com/docker/distribution/registry/storage/driver/middleware"
+	dcontext "github.com/distribution/distribution/v3/context"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	storagemiddleware "github.com/distribution/distribution/v3/registry/storage/driver/middleware"
 
 	"github.com/denverdino/aliyungo/cdn/auth"
 )
diff --git a/registry/storage/driver/middleware/cloudfront/middleware.go b/registry/storage/driver/middleware/cloudfront/middleware.go
index a29d3925..2b680a1f 100644
--- a/registry/storage/driver/middleware/cloudfront/middleware.go
+++ b/registry/storage/driver/middleware/cloudfront/middleware.go
@@ -14,9 +14,9 @@ import (
 	"time"
 
 	"github.com/aws/aws-sdk-go/service/cloudfront/sign"
-	dcontext "github.com/docker/distribution/context"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	storagemiddleware "github.com/docker/distribution/registry/storage/driver/middleware"
+	dcontext "github.com/distribution/distribution/v3/context"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	storagemiddleware "github.com/distribution/distribution/v3/registry/storage/driver/middleware"
 )
 
 // cloudFrontStorageMiddleware provides a simple implementation of layerHandler that
diff --git a/registry/storage/driver/middleware/cloudfront/s3filter.go b/registry/storage/driver/middleware/cloudfront/s3filter.go
index c8c7f570..aa93b861 100644
--- a/registry/storage/driver/middleware/cloudfront/s3filter.go
+++ b/registry/storage/driver/middleware/cloudfront/s3filter.go
@@ -11,7 +11,7 @@ import (
 	"sync"
 	"time"
 
-	dcontext "github.com/docker/distribution/context"
+	dcontext "github.com/distribution/distribution/v3/context"
 )
 
 const (
diff --git a/registry/storage/driver/middleware/redirect/middleware.go b/registry/storage/driver/middleware/redirect/middleware.go
index 8f63674c..f3618778 100644
--- a/registry/storage/driver/middleware/redirect/middleware.go
+++ b/registry/storage/driver/middleware/redirect/middleware.go
@@ -5,8 +5,8 @@ import (
 	"fmt"
 	"net/url"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	storagemiddleware "github.com/docker/distribution/registry/storage/driver/middleware"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	storagemiddleware "github.com/distribution/distribution/v3/registry/storage/driver/middleware"
 )
 
 type redirectStorageMiddleware struct {
diff --git a/registry/storage/driver/middleware/storagemiddleware.go b/registry/storage/driver/middleware/storagemiddleware.go
index 7e40a8dd..bde645dc 100644
--- a/registry/storage/driver/middleware/storagemiddleware.go
+++ b/registry/storage/driver/middleware/storagemiddleware.go
@@ -3,7 +3,7 @@ package storagemiddleware
 import (
 	"fmt"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
 )
 
 // InitFunc is the type of a StorageMiddleware factory function and is
diff --git a/registry/storage/driver/oss/oss.go b/registry/storage/driver/oss/oss.go
index 5cd96203..c8c38a4a 100644
--- a/registry/storage/driver/oss/oss.go
+++ b/registry/storage/driver/oss/oss.go
@@ -24,9 +24,9 @@ import (
 	"time"
 
 	"github.com/denverdino/aliyungo/oss"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/base"
-	"github.com/docker/distribution/registry/storage/driver/factory"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/base"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
 	"github.com/sirupsen/logrus"
 )
 
diff --git a/registry/storage/driver/s3-aws/s3.go b/registry/storage/driver/s3-aws/s3.go
index 5a4541cd..d06e8351 100644
--- a/registry/storage/driver/s3-aws/s3.go
+++ b/registry/storage/driver/s3-aws/s3.go
@@ -34,11 +34,11 @@ import (
 	"github.com/aws/aws-sdk-go/aws/session"
 	"github.com/aws/aws-sdk-go/service/s3"
 
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/client/transport"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/base"
-	"github.com/docker/distribution/registry/storage/driver/factory"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/client/transport"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/base"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
 )
 
 const driverName = "s3aws"
diff --git a/registry/storage/driver/storagedriver.go b/registry/storage/driver/storagedriver.go
index b220713f..9a9b9a8f 100644
--- a/registry/storage/driver/storagedriver.go
+++ b/registry/storage/driver/storagedriver.go
@@ -35,7 +35,7 @@ const CurrentVersion Version = "0.1"
 // StorageDriver defines methods that a Storage Driver must implement for a
 // filesystem-like key/value object storage. Storage Drivers are automatically
 // registered via an internal registration mechanism, and generally created
-// via the StorageDriverFactory interface (https://godoc.org/github.com/docker/distribution/registry/storage/driver/factory).
+// via the StorageDriverFactory interface (https://godoc.org/github.com/distribution/distribution/registry/storage/driver/factory).
 // Please see the aforementioned factory package for example code showing how to get an instance
 // of a StorageDriver
 type StorageDriver interface {
diff --git a/registry/storage/driver/swift/swift.go b/registry/storage/driver/swift/swift.go
index b64e3b66..65072581 100644
--- a/registry/storage/driver/swift/swift.go
+++ b/registry/storage/driver/swift/swift.go
@@ -35,10 +35,10 @@ import (
 	"github.com/mitchellh/mapstructure"
 	"github.com/ncw/swift"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/base"
-	"github.com/docker/distribution/registry/storage/driver/factory"
-	"github.com/docker/distribution/version"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/base"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
+	"github.com/distribution/distribution/v3/version"
 )
 
 const driverName = "swift"
diff --git a/registry/storage/filereader.go b/registry/storage/filereader.go
index 90afaad0..031204bd 100644
--- a/registry/storage/filereader.go
+++ b/registry/storage/filereader.go
@@ -8,7 +8,7 @@ import (
 	"io"
 	"io/ioutil"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
 )
 
 // TODO(stevvooe): Set an optimal buffer size here. We'll have to
diff --git a/registry/storage/garbagecollect.go b/registry/storage/garbagecollect.go
index 317c792d..13c9b180 100644
--- a/registry/storage/garbagecollect.go
+++ b/registry/storage/garbagecollect.go
@@ -4,9 +4,9 @@ import (
 	"context"
 	"fmt"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/driver"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/io.go b/registry/storage/io.go
index f79e7a6f..cd63bb92 100644
--- a/registry/storage/io.go
+++ b/registry/storage/io.go
@@ -6,7 +6,7 @@ import (
 	"io"
 	"io/ioutil"
 
-	"github.com/docker/distribution/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
 )
 
 const (
diff --git a/registry/storage/linkedblobstore.go b/registry/storage/linkedblobstore.go
index de591c8a..89573ddc 100644
--- a/registry/storage/linkedblobstore.go
+++ b/registry/storage/linkedblobstore.go
@@ -7,11 +7,11 @@ import (
 	"path"
 	"time"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/uuid"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/uuid"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/manifestlisthandler.go b/registry/storage/manifestlisthandler.go
index ffc39161..e9c71d4c 100644
--- a/registry/storage/manifestlisthandler.go
+++ b/registry/storage/manifestlisthandler.go
@@ -4,9 +4,9 @@ import (
 	"context"
 	"fmt"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest/manifestlist"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest/manifestlist"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/manifeststore.go b/registry/storage/manifeststore.go
index 7daa9a72..0daa92df 100644
--- a/registry/storage/manifeststore.go
+++ b/registry/storage/manifeststore.go
@@ -5,13 +5,13 @@ import (
 	"encoding/json"
 	"fmt"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/manifest/manifestlist"
-	"github.com/docker/distribution/manifest/ocischema"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/manifest/schema2"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/manifest/manifestlist"
+	"github.com/distribution/distribution/v3/manifest/ocischema"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/manifest/schema2"
 	"github.com/opencontainers/go-digest"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
 )
diff --git a/registry/storage/ocimanifesthandler.go b/registry/storage/ocimanifesthandler.go
index e06ecb11..242ae758 100644
--- a/registry/storage/ocimanifesthandler.go
+++ b/registry/storage/ocimanifesthandler.go
@@ -5,9 +5,9 @@ import (
 	"fmt"
 	"net/url"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest/ocischema"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest/ocischema"
 	"github.com/opencontainers/go-digest"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
 )
diff --git a/registry/storage/purgeuploads.go b/registry/storage/purgeuploads.go
index cac92121..b22857db 100644
--- a/registry/storage/purgeuploads.go
+++ b/registry/storage/purgeuploads.go
@@ -6,8 +6,8 @@ import (
 	"strings"
 	"time"
 
-	storageDriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/uuid"
+	storageDriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/uuid"
 	"github.com/sirupsen/logrus"
 )
 
diff --git a/registry/storage/registry.go b/registry/storage/registry.go
index d74403f5..45939083 100644
--- a/registry/storage/registry.go
+++ b/registry/storage/registry.go
@@ -4,10 +4,10 @@ import (
 	"context"
 	"regexp"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/cache"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/cache"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
 	"github.com/docker/libtrust"
 )
 
diff --git a/registry/storage/schema2manifesthandler.go b/registry/storage/schema2manifesthandler.go
index 3e32e9f4..fa465623 100644
--- a/registry/storage/schema2manifesthandler.go
+++ b/registry/storage/schema2manifesthandler.go
@@ -6,10 +6,10 @@ import (
 	"fmt"
 	"net/url"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/manifest/schema2"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/manifest/schema2"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/signedmanifesthandler.go b/registry/storage/signedmanifesthandler.go
index f94ecbea..eb5b5742 100644
--- a/registry/storage/signedmanifesthandler.go
+++ b/registry/storage/signedmanifesthandler.go
@@ -5,10 +5,10 @@ import (
 	"encoding/json"
 	"fmt"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/reference"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/reference"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/registry/storage/tagstore.go b/registry/storage/tagstore.go
index 3bc3f5ac..e33bf9da 100644
--- a/registry/storage/tagstore.go
+++ b/registry/storage/tagstore.go
@@ -4,8 +4,8 @@ import (
 	"context"
 	"path"
 
-	"github.com/docker/distribution"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
+	"github.com/distribution/distribution/v3"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/v1unsupportedhandler.go b/registry/storage/v1unsupportedhandler.go
index fb6ca14e..8170646b 100644
--- a/registry/storage/v1unsupportedhandler.go
+++ b/registry/storage/v1unsupportedhandler.go
@@ -3,7 +3,7 @@ package storage
 import (
 	"context"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 	digest "github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/vacuum.go b/registry/storage/vacuum.go
index a43db17a..749fb319 100644
--- a/registry/storage/vacuum.go
+++ b/registry/storage/vacuum.go
@@ -4,8 +4,8 @@ import (
 	"context"
 	"path"
 
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/storage/driver"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/releases/README.md b/releases/README.md
index 7af9e97b..b973e869 100644
--- a/releases/README.md
+++ b/releases/README.md
@@ -9,7 +9,7 @@ See https://github.com/containerd/containerd/tree/master/cmd/containerd-release
 
 20. Update the `.mailmap` files.
 
-30. Update the version file: `https://github.com/docker/distribution/blob/master/version/version.go`
+30. Update the version file: `https://github.com/distribution/distribution/blob/master/version/version.go`
 
 40. Create a signed tag.
 
@@ -26,11 +26,11 @@ hash.
 
 50. Push the signed tag
 
-60. Create a new [release](https://github.com/docker/distribution/releases).
+60. Create a new [release](https://github.com/distribution/distribution/releases).
 In the case of a release candidate, tick the `pre-release` checkbox. Use
 the generate release notes from the release tool
 
-70. Update the registry binary in the [distribution library image repo](https://github.com/docker/distribution-library-image) by running the update script and  opening a pull request.
+70. Update the registry binary in the [distribution library image repo](https://github.com/distribution/distribution-library-image) by running the update script and  opening a pull request.
 
 80. Update the official image.  Add the new version in the [official images repo](https://github.com/docker-library/official-images) by appending a new version to the `registry/registry` file with the git hash pointed to by the signed tag.  Update the major version to point to the latest version and the minor version to point to new patch release if necessary.
 e.g. to release `2.3.1`
diff --git a/releases/v2.7.0.toml b/releases/v2.7.0.toml
index 89bcbbd5..9758b76b 100644
--- a/releases/v2.7.0.toml
+++ b/releases/v2.7.0.toml
@@ -2,7 +2,7 @@
 commit = "HEAD"
 
 project_name = "registry"
-github_repo = "docker/distribution"
+github_repo = "distribution/distribution"
 
 # previous release
 previous = "v2.6.0"
diff --git a/version/print.go b/version/print.go
index a82bce39..e4658ecf 100644
--- a/version/print.go
+++ b/version/print.go
@@ -11,10 +11,10 @@ import (
 //
 // 	<cmd> <project> <version>
 //
-// For example, a binary "registry" built from github.com/docker/distribution
+// For example, a binary "registry" built from github.com/distribution/distribution
 // with version "v2.0" would print the following:
 //
-// 	registry github.com/docker/distribution v2.0
+// 	registry github.com/distribution/distribution v2.0
 //
 func FprintVersion(w io.Writer) {
 	fmt.Fprintln(w, os.Args[0], Package, Version)
diff --git a/version/version.go b/version/version.go
index d05a377e..43c86900 100644
--- a/version/version.go
+++ b/version/version.go
@@ -2,13 +2,13 @@ package version
 
 // Package is the overall, canonical project import path under which the
 // package was built.
-var Package = "github.com/docker/distribution"
+var Package = "github.com/distribution/distribution/v3"
 
 // Version indicates which version of the binary is running. This is set to
 // the latest release tag by hand, always suffixed by "+unknown". During
 // build, it will be replaced by the actual version. The value here will be
 // used if the registry is run after a go get based install.
-var Version = "v2.7.0+unknown"
+var Version = "v3.0.0+unknown"
 
 // Revision is filled with the VCS (e.g. git) revision being used to build
 // the program at linking time.


Test patch:
diff --git a/contrib/token-server/token_test.go b/contrib/token-server/token_test.go
index cd9ea30d..e6d291ea 100644
--- a/contrib/token-server/token_test.go
+++ b/contrib/token-server/token_test.go
@@ -10,7 +10,7 @@ import (
 
 	"strings"
 
-	"github.com/docker/distribution/registry/auth"
+	"github.com/distribution/distribution/v3/registry/auth"
 	"github.com/docker/libtrust"
 )
 
diff --git a/health/api/api_test.go b/health/api/api_test.go
index ec82154f..bd840878 100644
--- a/health/api/api_test.go
+++ b/health/api/api_test.go
@@ -5,7 +5,7 @@ import (
 	"net/http/httptest"
 	"testing"
 
-	"github.com/docker/distribution/health"
+	"github.com/distribution/distribution/v3/health"
 )
 
 // TestGETDownHandlerDoesNotChangeStatus ensures that calling the endpoint
diff --git a/manifest/manifestlist/manifestlist_test.go b/manifest/manifestlist/manifestlist_test.go
index 6d0d952c..fc77af18 100644
--- a/manifest/manifestlist/manifestlist_test.go
+++ b/manifest/manifestlist/manifestlist_test.go
@@ -6,7 +6,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
 )
 
@@ -119,7 +119,7 @@ func TestManifestList(t *testing.T) {
 // TODO (mikebrow): add annotations on the manifest list (index) and support for
 // empty platform structs (move to Platform *Platform `json:"platform,omitempty"`
 // from current Platform PlatformSpec `json:"platform"`) in the manifest descriptor.
-// Requires changes to docker/distribution/manifest/manifestlist.ManifestList and .ManifestDescriptor
+// Requires changes to distribution/distribution/manifest/manifestlist.ManifestList and .ManifestDescriptor
 // and associated serialization APIs in manifestlist.go. Or split the OCI index and
 // docker manifest list implementations, which would require a lot of refactoring.
 var expectedOCIImageIndexSerialization = []byte(`{
diff --git a/manifest/ocischema/builder_test.go b/manifest/ocischema/builder_test.go
index 7332f3a4..2e511393 100644
--- a/manifest/ocischema/builder_test.go
+++ b/manifest/ocischema/builder_test.go
@@ -5,7 +5,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 	"github.com/opencontainers/go-digest"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
 )
diff --git a/manifest/ocischema/manifest_test.go b/manifest/ocischema/manifest_test.go
index b211fd09..87a6479e 100644
--- a/manifest/ocischema/manifest_test.go
+++ b/manifest/ocischema/manifest_test.go
@@ -6,8 +6,8 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
 )
 
diff --git a/manifest/schema1/config_builder_test.go b/manifest/schema1/config_builder_test.go
index 3e913a23..788332be 100644
--- a/manifest/schema1/config_builder_test.go
+++ b/manifest/schema1/config_builder_test.go
@@ -8,9 +8,9 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
-	dcontext "github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
+	"github.com/distribution/distribution/v3"
+	dcontext "github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/manifest/schema1/reference_builder_test.go b/manifest/schema1/reference_builder_test.go
index 9eaa666c..31fde646 100644
--- a/manifest/schema1/reference_builder_test.go
+++ b/manifest/schema1/reference_builder_test.go
@@ -3,9 +3,9 @@ package schema1
 import (
 	"testing"
 
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/reference"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/reference"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/manifest/schema2/builder_test.go b/manifest/schema2/builder_test.go
index cde73242..7a039799 100644
--- a/manifest/schema2/builder_test.go
+++ b/manifest/schema2/builder_test.go
@@ -5,7 +5,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/manifest/schema2/manifest_test.go b/manifest/schema2/manifest_test.go
index 45f7f7d0..7c4336b2 100644
--- a/manifest/schema2/manifest_test.go
+++ b/manifest/schema2/manifest_test.go
@@ -6,8 +6,8 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
 )
 
 var expectedManifestSerialization = []byte(`{
diff --git a/notifications/bridge_test.go b/notifications/bridge_test.go
index a09be657..29622b1c 100644
--- a/notifications/bridge_test.go
+++ b/notifications/bridge_test.go
@@ -3,11 +3,11 @@ package notifications
 import (
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/reference"
-	v2 "github.com/docker/distribution/registry/api/v2"
-	"github.com/docker/distribution/uuid"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/reference"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
+	"github.com/distribution/distribution/v3/uuid"
 	events "github.com/docker/go-events"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
diff --git a/notifications/event_test.go b/notifications/event_test.go
index 2dddf944..2fdc6a7d 100644
--- a/notifications/event_test.go
+++ b/notifications/event_test.go
@@ -6,7 +6,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/docker/distribution/manifest/schema1"
+	"github.com/distribution/distribution/v3/manifest/schema1"
 )
 
 // TestEventJSONFormat provides silly test to detect if the event format or
diff --git a/notifications/http_test.go b/notifications/http_test.go
index e878dcb0..b62ea8ae 100644
--- a/notifications/http_test.go
+++ b/notifications/http_test.go
@@ -13,7 +13,7 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/docker/distribution/manifest/schema1"
+	"github.com/distribution/distribution/v3/manifest/schema1"
 	events "github.com/docker/go-events"
 )
 
diff --git a/notifications/listener_test.go b/notifications/listener_test.go
index dee4dac5..74439668 100644
--- a/notifications/listener_test.go
+++ b/notifications/listener_test.go
@@ -5,15 +5,15 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage"
-	"github.com/docker/distribution/registry/storage/cache/memory"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
-	"github.com/docker/distribution/testutil"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage"
+	"github.com/distribution/distribution/v3/registry/storage/cache/memory"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3/testutil"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/reference/normalize_test.go b/reference/normalize_test.go
index a636236e..b675309a 100644
--- a/reference/normalize_test.go
+++ b/reference/normalize_test.go
@@ -4,7 +4,7 @@ import (
 	"strconv"
 	"testing"
 
-	"github.com/docker/distribution/digestset"
+	"github.com/distribution/distribution/v3/digestset"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/reference/reference_test.go b/reference/reference_test.go
index e077aa16..b91d5615 100644
--- a/reference/reference_test.go
+++ b/reference/reference_test.go
@@ -102,7 +102,7 @@ func TestReferenceParse(t *testing.T) {
 			err:   ErrNameContainsUppercase,
 		},
 		// FIXME "Uppercase" is incorrectly handled as a domain-name here, therefore passes.
-		// See https://github.com/docker/distribution/pull/1778, and https://github.com/docker/docker/pull/20175
+		// See https://github.com/distribution/distribution/pull/1778, and https://github.com/docker/docker/pull/20175
 		//{
 		//	input: "Uppercase/lowercase:tag",
 		//	err:   ErrNameContainsUppercase,
diff --git a/registry/api/v2/urls_test.go b/registry/api/v2/urls_test.go
index fbf9d0d4..37b62ee5 100644
--- a/registry/api/v2/urls_test.go
+++ b/registry/api/v2/urls_test.go
@@ -7,7 +7,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution/reference"
+	"github.com/distribution/distribution/v3/reference"
 )
 
 type urlBuilderTestCase struct {
diff --git a/registry/auth/htpasswd/access_test.go b/registry/auth/htpasswd/access_test.go
index 0bfc427e..a5e235cc 100644
--- a/registry/auth/htpasswd/access_test.go
+++ b/registry/auth/htpasswd/access_test.go
@@ -8,8 +8,8 @@ import (
 	"os"
 	"testing"
 
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/auth"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/auth"
 )
 
 func TestBasicAccessController(t *testing.T) {
diff --git a/registry/auth/silly/access_test.go b/registry/auth/silly/access_test.go
index 19824494..5ac8e02e 100644
--- a/registry/auth/silly/access_test.go
+++ b/registry/auth/silly/access_test.go
@@ -5,8 +5,8 @@ import (
 	"net/http/httptest"
 	"testing"
 
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/auth"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/auth"
 )
 
 func TestSillyAccessController(t *testing.T) {
diff --git a/registry/auth/token/token_test.go b/registry/auth/token/token_test.go
index 69f3e78b..77250d4b 100644
--- a/registry/auth/token/token_test.go
+++ b/registry/auth/token/token_test.go
@@ -15,8 +15,8 @@ import (
 	"testing"
 	"time"
 
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/auth"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/auth"
 	"github.com/docker/libtrust"
 )
 
diff --git a/registry/client/auth/session_test.go b/registry/client/auth/session_test.go
index c857ec81..01e35c26 100644
--- a/registry/client/auth/session_test.go
+++ b/registry/client/auth/session_test.go
@@ -9,9 +9,9 @@ import (
 	"testing"
 	"time"
 
-	"github.com/docker/distribution/registry/client/auth/challenge"
-	"github.com/docker/distribution/registry/client/transport"
-	"github.com/docker/distribution/testutil"
+	"github.com/distribution/distribution/v3/registry/client/auth/challenge"
+	"github.com/distribution/distribution/v3/registry/client/transport"
+	"github.com/distribution/distribution/v3/testutil"
 )
 
 // An implementation of clock for providing fake time data.
diff --git a/registry/client/blob_writer_test.go b/registry/client/blob_writer_test.go
index b70e0863..f7a6e7ca 100644
--- a/registry/client/blob_writer_test.go
+++ b/registry/client/blob_writer_test.go
@@ -6,10 +6,10 @@ import (
 	"net/http"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
-	"github.com/docker/distribution/testutil"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
+	"github.com/distribution/distribution/v3/testutil"
 )
 
 // Test implements distribution.BlobWriter
diff --git a/registry/client/repository_test.go b/registry/client/repository_test.go
index 6dd331c8..bd08bbd9 100644
--- a/registry/client/repository_test.go
+++ b/registry/client/repository_test.go
@@ -17,15 +17,15 @@ import (
 	"testing"
 	"time"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
-	"github.com/docker/distribution/testutil"
-	"github.com/docker/distribution/uuid"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
+	"github.com/distribution/distribution/v3/testutil"
+	"github.com/distribution/distribution/v3/uuid"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/registry/handlers/api_test.go b/registry/handlers/api_test.go
index 66aa06d6..f53ba7c8 100644
--- a/registry/handlers/api_test.go
+++ b/registry/handlers/api_test.go
@@ -20,19 +20,19 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/configuration"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/manifest/manifestlist"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/manifest/schema2"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/factory"
-	_ "github.com/docker/distribution/registry/storage/driver/testdriver"
-	"github.com/docker/distribution/testutil"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/configuration"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/manifest/manifestlist"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/manifest/schema2"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/testdriver"
+	"github.com/distribution/distribution/v3/testutil"
 	"github.com/docker/libtrust"
 	"github.com/gorilla/handlers"
 	"github.com/opencontainers/go-digest"
diff --git a/registry/handlers/app_test.go b/registry/handlers/app_test.go
index 1135740d..376e7526 100644
--- a/registry/handlers/app_test.go
+++ b/registry/handlers/app_test.go
@@ -8,15 +8,15 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution/configuration"
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/api/errcode"
-	v2 "github.com/docker/distribution/registry/api/v2"
-	"github.com/docker/distribution/registry/auth"
-	_ "github.com/docker/distribution/registry/auth/silly"
-	"github.com/docker/distribution/registry/storage"
-	memorycache "github.com/docker/distribution/registry/storage/cache/memory"
-	"github.com/docker/distribution/registry/storage/driver/testdriver"
+	"github.com/distribution/distribution/v3/configuration"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/api/errcode"
+	v2 "github.com/distribution/distribution/v3/registry/api/v2"
+	"github.com/distribution/distribution/v3/registry/auth"
+	_ "github.com/distribution/distribution/v3/registry/auth/silly"
+	"github.com/distribution/distribution/v3/registry/storage"
+	memorycache "github.com/distribution/distribution/v3/registry/storage/cache/memory"
+	"github.com/distribution/distribution/v3/registry/storage/driver/testdriver"
 )
 
 // TestAppDispatcher builds an application with a test dispatcher and ensures
diff --git a/registry/handlers/health_test.go b/registry/handlers/health_test.go
index 0f38bd1c..045dbadc 100644
--- a/registry/handlers/health_test.go
+++ b/registry/handlers/health_test.go
@@ -9,9 +9,9 @@ import (
 	"testing"
 	"time"
 
-	"github.com/docker/distribution/configuration"
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/health"
+	"github.com/distribution/distribution/v3/configuration"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/health"
 )
 
 func TestFileHealthCheck(t *testing.T) {
diff --git a/registry/proxy/proxyblobstore_test.go b/registry/proxy/proxyblobstore_test.go
index 6e90dbe5..e95bf20c 100644
--- a/registry/proxy/proxyblobstore_test.go
+++ b/registry/proxy/proxyblobstore_test.go
@@ -10,13 +10,13 @@ import (
 	"testing"
 	"time"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/proxy/scheduler"
-	"github.com/docker/distribution/registry/storage"
-	"github.com/docker/distribution/registry/storage/cache/memory"
-	"github.com/docker/distribution/registry/storage/driver/filesystem"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/proxy/scheduler"
+	"github.com/distribution/distribution/v3/registry/storage"
+	"github.com/distribution/distribution/v3/registry/storage/cache/memory"
+	"github.com/distribution/distribution/v3/registry/storage/driver/filesystem"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/proxy/proxymanifeststore_test.go b/registry/proxy/proxymanifeststore_test.go
index 82a1a2b7..8967e992 100644
--- a/registry/proxy/proxymanifeststore_test.go
+++ b/registry/proxy/proxymanifeststore_test.go
@@ -6,17 +6,17 @@ import (
 	"sync"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/client/auth"
-	"github.com/docker/distribution/registry/client/auth/challenge"
-	"github.com/docker/distribution/registry/proxy/scheduler"
-	"github.com/docker/distribution/registry/storage"
-	"github.com/docker/distribution/registry/storage/cache/memory"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
-	"github.com/docker/distribution/testutil"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/client/auth"
+	"github.com/distribution/distribution/v3/registry/client/auth/challenge"
+	"github.com/distribution/distribution/v3/registry/proxy/scheduler"
+	"github.com/distribution/distribution/v3/registry/storage"
+	"github.com/distribution/distribution/v3/registry/storage/cache/memory"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3/testutil"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/registry/proxy/proxytagservice_test.go b/registry/proxy/proxytagservice_test.go
index 1314121e..e0f99c0f 100644
--- a/registry/proxy/proxytagservice_test.go
+++ b/registry/proxy/proxytagservice_test.go
@@ -7,7 +7,7 @@ import (
 	"sync"
 	"testing"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 )
 
 type mockTagStore struct {
diff --git a/registry/proxy/scheduler/scheduler_test.go b/registry/proxy/scheduler/scheduler_test.go
index 4d69d5b5..15dfc86a 100644
--- a/registry/proxy/scheduler/scheduler_test.go
+++ b/registry/proxy/scheduler/scheduler_test.go
@@ -6,9 +6,9 @@ import (
 	"testing"
 	"time"
 
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
 )
 
 func testRefs(t *testing.T) (reference.Reference, reference.Reference, reference.Reference) {
diff --git a/registry/registry_test.go b/registry/registry_test.go
index d8deb35e..0e99c77a 100644
--- a/registry/registry_test.go
+++ b/registry/registry_test.go
@@ -12,8 +12,8 @@ import (
 	"testing"
 	"time"
 
-	"github.com/docker/distribution/configuration"
-	_ "github.com/docker/distribution/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3/configuration"
+	_ "github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
 )
 
 // Tests to ensure nextProtos returns the correct protocols when:
diff --git a/registry/storage/blob_test.go b/registry/storage/blob_test.go
index f5c1416d..4589482c 100644
--- a/registry/storage/blob_test.go
+++ b/registry/storage/blob_test.go
@@ -11,11 +11,11 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/cache/memory"
-	"github.com/docker/distribution/registry/storage/driver/testdriver"
-	"github.com/docker/distribution/testutil"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/cache/memory"
+	"github.com/distribution/distribution/v3/registry/storage/driver/testdriver"
+	"github.com/distribution/distribution/v3/testutil"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/cache/cache_test.go b/registry/storage/cache/cache_test.go
index 2e7f0556..f7e65be5 100644
--- a/registry/storage/cache/cache_test.go
+++ b/registry/storage/cache/cache_test.go
@@ -5,7 +5,7 @@ import (
 	"errors"
 	"testing"
 
-	"github.com/docker/distribution"
+	"github.com/distribution/distribution/v3"
 	digest "github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/cache/memory/memory_test.go b/registry/storage/cache/memory/memory_test.go
index 49c2b5c3..b09a1859 100644
--- a/registry/storage/cache/memory/memory_test.go
+++ b/registry/storage/cache/memory/memory_test.go
@@ -3,7 +3,7 @@ package memory
 import (
 	"testing"
 
-	"github.com/docker/distribution/registry/storage/cache/cachecheck"
+	"github.com/distribution/distribution/v3/registry/storage/cache/cachecheck"
 )
 
 // TestInMemoryBlobInfoCache checks the in memory implementation is working
diff --git a/registry/storage/cache/redis/redis_test.go b/registry/storage/cache/redis/redis_test.go
index 5f163a74..b69b9cc2 100644
--- a/registry/storage/cache/redis/redis_test.go
+++ b/registry/storage/cache/redis/redis_test.go
@@ -6,7 +6,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/docker/distribution/registry/storage/cache/cachecheck"
+	"github.com/distribution/distribution/v3/registry/storage/cache/cachecheck"
 	"github.com/gomodule/redigo/redis"
 )
 
diff --git a/registry/storage/catalog_test.go b/registry/storage/catalog_test.go
index 901d14a3..97165758 100644
--- a/registry/storage/catalog_test.go
+++ b/registry/storage/catalog_test.go
@@ -7,12 +7,12 @@ import (
 	"math/rand"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/cache/memory"
-	"github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
-	"github.com/docker/distribution/testutil"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/cache/memory"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3/testutil"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/driver/azure/azure_test.go b/registry/storage/driver/azure/azure_test.go
index 4a0661b3..c80d80d6 100644
--- a/registry/storage/driver/azure/azure_test.go
+++ b/registry/storage/driver/azure/azure_test.go
@@ -6,8 +6,8 @@ import (
 	"strings"
 	"testing"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/testsuites"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/testsuites"
 	. "gopkg.in/check.v1"
 )
 
diff --git a/registry/storage/driver/filesystem/driver_test.go b/registry/storage/driver/filesystem/driver_test.go
index 2bf5b2d1..7c689de7 100644
--- a/registry/storage/driver/filesystem/driver_test.go
+++ b/registry/storage/driver/filesystem/driver_test.go
@@ -6,8 +6,8 @@ import (
 	"reflect"
 	"testing"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/testsuites"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/testsuites"
 	. "gopkg.in/check.v1"
 )
 
diff --git a/registry/storage/driver/gcs/gcs_test.go b/registry/storage/driver/gcs/gcs_test.go
index e58216be..aae0e3a3 100644
--- a/registry/storage/driver/gcs/gcs_test.go
+++ b/registry/storage/driver/gcs/gcs_test.go
@@ -8,9 +8,9 @@ import (
 	"os"
 	"testing"
 
-	dcontext "github.com/docker/distribution/context"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/testsuites"
+	dcontext "github.com/distribution/distribution/v3/context"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/testsuites"
 	"golang.org/x/oauth2"
 	"golang.org/x/oauth2/google"
 	"google.golang.org/api/googleapi"
diff --git a/registry/storage/driver/inmemory/driver_test.go b/registry/storage/driver/inmemory/driver_test.go
index dbc1916f..64d6fafd 100644
--- a/registry/storage/driver/inmemory/driver_test.go
+++ b/registry/storage/driver/inmemory/driver_test.go
@@ -3,8 +3,8 @@ package inmemory
 import (
 	"testing"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/testsuites"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/testsuites"
 	"gopkg.in/check.v1"
 )
 
diff --git a/registry/storage/driver/middleware/cloudfront/s3filter_test.go b/registry/storage/driver/middleware/cloudfront/s3filter_test.go
index 7ff60fda..84e186b3 100644
--- a/registry/storage/driver/middleware/cloudfront/s3filter_test.go
+++ b/registry/storage/driver/middleware/cloudfront/s3filter_test.go
@@ -11,7 +11,7 @@ import (
 	"testing"
 	"time"
 
-	dcontext "github.com/docker/distribution/context"
+	dcontext "github.com/distribution/distribution/v3/context"
 
 	"reflect" // used as a replacement for testify
 )
diff --git a/registry/storage/driver/oss/oss_test.go b/registry/storage/driver/oss/oss_test.go
index d415115a..29165801 100644
--- a/registry/storage/driver/oss/oss_test.go
+++ b/registry/storage/driver/oss/oss_test.go
@@ -9,9 +9,9 @@ import (
 	"testing"
 
 	alioss "github.com/denverdino/aliyungo/oss"
-	"github.com/docker/distribution/context"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/testsuites"
+	"github.com/distribution/distribution/v3/context"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/testsuites"
 	"gopkg.in/check.v1"
 )
 
diff --git a/registry/storage/driver/s3-aws/s3_test.go b/registry/storage/driver/s3-aws/s3_test.go
index dec47916..30bd4c97 100644
--- a/registry/storage/driver/s3-aws/s3_test.go
+++ b/registry/storage/driver/s3-aws/s3_test.go
@@ -14,9 +14,9 @@ import (
 	"github.com/aws/aws-sdk-go/aws"
 	"github.com/aws/aws-sdk-go/service/s3"
 
-	"github.com/docker/distribution/context"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/testsuites"
+	"github.com/distribution/distribution/v3/context"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/testsuites"
 )
 
 // Hook up gocheck into the "go test" runner.
diff --git a/registry/storage/driver/swift/swift_test.go b/registry/storage/driver/swift/swift_test.go
index 17007c19..f3edfd5d 100644
--- a/registry/storage/driver/swift/swift_test.go
+++ b/registry/storage/driver/swift/swift_test.go
@@ -10,9 +10,9 @@ import (
 
 	"github.com/ncw/swift/swifttest"
 
-	"github.com/docker/distribution/context"
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/testsuites"
+	"github.com/distribution/distribution/v3/context"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/testsuites"
 
 	"gopkg.in/check.v1"
 )
diff --git a/registry/storage/driver/testdriver/testdriver.go b/registry/storage/driver/testdriver/testdriver.go
index 91254627..9ea83d4a 100644
--- a/registry/storage/driver/testdriver/testdriver.go
+++ b/registry/storage/driver/testdriver/testdriver.go
@@ -3,9 +3,9 @@ package testdriver
 import (
 	"context"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/factory"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/factory"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
 )
 
 const driverName = "testdriver"
diff --git a/registry/storage/driver/testsuites/testsuites.go b/registry/storage/driver/testsuites/testsuites.go
index 99c54078..541d9745 100644
--- a/registry/storage/driver/testsuites/testsuites.go
+++ b/registry/storage/driver/testsuites/testsuites.go
@@ -16,7 +16,7 @@ import (
 	"testing"
 	"time"
 
-	storagedriver "github.com/docker/distribution/registry/storage/driver"
+	storagedriver "github.com/distribution/distribution/v3/registry/storage/driver"
 	"gopkg.in/check.v1"
 )
 
diff --git a/registry/storage/filereader_test.go b/registry/storage/filereader_test.go
index 305366f4..71e57bd7 100644
--- a/registry/storage/filereader_test.go
+++ b/registry/storage/filereader_test.go
@@ -6,8 +6,8 @@ import (
 	mrand "math/rand"
 	"testing"
 
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/garbagecollect_test.go b/registry/storage/garbagecollect_test.go
index c4e5a516..25c5e2f8 100644
--- a/registry/storage/garbagecollect_test.go
+++ b/registry/storage/garbagecollect_test.go
@@ -5,12 +5,12 @@ import (
 	"path"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
-	"github.com/docker/distribution/testutil"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3/testutil"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/registry/storage/linkedblobstore_test.go b/registry/storage/linkedblobstore_test.go
index 55dccd13..b08d4dce 100644
--- a/registry/storage/linkedblobstore_test.go
+++ b/registry/storage/linkedblobstore_test.go
@@ -9,9 +9,9 @@ import (
 	"strconv"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/testutil"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/testutil"
 	"github.com/opencontainers/go-digest"
 )
 
diff --git a/registry/storage/manifeststore_test.go b/registry/storage/manifeststore_test.go
index 54b58ae1..76913649 100644
--- a/registry/storage/manifeststore_test.go
+++ b/registry/storage/manifeststore_test.go
@@ -7,16 +7,16 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/manifest/manifestlist"
-	"github.com/docker/distribution/manifest/ocischema"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/cache/memory"
-	"github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
-	"github.com/docker/distribution/testutil"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/manifest/manifestlist"
+	"github.com/distribution/distribution/v3/manifest/ocischema"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/cache/memory"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3/testutil"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
diff --git a/registry/storage/ocimanifesthandler_test.go b/registry/storage/ocimanifesthandler_test.go
index ed019efd..d8a74b8a 100644
--- a/registry/storage/ocimanifesthandler_test.go
+++ b/registry/storage/ocimanifesthandler_test.go
@@ -5,10 +5,10 @@ import (
 	"regexp"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/manifest/ocischema"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/manifest/ocischema"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
 	v1 "github.com/opencontainers/image-spec/specs-go/v1"
 )
 
diff --git a/registry/storage/purgeuploads_test.go b/registry/storage/purgeuploads_test.go
index 398df2b6..7ee127c0 100644
--- a/registry/storage/purgeuploads_test.go
+++ b/registry/storage/purgeuploads_test.go
@@ -7,9 +7,9 @@ import (
 	"testing"
 	"time"
 
-	"github.com/docker/distribution/registry/storage/driver"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
-	"github.com/docker/distribution/uuid"
+	"github.com/distribution/distribution/v3/registry/storage/driver"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3/uuid"
 )
 
 func testUploadFS(t *testing.T, numUploads int, repoName string, startedAt time.Time) (driver.StorageDriver, context.Context) {
diff --git a/registry/storage/schema2manifesthandler_test.go b/registry/storage/schema2manifesthandler_test.go
index 6536f9d3..ce4717ae 100644
--- a/registry/storage/schema2manifesthandler_test.go
+++ b/registry/storage/schema2manifesthandler_test.go
@@ -4,11 +4,11 @@ import (
 	"regexp"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/manifest/schema2"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/manifest/schema2"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
 )
 
 func TestVerifyManifestForeignLayer(t *testing.T) {
diff --git a/registry/storage/tagstore_test.go b/registry/storage/tagstore_test.go
index 6f4c6c91..dca486fd 100644
--- a/registry/storage/tagstore_test.go
+++ b/registry/storage/tagstore_test.go
@@ -5,11 +5,11 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/manifest/schema2"
-	"github.com/docker/distribution/reference"
-	"github.com/docker/distribution/registry/storage/driver/inmemory"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/manifest/schema2"
+	"github.com/distribution/distribution/v3/reference"
+	"github.com/distribution/distribution/v3/registry/storage/driver/inmemory"
 	digest "github.com/opencontainers/go-digest"
 )
 
diff --git a/testutil/manifests.go b/testutil/manifests.go
index 8afe82e4..cf80bb47 100644
--- a/testutil/manifests.go
+++ b/testutil/manifests.go
@@ -3,12 +3,12 @@ package testutil
 import (
 	"fmt"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/context"
-	"github.com/docker/distribution/manifest"
-	"github.com/docker/distribution/manifest/manifestlist"
-	"github.com/docker/distribution/manifest/schema1"
-	"github.com/docker/distribution/manifest/schema2"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/context"
+	"github.com/distribution/distribution/v3/manifest"
+	"github.com/distribution/distribution/v3/manifest/manifestlist"
+	"github.com/distribution/distribution/v3/manifest/schema1"
+	"github.com/distribution/distribution/v3/manifest/schema2"
 	"github.com/docker/libtrust"
 	"github.com/opencontainers/go-digest"
 )
diff --git a/testutil/tarfile.go b/testutil/tarfile.go
index 2ebd364a..99e1dfcd 100644
--- a/testutil/tarfile.go
+++ b/testutil/tarfile.go
@@ -8,8 +8,8 @@ import (
 	mrand "math/rand"
 	"time"
 
-	"github.com/docker/distribution"
-	"github.com/docker/distribution/context"
+	"github.com/distribution/distribution/v3"
+	"github.com/distribution/distribution/v3/context"
 	"github.com/opencontainers/go-digest"
 )