[Geany-devel] geany on github; why not?
techet at xxxxx
Mon Sep 5 21:05:15 UTC 2011
On Wed, Aug 31, 2011 at 18:41, Colomban Wendling
<lists.ban at herbesfolles.org> wrote:
> Le 31/08/2011 18:18, Frank Lanitz a écrit :
>> Am 31.08.2011 17:21, schrieb Colomban Wendling:
>>> 3) We won't probably be able to create Git tags from the SVN tags
>>> because they (at least Geany-0_18 do) don't all tag a single commit
>>> (e.g. it's a branch)
>> Can you go into more detail which are not working? IIRC we only had one
>> or two of tag/branches issues within the releases.
> $ git log --graph --decorate --pretty=oneline --abbrev-commit
> * 8c84d70 (tags/Geany-0_18) Tag the 0.18 release.
> | * d6ec2f3 Fix opening of local files in the browser on Windows.
> * | 6df16fe Tag the 0.18 release.
> * cb9c34f Add missing include path to fix 'make distcheck'.
> Hum, actually it looks like it's my bad since it simply looks like a
> re-tagging, so the forked history isn't interesting. So maybe tags
> aren't a problem -- which would be cool :)
I've finally had some time to experiment a bit more with the svn->git
conversion and I'm quite satisfied with the result. This is what I
1. Used svn2git for the conversion. I used the authors file with
entries Colomban found and ran
svn2git https://geany.svn.sourceforge.net/svnroot/geany --authors
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
There are a few problems with the import. First, tags are in separate
and some (but not all) branches are not merged:
I tried to address these issues in the following steps.
2. I created file named grafts under .git/info in the project's
directory. To correct the mini-branches, I changed parents of
individual commits. These are the lines in the grafts file that
correct the mini-branches of tags:
The result looks this way:
3. 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:
The result looks this way:
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
4. 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.
5. 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
The result looks this way:
6. I made some minor cleanup. There were things like this:
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.
7. Then I ran
git filter-branch --tag-name-filter cat -- --all
(I've googled this out). This takes the grafts file into account and
rewrites the whole history so the grafts file isn't needed any more.
This has to be done because the grafts file is local only and
therefore not clonable. The command however keeps some backup of the
old parents (without grafts applied) so it's necessary to clone the
resulting repository to get rid of them. I've also removed
"remotes/origin" from the branches under .git/packed-refs, otherwise
the branches don't get uploaded to the repository.
8. Finally, set the origin repository to my personal clone and uploaded it with
git push --all origin
git push --tags origin
The resulting repository is here:
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:
1. 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.
2. There are some strange places in the history like this:
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?
3. I haven't found a merge point for the "dynamic-editor-menu" branch.
Has it been merged to trunk?
4. 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
5. 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.
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.
More information about the Devel