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

Reply via email to