I have a project in SVN that I'm migrating to Git. The project consists of a "core" product (under trunk), which is then branched within the same repository and used as a starting point to customize for each individual client that we roll the product out to.
It seems to me that these aren't real branches as they will never be merged back into the trunk, and they would be better off living in their own repositories with their history linking them back to the "trunk" repository and the ability to pull in changes from the trunk when required (easily accomplished with git of course).
What makes things slightly more complicated is that one client has a branch of their own project, which is a "real" branch in the sense that it will be merged back onto that clients main branch at some point in time.
To hopefully make things clearer, the SVN structure is as follows:
- "Project" Repository
- Trunk
- Branches
- Client1 (branched from Trunk v100)
- Client2 (branched from Trunk v150)
- Client2-Branch (branched from Client2 v200)
- Client3 (branched from Trunk v150)
And the structure I'd like to get to is
"Project" Repository
Client1 Repository (Forked from SHA123)
Client2 Repository (Forked from SHA456)
- Client2-Branch (branched from SHA456789)
Client3 Repository (Forked from SHA789)
Can anyone recommend a good way to do this - I'm not a Git newbie and I'm aware of filter-branch, I'm just not sure what method I should take to get this structure and keep as much history as possible.
Thanks