[racket-dev] Splitting the Racket repository

From: Sam Tobin-Hochstadt (samth at cs.indiana.edu)
Date: Sat Nov 29 19:14:27 EST 2014

As Matthias mentioned in his email a few days ago, we're in the
process of splitting the repository so that it doesn't bundle together
so many packages. I've started this process already, and a number of
packages have already been split out. For most people, this won't have
a big impact, but I'll outline changes for different sorts of people
below, and mention a few open questions.

All the history for the code has been preserved, and for code that
dates back before 2005, the history is extended back to the original
CVS repository. See https://github.com/racket/games/ for an example of
this.

# Changes for other users

If you use Racket by downloading a release or a snapshot, nothing will
change for you.

# Changes for git users

If you build Racket from source from Git, that build now contains
fewer packages. There is not yet an single-step way to get all of the
split pkgs as git repositories; we plan to write a script for this
soon.

To clone individual repositories, use the new `--clone` option for
`raco pkg`, such as:

    raco pkg install --clone pkg-build git://github.com/racket/pkg-build

or for packages that are grouped together in a single repository

    raco pkg install --clone remote-shell
git://github.com/racket/remote-shell?path=remote-shell-lib
git://github.com/racket/remote-shell?path=remote-shell
git://github.com/racket/remote-shell?path=remote-shell-doc

Note that the clones created by `raco pkg install` cannot be pushed to
with the default origin remote.

# Changes for committers

If you have commit access to the main Racket repository, you'll be
added to the `racket` organization on GitHub, which will give you
access to commit to the repositories there, which is where all of the
new packages are.

# Open issues

## DrDr

Currently, DrDr builds all the split packages as well as the current
repository. But it doesn't yet notice when changes are pushed to the
split packages. Also, it doesn't yet know who is responsible for code
in split packages, so if some of your code in such as package breaks,
you won't get an email. We plan to fix both of these issues soon.

Also, DrDr now builds several packages that it didn't before: the
s3-sync, sha, http, and aws packages. Currently, these packages have
some test failures, but we hope to fix that soon.

## Determining the content of the distribution

Previously, the content of the distribution was the dependencies of
the "main-distribution" package. Since that's in the repository, it
can't depend on the split packages. Thus, we need a new canonical home
for this information.

## Release process

This will also require changes to the release process, which I'll
leave to the release managers to describe.

Posted on the dev mailing list.