Consider having a project which you would want to release as open-source.
There are parts which you have removed, but still remain in version control
history. License of those parts is not compatible with the license you intend
to use to release the project.
How to solve this?
- Just release source tree as is. Possibly illegal option.
- Strip changes/modify history to remove unwanted parts. Breaks
compatibility with existing copies of repos. Old versions no longer compile, because important part is missing. - Create new repo without unwanted parts. Same problems as above.
I have a Mercurial in mind, but I think this applies to any DVCS.
1
Create a new repo, probably with no old revision history in it.
No “old versions fail to compile” because there are no old versions (and old versions make no sense as you’re deleted half of their source code!)
This doesn’t preclude you from using the old repo yourself, though migrating changes from OSS devs into your copy will require you to manually make a new branch, populate with a copy of their code, and merge rather than simply merge.
You could keep the old repo for the historical versions, while they’re still needed, and close it to new development.
The last idea is still to create a new repo, and populate it with all but the copyright parts. Put those into a different repo that only you have access to.
1