I would like to set up a version control system in which developers can push/commit they changes to one repository. Our testing department can pull those changes and test them. After those changes have been approved by the testing department, they would be committed to a second repository, ready for release.
I know we could use branches for this, but there are a lots of micro-changes and creating a branch for each of them seems like an overhead to me.
So in short, I need a system where each commit acts like a branch and can be individually merged to a master repository.
Note: Git's index does not count, since it exists only locally and can not be accessed by the testing department.