On Mon, 2009-10-26 at 09:51 +0200, Øyvind Harboe wrote:
> Nicolas suggested putting development branches on sourceforge
> rather than on some other git repository.
> 
> Any objections to that?
> 
> The important thing is to make *testing* easy, IMHO.
> 
> To test the mrcmcr branch a normal tester would simply do:
> 
> git clone xxx
> git checkout mrcmcr
> 
> The mrcmcr branch would here be a developer branch that isn't
> "owned" by anyone, but all developers could work on.
> 
> Having a general dev branch in addition to the master branch would
> also become more natural. At this point in the release process, we
> should be on the dev branch cherry picking whatever we want in
> the release...
> 
> The maintainers would have the job of making sure to prune
> away dead branches so as to avoid the .git repository download
> times growing large over time(or after commit accidents in dev
> branches).

This should not be our job; the same thing can happen on repo.or.cz, by
a periodic cron script that deactivates old inactive forks.  In fact,
that is what the script is called:

  http://repo.or.cz/w/repo.git?a=blob;f=inactive;hb=HEAD

Your suggestion reflects client-server thinking.  Really, Git is P2P. 
There are few good reasons to do active branch development in the main
repository.  I established the openocd/testing fork on repo.or.cz to do
exactly what you describe.  Setting this up requires adding that remote
one time, and everyone can create a fork to push.

While SF.net offers no forking, maintainers can follow progress of an
entire flock of forks here:

  http://repo.or.cz/w/openocd.git?a=forks

I cannot overemphasize that SF.net should be treated like the goose that
laid the golden egg.  We put the repository there because their hosting
virtually ensures its uptime (and backups... let's hope they never
forget or fail those).  It exists to provide the "master" copy of our
repository, barring their server's failure -- but they we all have a
fresh up-to-date clone handy, right?

That tree is our proverbial Tree of Linus.  Do you really want to be
playing in that garden?  And rough housing?  That sounds reckless to me!
There is no reason to _ever_ restore the repository because you made a
mistake, but you seem to suggest this would be an acceptable practice.
Simultaneously, that characterization seems like a Red Herring -- it's
still a commons, not a private tree.

Practically, I want "pull, rebase and merge branches, and push" to be
the *only* allowed usage pattern for the primary repository.  I also
want to start seeing us move to workflow that requires a set of valid
Signed-off-by, Tested-by, or other tags in commit messages, but that
would be mere rubber stamps in the distributed processes that I want.

Whatever it takes to see patches get the review, spit, and polish that
they deserve.  Present levels of maintainer Git aptitude lead me to
believe that the continued use of the main repository in the fashion
proposed would pose an ongoing risk to its integrity.  More directly, we
are going to continue to merge things to the master branch that should
have gone to branches.  The above pull/merge/push policy avoids this,
and you can do whatever you want in your own branches.

So, yes, I object to putting active branches on SF.net that will be
maintained by mere fleshy human brains.  This approach fails to embrace
the distributed Git workflow.  If I were to take things to their
"logical" extreme, I might try to require one fork be created per branch
(sound familiar to anyone?), but Git has rendered that nonsensical.  

For now, I hope the openocd/testing repository on repo.or.cz will become
the incubator.  As I mentioned in my last message, I am imagining a cron
script that automatically attempts to merge a specified list of forks'
branches into the testing repository, so everyone's work will appear in
a single location without anyone having to lift a finger.  

It could be pushed to SF.net afterward with a pull/merge/push cycle, but
I would object to that for the same general reason.  The tags that might
accompany the periodic testing merges (to protect developers against the
branch reseting in an hour) should never be promulgated.  Thus, that
fork serves as a sort of temporary terminus, a regular side show for
patches that actually live on our own branches in our own forks.

Better, someday it could use 'make distcheck' to automate 'git bisect'
to find out who broke things.

Imagine, if you can. ;)

--Z

_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to