Many release process (ex: geronimo) require the release candidate to be exposed in a staging repository for testing, then vote from the communiity, and finally copy the artifact in the public repository / web site. This requires to run the release:perform with the final version (not a "-rc*" one).
When the vote fails, the release manager has to rollback the project to the previous SNAPSHOT version. As release:perform removes all the release-related files (including pom backups) the release:rollback goal cannot be used for this.
Geronimo solution is to copy the trunk as a "savepoint" before staging a release. A far better option would be to have a dedicated goal for this "release:stage" :
- same features as release:perform
- don't remove release.properties and backups
- requires a stagingRepository parameter, to be passed as -DaltRepoLocation to the deploy plugin
- detect the site:deploy goal and replace it with site:stage-deploy