What's the best practice to fork an open source project?

branch, open-source, svn, version-control

Solution

Best practice is to first try to merge your changes into the project.

If that's not an option you just

- import their current HEAD,

- make your modifications in a branch

- update your tree from theirs

- merge and rebranch

Steps 3 and 4 are relevant to keep your fork current. It is a lot of work, depending on the project's activity and the importance to stay current. If very important I'd update and merge at least once a week.

You might prefer to import their svn tree into git to make merging easy, which is what you'll be doing the most

Problem

I need to customize an open-source project. The changes are for a specific organization and will not be useful to the public project. The code changes include disabling features not needed by the organization (affecting 5% of the code), customizing other features for the organization (affecting 20% of the code), and adding new custom features (adding about 10% new code). I could start with the current version and customize from there. However, the original project continues to make advances and introduce new features, and I would like to be able to incorporate these improvements as they come along. What's the best way to manage this? Right now, I can only get release versions as they become available, but I should soon have read-only access to the original project's Subversion repository. I'm new to using Subversion repositories, but have them available to use for my code as well.

Original source