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"..