Hi Jiri,
Great job, thanks. Its going to take a while to inspect, but a couple of comments below (I'm only looking at the final rewrite-history version).
Note I don't think we need perfection for its own sake, we need to be able to use the history to identify where regressions were introduced and fix them and to show attribution as well as SVN did. As far as I can see those requirements are met.
[...]
I used the --metadata parameter so the original SVN revision gets recorded into the git commit comment. I found this useful because some commit entries refer to SVN commit number and it wouldn't be clear which commit it was without this information. The resulting repository is here:
Sounds worthwhile.
https://gitorious.org/geany-svn2git/geany-svn2git
There are a few problems with the import. First, tags are in separate mini-branches like
http://dl.dropbox.com/u/2554438/1.png
and some (but not all) branches are not merged:
http://dl.dropbox.com/u/2554438/2.png
I tried to address these issues in the following steps.
[...]
The result looks this way:
Looks good.
- I tried to add all the merges information that wasn't performed
automatically. It was quite easy - I found all commits with "merge" in their name and they usually specified what branch was merged. Then I set the parents accordingly in the grafts file:
[...]
I didn't do this for the bs2 and sm branches which IMO shouldn't be a part of geany's main repository but rather in people's personal branches.
Agree, although unless I get more time bs2 can just go away.
- I removed all "svn" mentions from the .git directory - all the
branches were set as remote tracking branches of the svn repository but as Geany is not going to use svn any more, this is not necessary.
Yes.
- I deleted refs to all merged branches. All the branches created
during geany's existence were present and active so "git branch" output something like this:
[...]
But many of the merged branches aren't active any more (they were created just to implement a single feature) so I removed refs to the following branches:
[...]
Agree.
- I made some minor cleanup. There were things like this:
http://dl.dropbox.com/u/2554438/6.png http://dl.dropbox.com/u/2554438/7.png
The first is a strange mini-branch created by cvs import and as it didn't contain any useful commits, I've removed it (if the "start" tag is wanted, the "Initial revision" commit can be tagged directly). Similarly, the second seems to be a tag created by mistake so I have removed it as well.
Thats before my time, but sounds sensible.
[...]
Now it's time for your comments - please have a look at the repository and tell me what more needs to be changed (especially check all the branches and merges, I'm not very much familiar with geany's history). I have a few comments (and questions) myself:
The bits I'm familiar with look right enough to be usable.
- Some branch names should be renamed (e.g. Geany-0_19_1) because
they have the same name as tags and they are ambiguous when doing "git checkout". Some naming scheme for stable branches should be invented.
I notice there is some inconsistency in naming recent branches whilst naming for tags is consistent. In olden times branches were named like Geany-0.10.2 but only lately has it changed to underscores. Tags always used underscores. So maybe go back to using dots in branch names (and rename clashing ones).
- There are some strange places in the history like this:
http://dl.dropbox.com/u/2554438/8.png
The commit says "create branch" but it appears the branch is actually merged. Moreover, the merged branch appears not to contain any commit. There are more examples like this in the history. Any idea what may have caused this? Should the empty branches be deleted from the history or kept as they are?
This looks like attachment to me (sorry for the attachment, firewall prevents uploading to most sharing sites)
It appears at the start of the branch which is right, how are you viewing it?
- I haven't found a merge point for the "dynamic-editor-menu" branch.
Has it been merged to trunk?
- The "unstable" branch is a bit specific in that it has been
created/merged/removed several times. The svn import however doesn't reflect the branch's removal after merge so in the history it appears to be continuous (and then there are commits like "create unstable branch" even though the branch already exists). I don't know the history well enough to be sure when the branch can be deleted so I left it continuous. I think it doesn't matter much, just mentioning it for completeness.
I think it isn't going to hinder the usefulness if its continuous, and when we decide the new workflow "unstable" (or "develop" or some similar name) is likely to become continuous anyway.
- I kept the bs2 and sm branches in the repository but once the
migration is done, they should be cloned by their owners and should be removed from the main repository.
Agree
End of the long email finally! I tried to record all what needs to be done so nothing is forgotten once the real migration takes place because some of the stuff took some time to discover.
And again well done and thanks.
Cheers Lex