r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[!REBOL3 Source Control] How to manage build process

Carl
28-Oct-2010
[1]
Created new group.
Andreas
28-Oct-2010
[2]
Great.
Carl
28-Oct-2010
[3x3]
Ok, so the subject of the discussion is how to move the host-kit 
build and its related processes to a more manageable method.
This is good timing, because I was just about ready to change the 
method anyway.
Andreas has some suggestions, and if we can figure out a good way 
to put this together, it would benefit most developers (at this level.)
Andreas
28-Oct-2010
[6x2]
Ultimately, it would also greatly benefit you.
Where I was going previously: for now, the only part that would need 
your direct involvement is the automation of an "export" from your 
"internal" sources to a set of "external" sources.
Carl
28-Oct-2010
[8x2]
The export step should not be that difficult. The problem will be 
if developers modify auto-generated files.
So, do we have a good place to put this? Google code?
Andreas
28-Oct-2010
[10]
I wouldn't worry about that for now.
Carl
28-Oct-2010
[11]
(which?)
Andreas
28-Oct-2010
[12x2]
Where to put this.
Unless you want to adopt a new version control system for your sources 
alltogether.
Carl
28-Oct-2010
[14]
So, how do we want to go about doing this?
Andreas
28-Oct-2010
[15]
The important part is that you use _some_ version control system 
internally.
Carl
28-Oct-2010
[16]
Same one for ten years.
Andreas
28-Oct-2010
[17]
Ok, second step is to use a single repository for all your builds.
Carl
28-Oct-2010
[18]
BTW, I don't type a dot without version control.
Andreas
28-Oct-2010
[19]
I.e. a 'Linux" repository and a "Win32" repository where you manually 
do merges (or copy/paste) in between will only lead to trouble.
Carl
28-Oct-2010
[20]
Back in a while. Go ahead and post your notes, then I'll reply. Thanks!
Andreas
28-Oct-2010
[21x12]
Quick Q: what version control system do you use atm?
Third step is to write a post-commit hook which exports from internal 
to external.
And then the automation kicks in.
The same post-commit hook then:

- moves the export to someplace public (i.e. another public VCS like 
Github or Google Code; or simply uploading them to rebol.net/rebol.com),
- and somehow notifies anyone interested of the new upload.
You'll get the notification for free on Github (I don't know about 
Google Code). But this could also be updating a simple .txt on a 
webserver somewhere which lists all available exports. Heck, it even 
the directory listing features of a webserver would suffice (as long 
as the exports are named consistently).
And from there on, we can have build bots which pick up any new export 
and build it for their platform. Build results are reported back 
somewhere (email, static website on the bots which gets aggregated 
elsewhere, a simple CGI, R3 chat, ...).
The details of those latter parts are not particularly exciting, 
as they are easy to do in a variety of ways.
For example, even the makefiles are not really important at this 
point.
But what's important is how to keep those "external" builds consistent 
with your "internal" builds.
Which is why it's also important to realise that those build bots 
need not necessarily be public. They could well be Carl's own machines 
standing at home which put the final binary in a central place for 
Carl to use.
If that's not immediate, you can obviously still use your own build 
stuff (Visual Studio projects, whatever), and as long as you regularly 
keep the sources up to date by committing, the builders will notify 
you anyway if the external build mechnisms got out of sync.
The most important thing to realize, is that not every commit, even 
if externally visible, needs to be perfect. It's perfectly fine if 
the external builders break, that's what they are there for: telling 
you when something went amiss.
Carl
28-Oct-2010
[33x2]
A few comments...
I was expecting that all these various implementation parts were 
already available.  That is, we're not reinventing the wheel.
Andreas
28-Oct-2010
[35]
They are.
Carl
28-Oct-2010
[36]
Next, is there any conern about flooding. On a good day, I make about 
10-20 commits.
Andreas
28-Oct-2010
[37]
Nope.
Carl
28-Oct-2010
[38x2]
BTW, there are no merges between Linux and Win32 files.  These are 
all in the same repository.
So, all of the above seems pretty standard.
Andreas
28-Oct-2010
[40x2]
It is.
It just needs to be done for R3.
Carl
28-Oct-2010
[42]
That's why I asked earlier about where we want to put it.... because 
that seems to be a bigger question.
Andreas
28-Oct-2010
[43x2]
http://www.rebol.net/builds/rebol3/alpha/
Call the exports r3-<datestamp>-<revision>.zip.
Carl
28-Oct-2010
[45]
dinner. bbl
Andreas
28-Oct-2010
[46]
Or export into Git and put it on your server or on Github.

Or export into Subversion and put it on Github, or Google Code, or 
....
Maxim
28-Oct-2010
[47x2]
I think using Git is the way to god for a new project.   every big 
project I see that is changing VCS is goint Git.  it seems to be 
the most powerfull VCS right now.  do you agree Andreas?
god... hahaha 
obviously I meant  "go"
Andreas
28-Oct-2010
[49x2]
Absolutely.
And I personally would suggest Git, put that'll take time and effort 
to get started with.