I have a migrated git repository I'm experimenting with and it looks
pretty good, and I'm looking to finalise how we want to deal with our
many branches and tags. The below proposal is basically complete, but
I'm open to suggestions for how to change it (it's not a big deal for
me to move branch and tag names around as the repo hasn't been shared
with anyone else yet).
So, a couple of relevant git facts:
1) git doesn't really have separate namespaces in practise for
branches and tags. They are stored in different places and it's
*possible* to refer to them unambiguously but people rarely do and all
commands will accept a plain branch or tag name without needing to
know whether it's a branch or a tag. This is nice in some ways, but it
also means that if you have branches and tags with the same name
things get fiddly, so I'd prefer to avoid that.
2) git doesn't have to fetch all branches when you clone a repository.
It will only clone branch heads which are under refs/heads, but you
are free to put them anywhere you like, so we can have, say,
refs/oldheads for branches that we are not interested in any more -
you can still fetch them on demand but it won't bother to do it at
initial cloning time. The same applies to tags. We probably want to do
this for some of our very old history to keep things like tab
completion lists reasonably sized :)
Currently we will have four seperate git repositories: one for Rockbox
itself, one for the main website, one for the theme site, and one for
the translation site. These four things share no history so there's no
real point them being in the same repository. The theme site and
translation site both only have a single trunk branch and no tags so
there's nothing further to say about them. The main website has one
other branch, www-redesign, which contains the design for
new.rockbox.org - I'm not sure if this is still considered a "current"
branch but since this repo only has two it doesn't really hurt.
Everything else will be in the main Rockbox repo and this is how it breaks down:
SVN branches I'm just deleting outright: Rockbox, bagder, christi,
dast, zagor. None of these have any changes in them, they are an
artifact of the cvs2svn conversion in the distant past and all code
there already exists in trunk.
SVN branches I intend to file under oldheads: gigabeat-s, mdctexp,
skinenginebreak. As far as I know these have all actually been
submitted to trunk and are no longer being developed.
SVN branches I intend to keep as-is: bootloader_ams_pp,
bootloader_ipod. Not sure if these are still interesting or not, speak
up if you know :)
SVN branches I am renaming: all the 3.x release branches. I'm renaming
them from v3_0 to v3.0 and so on because the underscore is ugly.
SVN tags I'm just deleting outright: Zagor, init, initial, prefont,
start, unfreeze_3_0. These all just represent various starting points
in ancient history (mostly on the branches that are being deleted) and
don't contain any changes.
SVN tags I intend to file under oldtags: release tags from pre-3.0.
These are not part of trunk because they *do* contain diffs, so git
won't normally fetch them *anyway* as they are not connected to any
branch heads. You will be able to fetch them if needed.
SVN tags I intend to keep as-is: all the bootloader_* tags,
e200rpatcher_*, mkamsboot_*, rbutil*, tcctool_*. Probably some of
these are old, or could do with being renamed to be slightly more
regular/sensible, speak up with comments :)
SVN tags I am renaming: the 3.x release tags. I'm renaming them to
v3.0-final and so on to eliminate the underscore. The -final suffix is
to distinguish them from their matching branch.
I'm also intending to rename trunk to master to reflect usual git convention.
Any comments/objections? :)
Received on 2011-07-01