doc/gate-mechanics.txt
author Rich Burridge <rich.burridge@oracle.com>
Wed, 20 Jun 2012 14:46:21 -0700
changeset 885 2af25a1da825
parent 41 50cc241a2b9a
child 3836 56af60eb6020
permissions -rw-r--r--
7177355 python 2.7.1 should be updated to the latest 2.7.X release
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
41
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     1
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     2
                Userland Gate Mechanics
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     3
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     4
The userland consolidation operates a set of Mercurial repositories that work
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     5
together to manage the tools, source code, and build recipies.  These
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     6
repositories are the integration repository, gate, and external mirror.  This is
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     7
similiar to how the Solaris ON, SFW, and other gates operates, however there
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     8
are a few subtle differences.  In ON and other consolidations, the integration
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
     9
repository is that gate and contains the canonical source.  Once a changeset
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    10
is committed, it becomes a part of the canonical source.  In the case of ON,
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    11
the changeset is immediately pushed to the clone repository.  SFW and other
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    12
consolidations push changes from their canonical gate to a clone repository
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    13
nightly.  In the userland consolidation, developers will commit changes to the
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    14
integration gate.  These changes will not be accepted until some basic
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    15
validation is performed.  Once the validation completes successfully, the
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    16
changes are accepted and pushed into the canonical source gate.
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    17
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    18
Integration repository (ssh://ulhg@userland//nevada/incoming)
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    19
	The integration gate is the Mercurial repository that all tools, source
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    20
    code, and build recipies are committed to.  Unlike ON, SFW, and other
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    21
    Solaris gates this source code repository does not contains the canonical
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    22
    source for the product.  This repository is a staging area for change
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    23
    integration and acceptance.
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    24
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    25
	    hg push to integration gate
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    26
	        |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    27
	        v
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    28
	    lock gate
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    29
	        |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    30
	        v
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    31
	    validate changeset(s) -> failed --> rollback changeset(s) 
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    32
	        |                                   |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    33
	        v                                   |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    34
	    accepted                                |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    35
	        |                                   |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    36
	        v                                   v
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    37
	    push to clone -------------------> unlock gate
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    38
	                                            |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    39
	                                            v
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    40
	                                       update bug db
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    41
	                                            |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    42
	                                            v
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    43
	                                       notify committer
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    44
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    45
    So, the basic flow works something like this:  A user pushes a changeset
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    46
    to the integration gate.  Mercurial locks the gate to block any other
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    47
    attempts to operate on the gate while it is validating the changeset.
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    48
    At this point, validation is started in the background, a message is
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    49
    displayed, and control is returned to the user.  Validation continues
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    50
    in the background.  If validation completes successfully, the changeset(s)
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    51
    are pushed to the clone, the gate is unlocked, the bug database is updated,
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    52
    and the user is notified of the changeset acceptance.  If the validation
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    53
    fails, the changeset(s) are rolled back, the gate is unlocked, and the
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    54
    user is notified of the failure.
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    55
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    56
    Changeset validation will include the following:
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    57
        multi-delta update check
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    58
        commit comment validation
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    59
        bugdb validation
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    60
      future operations
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    61
        source archive download
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    62
        incremental build on all architectures
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    63
        unit test on all architectures
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    64
        package publication for all architectures
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    65
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    66
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    67
Canonical source repository (ssh://anon@userland//nevada/gate)
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    68
    The clone gate is actually the mercurial repository that contains the
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    69
    canonical tools, source code, and build recipies for the product.  It
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    70
    should always be in a stable, buildable state.  When changes are pushed
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    71
    to this gate, they are mirrored on the external mirror repository from
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    72
    here.
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    73
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    74
        clone update
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    75
            |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    76
            v
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    77
        push to external mirror
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    78
            |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    79
            v
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    80
        notify gatelings
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    81
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    82
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    83
External mirror repository (ssh://[email protected]//hg/userland/gate)
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    84
    The external mirror is the mercurial repository that contains an externally
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    85
    accessible copy of the canonical tools, source code, and build recipies for
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    86
    the product.  It should always be in a stable, buildable state.
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    87
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    88
        external mirror update
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    89
            |
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    90
            v
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    91
        notify gatelings
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    92
50cc241a2b9a add basic overview of incoming/gate/mirror operation
Norm Jacobs <Norm.Jacobs@Sun.COM>
parents:
diff changeset
    93
# vi:set fdm=marker expandtab ts=4: