Deployment from source control

Does anyone deploy from source control to target server rather than from source server to target server?

I’d be interested in any thought on how to handle release cycles.

For example; we have a regular release cycle and the elements to that release are not fixed. An “approved” list of items (changes/bug fixes) is created prior to the release. Then the project is created in deployer and the deployment sets relating to the approved items are added. However these items may not be the version currently in the DEV environment if for example additional work has been done on an item since the “approved for release” version. Currently this means extracting the prior version from source control to deploy to dev, create the build, resore the current version to dev. This process is excessively time consuming where we have hundreds of changes per release cycle (month & quarter). There are also separate release schedules for (UAT) monthly and production (quarterly) and the list of approved items are not the same. For example 50 changes were approved for UAT but then only 25 items were approved for production by the quarter cut-off. With the high number of changes we are dealing with it is not desireable to create a separate deployer project for every change.