Hex Artifact Content
Not logged in

Artifact 73c9169a7e9982aa2f04eebc00867dcd70acbff5:

File www/branching.wiki part of check-in [7a2c37063a] - merge trunk into creole branch by bob on 2009-09-22 07:49:39. Also file www/branching.wiki part of check-in [5523218023a] - Add <title> markup to several of the embedded documentation pages. by drh on 2009-08-24 17:54:24.

0000: 3c 74 69 74 6c 65 3e 46 6f 73 73 69 6c 20 44 6f  <title>Fossil Do
0010: 63 75 6d 65 6e 74 61 74 69 6f 6e 3c 2f 74 69 74  cumentation</tit
0020: 6c 65 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d 22 63  le>.<h1 align="c
0030: 65 6e 74 65 72 22 3e 0a 42 72 61 6e 63 68 69 6e  enter">.Branchin
0040: 67 2c 20 46 6f 72 6b 69 6e 67 2c 20 4d 65 72 67  g, Forking, Merg
0050: 69 6e 67 2c 20 61 6e 64 20 54 61 67 67 69 6e 67  ing, and Tagging
0060: 0a 3c 2f 68 31 3e 0a 0a 49 6e 20 61 20 73 69 6d  .</h1>..In a sim
0070: 70 6c 65 20 61 6e 64 20 70 65 72 66 65 63 74 20  ple and perfect 
0080: 77 6f 72 6c 64 2c 20 74 68 65 20 64 65 76 65 6c  world, the devel
0090: 6f 70 6d 65 6e 74 20 6f 66 20 61 20 70 72 6f 6a  opment of a proj
00a0: 65 63 74 20 77 6f 75 6c 64 20 70 72 6f 63 65 65  ect would procee
00b0: 64 0a 6c 69 6e 65 61 72 6c 79 2c 20 61 73 20 73  d.linearly, as s
00c0: 68 6f 77 6e 20 69 6e 20 66 69 67 75 72 65 20 31  hown in figure 1
00d0: 2e 0a 0a 3c 63 65 6e 74 65 72 3e 3c 74 61 62 6c  ...<center><tabl
00e0: 65 20 62 6f 72 64 65 72 3d 31 20 63 65 6c 6c 70  e border=1 cellp
00f0: 61 64 64 69 6e 67 3d 31 30 20 68 73 70 61 63 65  adding=10 hspace
0100: 3d 31 30 20 76 73 70 61 63 65 3d 31 30 3e 0a 3c  =10 vspace=10>.<
0110: 74 72 3e 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65  tr><td align="ce
0120: 6e 74 65 72 22 3e 0a 3c 69 6d 67 20 73 72 63 3d  nter">.<img src=
0130: 22 62 72 61 6e 63 68 30 31 2e 67 69 66 22 20 77  "branch01.gif" w
0140: 69 64 74 68 3d 32 38 30 20 68 65 69 67 68 74 3d  idth=280 height=
0150: 36 38 3e 3c 62 72 3e 0a 46 69 67 75 72 65 20 31  68><br>.Figure 1
0160: 0a 3c 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62  .</td></tr></tab
0170: 6c 65 3e 3c 2f 63 65 6e 74 65 72 3e 0a 0a 45 61  le></center>..Ea
0180: 63 68 20 63 69 72 63 6c 65 20 72 65 70 72 65 73  ch circle repres
0190: 65 6e 74 73 20 61 20 63 68 65 63 6b 2d 69 6e 2e  ents a check-in.
01a0: 20 20 46 6f 72 20 74 68 65 20 73 61 6b 65 20 6f    For the sake o
01b0: 66 20 63 6c 61 72 69 74 79 2c 20 74 68 65 20 63  f clarity, the c
01c0: 68 65 63 6b 2d 69 6e 73 0a 61 72 65 20 67 69 76  heck-ins.are giv
01d0: 65 6e 20 73 6d 61 6c 6c 20 63 6f 6e 73 65 63 75  en small consecu
01e0: 74 69 76 65 20 6e 75 6d 62 65 72 73 2e 20 20 49  tive numbers.  I
01f0: 6e 20 61 20 72 65 61 6c 20 73 79 73 74 65 6d 2c  n a real system,
0200: 20 6f 66 20 63 6f 75 72 73 65 2c 20 74 68 65 0a   of course, the.
0210: 63 68 65 63 6b 2d 69 6e 20 6e 75 6d 62 65 72 73  check-in numbers
0220: 20 77 6f 75 6c 64 20 62 65 20 34 30 2d 63 68 61   would be 40-cha
0230: 72 61 63 74 65 72 20 53 48 41 31 20 68 61 73 68  racter SHA1 hash
0240: 65 73 20 73 69 6e 63 65 20 69 74 20 69 73 20 6e  es since it is n
0250: 6f 74 20 70 6f 73 73 69 62 6c 65 0a 74 6f 20 61  ot possible.to a
0260: 6c 6c 6f 63 61 74 65 20 63 6f 6c 6c 69 73 69 6f  llocate collisio
0270: 6e 2d 66 72 65 65 20 73 65 71 75 65 6e 74 69 61  n-free sequentia
0280: 6c 20 6e 75 6d 62 65 72 73 20 69 73 20 61 20 64  l numbers is a d
0290: 69 73 74 72 69 62 75 74 65 64 20 73 79 73 74 65  istributed syste
02a0: 6d 2e 0a 42 75 74 20 73 65 71 75 65 6e 74 69 61  m..But sequentia
02b0: 6c 20 6e 75 6d 62 65 72 73 20 61 72 65 20 65 61  l numbers are ea
02c0: 73 69 65 72 20 74 6f 20 72 65 61 64 2c 20 73 6f  sier to read, so
02d0: 20 77 65 20 77 69 6c 6c 20 73 75 62 73 74 69 74   we will substit
02e0: 75 74 65 20 74 68 65 6d 20 66 6f 72 0a 74 68 65  ute them for.the
02f0: 20 34 30 2d 63 68 61 72 61 63 74 65 72 20 53 48   40-character SH
0300: 41 31 20 68 61 73 68 65 73 20 69 6e 20 74 68 69  A1 hashes in thi
0310: 73 20 64 6f 63 75 6d 65 6e 74 2e 0a 0a 54 68 65  s document...The
0320: 20 61 72 72 6f 77 73 20 69 6e 20 66 69 67 75 72   arrows in figur
0330: 65 20 31 20 73 68 6f 77 20 65 76 6f 6c 75 74 69  e 1 show evoluti
0340: 6f 6e 20 6f 66 20 74 68 65 20 70 72 6f 6a 65 63  on of the projec
0350: 74 2e 20 20 54 68 65 20 69 6e 69 74 69 61 6c 0a  t.  The initial.
0360: 63 68 65 63 6b 2d 69 6e 20 69 73 20 31 2e 20 20  check-in is 1.  
0370: 43 68 65 63 6b 2d 69 6e 20 32 20 69 73 20 64 65  Check-in 2 is de
0380: 72 69 76 65 64 20 66 72 6f 6d 20 31 2e 20 20 49  rived from 1.  I
0390: 6e 20 6f 74 68 65 72 20 77 6f 72 64 73 2c 20 63  n other words, c
03a0: 68 65 63 6b 2d 69 6e 20 32 0a 77 61 73 20 63 72  heck-in 2.was cr
03b0: 65 61 74 65 64 20 62 79 20 6d 61 6b 69 6e 67 20  eated by making 
03c0: 65 64 69 74 73 20 74 6f 20 63 68 65 63 6b 2d 69  edits to check-i
03d0: 6e 20 31 20 61 6e 64 20 74 68 65 6e 20 63 6f 6d  n 1 and then com
03e0: 6d 69 74 74 69 6e 67 20 74 68 6f 73 65 20 65 64  mitting those ed
03f0: 69 74 73 2e 0a 57 65 20 73 61 79 20 74 68 61 74  its..We say that
0400: 20 32 20 69 73 20 61 20 3c 69 3e 63 68 69 6c 64   2 is a <i>child
0410: 3c 2f 69 3e 20 6f 66 20 31 0a 61 6e 64 20 74 68  </i> of 1.and th
0420: 61 74 20 31 20 69 73 20 61 20 3c 69 3e 70 61 72  at 1 is a <i>par
0430: 65 6e 74 3c 2f 69 3e 20 6f 66 20 32 2e 20 20 0a  ent</i> of 2.  .
0440: 43 68 65 63 6b 2d 69 6e 20 33 20 69 73 20 64 65  Check-in 3 is de
0450: 72 69 76 65 64 20 66 72 6f 6d 20 63 68 65 63 6b  rived from check
0460: 2d 69 6e 20 32 2c 20 6d 61 6b 69 6e 67 0a 33 20  -in 2, making.3 
0470: 61 20 63 68 69 6c 64 20 6f 66 20 32 2e 20 20 57  a child of 2.  W
0480: 65 20 73 61 79 20 74 68 61 74 20 33 20 69 73 20  e say that 3 is 
0490: 61 20 3c 69 3e 64 65 73 63 65 6e 64 61 6e 74 3c  a <i>descendant<
04a0: 2f 69 3e 20 6f 66 20 62 6f 74 68 20 31 20 61 6e  /i> of both 1 an
04b0: 64 20 32 20 61 6e 64 20 74 68 61 74 20 31 0a 61  d 2 and that 1.a
04c0: 6e 64 20 32 20 61 72 65 20 62 6f 74 68 20 3c 69  nd 2 are both <i
04d0: 3e 61 6e 63 65 73 74 6f 72 73 3c 2f 69 3e 20 6f  >ancestors</i> o
04e0: 66 20 33 2e 20 20 0a 0a 57 65 20 63 61 6c 6c 20  f 3.  ..We call 
04f0: 74 68 65 20 67 72 61 70 68 20 6f 66 20 63 68 65  the graph of che
0500: 63 6b 2d 69 6e 73 20 61 20 3c 69 3e 74 72 65 65  ck-ins a <i>tree
0510: 3c 2f 69 3e 2e 20 20 43 68 65 63 6b 2d 69 6e 20  </i>.  Check-in 
0520: 31 20 69 73 20 74 68 65 20 3c 69 3e 72 6f 6f 74  1 is the <i>root
0530: 3c 2f 69 3e 0a 73 69 6e 63 65 20 69 74 20 68 61  </i>.since it ha
0540: 73 20 6e 6f 20 61 6e 63 65 73 74 6f 72 73 2e 20  s no ancestors. 
0550: 20 43 68 65 63 6b 2d 69 6e 20 34 20 69 73 20 61   Check-in 4 is a
0560: 20 3c 69 3e 6c 65 61 66 3c 2f 69 3e 20 6f 66 20   <i>leaf</i> of 
0570: 74 68 65 20 74 72 65 65 20 73 69 6e 63 65 0a 69  the tree since.i
0580: 74 20 68 61 73 20 6e 6f 20 64 65 73 63 65 6e 64  t has no descend
0590: 61 6e 74 73 2e 20 20 28 57 65 20 77 69 6c 6c 20  ants.  (We will 
05a0: 67 69 76 65 20 61 20 6d 6f 72 65 20 70 72 65 63  give a more prec
05b0: 69 73 65 20 69 6e 20 74 68 65 20 64 65 66 69 6e  ise in the defin
05c0: 69 74 69 6f 6e 20 6f 66 0a 22 6c 65 61 66 22 20  ition of."leaf" 
05d0: 6c 61 74 65 72 2e 29 0a 0a 41 6c 61 73 2c 20 72  later.)..Alas, r
05e0: 65 61 6c 69 74 79 20 6f 66 74 65 6e 20 69 6e 74  eality often int
05f0: 65 72 66 65 72 65 73 20 77 69 74 68 20 74 68 65  erferes with the
0600: 20 73 69 6d 70 6c 65 20 6c 69 6e 65 61 72 20 64   simple linear d
0610: 65 76 65 6c 6f 70 6d 65 6e 74 20 6f 66 20 61 0a  evelopment of a.
0620: 70 72 6f 6a 65 63 74 2e 20 20 53 75 70 70 6f 73  project.  Suppos
0630: 65 20 74 77 6f 20 70 72 6f 67 72 61 6d 6d 65 72  e two programmer
0640: 73 20 6d 61 6b 65 20 69 6e 64 65 70 65 6e 64 65  s make independe
0650: 6e 74 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 73  nt modifications
0660: 20 74 6f 20 63 68 65 63 6b 2d 69 6e 20 32 2e 0a   to check-in 2..
0670: 41 66 74 65 72 20 62 6f 74 68 20 63 68 61 6e 67  After both chang
0680: 65 73 20 61 72 65 20 63 68 65 63 6b 65 64 20 69  es are checked i
0690: 6e 2c 20 77 65 20 68 61 76 65 20 61 20 63 68 65  n, we have a che
06a0: 63 6b 2d 69 6e 20 67 72 61 70 68 20 74 68 61 74  ck-in graph that
06b0: 20 6c 6f 6f 6b 73 20 0a 6c 69 6b 65 20 66 69 67   looks .like fig
06c0: 75 72 65 20 32 3a 0a 0a 3c 63 65 6e 74 65 72 3e  ure 2:..<center>
06d0: 3c 74 61 62 6c 65 20 62 6f 72 64 65 72 3d 31 20  <table border=1 
06e0: 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31 30 20 68  cellpadding=10 h
06f0: 73 70 61 63 65 3d 31 30 20 76 73 70 61 63 65 3d  space=10 vspace=
0700: 31 30 3e 0a 3c 74 72 3e 3c 74 64 20 61 6c 69 67  10>.<tr><td alig
0710: 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 3c 69 6d 67  n="center">.<img
0720: 20 73 72 63 3d 22 62 72 61 6e 63 68 30 32 2e 67   src="branch02.g
0730: 69 66 22 20 77 69 64 74 68 3d 32 31 30 20 68 65  if" width=210 he
0740: 69 67 68 74 3d 31 34 30 3e 3c 62 72 3e 0a 46 69  ight=140><br>.Fi
0750: 67 75 72 65 20 32 0a 3c 2f 74 64 3e 3c 2f 74 72  gure 2.</td></tr
0760: 3e 3c 2f 74 61 62 6c 65 3e 3c 2f 63 65 6e 74 65  ></table></cente
0770: 72 3e 0a 0a 54 68 65 20 67 72 61 70 68 20 69 6e  r>..The graph in
0780: 20 66 69 67 75 72 65 20 32 20 68 61 73 20 74 77   figure 2 has tw
0790: 6f 20 6c 65 61 76 65 73 3a 20 63 68 65 63 6b 2d  o leaves: check-
07a0: 69 6e 73 20 33 20 61 6e 64 20 34 2e 20 20 43 68  ins 3 and 4.  Ch
07b0: 65 63 6b 2d 69 6e 20 32 20 68 61 73 0a 74 77 6f  eck-in 2 has.two
07c0: 20 63 68 69 6c 64 72 65 6e 2c 20 63 68 65 63 6b   children, check
07d0: 2d 69 6e 73 20 33 20 61 6e 64 20 34 2e 20 20 57  -ins 3 and 4.  W
07e0: 65 20 63 61 6c 6c 20 74 68 69 73 20 73 74 69 74  e call this stit
07f0: 75 61 74 69 6f 6e 20 61 20 3c 69 3e 66 6f 72 6b  uation a <i>fork
0800: 3c 2f 69 3e 2e 0a 0a 46 6f 73 73 69 6c 20 74 72  </i>...Fossil tr
0810: 69 65 73 20 74 6f 20 70 72 65 76 65 6e 74 20 66  ies to prevent f
0820: 6f 72 6b 73 2e 20 20 53 75 70 70 6f 73 65 20 74  orks.  Suppose t
0830: 68 65 20 74 77 6f 20 70 72 6f 67 72 61 6d 6d 65  he two programme
0840: 72 73 20 77 68 6f 20 77 65 72 65 0a 65 64 69 74  rs who were.edit
0850: 69 6e 67 20 63 68 65 63 6b 2d 69 6e 20 32 20 61  ing check-in 2 a
0860: 72 65 20 6e 61 6d 65 64 20 41 6c 69 63 65 20 61  re named Alice a
0870: 6e 64 20 42 6f 62 2e 20 20 53 75 70 70 6f 73 65  nd Bob.  Suppose
0880: 20 41 6c 69 63 65 20 66 69 6e 69 73 68 65 64 20   Alice finished 
0890: 68 65 72 0a 65 64 69 74 73 20 66 69 72 73 74 20  her.edits first 
08a0: 61 6e 64 20 64 69 64 20 61 20 63 6f 6d 6d 69 74  and did a commit
08b0: 2c 20 72 65 73 75 6c 74 69 6e 67 20 69 6e 20 63  , resulting in c
08c0: 68 65 63 6b 2d 69 6e 20 33 2e 20 20 4c 61 74 65  heck-in 3.  Late
08d0: 72 2c 20 77 68 65 6e 20 42 6f 62 0a 74 72 69 65  r, when Bob.trie
08e0: 64 20 74 6f 20 63 6f 6d 6d 69 74 20 68 69 73 20  d to commit his 
08f0: 63 68 61 6e 67 65 73 2c 20 66 6f 73 73 69 6c 20  changes, fossil 
0900: 77 6f 75 6c 64 20 74 72 79 20 74 6f 20 76 65 72  would try to ver
0910: 69 66 79 20 74 68 61 74 20 63 68 65 63 6b 2d 69  ify that check-i
0920: 6e 20 32 0a 77 61 73 20 73 74 69 6c 6c 20 61 20  n 2.was still a 
0930: 6c 65 61 66 2e 20 20 46 6f 73 73 69 6c 20 77 6f  leaf.  Fossil wo
0940: 75 6c 64 20 73 65 65 20 74 68 61 74 20 63 68 65  uld see that che
0950: 63 6b 2d 69 6e 20 33 20 68 61 64 20 6f 63 63 75  ck-in 3 had occu
0960: 72 72 65 64 20 61 6e 64 20 77 6f 75 6c 64 0a 61  rred and would.a
0970: 62 6f 72 74 20 42 6f 62 27 73 20 63 6f 6d 6d 69  bort Bob's commi
0980: 74 20 61 74 74 65 6d 70 74 20 77 69 74 68 20 61  t attempt with a
0990: 20 6d 65 73 73 61 67 65 20 22 77 6f 75 6c 64 20   message "would 
09a0: 66 6f 72 6b 22 2e 20 20 54 68 69 73 20 61 6c 6c  fork".  This all
09b0: 6f 77 73 20 42 6f 62 0a 74 6f 20 64 6f 20 61 20  ows Bob.to do a 
09c0: 22 66 6f 73 73 69 6c 20 75 70 64 61 74 65 22 20  "fossil update" 
09d0: 77 68 69 63 68 20 77 6f 75 6c 64 20 70 75 6c 6c  which would pull
09e0: 20 69 6e 20 41 6c 69 63 65 73 20 63 68 61 6e 67   in Alices chang
09f0: 65 73 20 61 6e 64 20 6d 65 72 67 65 20 74 68 65  es and merge the
0a00: 6d 0a 74 6f 67 65 74 68 65 72 20 77 69 74 68 20  m.together with 
0a10: 68 69 73 20 6f 77 6e 20 63 68 61 6e 67 65 73 2e  his own changes.
0a20: 20 20 41 66 74 65 72 20 6d 65 72 67 69 6e 67 2c    After merging,
0a30: 20 42 6f 62 20 63 6f 75 6c 64 20 74 68 65 6e 20   Bob could then 
0a40: 63 6f 6d 6d 69 74 0a 63 68 65 63 6b 2d 69 6e 20  commit.check-in 
0a50: 34 20 61 73 20 61 20 63 68 69 6c 64 20 6f 66 20  4 as a child of 
0a60: 63 68 65 63 6b 2d 69 6e 20 33 20 61 6e 64 20 74  check-in 3 and t
0a70: 68 65 20 72 65 73 75 6c 74 20 77 6f 75 6c 64 20  he result would 
0a80: 62 65 20 61 20 6c 69 6e 65 61 72 20 67 72 61 70  be a linear grap
0a90: 68 0a 61 73 20 73 68 6f 77 6e 20 69 6e 20 66 69  h.as shown in fi
0aa0: 67 75 72 65 20 31 2e 20 20 54 68 69 73 20 69 73  gure 1.  This is
0ab0: 20 68 6f 77 20 43 56 53 20 77 6f 72 6b 73 2e 20   how CVS works. 
0ac0: 20 54 68 69 73 20 69 73 20 61 6c 73 6f 20 68 6f   This is also ho
0ad0: 77 20 66 6f 73 73 69 6c 0a 77 6f 72 6b 73 20 69  w fossil.works i
0ae0: 6e 20 22 61 75 74 6f 73 79 6e 63 22 20 6d 6f 64  n "autosync" mod
0af0: 65 2e 0a 0a 42 75 74 20 69 74 20 6d 69 67 68 74  e...But it might
0b00: 20 62 65 20 74 68 61 74 20 42 6f 62 20 69 73 20   be that Bob is 
0b10: 6f 66 66 2d 6e 65 74 77 6f 72 6b 20 77 68 65 6e  off-network when
0b20: 20 68 65 20 64 6f 65 73 20 68 69 73 20 63 6f 6d   he does his com
0b30: 6d 69 74 2c 20 73 6f 20 68 65 0a 68 61 73 20 6e  mit, so he.has n
0b40: 6f 20 77 61 79 20 6f 66 20 6b 6e 6f 77 69 6e 67  o way of knowing
0b50: 20 74 68 61 74 20 41 6c 69 63 65 20 68 61 73 20   that Alice has 
0b60: 61 6c 72 65 61 64 79 20 63 6f 6d 6d 69 74 74 65  already committe
0b70: 64 20 68 65 72 20 63 68 61 6e 67 65 73 2e 0a 4f  d her changes..O
0b80: 72 2c 20 69 74 20 63 6f 75 6c 64 20 62 65 20 74  r, it could be t
0b90: 68 61 74 20 42 6f 62 20 68 61 73 20 74 75 72 6e  hat Bob has turn
0ba0: 65 64 20 6f 66 66 20 22 61 75 74 6f 73 79 6e 63  ed off "autosync
0bb0: 22 20 6d 6f 64 65 20 69 6e 20 53 51 4c 69 74 65  " mode in SQLite
0bc0: 2e 20 20 4f 72 2c 0a 6d 61 79 62 65 20 42 6f 62  .  Or,.maybe Bob
0bd0: 20 6a 75 73 74 20 64 6f 65 73 6e 27 74 20 77 61   just doesn't wa
0be0: 6e 74 20 74 6f 20 6d 65 72 67 65 20 69 6e 20 41  nt to merge in A
0bf0: 6c 69 63 65 73 20 63 68 61 6e 67 65 73 20 62 65  lices changes be
0c00: 66 6f 72 65 20 68 65 20 68 61 73 0a 73 61 76 65  fore he has.save
0c10: 64 20 68 69 73 20 6f 77 6e 2c 20 73 6f 20 68 65  d his own, so he
0c20: 20 66 6f 72 63 65 73 20 74 68 65 20 63 6f 6d 6d   forces the comm
0c30: 69 74 20 74 6f 20 6f 63 63 75 72 20 75 73 69 6e  it to occur usin
0c40: 67 20 74 68 65 20 22 2d 2d 66 6f 72 63 65 22 20  g the "--force" 
0c50: 6f 70 74 69 6f 6e 0a 74 6f 20 74 68 65 20 66 6f  option.to the fo
0c60: 73 73 69 6c 20 3c 62 3e 63 6f 6d 6d 69 74 3c 2f  ssil <b>commit</
0c70: 62 3e 20 63 6f 6d 6d 61 6e 64 2e 20 20 46 6f 72  b> command.  For
0c80: 20 77 68 61 74 65 76 65 72 20 72 65 61 73 6f 6e   whatever reason
0c90: 2c 20 74 77 6f 20 63 6f 6d 6d 69 74 73 20 61 67  , two commits ag
0ca0: 61 69 6e 73 74 0a 63 68 65 63 6b 2d 69 6e 20 32  ainst.check-in 2
0cb0: 20 68 61 76 65 20 6f 63 63 75 72 72 65 64 20 61   have occurred a
0cc0: 6e 64 20 6e 6f 77 20 74 68 65 20 74 72 65 65 20  nd now the tree 
0cd0: 68 61 73 20 74 77 6f 20 6c 65 61 76 65 73 2e 0a  has two leaves..
0ce0: 0a 53 6f 20 77 68 69 63 68 20 76 65 72 73 69 6f  .So which versio
0cf0: 6e 20 6f 66 20 74 68 65 20 70 72 6f 6a 65 63 74  n of the project
0d00: 20 69 73 20 74 68 65 20 22 6c 61 74 65 73 74 22   is the "latest"
0d10: 20 69 6e 20 74 68 65 20 73 65 6e 73 65 20 6f 66   in the sense of
0d20: 20 68 61 76 69 6e 67 0a 74 68 65 20 6d 6f 73 74   having.the most
0d30: 20 66 65 61 74 75 72 65 73 20 61 6e 64 20 74 68   features and th
0d40: 65 20 6d 6f 73 74 20 62 75 67 20 66 69 78 65 73  e most bug fixes
0d50: 3f 20 20 57 68 65 6e 20 74 68 65 72 65 20 69 73  ?  When there is
0d60: 20 6d 6f 72 65 20 74 68 61 6e 0a 6f 6e 65 20 6c   more than.one l
0d70: 65 61 66 20 69 6e 20 74 68 65 20 67 72 61 70 68  eaf in the graph
0d80: 2c 20 79 6f 75 20 64 6f 6e 27 74 20 72 65 61 6c  , you don't real
0d90: 6c 79 20 6b 6e 6f 77 2e 20 20 53 6f 20 77 65 20  ly know.  So we 
0da0: 6c 69 6b 65 20 74 6f 20 68 61 76 65 0a 67 72 61  like to have.gra
0db0: 70 68 73 20 77 69 74 68 20 61 20 73 69 6e 67 6c  phs with a singl
0dc0: 65 20 6c 65 61 66 2e 0a 0a 54 6f 20 72 65 73 6f  e leaf...To reso
0dd0: 6c 76 65 20 74 68 69 73 20 73 69 74 75 61 74 69  lve this situati
0de0: 6f 6e 2c 20 41 6c 69 63 65 20 63 61 6e 20 75 73  on, Alice can us
0df0: 65 20 74 68 65 20 66 6f 73 73 69 6c 20 3c 62 3e  e the fossil <b>
0e00: 6d 65 72 67 65 3c 2f 62 3e 20 63 6f 6d 6d 61 6e  merge</b> comman
0e10: 64 0a 74 6f 20 6d 65 72 67 65 20 69 6e 20 42 6f  d.to merge in Bo
0e20: 62 27 73 20 63 68 61 6e 67 65 73 20 69 6e 20 68  b's changes in h
0e30: 65 72 20 6c 6f 63 61 6c 20 63 6f 70 79 20 6f 66  er local copy of
0e40: 20 63 68 65 63 6b 2d 69 6e 20 33 2e 20 20 54 68   check-in 3.  Th
0e50: 65 6e 20 73 68 65 0a 63 61 6e 20 63 6f 6d 6d 69  en she.can commi
0e60: 74 20 74 68 65 20 72 65 73 75 6c 74 73 20 61 73  t the results as
0e70: 20 63 68 65 63 6b 2d 69 6e 20 35 2e 20 20 54 68   check-in 5.  Th
0e80: 69 73 20 72 65 73 75 6c 74 73 20 69 6e 20 61 20  is results in a 
0e90: 74 72 65 65 20 61 73 20 73 68 6f 77 6e 0a 69 6e  tree as shown.in
0ea0: 20 66 69 67 75 72 65 20 33 2e 0a 0a 3c 63 65 6e   figure 3...<cen
0eb0: 74 65 72 3e 3c 74 61 62 6c 65 20 62 6f 72 64 65  ter><table borde
0ec0: 72 3d 31 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d  r=1 cellpadding=
0ed0: 31 30 20 68 73 70 61 63 65 3d 31 30 20 76 73 70  10 hspace=10 vsp
0ee0: 61 63 65 3d 31 30 3e 0a 3c 74 72 3e 3c 74 64 20  ace=10>.<tr><td 
0ef0: 61 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a  align="center">.
0f00: 3c 69 6d 67 20 73 72 63 3d 22 62 72 61 6e 63 68  <img src="branch
0f10: 30 33 2e 67 69 66 22 20 77 69 64 74 68 3d 32 38  03.gif" width=28
0f20: 32 20 68 65 69 67 68 74 3d 31 35 32 3e 3c 62 72  2 height=152><br
0f30: 3e 0a 46 69 67 75 72 65 20 33 0a 3c 2f 74 64 3e  >.Figure 3.</td>
0f40: 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 3c 2f 63  </tr></table></c
0f50: 65 6e 74 65 72 3e 0a 0a 43 68 65 63 6b 2d 69 6e  enter>..Check-in
0f60: 20 35 20 69 73 20 61 20 63 68 69 6c 64 20 6f 66   5 is a child of
0f70: 20 63 68 65 63 6b 2d 69 6e 20 33 20 62 65 63 61   check-in 3 beca
0f80: 75 73 65 20 69 74 20 77 61 73 20 63 72 65 61 74  use it was creat
0f90: 65 64 20 62 79 20 65 64 69 74 69 6e 67 0a 63 68  ed by editing.ch
0fa0: 65 63 6b 2d 69 6e 20 33 2e 20 20 42 75 74 20 63  eck-in 3.  But c
0fb0: 68 65 63 6b 2d 69 6e 20 35 20 61 6c 73 6f 20 69  heck-in 5 also i
0fc0: 6e 68 65 72 69 74 73 20 74 68 65 20 63 68 61 6e  nherits the chan
0fd0: 67 65 73 20 66 72 6f 6d 20 63 68 65 63 6b 2d 69  ges from check-i
0fe0: 6e 20 34 20 62 79 0a 76 69 72 74 75 65 20 6f 66  n 4 by.virtue of
0ff0: 20 74 68 65 20 6d 65 72 67 65 2e 20 20 53 6f 20   the merge.  So 
1000: 77 65 20 73 61 79 20 74 68 61 74 20 63 68 65 63  we say that chec
1010: 6b 2d 69 6e 20 35 20 69 73 20 61 20 3c 69 3e 6d  k-in 5 is a <i>m
1020: 65 72 67 65 20 63 68 69 6c 64 3c 2f 69 3e 0a 6f  erge child</i>.o
1030: 66 20 63 68 65 63 6b 2d 69 6e 20 34 20 61 6e 64  f check-in 4 and
1040: 20 74 68 61 74 20 69 74 20 69 73 20 61 20 3c 69   that it is a <i
1050: 3e 64 69 72 65 63 74 20 63 68 69 6c 64 3c 2f 69  >direct child</i
1060: 3e 20 6f 66 20 63 68 65 63 6b 2d 69 6e 20 33 2e  > of check-in 3.
1070: 20 20 0a 54 68 65 20 67 72 61 70 68 20 69 73 20    .The graph is 
1080: 6e 6f 77 20 62 61 63 6b 20 74 6f 20 61 20 73 69  now back to a si
1090: 6e 67 6c 65 20 6c 65 61 66 20 28 63 68 65 63 6b  ngle leaf (check
10a0: 2d 69 6e 20 35 29 2e 0a 0a 57 65 20 68 61 76 65  -in 5)...We have
10b0: 20 61 6c 72 65 61 64 79 20 73 65 65 6e 20 74 68   already seen th
10c0: 61 74 20 69 66 20 66 6f 73 73 69 6c 20 69 73 20  at if fossil is 
10d0: 69 6e 20 61 75 74 6f 73 79 6e 63 20 6d 6f 64 65  in autosync mode
10e0: 20 74 68 65 6e 20 42 6f 62 20 77 6f 75 6c 64 0a   then Bob would.
10f0: 68 61 76 65 20 62 65 65 6e 20 77 61 72 6e 65 64  have been warned
1100: 20 61 62 6f 75 74 20 74 68 65 20 70 6f 74 65 6e   about the poten
1110: 74 69 61 6c 20 66 6f 72 6b 20 74 68 65 20 66 69  tial fork the fi
1120: 72 73 74 20 74 69 6d 65 20 68 65 20 74 72 69 65  rst time he trie
1130: 64 20 74 6f 0a 63 6f 6d 6d 69 74 20 63 68 65 63  d to.commit chec
1140: 6b 2d 69 6e 20 34 2e 20 20 49 66 20 42 6f 62 20  k-in 4.  If Bob 
1150: 68 61 64 20 75 70 64 61 74 65 64 20 68 69 73 20  had updated his 
1160: 6c 6f 63 61 6c 20 63 68 65 63 6b 2d 6f 75 74 20  local check-out 
1170: 74 6f 20 6d 65 72 67 65 20 69 6e 0a 41 6c 69 63  to merge in.Alic
1180: 65 27 73 20 63 68 65 63 6b 2d 69 6e 20 33 20 63  e's check-in 3 c
1190: 68 61 6e 67 65 73 2c 20 74 68 65 6e 20 63 6f 6d  hanges, then com
11a0: 6d 69 74 74 65 64 2c 20 74 68 65 6e 20 74 68 65  mitted, then the
11b0: 20 66 6f 72 6b 20 77 6f 75 6c 64 20 68 61 76 65   fork would have
11c0: 0a 6e 65 76 65 72 20 6f 63 63 75 72 72 65 64 2e  .never occurred.
11d0: 20 20 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20    The resulting 
11e0: 67 72 61 70 68 20 77 6f 75 6c 64 20 68 61 76 65  graph would have
11f0: 20 62 65 65 6e 20 6c 69 6e 65 61 72 2c 20 61 73   been linear, as
1200: 20 73 68 6f 77 6e 0a 69 6e 20 66 69 67 75 72 65   shown.in figure
1210: 20 31 2e 20 20 52 65 61 6c 6c 79 20 74 68 65 20   1.  Really the 
1220: 67 72 61 70 68 20 6f 66 20 66 69 67 75 72 65 20  graph of figure 
1230: 31 20 69 73 20 61 20 73 75 62 73 65 74 20 6f 66  1 is a subset of
1240: 20 66 69 67 75 72 65 20 33 2e 0a 48 6f 6c 64 20   figure 3..Hold 
1250: 79 6f 75 72 20 68 61 6e 64 20 6f 76 65 72 20 74  your hand over t
1260: 68 65 20 63 68 65 63 6b 2d 69 6e 20 34 20 63 69  he check-in 4 ci
1270: 72 63 6c 65 20 6f 66 20 66 69 67 75 72 65 20 33  rcle of figure 3
1280: 20 61 6e 64 20 74 68 65 6e 20 66 69 67 75 72 65   and then figure
1290: 0a 33 20 6c 6f 6f 6b 73 20 65 78 61 63 74 6c 79  .3 looks exactly
12a0: 20 6c 69 6b 65 20 66 69 67 75 72 65 20 31 20 28   like figure 1 (
12b0: 65 78 63 65 70 74 20 74 68 61 74 20 74 68 65 20  except that the 
12c0: 6c 65 61 66 20 68 61 73 20 61 20 64 69 66 66 65  leaf has a diffe
12d0: 72 65 6e 74 20 63 68 65 63 6b 2d 69 6e 0a 6e 75  rent check-in.nu
12e0: 6d 62 65 72 2c 20 62 75 74 20 74 68 61 74 20 69  mber, but that i
12f0: 73 20 6a 75 73 74 20 61 20 6e 6f 74 61 74 69 6f  s just a notatio
1300: 6e 61 6c 20 64 69 66 66 65 72 65 6e 63 65 20 2d  nal difference -
1310: 20 74 68 65 20 74 77 6f 20 63 68 65 63 6b 2d 69   the two check-i
1320: 6e 73 20 68 61 76 65 0a 65 78 61 63 74 6c 79 20  ns have.exactly 
1330: 74 68 65 20 73 61 6d 65 20 63 6f 6e 74 65 6e 74  the same content
1340: 29 2e 20 20 49 6e 20 6f 74 68 65 72 20 77 6f 72  ).  In other wor
1350: 64 73 2c 20 66 69 67 75 72 65 20 33 20 69 73 20  ds, figure 3 is 
1360: 72 65 61 6c 6c 79 20 61 20 73 75 70 65 72 73 65  really a superse
1370: 74 0a 6f 66 20 66 69 67 75 72 65 20 31 2e 20 20  t.of figure 1.  
1380: 54 68 65 20 63 68 65 63 6b 2d 69 6e 20 34 20 6f  The check-in 4 o
1390: 66 20 66 69 67 75 72 65 20 33 20 63 61 70 74 75  f figure 3 captu
13a0: 72 65 73 20 61 64 64 69 74 69 6f 6e 20 73 74 61  res addition sta
13b0: 74 65 20 77 68 69 63 68 0a 69 73 20 6f 6d 69 74  te which.is omit
13c0: 74 65 64 20 66 72 6f 6d 20 66 69 67 75 72 65 20  ted from figure 
13d0: 31 2e 20 20 43 68 65 63 6b 2d 69 6e 20 34 20 6f  1.  Check-in 4 o
13e0: 66 20 66 69 67 75 72 65 20 33 20 68 6f 6c 64 73  f figure 3 holds
13f0: 20 61 20 63 6f 70 79 0a 6f 66 20 42 6f 62 27 73   a copy.of Bob's
1400: 20 6c 6f 63 61 6c 20 63 68 65 63 6b 6f 75 74 20   local checkout 
1410: 62 65 66 6f 72 65 20 68 65 20 6d 65 72 67 65 64  before he merged
1420: 20 69 6e 20 41 6c 69 63 65 27 73 20 63 68 61 6e   in Alice's chan
1430: 67 65 73 2e 20 20 54 68 61 74 20 73 6e 61 70 73  ges.  That snaps
1440: 68 6f 74 0a 6f 66 20 42 6f 62 27 73 20 63 68 61  hot.of Bob's cha
1450: 6e 67 65 73 20 69 6e 64 65 70 65 6e 64 65 6e 74  nges independent
1460: 20 6f 66 20 41 6c 69 63 65 27 73 20 63 68 61 6e   of Alice's chan
1470: 67 65 73 20 69 73 20 6f 6d 69 74 74 65 64 20 66  ges is omitted f
1480: 72 6f 6d 20 66 69 67 75 72 65 20 31 2e 0a 53 6f  rom figure 1..So
1490: 6d 65 20 70 65 6f 70 6c 65 20 73 61 79 20 74 68  me people say th
14a0: 61 74 20 74 68 65 20 61 70 70 72 6f 61 63 68 20  at the approach 
14b0: 74 61 6b 65 6e 20 69 6e 20 66 69 67 75 72 65 20  taken in figure 
14c0: 33 20 69 73 20 62 65 74 74 65 72 20 62 65 63 61  3 is better beca
14d0: 75 73 65 20 69 74 0a 70 72 65 73 65 72 76 65 73  use it.preserves
14e0: 20 74 68 69 73 20 65 78 74 72 61 20 69 6e 74 65   this extra inte
14f0: 72 6d 65 64 69 61 74 65 20 73 74 61 74 65 2e 20  rmediate state. 
1500: 20 4f 74 68 65 72 73 20 73 61 79 20 74 68 61 74   Others say that
1510: 20 74 68 65 20 61 70 70 72 6f 61 63 68 0a 74 61   the approach.ta
1520: 6b 65 6e 20 69 6e 20 66 69 67 75 72 65 20 31 20  ken in figure 1 
1530: 69 73 20 62 65 74 74 65 72 20 62 65 63 61 75 73  is better becaus
1540: 65 20 69 74 20 69 73 20 6d 75 63 68 20 65 61 73  e it is much eas
1550: 69 65 72 20 74 6f 20 76 69 73 75 61 6c 69 7a 65  ier to visualize
1560: 20 61 0a 6c 69 6e 65 61 72 20 6c 69 6e 65 20 6f   a.linear line o
1570: 66 20 64 65 76 65 6c 6f 70 6d 65 6e 74 20 61 6e  f development an
1580: 64 20 62 65 63 61 75 73 65 20 74 68 65 20 74 68  d because the th
1590: 65 20 6d 65 72 67 69 6e 67 20 68 61 70 70 65 6e  e merging happen
15a0: 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a  s automatically.
15b0: 69 6e 73 74 65 61 64 20 6f 66 20 61 73 20 61 20  instead of as a 
15c0: 73 65 70 61 72 61 74 65 20 6d 61 6e 75 61 6c 20  separate manual 
15d0: 73 74 65 70 2e 20 20 57 65 20 77 69 6c 6c 20 6e  step.  We will n
15e0: 6f 74 20 74 61 6b 65 20 73 69 64 65 73 20 69 6e  ot take sides in
15f0: 20 74 68 61 74 0a 64 65 62 61 74 65 2e 20 20 57   that.debate.  W
1600: 65 20 77 69 6c 6c 20 73 69 6d 70 6c 79 20 70 6f  e will simply po
1610: 69 6e 74 20 6f 75 74 20 74 68 61 74 20 66 6f 73  int out that fos
1620: 73 69 6c 20 65 6e 61 62 6c 65 73 20 79 6f 75 20  sil enables you 
1630: 74 6f 20 64 6f 20 69 74 20 65 69 74 68 65 72 20  to do it either 
1640: 77 61 79 2e 0a 0a 3c 68 32 3e 46 6f 72 6b 69 6e  way...<h2>Forkin
1650: 67 20 56 65 72 73 75 73 20 42 72 61 6e 63 68 69  g Versus Branchi
1660: 6e 67 3c 2f 68 32 3e 0a 0a 48 61 76 69 6e 67 20  ng</h2>..Having 
1670: 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 6c 65  more than one le
1680: 61 66 20 69 6e 20 74 68 65 20 63 68 65 63 6b 2d  af in the check-
1690: 69 6e 20 74 72 65 65 20 69 73 20 75 73 75 61 6c  in tree is usual
16a0: 6c 79 0a 63 6f 6e 73 69 64 65 72 65 64 20 75 6e  ly.considered un
16b0: 64 65 73 69 72 61 62 6c 65 2c 20 61 6e 64 20 73  desirable, and s
16c0: 6f 20 66 6f 72 6b 73 20 61 72 65 20 75 73 75 61  o forks are usua
16d0: 6c 6c 79 20 65 69 74 68 65 72 20 61 76 6f 69 64  lly either avoid
16e0: 65 64 20 65 6e 74 69 72 65 6c 79 2c 0a 61 73 20  ed entirely,.as 
16f0: 69 6e 20 66 69 67 75 72 65 20 31 2c 20 6f 72 20  in figure 1, or 
1700: 65 6c 73 65 20 71 75 69 63 6b 6c 79 20 72 65 73  else quickly res
1710: 6f 6c 76 65 64 20 61 73 20 73 68 6f 77 6e 20 69  olved as shown i
1720: 6e 20 66 69 67 75 72 65 20 33 2e 0a 42 75 74 20  n figure 3..But 
1730: 73 6f 6d 65 74 69 6d 65 73 2c 20 6f 6e 65 20 64  sometimes, one d
1740: 6f 65 73 20 77 61 6e 74 20 74 6f 20 68 61 76 65  oes want to have
1750: 20 6d 75 6c 74 69 70 6c 65 20 6c 65 61 76 65 73   multiple leaves
1760: 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20  .  For example, 
1770: 61 20 70 72 6f 6a 65 63 74 0a 6d 69 67 68 74 20  a project.might 
1780: 68 61 76 65 20 6f 6e 65 20 6c 65 61 66 20 74 68  have one leaf th
1790: 61 74 20 69 73 20 74 68 65 20 6c 61 74 65 73 74  at is the latest
17a0: 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20   version of the 
17b0: 70 72 6f 6a 65 63 74 20 75 6e 64 65 72 0a 64 65  project under.de
17c0: 76 65 6c 6f 70 6d 65 6e 74 20 61 6e 64 20 61 6e  velopment and an
17d0: 6f 74 68 65 72 20 6c 65 61 66 20 74 68 61 74 20  other leaf that 
17e0: 69 73 20 74 68 65 20 6c 61 74 65 73 74 20 76 65  is the latest ve
17f0: 72 73 69 6f 6e 20 74 68 61 74 20 68 61 73 20 62  rsion that has b
1800: 65 65 6e 0a 74 65 73 74 65 64 2e 0a 57 68 65 6e  een.tested..When
1810: 20 6d 75 6c 74 69 70 6c 65 20 6c 65 61 76 65 73   multiple leaves
1820: 20 61 72 65 20 64 65 73 69 72 61 62 6c 65 2c 20   are desirable, 
1830: 77 65 20 63 61 6c 6c 20 74 68 65 20 70 68 65 6e  we call the phen
1840: 6f 6d 65 6e 6f 6e 20 3c 69 3e 62 72 61 6e 63 68  omenon <i>branch
1850: 69 6e 67 3c 2f 69 3e 0a 69 6e 73 74 65 61 64 20  ing</i>.instead 
1860: 6f 66 20 3c 69 3e 66 6f 72 6b 69 6e 67 3c 2f 69  of <i>forking</i
1870: 3e 2e 0a 46 69 67 75 72 65 20 34 20 73 68 6f 77  >..Figure 4 show
1880: 73 20 61 6e 20 65 78 61 6d 70 6c 65 20 6f 66 20  s an example of 
1890: 61 20 70 72 6f 6a 65 63 74 20 77 68 65 72 65 20  a project where 
18a0: 74 68 65 72 65 20 61 72 65 20 74 77 6f 20 62 72  there are two br
18b0: 61 6e 63 68 65 73 2c 20 6f 6e 65 0a 66 6f 72 20  anches, one.for 
18c0: 64 65 76 65 6c 6f 70 6d 65 6e 74 20 77 6f 72 6b  development work
18d0: 20 61 6e 64 20 61 6e 6f 74 68 65 72 20 66 6f 72   and another for
18e0: 20 74 65 73 74 69 6e 67 2e 0a 0a 3c 63 65 6e 74   testing...<cent
18f0: 65 72 3e 3c 74 61 62 6c 65 20 62 6f 72 64 65 72  er><table border
1900: 3d 31 20 63 65 6c 6c 70 61 64 64 69 6e 67 3d 31  =1 cellpadding=1
1910: 30 20 68 73 70 61 63 65 3d 31 30 20 76 73 70 61  0 hspace=10 vspa
1920: 63 65 3d 31 30 3e 0a 3c 74 72 3e 3c 74 64 20 61  ce=10>.<tr><td a
1930: 6c 69 67 6e 3d 22 63 65 6e 74 65 72 22 3e 0a 3c  lign="center">.<
1940: 69 6d 67 20 73 72 63 3d 22 62 72 61 6e 63 68 30  img src="branch0
1950: 34 2e 67 69 66 22 20 77 69 64 74 68 3d 34 32 36  4.gif" width=426
1960: 20 68 65 69 67 68 74 3d 31 32 33 3e 3c 62 72 3e   height=123><br>
1970: 0a 46 69 67 75 72 65 20 34 0a 3c 2f 74 64 3e 3c  .Figure 4.</td><
1980: 2f 74 72 3e 3c 2f 74 61 62 6c 65 3e 3c 2f 63 65  /tr></table></ce
1990: 6e 74 65 72 3e 0a 0a 54 68 65 20 68 79 70 6f 74  nter>..The hypot
19a0: 68 65 74 69 63 61 6c 20 73 63 65 6e 61 72 69 6f  hetical scenario
19b0: 20 6f 66 20 66 69 67 75 72 65 20 34 20 69 73 20   of figure 4 is 
19c0: 74 68 69 73 3a 20 20 54 68 65 20 70 72 6f 6a 65  this:  The proje
19d0: 63 74 20 73 74 61 72 74 73 20 61 6e 64 0a 70 72  ct starts and.pr
19e0: 6f 67 72 65 73 73 65 73 20 74 6f 20 61 20 70 6f  ogresses to a po
19f0: 69 6e 74 20 77 68 65 72 65 20 28 61 74 20 63 68  int where (at ch
1a00: 65 63 6b 2d 69 6e 20 32 29 20 0a 69 74 20 69 73  eck-in 2) .it is
1a10: 20 72 65 61 64 79 20 74 6f 20 65 6e 74 65 72 20   ready to enter 
1a20: 74 65 73 74 69 6e 67 20 66 6f 72 20 69 74 73 20  testing for its 
1a30: 66 69 72 73 74 20 72 65 6c 65 61 73 65 2e 0a 49  first release..I
1a40: 6e 20 61 20 72 65 61 6c 20 70 72 6f 6a 65 63 74  n a real project
1a50: 2c 20 6f 66 20 63 6f 75 72 73 65 2c 20 74 68 65  , of course, the
1a60: 72 65 20 6d 69 67 68 74 20 62 65 20 68 75 6e 64  re might be hund
1a70: 72 65 64 73 20 6f 72 20 74 68 6f 75 73 61 6e 64  reds or thousand
1a80: 73 20 6f 66 0a 63 68 65 63 6b 2d 69 6e 73 20 62  s of.check-ins b
1a90: 65 66 6f 72 65 20 61 20 70 72 6f 6a 65 63 74 20  efore a project 
1aa0: 72 65 61 63 68 65 73 20 74 68 69 73 20 70 6f 69  reaches this poi
1ab0: 6e 74 2c 20 62 75 74 20 66 6f 72 20 73 69 6d 70  nt, but for simp
1ac0: 6c 69 63 69 74 79 20 6f 66 0a 70 72 65 73 65 6e  licity of.presen
1ad0: 74 61 74 69 6f 6e 20 77 65 20 77 69 6c 6c 20 73  tation we will s
1ae0: 61 79 20 74 68 61 74 20 74 68 65 20 70 72 6f 6a  ay that the proj
1af0: 65 63 74 20 69 73 20 72 65 61 64 79 20 61 66 74  ect is ready aft
1b00: 65 72 20 63 68 65 63 6b 2d 69 6e 20 32 2e 0a 54  er check-in 2..T
1b10: 68 65 20 70 72 6f 6a 65 63 74 20 74 68 65 6e 20  he project then 
1b20: 73 70 6c 69 74 73 20 69 6e 74 6f 20 74 77 6f 20  splits into two 
1b30: 62 72 61 6e 63 68 65 73 20 74 68 61 74 20 61 72  branches that ar
1b40: 65 20 75 73 65 64 20 62 79 20 73 65 70 61 72 61  e used by separa
1b50: 74 65 0a 74 65 61 6d 73 2e 20 20 54 68 65 20 74  te.teams.  The t
1b60: 65 73 74 69 6e 67 20 74 65 61 6d 2c 20 75 73 69  esting team, usi
1b70: 6e 67 20 74 68 65 20 62 6c 75 65 20 62 72 61 6e  ng the blue bran
1b80: 63 68 2c 20 66 69 6e 64 73 20 61 6e 64 20 66 69  ch, finds and fi
1b90: 78 65 73 20 61 20 66 65 77 0a 62 75 67 73 2e 20  xes a few.bugs. 
1ba0: 20 54 68 69 73 20 69 73 20 73 68 6f 77 6e 20 62   This is shown b
1bb0: 79 20 63 68 65 63 6b 2d 69 6e 73 20 36 20 61 6e  y check-ins 6 an
1bc0: 64 20 39 2e 20 20 4d 65 61 6e 77 68 69 6c 65 20  d 9.  Meanwhile 
1bd0: 74 68 65 20 64 65 76 65 6c 6f 70 6d 65 6e 74 0a  the development.
1be0: 74 65 61 6d 2c 20 77 6f 72 6b 69 6e 67 20 6f 6e  team, working on
1bf0: 20 74 68 65 20 74 6f 70 20 75 6e 63 6f 6c 6f 72   the top uncolor
1c00: 65 64 20 62 72 61 6e 63 68 2c 20 0a 69 73 20 62  ed branch, .is b
1c10: 75 73 79 20 61 64 64 69 6e 67 20 66 65 61 74 75  usy adding featu
1c20: 72 65 73 20 66 6f 72 20 74 68 65 20 73 65 63 6f  res for the seco
1c30: 6e 64 0a 72 65 6c 65 61 73 65 2e 20 20 4f 66 20  nd.release.  Of 
1c40: 63 6f 75 72 73 65 2c 20 74 68 65 20 64 65 76 65  course, the deve
1c50: 6c 6f 70 6d 65 6e 74 20 74 65 61 6d 20 77 6f 75  lopment team wou
1c60: 6c 64 20 6c 69 6b 65 20 74 6f 20 74 61 6b 65 20  ld like to take 
1c70: 61 64 76 61 6e 74 61 67 65 20 6f 66 0a 74 68 65  advantage of.the
1c80: 20 62 75 67 20 66 69 78 65 73 20 69 6d 70 6c 65   bug fixes imple
1c90: 6d 65 6e 74 65 64 20 62 79 20 74 68 65 20 74 65  mented by the te
1ca0: 73 74 69 6e 67 20 74 65 61 6d 2e 20 20 53 6f 20  sting team.  So 
1cb0: 70 65 72 69 6f 64 69 63 61 6c 6c 79 2c 20 74 68  periodically, th
1cc0: 65 0a 63 68 61 6e 67 65 73 20 69 6e 20 74 68 65  e.changes in the
1cd0: 20 74 65 73 74 20 62 72 61 6e 63 68 20 61 72 65   test branch are
1ce0: 20 6d 65 72 67 65 64 20 69 6e 74 6f 20 74 68 65   merged into the
1cf0: 20 64 65 76 20 62 72 61 6e 63 68 2e 20 20 54 68   dev branch.  Th
1d00: 69 73 20 69 73 0a 73 68 6f 77 6e 20 62 79 20 74  is is.shown by t
1d10: 68 65 20 64 61 73 68 65 64 20 6d 65 72 67 65 20  he dashed merge 
1d20: 61 72 72 6f 77 73 20 62 65 74 77 65 65 6e 20 63  arrows between c
1d30: 68 65 63 6b 2d 69 6e 73 20 36 20 61 6e 64 20 37  heck-ins 6 and 7
1d40: 20 61 6e 64 20 62 65 74 77 65 65 6e 0a 63 68 65   and between.che
1d50: 63 6b 2d 69 6e 73 20 39 20 61 6e 64 20 31 30 2e  ck-ins 9 and 10.
1d60: 0a 0a 49 6e 20 62 6f 74 68 20 66 69 67 75 72 65  ..In both figure
1d70: 73 20 32 20 61 6e 64 20 34 2c 20 63 68 65 63 6b  s 2 and 4, check
1d80: 2d 69 6e 20 32 20 68 61 73 20 74 77 6f 20 63 68  -in 2 has two ch
1d90: 69 6c 64 72 65 6e 2e 20 20 49 6e 20 66 69 67 75  ildren.  In figu
1da0: 72 65 20 32 2c 0a 77 65 20 63 61 6c 6c 65 64 20  re 2,.we called 
1db0: 74 68 69 73 20 61 20 22 66 6f 72 6b 22 2e 20 20  this a "fork".  
1dc0: 49 6e 20 64 69 61 67 72 61 6d 20 34 2c 20 77 65  In diagram 4, we
1dd0: 20 63 61 6c 6c 20 69 74 20 61 20 22 62 72 61 6e   call it a "bran
1de0: 63 68 22 2e 20 20 57 68 61 74 20 69 73 0a 74 68  ch".  What is.th
1df0: 65 20 64 69 66 66 65 72 65 6e 63 65 3f 20 20 41  e difference?  A
1e00: 73 20 66 61 72 20 61 73 20 74 68 65 20 69 6e 74  s far as the int
1e10: 65 72 6e 61 6c 20 66 6f 73 73 69 6c 20 64 61 74  ernal fossil dat
1e20: 61 20 73 74 72 75 63 74 75 72 65 73 20 61 72 65  a structures are
1e30: 0a 63 6f 6e 63 65 72 6e 65 64 2c 20 74 68 65 72  .concerned, ther
1e40: 65 20 69 73 20 6e 6f 20 64 69 66 66 65 72 65 6e  e is no differen
1e50: 63 65 2e 20 20 54 68 65 20 64 69 73 74 69 6e 63  ce.  The distinc
1e60: 74 69 6f 6e 20 69 73 20 69 6e 20 74 68 65 20 69  tion is in the i
1e70: 6e 74 65 6e 74 2e 0a 49 6e 20 66 69 67 75 72 65  ntent..In figure
1e80: 20 32 2c 20 74 68 65 20 66 61 63 74 20 74 68 61   2, the fact tha
1e90: 74 20 63 68 65 63 6b 2d 69 6e 20 32 20 68 61 73  t check-in 2 has
1ea0: 20 6d 75 6c 74 69 70 6c 65 20 63 68 69 6c 64 72   multiple childr
1eb0: 65 6e 20 69 73 20 61 6e 0a 61 63 63 69 64 65 6e  en is an.acciden
1ec0: 74 20 74 68 61 74 20 73 74 65 6d 73 20 66 72 6f  t that stems fro
1ed0: 6d 20 63 6f 6e 63 75 72 72 65 6e 74 20 64 65 76  m concurrent dev
1ee0: 65 6c 6f 70 6d 65 6e 74 2e 20 20 49 6e 20 66 69  elopment.  In fi
1ef0: 67 75 72 65 20 34 2c 20 67 69 76 69 6e 67 0a 63  gure 4, giving.c
1f00: 68 65 63 6b 2d 69 6e 20 32 20 6d 75 6c 74 69 70  heck-in 2 multip
1f10: 6c 65 20 63 68 69 6c 64 72 65 6e 20 69 73 20 61  le children is a
1f20: 20 64 65 6c 69 62 65 72 61 74 65 20 61 63 74 2e   deliberate act.
1f30: 20 20 53 6f 2c 20 74 6f 20 61 20 67 6f 6f 64 0a    So, to a good.
1f40: 61 70 70 72 6f 78 69 6d 61 74 69 6f 6e 2c 20 77  approximation, w
1f50: 65 20 64 65 66 69 6e 65 20 66 6f 72 6b 69 6e 67  e define forking
1f60: 20 74 6f 20 62 65 20 62 79 20 61 63 63 69 64 65   to be by accide
1f70: 6e 74 20 61 6e 64 20 62 72 61 6e 63 68 69 6e 67  nt and branching
1f80: 20 74 6f 0a 62 65 20 62 79 20 69 6e 74 65 6e 74   to.be by intent
1f90: 2e 20 20 41 70 61 72 74 20 66 72 6f 6d 20 74 68  .  Apart from th
1fa0: 61 74 2c 20 74 68 65 79 20 61 72 65 20 74 68 65  at, they are the
1fb0: 20 73 61 6d 65 2e 0a 0a 3c 68 32 3e 54 61 67 73   same...<h2>Tags
1fc0: 20 41 6e 64 20 50 72 6f 70 65 72 74 69 65 73 3c   And Properties<
1fd0: 2f 68 32 3e 0a 0a 54 61 67 73 20 61 6e 64 20 70  /h2>..Tags and p
1fe0: 72 6f 70 65 72 74 69 65 73 20 61 72 65 20 75 73  roperties are us
1ff0: 65 64 20 69 6e 20 66 6f 73 73 69 6c 20 74 6f 20  ed in fossil to 
2000: 68 65 6c 70 20 65 78 70 72 65 73 73 20 74 68 65  help express the
2010: 20 69 6e 74 65 6e 74 2c 20 61 6e 64 0a 74 68 75   intent, and.thu
2020: 73 20 74 6f 20 64 69 73 74 69 6e 67 75 69 73 68  s to distinguish
2030: 20 62 65 74 77 65 65 6e 20 66 6f 72 6b 73 20 61   between forks a
2040: 6e 64 20 62 72 61 6e 63 68 65 73 2e 20 20 46 69  nd branches.  Fi
2050: 67 75 72 65 20 35 20 73 68 6f 77 73 20 74 68 65  gure 5 shows the
2060: 0a 73 61 6d 65 20 73 63 65 6e 61 72 69 6f 20 61  .same scenario a
2070: 73 20 66 69 67 75 72 65 20 34 20 62 75 74 20 77  s figure 4 but w
2080: 69 74 68 20 74 61 67 73 20 61 6e 64 20 70 72 6f  ith tags and pro
2090: 70 65 72 74 69 65 73 20 61 64 64 65 64 3a 0a 0a  perties added:..
20a0: 3c 63 65 6e 74 65 72 3e 3c 74 61 62 6c 65 20 62  <center><table b
20b0: 6f 72 64 65 72 3d 31 20 63 65 6c 6c 70 61 64 64  order=1 cellpadd
20c0: 69 6e 67 3d 31 30 20 68 73 70 61 63 65 3d 31 30  ing=10 hspace=10
20d0: 20 76 73 70 61 63 65 3d 31 30 3e 0a 3c 74 72 3e   vspace=10>.<tr>
20e0: 3c 74 64 20 61 6c 69 67 6e 3d 22 63 65 6e 74 65  <td align="cente
20f0: 72 22 3e 0a 3c 69 6d 67 20 73 72 63 3d 22 62 72  r">.<img src="br
2100: 61 6e 63 68 30 35 2e 67 69 66 22 20 77 69 64 74  anch05.gif" widt
2110: 68 3d 34 38 35 20 68 65 69 67 68 74 3d 31 37 37  h=485 height=177
2120: 3e 3c 62 72 3e 0a 46 69 67 75 72 65 20 35 0a 3c  ><br>.Figure 5.<
2130: 2f 74 64 3e 3c 2f 74 72 3e 3c 2f 74 61 62 6c 65  /td></tr></table
2140: 3e 3c 2f 63 65 6e 74 65 72 3e 0a 0a 41 20 3c 69  ></center>..A <i
2150: 3e 74 61 67 3c 2f 69 3e 20 69 73 20 61 20 6e 61  >tag</i> is a na
2160: 6d 65 20 74 68 61 74 20 69 73 20 61 74 74 61 63  me that is attac
2170: 68 65 64 20 74 6f 20 61 20 63 68 65 63 6b 2d 69  hed to a check-i
2180: 6e 2e 20 20 41 0a 3c 69 3e 70 72 6f 70 65 72 74  n.  A.<i>propert
2190: 79 3c 2f 69 3e 20 69 73 20 61 20 6e 61 6d 65 2f  y</i> is a name/
21a0: 76 61 6c 75 65 20 70 61 69 72 2e 20 20 49 6e 74  value pair.  Int
21b0: 65 72 6e 61 6c 6c 79 2c 20 66 6f 73 73 69 6c 20  ernally, fossil 
21c0: 69 6d 70 6c 65 6d 65 6e 74 73 0a 74 61 67 73 20  implements.tags 
21d0: 61 73 20 70 72 6f 70 65 72 74 69 65 73 20 77 69  as properties wi
21e0: 74 68 20 61 20 4e 55 4c 4c 20 76 61 6c 75 65 2e  th a NULL value.
21f0: 20 20 53 6f 2c 20 74 61 67 73 20 61 6e 64 20 70    So, tags and p
2200: 72 6f 70 65 72 74 69 65 73 20 72 65 61 6c 6c 79  roperties really
2210: 0a 61 72 65 20 6d 75 63 68 20 74 68 65 20 73 61  .are much the sa
2220: 6d 65 20 74 68 69 6e 67 2c 20 61 6e 64 20 68 65  me thing, and he
2230: 6e 63 65 66 6f 72 74 68 20 77 65 20 77 69 6c 6c  nceforth we will
2240: 20 75 73 65 20 74 68 65 20 77 6f 72 64 20 22 74   use the word "t
2250: 61 67 22 0a 74 6f 20 6d 65 61 6e 20 65 69 74 68  ag".to mean eith
2260: 65 72 20 61 20 74 61 67 20 6f 72 20 61 20 70 72  er a tag or a pr
2270: 6f 70 65 72 74 79 2e 20 0a 0a 41 20 74 61 67 20  operty. ..A tag 
2280: 63 61 6e 20 62 65 20 65 69 74 68 65 72 20 61 20  can be either a 
2290: 6f 6e 65 2d 74 69 6d 65 20 74 61 67 20 6f 72 20  one-time tag or 
22a0: 61 6e 20 70 72 6f 70 61 67 61 74 69 6e 67 20 74  an propagating t
22b0: 61 67 20 6f 72 20 61 20 63 61 6e 63 65 6c 6c 61  ag or a cancella
22c0: 74 69 6f 6e 20 74 61 67 2e 20 0a 41 20 6f 6e 65  tion tag. .A one
22d0: 2d 74 69 6d 65 20 74 61 67 20 6f 6e 6c 79 20 61  -time tag only a
22e0: 70 70 6c 69 65 73 20 74 6f 20 74 68 65 20 63 68  pplies to the ch
22f0: 65 63 6b 2d 69 6e 20 74 6f 20 77 68 69 63 68 20  eck-in to which 
2300: 69 74 20 69 73 20 61 74 74 61 63 68 65 64 2e 20  it is attached. 
2310: 20 41 0a 70 72 6f 70 61 67 61 74 69 6e 67 20 74   A.propagating t
2320: 61 67 20 61 70 70 6c 69 65 73 20 74 6f 20 74 68  ag applies to th
2330: 65 20 63 68 65 63 6b 2d 69 6e 20 74 6f 20 77 68  e check-in to wh
2340: 69 63 68 20 69 74 20 69 73 20 61 74 74 61 63 68  ich it is attach
2350: 65 64 20 61 6e 64 20 61 6c 73 6f 0a 74 6f 20 61  ed and also.to a
2360: 6c 6c 20 64 69 72 65 63 74 20 64 65 73 63 65 6e  ll direct descen
2370: 64 61 6e 74 73 20 6f 66 20 74 68 61 74 20 63 68  dants of that ch
2380: 65 63 6b 2d 69 6e 2e 20 20 41 20 3c 69 3e 64 69  eck-in.  A <i>di
2390: 72 65 63 74 20 64 65 73 63 65 6e 64 61 6e 74 3c  rect descendant<
23a0: 2f 69 3e 0a 69 73 20 61 20 64 65 73 63 65 6e 64  /i>.is a descend
23b0: 61 6e 74 20 74 68 72 6f 75 67 68 20 64 69 72 65  ant through dire
23c0: 63 74 20 63 68 69 6c 64 72 65 6e 2e 20 20 54 61  ct children.  Ta
23d0: 67 73 20 70 72 6f 70 61 67 61 74 69 6f 6e 20 64  gs propagation d
23e0: 6f 65 73 20 6e 6f 74 0a 63 72 6f 73 73 20 6d 65  oes not.cross me
23f0: 72 67 65 73 2e 20 20 54 61 67 20 70 72 6f 70 61  rges.  Tag propa
2400: 67 61 74 69 6f 6e 20 61 6c 73 6f 20 73 74 6f 70  gation also stop
2410: 73 20 61 73 20 73 6f 6f 6e 0a 61 73 20 69 74 20  s as soon.as it 
2420: 65 6e 63 6f 75 6e 74 65 72 73 20 61 6e 6f 74 68  encounters anoth
2430: 65 72 20 63 68 65 63 6b 2d 69 6e 20 77 69 74 68  er check-in with
2440: 20 74 68 65 20 73 61 6d 65 20 74 61 67 2e 20 20   the same tag.  
2450: 41 20 63 61 6e 63 65 6c 6c 61 74 69 6f 6e 20 74  A cancellation t
2460: 61 67 0a 69 73 20 61 74 74 61 63 68 65 64 20 74  ag.is attached t
2470: 6f 20 61 20 73 69 6e 67 6c 65 20 63 68 65 63 6b  o a single check
2480: 2d 69 6e 20 69 6e 20 6f 72 64 65 72 20 74 6f 20  -in in order to 
2490: 65 69 74 68 65 72 20 6f 76 65 72 72 69 64 65 20  either override 
24a0: 61 20 6f 6e 65 2d 74 69 6d 65 0a 74 61 67 20 74  a one-time.tag t
24b0: 68 61 74 20 77 61 73 20 70 72 65 76 69 6f 75 73  hat was previous
24c0: 6c 79 20 70 6c 61 63 65 64 20 6f 6e 20 74 68 61  ly placed on tha
24d0: 74 20 73 61 6d 65 20 63 68 65 63 6b 2d 69 6e 2c  t same check-in,
24e0: 20 6f 72 20 74 6f 20 62 6c 6f 63 6b 0a 74 61 67   or to block.tag
24f0: 20 70 72 6f 70 61 67 61 74 69 6f 6e 20 66 72 6f   propagation fro
2500: 6d 20 61 6e 20 61 6e 63 65 73 74 6f 72 2e 0a 0a  m an ancestor...
2510: 45 76 65 72 79 20 72 65 70 6f 73 69 74 6f 72 79  Every repository
2520: 20 69 73 20 63 72 65 61 74 65 64 20 77 69 74 68   is created with
2530: 20 61 20 73 69 6e 67 6c 65 20 65 6d 70 74 79 20   a single empty 
2540: 63 68 65 63 6b 2d 69 6e 20 74 68 61 74 20 68 61  check-in that ha
2550: 73 20 74 77 6f 0a 70 72 6f 70 61 67 61 74 69 6e  s two.propagatin
2560: 67 20 74 61 67 73 2e 20 20 49 6e 20 66 69 67 75  g tags.  In figu
2570: 72 65 20 35 2c 20 74 68 61 74 20 69 6e 69 74 69  re 5, that initi
2580: 61 6c 20 65 6d 70 74 79 20 63 68 65 63 6b 2d 69  al empty check-i
2590: 6e 20 69 73 20 63 68 65 63 6b 2d 69 6e 20 31 2e  n is check-in 1.
25a0: 0a 54 68 65 20 3c 62 3e 62 72 61 6e 63 68 3c 2f  .The <b>branch</
25b0: 62 3e 20 74 61 67 20 74 65 6c 6c 73 20 28 62 79  b> tag tells (by
25c0: 20 69 74 73 20 76 61 6c 75 65 29 20 0a 77 68 61   its value) .wha
25d0: 74 20 62 72 61 6e 63 68 20 74 68 65 20 63 68 65  t branch the che
25e0: 63 6b 2d 69 6e 20 69 73 20 61 20 6d 65 6d 62 65  ck-in is a membe
25f0: 72 20 6f 66 2e 0a 54 68 65 20 64 65 66 61 75 6c  r of..The defaul
2600: 74 20 62 72 61 6e 63 68 20 69 73 20 63 61 6c 6c  t branch is call
2610: 65 64 20 22 74 72 75 6e 6b 22 2e 20 20 41 6c 6c  ed "trunk".  All
2620: 20 74 61 67 73 20 74 68 61 74 20 62 65 67 69 6e   tags that begin
2630: 20 77 69 74 68 20 22 3c 62 3e 73 79 6d 2d 3c 2f   with "<b>sym-</
2640: 62 3e 22 0a 61 72 65 20 73 79 6d 62 6f 6c 69 63  b>".are symbolic
2650: 20 6e 61 6d 65 20 74 61 67 73 2e 20 20 57 68 65   name tags.  Whe
2660: 6e 20 61 20 73 79 6d 62 6f 6c 69 63 20 6e 61 6d  n a symbolic nam
2670: 65 20 74 61 67 20 69 73 20 61 74 74 61 63 68 65  e tag is attache
2680: 64 20 74 6f 20 61 0a 63 68 65 63 6b 2d 69 6e 2c  d to a.check-in,
2690: 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 79 6f 75   that allows you
26a0: 20 74 6f 20 72 65 66 65 72 20 74 6f 20 74 68 61   to refer to tha
26b0: 74 20 63 68 65 63 6b 2d 69 6e 20 62 79 20 69 74  t check-in by it
26c0: 73 20 73 79 6d 62 6f 6c 69 63 0a 6e 61 6d 65 20  s symbolic.name 
26d0: 72 61 74 68 65 72 20 74 68 61 6e 20 62 79 20 69  rather than by i
26e0: 74 73 20 34 30 2d 63 68 61 72 61 63 74 65 72 20  ts 40-character 
26f0: 53 48 41 31 20 68 61 73 68 20 6e 61 6d 65 2e 20  SHA1 hash name. 
2700: 20 57 68 65 6e 20 61 20 73 79 6d 62 6f 6c 69 63   When a symbolic
2710: 20 6e 61 6d 65 0a 74 61 67 20 70 72 6f 70 61 67   name.tag propag
2720: 61 74 65 73 20 28 61 73 20 64 6f 65 73 20 74 68  ates (as does th
2730: 65 20 3c 62 3e 73 79 6d 2d 74 72 75 6e 6b 3c 2f  e <b>sym-trunk</
2740: 62 3e 20 74 61 67 29 20 74 68 65 6e 20 72 65 66  b> tag) then ref
2750: 65 72 72 69 6e 67 20 74 6f 20 74 68 61 74 0a 6e  erring to that.n
2760: 61 6d 65 20 69 73 20 74 68 65 20 73 61 6d 65 20  ame is the same 
2770: 61 73 20 72 65 66 65 72 72 69 6e 67 20 74 6f 20  as referring to 
2780: 74 68 65 20 6d 6f 73 74 20 72 65 63 65 6e 74 20  the most recent 
2790: 63 68 65 63 6b 2d 69 6e 20 77 69 74 68 20 74 68  check-in with th
27a0: 61 74 20 6e 61 6d 65 2e 0a 54 68 75 73 20 74 68  at name..Thus th
27b0: 65 20 74 77 6f 20 74 61 67 73 20 6f 6e 20 63 68  e two tags on ch
27c0: 65 63 6b 2d 69 6e 20 6f 6e 63 65 20 63 61 75 73  eck-in once caus
27d0: 65 20 61 6c 6c 20 64 65 63 65 6e 64 65 6e 74 73  e all decendents
27e0: 20 74 6f 20 62 65 20 69 6e 20 74 68 65 0a 22 74   to be in the."t
27f0: 72 75 6e 6b 22 20 62 72 61 6e 63 68 20 61 6e 64  runk" branch and
2800: 20 74 6f 20 68 61 76 65 20 74 68 65 20 73 79 6d   to have the sym
2810: 62 6f 6c 69 63 20 6e 61 6d 65 20 22 74 72 75 6e  bolic name "trun
2820: 6b 22 2e 0a 0a 43 68 65 63 6b 2d 69 6e 20 34 20  k"...Check-in 4 
2830: 68 61 73 20 61 20 3c 62 3e 62 72 61 6e 63 68 3c  has a <b>branch<
2840: 2f 62 3e 20 74 61 67 20 77 68 69 63 68 20 63 68  /b> tag which ch
2850: 61 6e 67 65 73 20 74 68 65 20 6e 61 6d 65 20 6f  anges the name o
2860: 66 20 74 68 65 20 62 72 61 6e 63 68 0a 74 6f 20  f the branch.to 
2870: 22 74 65 73 74 22 2e 20 20 54 68 65 20 62 72 61  "test".  The bra
2880: 6e 63 68 20 74 61 67 20 6f 6e 20 63 68 65 63 6b  nch tag on check
2890: 2d 69 6e 20 34 20 70 72 6f 70 61 67 61 74 65 73  -in 4 propagates
28a0: 20 74 6f 20 63 68 65 63 6b 2d 69 6e 73 20 36 20   to check-ins 6 
28b0: 61 6e 64 20 39 2e 0a 42 75 74 20 62 65 63 61 75  and 9..But becau
28c0: 73 65 20 74 61 67 20 70 72 6f 70 61 67 61 74 69  se tag propagati
28d0: 6f 6e 20 64 6f 65 73 20 6e 6f 74 20 66 6f 6c 6c  on does not foll
28e0: 6f 77 20 6d 65 72 67 65 20 6c 69 6e 6b 73 2c 20  ow merge links, 
28f0: 74 68 65 20 3c 62 3e 62 72 61 6e 63 68 3d 74 65  the <b>branch=te
2900: 73 74 3c 2f 62 3e 0a 74 61 67 20 64 6f 65 73 20  st</b>.tag does 
2910: 6e 6f 74 20 70 72 6f 70 61 67 61 74 65 20 74 6f  not propagate to
2920: 20 63 68 65 63 6b 2d 69 6e 73 20 37 2c 20 38 2c   check-ins 7, 8,
2930: 20 6f 72 20 31 30 2e 20 20 4e 6f 74 65 20 61 6c   or 10.  Note al
2940: 73 6f 20 74 68 61 74 20 74 68 65 0a 3c 62 3e 62  so that the.<b>b
2950: 72 61 6e 63 68 3c 2f 62 3e 20 74 61 67 20 6f 6e  ranch</b> tag on
2960: 20 63 68 65 63 6b 2d 69 6e 20 34 20 62 6c 6f 63   check-in 4 bloc
2970: 6b 73 20 74 68 65 20 70 72 6f 70 61 67 61 74 69  ks the propagati
2980: 6f 6e 20 6f 66 20 3c 62 3e 62 72 61 6e 63 68 3d  on of <b>branch=
2990: 74 72 75 6e 6b 3c 2f 62 3e 0a 73 6f 20 74 68 61  trunk</b>.so tha
29a0: 74 20 69 74 20 63 61 6e 6e 6f 74 20 72 65 61 63  t it cannot reac
29b0: 68 20 63 68 65 63 6b 2d 69 6e 73 20 36 20 6f 72  h check-ins 6 or
29c0: 20 39 2e 20 20 54 68 69 73 20 63 61 75 73 65 73   9.  This causes
29d0: 20 63 68 65 63 6b 2d 69 6e 73 20 34 2c 20 36 2c   check-ins 4, 6,
29e0: 20 61 6e 64 0a 39 20 74 6f 20 62 65 20 69 6e 20   and.9 to be in 
29f0: 74 68 65 20 22 74 65 73 74 22 20 62 72 61 6e 63  the "test" branc
2a00: 68 20 61 6e 64 20 61 6c 6c 20 6f 74 68 65 72 73  h and all others
2a10: 20 74 6f 20 62 65 20 69 6e 20 74 68 65 20 22 74   to be in the "t
2a20: 72 75 6e 6b 22 20 62 72 61 6e 63 68 2e 0a 0a 43  runk" branch...C
2a30: 68 65 63 6b 2d 69 6e 20 34 20 61 6c 73 6f 20 68  heck-in 4 also h
2a40: 61 73 20 61 20 3c 62 3e 73 79 6d 2d 74 65 73 74  as a <b>sym-test
2a50: 3c 2f 62 3e 20 74 61 67 2c 20 77 68 69 63 68 20  </b> tag, which 
2a60: 67 69 76 65 73 20 74 68 65 20 73 79 6d 62 6f 6c  gives the symbol
2a70: 69 63 20 6e 61 6d 65 0a 22 74 65 73 74 22 20 74  ic name."test" t
2a80: 6f 20 63 68 65 63 6b 2d 69 6e 73 20 34 2c 20 36  o check-ins 4, 6
2a90: 2c 20 61 6e 64 20 39 2e 20 20 42 65 63 61 75 73  , and 9.  Becaus
2aa0: 65 20 74 61 67 73 20 64 6f 20 6e 6f 74 20 70 72  e tags do not pr
2ab0: 6f 70 61 67 61 74 65 20 61 63 72 6f 73 73 0a 6d  opagate across.m
2ac0: 65 72 67 65 73 2c 20 63 68 65 63 6b 2d 69 6e 73  erges, check-ins
2ad0: 20 37 2c 20 38 2c 20 61 6e 64 20 31 30 20 64 6f   7, 8, and 10 do
2ae0: 20 6e 6f 74 20 69 6e 68 65 72 69 74 20 74 68 65   not inherit the
2af0: 20 3c 62 3e 73 79 6d 2d 74 65 73 74 3c 2f 62 3e   <b>sym-test</b>
2b00: 20 74 61 67 20 61 6e 64 0a 61 72 65 20 68 65 6e   tag and.are hen
2b10: 63 65 20 6e 6f 74 20 6b 6e 6f 77 6e 20 62 79 20  ce not known by 
2b20: 74 68 65 20 6e 61 6d 65 20 22 74 65 73 74 22 2e  the name "test".
2b30: 0a 54 6f 20 70 72 65 76 65 6e 74 20 74 68 65 20  .To prevent the 
2b40: 3c 62 3e 73 79 6d 2d 74 72 75 6e 6b 3c 2f 62 3e  <b>sym-trunk</b>
2b50: 20 74 61 67 20 66 72 6f 6d 20 70 72 6f 70 61 67   tag from propag
2b60: 61 74 69 6e 67 20 66 72 6f 6d 20 63 68 65 63 6b  ating from check
2b70: 2d 69 6e 20 31 20 0a 69 6e 74 6f 20 63 68 65 63  -in 1 .into chec
2b80: 6b 2d 69 6e 73 20 34 2c 20 36 2c 20 61 6e 64 20  k-ins 4, 6, and 
2b90: 39 2c 20 74 68 65 72 65 20 69 73 20 61 20 63 61  9, there is a ca
2ba0: 6e 63 65 6c 6c 61 74 69 6f 6e 20 74 61 67 20 66  ncellation tag f
2bb0: 6f 72 20 0a 3c 62 3e 73 79 6d 2d 74 72 75 6e 6b  or .<b>sym-trunk
2bc0: 3c 2f 62 3e 20 6f 6e 20 63 68 65 63 6b 2d 69 6e  </b> on check-in
2bd0: 20 34 2e 20 20 54 68 65 20 6e 65 74 20 65 66 66   4.  The net eff
2be0: 65 63 74 20 6f 66 20 61 6c 6c 20 6f 66 20 74 68  ect of all of th
2bf0: 69 73 20 69 73 20 74 68 61 74 0a 63 68 65 63 6b  is is that.check
2c00: 2d 69 6e 73 20 6f 6e 20 74 68 65 20 74 72 75 6e  -ins on the trun
2c10: 6b 20 67 6f 20 62 79 20 74 68 65 20 73 79 6d 62  k go by the symb
2c20: 6f 6c 69 63 20 6e 61 6d 65 20 6f 66 20 22 74 72  olic name of "tr
2c30: 75 6e 6b 22 20 61 6e 64 20 63 68 65 63 6b 2d 69  unk" and check-i
2c40: 6e 73 0a 74 68 61 74 20 61 72 65 20 6f 6e 20 74  ns.that are on t
2c50: 68 65 20 74 65 73 74 20 62 72 61 6e 63 68 20 67  he test branch g
2c60: 6f 20 62 79 20 74 68 65 20 73 79 6d 62 6f 6c 69  o by the symboli
2c70: 63 20 6e 61 6d 65 20 22 74 65 73 74 22 2e 0a 0a  c name "test"...
2c80: 54 68 65 20 3c 62 3e 62 67 63 6f 6c 6f 72 3d 62  The <b>bgcolor=b
2c90: 6c 75 65 3c 2f 62 3e 20 74 61 67 20 6f 6e 20 63  lue</b> tag on c
2ca0: 68 65 63 6b 2d 69 6e 20 34 20 63 61 75 73 65 73  heck-in 4 causes
2cb0: 20 74 68 65 20 62 61 63 6b 67 72 6f 75 6e 64 20   the background 
2cc0: 63 6f 6c 6f 72 0a 6f 66 20 74 69 6d 65 6c 69 6e  color.of timelin
2cd0: 65 73 20 74 6f 20 62 65 20 62 6c 75 65 20 66 6f  es to be blue fo
2ce0: 72 20 63 68 65 63 6b 2d 69 6e 20 34 20 61 6e 64  r check-in 4 and
2cf0: 20 69 74 73 20 64 69 72 65 63 74 20 64 65 73 63   its direct desc
2d00: 65 6e 64 61 6e 74 73 2e 0a 0a 46 69 67 75 72 65  endants...Figure
2d10: 20 35 20 61 6c 73 6f 20 73 68 6f 77 73 20 74 77   5 also shows tw
2d20: 6f 20 6f 6e 65 2d 74 69 6d 65 20 74 61 67 73 20  o one-time tags 
2d30: 6f 6e 20 63 68 65 63 6b 2d 69 6e 20 39 2e 20 20  on check-in 9.  
2d40: 28 54 68 65 20 64 69 61 67 72 61 6d 20 64 6f 65  (The diagram doe
2d50: 73 0a 6e 6f 74 20 6d 61 6b 65 20 61 20 67 72 61  s.not make a gra
2d60: 70 68 69 63 61 6c 20 64 69 73 74 69 6e 63 74 69  phical distincti
2d70: 6f 6e 20 62 65 74 77 65 65 6e 20 6f 6e 65 2d 74  on between one-t
2d80: 69 6d 65 20 61 6e 64 20 70 72 6f 70 61 67 61 74  ime and propagat
2d90: 69 6e 67 20 74 61 67 73 2e 29 0a 54 68 65 20 3c  ing tags.).The <
2da0: 62 3e 73 79 6d 2d 72 65 6c 65 61 73 65 2d 31 2e  b>sym-release-1.
2db0: 30 3c 2f 62 3e 20 74 61 67 20 6d 65 61 6e 73 20  0</b> tag means 
2dc0: 74 68 61 74 20 63 68 65 63 6b 2d 69 6e 20 39 20  that check-in 9 
2dd0: 63 61 6e 20 62 65 20 72 65 66 65 72 72 65 64 20  can be referred 
2de0: 74 6f 0a 75 73 69 6e 67 20 74 68 65 20 6d 6f 72  to.using the mor
2df0: 65 20 6d 65 61 6e 69 6e 67 66 75 6c 20 6e 61 6d  e meaningful nam
2e00: 65 20 22 72 65 6c 65 61 73 65 2d 31 2e 30 22 2e  e "release-1.0".
2e10: 20 20 54 68 65 20 3c 62 3e 63 6c 6f 73 65 64 3c    The <b>closed<
2e20: 2f 62 3e 20 74 61 67 20 6d 65 61 6e 73 0a 74 68  /b> tag means.th
2e30: 61 74 20 63 68 65 63 6b 2d 69 6e 20 39 20 69 73  at check-in 9 is
2e40: 20 61 20 22 63 6c 6f 73 65 64 20 6c 65 61 66 22   a "closed leaf"
2e50: 2e 20 20 41 20 63 6c 6f 73 65 64 20 6c 65 61 66  .  A closed leaf
2e60: 20 69 73 20 61 20 6c 65 61 66 20 74 68 61 74 20   is a leaf that 
2e70: 69 6e 74 65 6e 64 65 64 0a 74 6f 20 6e 65 76 65  intended.to neve
2e80: 72 20 68 61 76 65 20 61 6e 79 20 64 69 72 65 63  r have any direc
2e90: 74 20 63 68 69 6c 64 72 65 6e 2e 0a 0a 3c 68 32  t children...<h2
2ea0: 3e 52 65 76 69 65 77 20 4f 66 20 54 65 72 6d 69  >Review Of Termi
2eb0: 6e 6f 6c 6f 67 79 3c 2f 68 32 3e 0a 0a 48 65 72  nology</h2>..Her
2ec0: 65 20 69 73 20 61 20 6c 69 73 74 20 6f 66 20 64  e is a list of d
2ed0: 65 66 69 6e 69 74 69 6f 6e 73 20 6f 66 20 6b 65  efinitions of ke
2ee0: 79 20 74 65 72 6d 73 3a 0a 0a 0a 3c 62 6c 6f 63  y terms:...<bloc
2ef0: 6b 71 75 6f 74 65 3e 3c 64 6c 3e 0a 3c 64 74 3e  kquote><dl>.<dt>
2f00: 3c 62 3e 42 72 61 6e 63 68 3c 2f 62 3e 3c 2f 64  <b>Branch</b></d
2f10: 74 3e 0a 3c 64 64 3e 3c 70 3e 41 20 62 72 61 6e  t>.<dd><p>A bran
2f20: 63 68 20 69 73 20 61 20 73 65 74 20 6f 66 20 63  ch is a set of c
2f30: 68 65 63 6b 2d 69 6e 73 20 74 68 61 74 20 68 61  heck-ins that ha
2f40: 76 65 20 74 68 65 20 73 61 6d 65 20 76 61 6c 75  ve the same valu
2f50: 65 20 66 6f 72 20 74 68 65 69 72 0a 62 72 61 6e  e for their.bran
2f60: 63 68 20 70 72 6f 70 65 72 74 79 2e 3c 2f 70 3e  ch property.</p>
2f70: 3c 2f 64 64 3e 0a 3c 64 74 3e 3c 62 3e 4c 65 61  </dd>.<dt><b>Lea
2f80: 66 3c 2f 62 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c  f</b></dt>.<dd><
2f90: 70 3e 41 20 6c 65 61 66 20 69 73 20 61 20 63 68  p>A leaf is a ch
2fa0: 65 63 6b 2d 69 6e 20 74 68 61 74 20 68 61 73 20  eck-in that has 
2fb0: 6e 6f 20 63 68 69 6c 64 72 65 6e 20 69 6e 20 74  no children in t
2fc0: 68 65 20 73 61 6d 65 20 62 72 61 6e 63 68 2e 3c  he same branch.<
2fd0: 2f 70 3e 3c 2f 64 64 3e 0a 3c 64 74 3e 3c 62 3e  /p></dd>.<dt><b>
2fe0: 43 6c 6f 73 65 64 20 4c 65 61 66 3c 2f 62 3e 3c  Closed Leaf</b><
2ff0: 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 41 20 63 6c  /dt>.<dd><p>A cl
3000: 6f 73 65 64 20 6c 65 61 66 20 69 73 20 6c 65 61  osed leaf is lea
3010: 66 20 74 68 61 74 20 68 61 73 20 74 68 65 20 3c  f that has the <
3020: 62 3e 63 6c 6f 73 65 64 3c 2f 62 3e 20 74 61 67  b>closed</b> tag
3030: 2e 20 20 53 75 63 68 20 6c 65 61 76 65 73 0a 61  .  Such leaves.a
3040: 72 65 20 69 6e 74 65 6e 74 65 64 20 74 6f 20 6e  re intented to n
3050: 65 76 65 72 20 62 65 20 65 78 74 65 6e 64 65 64  ever be extended
3060: 20 77 69 74 68 20 64 65 73 63 65 6e 64 65 6e 74   with descendent
3070: 73 20 61 6e 64 20 68 65 6e 63 65 20 61 72 65 20  s and hence are 
3080: 6f 6d 69 74 74 65 64 0a 66 72 6f 6d 20 6c 69 73  omitted.from lis
3090: 74 73 20 6f 66 20 6c 65 61 76 65 73 20 69 6e 20  ts of leaves in 
30a0: 74 68 65 20 63 6f 6d 6d 61 6e 64 2d 6c 69 6e 65  the command-line
30b0: 20 61 6e 64 20 77 65 62 20 69 6e 74 65 72 66 61   and web interfa
30c0: 63 65 2e 3c 2f 70 3e 3c 2f 64 64 3e 0a 3c 64 74  ce.</p></dd>.<dt
30d0: 3e 3c 62 3e 4f 70 65 6e 20 4c 65 61 66 3c 2f 62  ><b>Open Leaf</b
30e0: 3e 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 41 20  ></dt>.<dd><p>A 
30f0: 6f 70 65 6e 20 6c 65 61 66 20 69 73 20 61 20 6c  open leaf is a l
3100: 65 61 66 20 74 68 61 74 20 69 73 20 6e 6f 74 20  eaf that is not 
3110: 63 6c 6f 73 65 64 2e 3c 2f 70 3e 3c 2f 64 64 3e  closed.</p></dd>
3120: 0a 3c 64 74 3e 3c 62 3e 46 6f 72 6b 3c 2f 62 3e  .<dt><b>Fork</b>
3130: 3c 2f 64 74 3e 0a 3c 64 64 3e 3c 70 3e 41 20 66  </dt>.<dd><p>A f
3140: 6f 72 6b 20 6f 63 63 75 72 73 20 77 68 65 6e 20  ork occurs when 
3150: 61 20 63 68 65 63 6b 2d 69 6e 20 68 61 73 20 74  a check-in has t
3160: 77 6f 20 6f 72 20 6d 6f 72 65 20 64 69 72 65 63  wo or more direc
3170: 74 20 28 6e 6f 6e 2d 6d 65 72 67 65 29 0a 63 68  t (non-merge).ch
3180: 69 6c 64 72 65 6e 20 69 6e 20 74 68 65 20 73 61  ildren in the sa
3190: 6d 65 20 62 72 61 6e 63 68 2e 3c 2f 70 3e 3c 2f  me branch.</p></
31a0: 64 64 3e 0a 3c 64 74 3e 3c 62 3e 42 72 61 6e 63  dd>.<dt><b>Branc
31b0: 68 20 50 6f 69 6e 74 3c 2f 62 3e 3c 2f 64 74 3e  h Point</b></dt>
31c0: 0a 3c 64 64 3e 3c 70 3e 41 20 62 72 61 6e 63 68  .<dd><p>A branch
31d0: 20 70 6f 69 6e 74 20 6f 63 63 75 72 73 20 77 68   point occurs wh
31e0: 65 6e 20 61 20 63 68 65 63 6b 2d 69 6e 20 68 61  en a check-in ha
31f0: 73 20 74 77 6f 20 6f 72 20 6d 6f 72 65 20 64 69  s two or more di
3200: 72 65 63 74 20 28 6e 6f 6e 2d 6d 65 72 67 65 29  rect (non-merge)
3210: 0a 63 68 69 6c 64 72 65 6e 20 69 6e 20 74 68 65  .children in the
3220: 20 64 69 66 66 65 72 65 6e 74 20 62 72 61 6e 63   different branc
3230: 68 65 73 2e 20 20 41 20 62 72 61 6e 63 68 20 70  hes.  A branch p
3240: 6f 69 6e 74 20 69 73 20 73 69 6d 69 6c 61 72 20  oint is similar 
3250: 74 6f 20 61 20 66 6f 72 6b 2c 0a 65 78 63 65 70  to a fork,.excep
3260: 74 20 74 68 61 74 20 74 68 65 20 63 68 69 6c 64  t that the child
3270: 72 65 6e 20 61 72 65 20 69 6e 20 64 69 66 66 65  ren are in diffe
3280: 72 65 6e 74 20 62 72 61 6e 63 68 65 73 2e 3c 2f  rent branches.</
3290: 70 3e 3c 2f 64 64 3e 0a 3c 2f 64 6c 3e 3c 2f 62  p></dd>.</dl></b
32a0: 6c 6f 63 6b 71 75 6f 74 65 3e 0a 0a 43 68 65 63  lockquote>..Chec
32b0: 6b 2d 69 6e 20 34 20 6f 66 20 66 69 67 75 72 65  k-in 4 of figure
32c0: 20 33 20 69 73 20 6e 6f 74 20 61 20 6c 65 61 66   3 is not a leaf
32d0: 20 62 65 63 61 75 73 65 20 69 74 20 68 61 73 20   because it has 
32e0: 61 20 63 68 69 6c 64 20 28 63 68 65 63 6b 2d 69  a child (check-i
32f0: 6e 20 35 29 0a 69 6e 20 74 68 65 20 73 61 6d 65  n 5).in the same
3300: 20 62 72 61 6e 63 68 2e 20 20 43 68 65 63 6b 2d   branch.  Check-
3310: 69 6e 20 39 20 6f 66 20 66 69 67 75 72 65 20 35  in 9 of figure 5
3320: 20 61 6c 73 6f 20 68 61 73 20 61 20 63 68 69 6c   also has a chil
3330: 64 20 28 63 68 65 63 6b 2d 69 6e 20 31 30 29 0a  d (check-in 10).
3340: 62 75 74 20 74 68 61 74 20 63 68 69 6c 64 20 69  but that child i
3350: 73 20 69 6e 20 61 20 64 69 66 66 65 72 65 6e 74  s in a different
3360: 20 62 72 61 6e 63 68 2c 20 73 6f 20 63 68 65 63   branch, so chec
3370: 6b 2d 69 6e 20 39 20 69 73 20 61 20 6c 65 61 66  k-in 9 is a leaf
3380: 2e 20 20 42 65 63 61 75 73 65 0a 6f 66 20 74 68  .  Because.of th
3390: 65 20 3c 62 3e 63 6c 6f 73 65 64 3c 2f 62 3e 20  e <b>closed</b> 
33a0: 74 61 67 20 63 68 65 63 6b 2d 69 6e 20 39 2c 20  tag check-in 9, 
33b0: 69 74 20 69 73 20 61 20 63 6c 6f 73 65 64 20 6c  it is a closed l
33c0: 65 61 66 2e 0a 0a 43 68 65 63 6b 2d 69 6e 20 32  eaf...Check-in 2
33d0: 20 6f 66 20 66 69 67 75 72 65 20 33 20 69 73 20   of figure 3 is 
33e0: 63 6f 6e 73 69 64 65 72 65 64 20 61 20 22 66 6f  considered a "fo
33f0: 72 6b 22 0a 62 65 63 61 75 73 65 20 69 74 20 68  rk".because it h
3400: 61 73 20 74 77 6f 20 63 68 69 6c 64 72 65 6e 20  as two children 
3410: 69 6e 20 74 68 65 20 73 61 6d 65 20 62 72 61 6e  in the same bran
3420: 63 68 2e 20 20 43 68 65 63 6b 2d 69 6e 20 32 20  ch.  Check-in 2 
3430: 6f 66 20 66 69 67 75 72 65 20 35 0a 61 6c 73 6f  of figure 5.also
3440: 20 68 61 73 20 74 77 6f 20 63 68 69 6c 64 72 65   has two childre
3450: 6e 2c 20 62 75 74 20 65 61 63 68 20 63 68 69 6c  n, but each chil
3460: 64 20 69 73 20 69 6e 20 61 20 64 69 66 66 65 72  d is in a differ
3470: 65 6e 74 20 62 72 61 6e 63 68 2c 20 68 65 6e 63  ent branch, henc
3480: 65 20 69 6e 0a 66 69 67 75 72 65 20 35 2c 20 63  e in.figure 5, c
3490: 68 65 63 6b 2d 69 6e 20 32 20 69 73 20 63 6f 6e  heck-in 2 is con
34a0: 73 69 64 65 72 65 64 20 61 20 22 62 72 61 6e 63  sidered a "branc
34b0: 68 20 70 6f 69 6e 74 22 2e 0a                    h point"..