2011/10/7 Marc-André Laverdière <marc-andre@atc.tcs.com>:
Wow, I really missed the 'big debate' :)
[...]
- I agree that an email to 200 people is not super interesting. I think
we should run git bisect to try building for every commit until we hit
one that breaks, or build on each commit.
On linux and Mac we build fast enough that this is not a problem.
the reason we get to 200 people, is that one commit break things, and
200 distinct people commit on top of that,
there is no way for a tinderboxes to decided who to send emails to.
you can't just send it to the original aithor because you can (and do)
get the seuqnce
A push commit 1 that break
B push commit 2 that break
A push fix to the commit 1 breakage
In that case how do you make a tinderbox realize that it should send
an email to B only ?
However, that is not so great
if we have commits for which the thing is fixed in the next commit. I
am not expecting everyone to be comfortable with git rebase to the point
I am expecting them to be, that comes with the responsibility of being
a committer, and I do think that keeping the history bisectable is a
very good and important thing.
of merging commits all the time. But if we put such a policy in place,
it would help people learn very very fast :)
- Can we have some intermediary branch then? Or some 'proofed' branch?
That is call 'your local directory'
[snipped section essentially describing 'gerrit' workflow. we are
working on that... ]
- I don't think we can expect developers to run a build before each
push,
Yes we absolutely can expect that. it is actually a bare minimum !!!!!
pushing to the main repo is not a game of 'throw mud at the wall and
see what stick'
This would massively slow them down IMHO.
Well that would massively speed up everybody else.
We have a relatively high rate
of commits.
about 50 a day, and that is not 50 distinct push
the tinderboxes do 20 to 30 iteration a day
that is very close to an iteration per push.
It does happen from time to time that a commits comes in
just after you do your ./g pull -r ; make.
So ? the issue is very rarely a conflict. the issue is new code not building.
So if you successfully did a make before git pull -r, that cover 95%+
of the breakages
So you have to repeat the process, and that isn't so nice.
Breaking master is not nice for the others.. because now they can
really check that thei change are ok, sometime they can't even get
to compile their change at all because to build can't even get there,
so they have to bring locally master back to a 'older good point'
(which require _them_ to 'repeat the proces'
Now, if I have to build something a gazillion times slower before I can
push, will I _ever_ be able to push? I'm not asking rhetorically by the way.
Then don't push every 5 minutes.
you only need make clean; make after a pull.
so pull -r. make clean; make
now you have a tree you can wok in. (provided master has not been
broken... see how that brokenness is contagious ?)
code, make, fix, make, fix, make.. commit, git status (to veryfy that
you did not miss anything in the commit, if necessary:git commit
--amend)
Note that the 'make' above do not have to be global make... except for
a last one when you ar ready to pull -r, you can make the module you
changed (if it is a old-dmake module you need to build and deliver)
Then pull -r
if you have conflict resolve them and definitely make
if you have no conflict, eyeball the change that got in and make a
call about the likelihood of a 'silent' conflict.
At that point, if you want to be very safe: make clean/autogen/make
again... but if you don't an push, you still will be very unlikely to
have broken master.
Push ... AND keep an eye on the tinderboxes. usually within 20 minutes
you should have the result of a tinderbox run with your pushed change
in it (except windows so far).
http://tinderbox.libreoffice.org/MASTER/status.html
Norbert
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.