docker/docker-registry — pull request #721 by stevvooe (2014-11-13 01:06:07+00:00)
Title: Disambiguate routing for multi-level repository names

Disambiguate routing for multi-level repository names

To be able to support multi-level repository names, the API has been adjusted
to disabiguate routes tagged image manifest routes and tag list routes. With
this effort, the regular expressions have been defined in a single place to
reduce repitition and ensure that validation is consistent across the registry.

The router was also refactored to remove the use of subrouters, simplifying the
route definition code. This also reduces the number of regular expression match
checks during the routing process.

We also added regular expression definitions for several string identifiers
used throughout the registry. The repository name regex supports up to five path
path components and restricts repeated periods, dashes and underscores. The tag
regex simply validates the length of the tag and that printable characters are
required.

Though we define a new package common, these definitions should land in docker
core.