I’m using a large (thousands of source files) public project with minor (a dozen source files) local modifications and additions. The local modifications aren’t relevant to other users of the big project. The project uses svn, as do we for our own projects. I want to be able to get the updates from the project when it is updated and incorporate our changes; I also want our changes kept under source control.
At present, I’m simply svn updating our working copy of the big project when needed, checking out our changes into a different directory, and copying our changes into the corresponding directories in the big project, with some manual reconciliation of the modifications. It’s workable; it’s rarely changed, not a big deal, and this way works. But if things on our end or theirs were changing more frequently, it wouldn’t be practical. Is there a better way?
You really want to use a single repository, branch the existing project to create your version, then use that branch. When the main version changes, you can just merge their updates into your branch (as you’ll only get the changes made since last time you merged, its a lot easier that manually merging 2 trees)
If you cannot add your project to the main repo, and have to maintain your own, then svk is something to look into.