I'm looking for a "repository" to store derived information (build artifacts). We have a repository (currently Mercurial) to store our source code. When something is pushed to the source repository the code goes through a continuous integration server and we do an incremental build and as a result some dlls will be changed. This should be added to some "repository" so that everybody can use that version without needing to do the build again. I'm looking for the following features:
- It should be easy to update the source code and get the corresponding binaries (we could probably make a script for that)
- You should easily get all binaries at once (not only those that changed during the last incremental build.
- Binaries that weren't changed should only be stored once in the repository.
- When updating the source code and the binaries only the changed binaries should be transferred (and not all binaries). This is similar to what happens for source code.
- When updating to some version, only that version should be stored locally, not the complete history.
- We should be able to remove certain versions from the binary "repository" after a while. However if the dlls are still necessary for subsequent incremental builds, these dlls should of course not be completely removed from the "repository"
What would fit these requirements?