Stephan Herrmann
2011-11-21 17:12:10 UTC
Hi,
I'm working on migrating the Object Teams SVN to git and given that git is
meant to ease branching and merging I'm trying to solve the following:
Our repo contains a fork of org.eclipse.jdt.core, from which I periodically
fetch all changes and apply them to our fork. So far I'm doing this by manually
creating and applying patches, but in git times I figure I should just setup
the original jdt.core repo as a remote and use commands like cherry pick
for updating.
(Side issue: can I cherry pick (in EGit) many commits in one operation?)
Unfortunately, both repos don't match in structure, the jdt.core plugin
resides in these locations:
repo: eclipse.jdt.core
path: /org.eclipse.jdt.core
vs.
repo: org.eclipse.objectteams
path: /plugins/org.eclipse.jdt.core
At least from EGit I could not find a way how changes could be merged
across these two.
Is there a way to tell (E)Git that the two paths above match?
Alternatively, I've been playing with moving our fork to this location
(I did the move in git after the migration):
org.eclipse.objectteams
/org.eclipse.jdt.core
Now cherry-picking works, but EGit's history shows the moved version
as having no history. Is there a way to tell EGit to follow moves? If that's
possible, is it advisable to move a whole project so every history lookup
will require matching all those files across different paths?
To me this sounds more fragile than a move was in svn - am I missing
anything?
Next I'm thinking of deep-diving into some variant of svn2git to see if
it can do the move during migration so we won't lose history.
Does anybody have experience with re-shuffling the directory structure
during svn2git? If so, which "svn2git" should I use, given there are several
different tools of the same name.
many thanks,
Stephan
I'm working on migrating the Object Teams SVN to git and given that git is
meant to ease branching and merging I'm trying to solve the following:
Our repo contains a fork of org.eclipse.jdt.core, from which I periodically
fetch all changes and apply them to our fork. So far I'm doing this by manually
creating and applying patches, but in git times I figure I should just setup
the original jdt.core repo as a remote and use commands like cherry pick
for updating.
(Side issue: can I cherry pick (in EGit) many commits in one operation?)
Unfortunately, both repos don't match in structure, the jdt.core plugin
resides in these locations:
repo: eclipse.jdt.core
path: /org.eclipse.jdt.core
vs.
repo: org.eclipse.objectteams
path: /plugins/org.eclipse.jdt.core
At least from EGit I could not find a way how changes could be merged
across these two.
Is there a way to tell (E)Git that the two paths above match?
Alternatively, I've been playing with moving our fork to this location
(I did the move in git after the migration):
org.eclipse.objectteams
/org.eclipse.jdt.core
Now cherry-picking works, but EGit's history shows the moved version
as having no history. Is there a way to tell EGit to follow moves? If that's
possible, is it advisable to move a whole project so every history lookup
will require matching all those files across different paths?
To me this sounds more fragile than a move was in svn - am I missing
anything?
Next I'm thinking of deep-diving into some variant of svn2git to see if
it can do the move during migration so we won't lose history.
Does anybody have experience with re-shuffling the directory structure
during svn2git? If so, which "svn2git" should I use, given there are several
different tools of the same name.
many thanks,
Stephan