cpt has backends to support the use of a variety of distribution methods. You can currently use Git, Mercurial, Fossil, and Rsync to distribute a package repository. That, however, does not mean that you need to setup either of those, if you are simply going for a local repository on your system.
In the broad sense, a package repository is any directory that contains packages that were described in Packaging System. This means that as long as you can serve them, there is not much needed to do in order to distribute a repository. The following subsections aim to detail the notes and the caveats of certain distribution methods.