Hi folks, 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? :) -- Torne Wuff to...@wolfpuppy.org.uk