author  Milan Jurik <Milan.Jurik@oracle.com> 
Wed, 30 Nov 2011 06:39:13 0800  
changeset 604  c25824a87b1f 
parent 41  50cc241a2b9a 
child 3836  56af60eb6020 
permissions  rwrr 
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 
multidelta 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: 