On Wed, Dec 04, 2019 at 06:25:21PM +0000, Joseph Myers wrote: > In my current script (adjust-refs in the gcc-conversion repository; > limited testing done based on a GCC repository conversion from last week, > running a fresh conversion now with vendor tags kept for more testing), > I'm using refs/dead/heads for any branch that's not identified as a > release branch (those go in refs/heads/releases), is not identified as > associated with a vendor (those go in refs/vendors/<name>/heads), and has > not received any commits since the start of December 2017. The > development branches that have received commits since then end up in > refs/heads/devel: > > refs/heads/devel/c++-coroutines > refs/heads/devel/c++-modules > refs/heads/devel/c++-name-lookup > refs/heads/devel/gccgo > refs/heads/devel/gfortran-caf > refs/heads/devel/gimple-linterchange > refs/heads/devel/gomp-5_0-branch > refs/heads/devel/ira-select > refs/heads/devel/range-gen3 > refs/heads/devel/ranger > refs/heads/devel/ssa-range > refs/heads/devel/unified-autovect > > Given the limited number of such active development branches, I suspect > most people developing on branches are doing so on git-only branches in > the git mirror because they find git much more convenient for working with > branches.
There are only 61 non-user branches on the git mirror, and that includes the release branches, so just 46 actually (and gccgo is in SVN as well): fsf/archer-expr-plugin fsf/asan fsf/avx2 fsf/cilkplus fsf/cilkplus-4_7-branch fsf/cilkplus-4_8-branch fsf/cilkplus-merge fsf/concepts-cxx2a fsf/constexpr fsf/cxx-conversion fsf/cxx-mem-model fsf/fortran-dev fsf/gc-improv fsf/gcc-4_0-branch fsf/gcc-4_1-branch fsf/gcc-4_2-branch fsf/gcc-4_3-branch fsf/gcc-4_4-branch fsf/gcc-4_5-branch fsf/gcc-4_6-branch fsf/gcc-4_7-branch fsf/gcc-4_8-branch fsf/gcc-4_9-branch fsf/gcc-5-branch fsf/gcc-6-branch fsf/gcc-7-branch fsf/gcc-8-branch fsf/gcc-9-branch fsf/gccgo fsf/gccpy fsf/gccrs fsf/gcn fsf/gimple-classes-v2-option-3 fsf/gimple-front-end fsf/gimplefe fsf/gomp-nvptx fsf/graphite fsf/hsa fsf/ifunc fsf/lw-ipo fsf/master fsf/melt-branch fsf/microblaze fsf/modules-ex fsf/openacc-gcc-7-branch fsf/openacc-gcc-8-branch fsf/openacc-gcc-9-branch fsf/pph fsf/profile-stdlib fsf/python fsf/reload-v2a fsf/split fsf/spu-4_5-branch fsf/sve fsf/transactional-memory fsf/trunk fsf/type-promotion-pass fsf/ubsan fsf/vect256 fsf/vtv fsf/x32 (fsf is my namespace for refs from the git mirror: [remote "fsf"] url = git://gcc.gnu.org/git/gcc.git fetch = +refs/heads/*:refs/remotes/fsf/* fetch = +refs/remotes/*:refs/remotes/svn/* prune = true ). (There are 183 user branches in the git mirror). > My expectation for active git-only development branches > is that the branch maintainer will rebase a copy of the branch onto the > cleanly converted history and then put that rebased copy in > refs/heads/devel/, rather than continuing development on the branch in > refs/git-old/ based on the old version of the history. We should make everything in git-old read-only. It is old, it is history, it should no longer change. > My script has a special case to use the name > refs/heads/releases/gcc-2.95.2.1-branch with "-branch" in there, because > there's also refs/tags/releases/gcc-2.95.2.1, and while technically git > allows you to have refs/heads/<name> and refs/tags/<name> both present, > it's a bad idea to do so because "git checkout releases/gcc-2.95.2.1" > would be confusing if you expected it to check out one of the tag and the > branch and git chose to check out the other. (Other such ambiguities are > dealt with by putting ".0" on the names of some tags.) And, as I said before, a release branch is a totally different animal from releases (release tags). We do this correctly now, let's keep it that way? Segher