When we deploy branch packages as part of a patch, sometimes we are only deploying a few components of a project. The way we do this today is to create a new release, let octopus pick the latest version # for everything and then skip all components outside of the ones that we want to release.
The problem is twofold: 1) We may make a mistake when creating a subsequent release and accidentally forget to skip a component, and then that component would slip through even though we didn't mean to push it and most importantly - 2) This process precludes us using our current build + deploy automation which tells octopus to grab the latest components, create a release and then push it.
What I would propose is the ability to 'pin' a package version for a given component in a package. This way for branch based patches, we could just pin all the components we aren't deploying to the version # that is currently in production. The build + deploy automation would then work, it would create a new release, for the unpinned components, it would grab the latest version. For the pinned components it would pick the pinned version # and that way we wouldn't have to manually skip these. (They're already deployed on the server so a re-deploy of them would cause octopus to skip them)
Another layer on top of this could be to have an option for octopus to auto-pin the deployed versions. This way when we push to production it would pin all those versions and if we do a patch we wouldn't have to manually pin everything to what we deployed previously.