Package Maintainer Operations
1. Import a SRPM into a package branch.
1. Check out a package repository (the whole thing or just a specific branch).
1. Check the log of changes.
1. Test changes in a topic branch.
1. Merge branches.
1. Add/Remove a file (patch, supplementary sources)
1. Diff between committed and uncommitted code.
1. Commit changes to a branch.
1. Upload new source files to the look-aside cache.
1. "Tag" the state of a branch. The tag will be later fed to the build system.
1. Obtain a list of tags that have been applied to a branch.
1. Tell the build system to fetch the contents of a branch based upon a tag and to build packages.
1. Branch and build for alternate repositories (ex: testing)
Repository Administrators
1. Create a new package repository with a branch for development/rawhide, plus branches for other releases as requested by the package maintainer.
1. Create a branch in an existing package repository for another version of Fedora (or EPEL), and initialize it with the contents of the development/rawhide branch (or another branch if requested by the package maintainer).
1. "Branch" the entire repository for a new release. There probably needs to be a way to keep track of what tags were used to spin a specific release.
Build System
1. Fetch the state of a package/branch associated with a tag and build packages.
1. Remove sources from the look-aside cache that are no longer referenced by any package/branch.