MySQL++

Hex Artifact Content
Login

Artifact 9ceb38c34b097fbfffa594840eac1f572bb765dfae2bfbfbfc23800f73aed52e:


0000: 23 20 48 61 63 6b 69 6e 67 20 6f 6e 20 4d 79 53  # Hacking on MyS
0010: 51 4c 2b 2b 0a 0a 49 66 20 79 6f 75 20 61 72 65  QL++..If you are
0020: 20 67 6f 69 6e 67 20 74 6f 20 6d 61 6b 65 20 61   going to make a
0030: 6e 79 20 63 68 61 6e 67 65 73 20 74 6f 20 4d 79  ny changes to My
0040: 53 51 4c 2b 2b 2c 20 74 68 69 73 20 66 69 6c 65  SQL++, this file
0050: 20 68 61 73 20 73 6f 6d 65 0a 68 69 6e 74 73 20   has some.hints 
0060: 61 6e 64 20 63 6f 6d 6d 65 6e 74 61 72 79 20 79  and commentary y
0070: 6f 75 20 6d 61 79 20 66 69 6e 64 20 68 65 6c 70  ou may find help
0080: 66 75 6c 2e 0a 0a 0a 23 23 20 3c 61 20 69 64 3d  ful....## <a id=
0090: 22 72 65 70 6f 22 3e 3c 2f 61 3e 43 6f 64 65 20  "repo"></a>Code 
00a0: 52 65 70 6f 73 69 74 6f 72 79 20 41 63 63 65 73  Repository Acces
00b0: 73 0a 0a 4d 79 53 51 4c 2b 2b 20 75 73 65 73 20  s..MySQL++ uses 
00c0: 74 68 65 20 5b 46 6f 73 73 69 6c 5d 5b 66 73 6c  the [Fossil][fsl
00d0: 5d 20 5b 64 69 73 74 72 69 62 75 74 65 64 20 76  ] [distributed v
00e0: 65 72 73 69 6f 6e 20 63 6f 6e 74 72 6f 6c 0a 73  ersion control.s
00f0: 79 73 74 65 6d 5d 5b 64 76 63 73 5d 2e 20 53 65  ystem][dvcs]. Se
0100: 65 20 69 74 73 20 5b 71 75 69 63 6b 20 73 74 61  e its [quick sta
0110: 72 74 20 67 75 69 64 65 5d 5b 66 73 6c 71 5d 20  rt guide][fslq] 
0120: 69 66 20 79 6f 75 20 61 72 65 20 75 6e 66 61 6d  if you are unfam
0130: 69 6c 61 72 0a 77 69 74 68 20 46 6f 73 73 69 6c  ilar.with Fossil
0140: 2e 0a 0a 54 68 61 74 20 46 6f 73 73 69 6c 20 72  ...That Fossil r
0150: 65 70 6f 73 69 74 6f 72 79 20 69 73 20 61 6c 73  epository is als
0160: 6f 20 5b 6d 69 72 72 6f 72 65 64 20 74 6f 20 47  o [mirrored to G
0170: 69 74 48 75 62 5d 5b 67 68 6d 5d 20 6e 69 67 68  itHub][ghm] nigh
0180: 74 6c 79 2c 20 62 75 74 0a 74 68 69 73 20 69 73  tly, but.this is
0190: 20 61 20 72 65 61 64 2d 6f 6e 6c 79 20 6d 69 72   a read-only mir
01a0: 72 6f 72 2c 20 6d 65 61 6e 74 20 66 6f 72 20 75  ror, meant for u
01b0: 73 65 20 77 69 74 68 20 47 69 74 20 61 75 74 6f  se with Git auto
01c0: 6d 61 74 69 6f 6e 20 74 6f 6f 6c 69 6e 67 2e 0a  mation tooling..
01d0: 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 79 6f 75  For example, you
01e0: 20 63 6f 75 6c 64 20 75 73 65 20 4d 79 53 51 4c   could use MySQL
01f0: 2b 2b 20 61 73 20 61 20 73 75 62 6d 6f 64 75 6c  ++ as a submodul
0200: 65 20 69 6e 20 61 20 6c 61 72 67 65 72 20 47 69  e in a larger Gi
0210: 74 0a 70 72 6f 6a 65 63 74 20 76 69 61 20 74 68  t.project via th
0220: 69 73 20 63 68 61 6e 6e 65 6c 2e 20 5b 43 68 61  is channel. [Cha
0230: 6e 67 65 73 20 74 6f 20 4d 79 53 51 4c 2b 2b 5d  nges to MySQL++]
0240: 28 23 70 61 74 63 68 65 73 29 20 73 74 69 6c 6c  (#patches) still
0250: 20 6d 75 73 74 20 67 6f 0a 67 6f 20 74 68 72 6f   must go.go thro
0260: 75 67 68 20 74 68 65 20 46 6f 73 73 69 6c 20 72  ugh the Fossil r
0270: 65 70 6f 73 69 74 6f 72 79 2e 0a 0a 59 6f 75 20  epository...You 
0280: 6d 75 73 74 20 62 65 20 72 75 6e 6e 69 6e 67 20  must be running 
0290: 46 6f 73 73 69 6c 20 76 65 72 73 69 6f 6e 20 32  Fossil version 2
02a0: 2e 31 20 6f 72 20 68 69 67 68 65 72 20 74 6f 20  .1 or higher to 
02b0: 61 63 63 65 73 73 20 74 68 65 20 4d 79 53 51 4c  access the MySQL
02c0: 2b 2b 0a 72 65 70 6f 73 69 74 6f 72 79 2e 20 49  ++.repository. I
02d0: 66 20 79 6f 75 72 20 6f 70 65 72 61 74 69 6e 67  f your operating
02e0: 20 73 79 73 74 65 6d 20 69 6e 63 6c 75 64 65 73   system includes
02f0: 20 61 6e 20 6f 6c 64 65 72 20 46 6f 73 73 69 6c   an older Fossil
0300: 20 70 61 63 6b 61 67 65 2c 0a 79 6f 75 20 77 69   package,.you wi
0310: 6c 6c 20 65 69 74 68 65 72 20 68 61 76 65 20 74  ll either have t
0320: 6f 20 69 6e 73 74 61 6c 6c 20 5b 61 6e 20 6f 66  o install [an of
0330: 66 69 63 69 61 6c 20 62 69 6e 61 72 79 5d 5b 66  ficial binary][f
0340: 73 6c 62 5d 20 6f 72 20 5b 62 75 69 6c 64 0a 69  slb] or [build.i
0350: 74 20 66 72 6f 6d 20 73 6f 75 72 63 65 5d 5b 66  t from source][f
0360: 73 6c 73 5d 2e 0a 0a 54 6f 20 63 6c 6f 6e 65 20  sls]...To clone 
0370: 74 68 65 20 4d 79 53 51 4c 2b 2b 20 72 65 70 6f  the MySQL++ repo
0380: 73 69 74 6f 72 79 20 61 6e 6f 6e 79 6d 6f 75 73  sitory anonymous
0390: 6c 79 2c 20 73 61 79 3a 0a 0a 20 20 20 20 24 20  ly, say:..    $ 
03a0: 66 6f 73 73 69 6c 20 63 6c 6f 6e 65 20 68 74 74  fossil clone htt
03b0: 70 73 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f 66 74  ps://tangentsoft
03c0: 2e 63 6f 6d 2f 6d 79 73 71 6c 70 70 20 6d 79 73  .com/mysqlpp mys
03d0: 71 6c 70 70 2e 66 6f 73 73 69 6c 0a 0a 49 66 20  qlpp.fossil..If 
03e0: 79 6f 75 20 68 61 76 65 20 61 20 64 65 76 65 6c  you have a devel
03f0: 6f 70 65 72 20 61 63 63 6f 75 6e 74 20 6f 6e 20  oper account on 
0400: 74 68 65 20 4d 79 53 51 4c 2b 2b 20 46 6f 73 73  the MySQL++ Foss
0410: 69 6c 20 69 6e 73 74 61 6e 63 65 2c 20 6a 75 73  il instance, jus
0420: 74 20 61 64 64 0a 79 6f 75 72 20 75 73 65 72 6e  t add.your usern
0430: 61 6d 65 20 74 6f 20 74 68 65 20 55 52 4c 20 6c  ame to the URL l
0440: 69 6b 65 20 73 6f 3a 0a 0a 20 20 20 20 24 20 66  ike so:..    $ f
0450: 6f 73 73 69 6c 20 63 6c 6f 6e 65 20 68 74 74 70  ossil clone http
0460: 73 3a 2f 2f 75 73 65 72 6e 61 6d 65 40 74 61 6e  s://username@tan
0470: 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d 79 73  gentsoft.com/mys
0480: 71 6c 70 70 20 6d 79 73 71 6c 70 70 2e 66 6f 73  qlpp mysqlpp.fos
0490: 73 69 6c 0a 0a 54 68 61 74 20 77 69 6c 6c 20 67  sil..That will g
04a0: 65 74 20 79 6f 75 20 61 20 66 69 6c 65 20 63 61  et you a file ca
04b0: 6c 6c 65 64 20 60 6d 79 73 71 6c 70 70 2e 66 6f  lled `mysqlpp.fo
04c0: 73 73 69 6c 60 20 63 6f 6e 74 61 69 6e 69 6e 67  ssil` containing
04d0: 20 74 68 65 20 5b 61 62 72 69 64 67 65 64 0a 76   the [abridged.v
04e0: 65 72 73 69 6f 6e 20 68 69 73 74 6f 72 79 5d 5b  ersion history][
04f0: 61 76 68 5d 20 6f 66 20 4d 79 53 51 4c 2b 2b 20  avh] of MySQL++ 
0500: 62 61 63 6b 20 74 6f 20 74 68 65 20 70 72 6f 6a  back to the proj
0510: 65 63 74 27 73 20 66 6f 75 6e 64 69 6e 67 2e 0a  ect's founding..
0520: 0a 54 68 65 20 72 65 70 6f 73 69 74 6f 72 79 20  .The repository 
0530: 63 6c 6f 6e 65 20 66 69 6c 65 20 63 61 6e 20 62  clone file can b
0540: 65 20 6e 61 6d 65 64 20 61 6e 79 74 68 69 6e 67  e named anything
0550: 20 79 6f 75 20 6c 69 6b 65 2e 20 45 76 65 6e 20   you like. Even 
0560: 74 68 65 0a 60 2e 66 6f 73 73 69 6c 60 20 65 78  the.`.fossil` ex
0570: 74 65 6e 73 69 6f 6e 20 69 73 20 6a 75 73 74 20  tension is just 
0580: 61 20 63 6f 6e 76 65 6e 74 69 6f 6e 2c 20 6e 6f  a convention, no
0590: 74 20 61 20 72 65 71 75 69 72 65 6d 65 6e 74 2e  t a requirement.
05a0: 0a 0a 54 6f 20 22 6f 70 65 6e 22 20 74 68 65 20  ..To "open" the 
05b0: 72 65 70 6f 20 63 6c 6f 6e 65 20 73 6f 20 79 6f  repo clone so yo
05c0: 75 20 63 61 6e 20 68 61 63 6b 20 6f 6e 20 69 74  u can hack on it
05d0: 2c 20 73 61 79 3a 0a 0a 20 20 20 20 24 20 6d 6b  , say:..    $ mk
05e0: 64 69 72 20 6d 79 73 71 6c 70 70 0a 20 20 20 20  dir mysqlpp.    
05f0: 24 20 63 64 20 6d 79 73 71 6c 70 70 0a 20 20 20  $ cd mysqlpp.   
0600: 20 24 20 66 6f 73 73 69 6c 20 6f 70 65 6e 20 2e   $ fossil open .
0610: 2e 2f 6d 79 73 71 6c 70 70 2e 66 6f 73 73 69 6c  ./mysqlpp.fossil
0620: 0a 0a 54 68 69 73 20 74 77 6f 20 73 74 65 70 20  ..This two step 
0630: e2 80 9c 63 6c 6f 6e 65 20 61 6e 64 20 6f 70 65  ...clone and ope
0640: 6e e2 80 9d 20 70 72 6f 63 65 73 73 20 6d 61 79  n... process may
0650: 20 73 65 65 6d 20 77 65 69 72 64 20 69 66 20 79   seem weird if y
0660: 6f 75 e2 80 99 72 65 20 75 73 65 64 20 74 6f 0a  ou...re used to.
0670: 47 69 74 2c 20 62 75 74 20 69 74 e2 80 99 73 20  Git, but it...s 
0680: 61 20 66 65 61 74 75 72 65 2e 20 49 74 20 6d 65  a feature. It me
0690: 61 6e 73 20 74 68 65 20 72 65 70 6f 73 69 74 6f  ans the reposito
06a0: 72 79 20 61 6e 64 20 77 6f 72 6b 69 6e 67 20 64  ry and working d
06b0: 69 72 65 63 74 6f 72 69 65 73 0a 61 72 65 20 73  irectories.are s
06c0: 65 70 61 72 61 74 65 2c 20 61 6c 6c 6f 77 69 6e  eparate, allowin
06d0: 67 20 79 6f 75 20 74 6f 20 63 72 65 61 74 65 20  g you to create 
06e0: 6d 75 6c 74 69 70 6c 65 20 69 6e 64 65 70 65 6e  multiple indepen
06f0: 64 65 6e 74 20 63 68 65 63 6b 6f 75 74 73 20 66  dent checkouts f
0700: 72 6f 6d 0a 61 20 73 69 6e 67 6c 65 20 72 65 70  rom.a single rep
0710: 6f 20 63 6c 6f 6e 65 2e 20 49 20 6c 69 6b 65 20  o clone. I like 
0720: 61 20 77 6f 72 6b 69 6e 67 20 74 72 65 65 20 74  a working tree t
0730: 68 61 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 74  hat looks like t
0740: 68 69 73 3a 0a 0a 20 20 20 20 7e 2f 6d 75 73 65  his:..    ~/muse
0750: 75 6d 2f 20 20 20 20 20 20 20 20 20 20 20 20 20  um/             
0760: 20 20 20 20 20 23 20 57 68 65 72 65 20 6f 6e 65       # Where one
0770: 20 6b 65 65 70 73 20 66 6f 73 73 69 6c 73 2c 20   keeps fossils, 
0780: 72 69 67 68 74 3f 0a 20 20 20 20 20 20 20 20 6d  right?.        m
0790: 79 73 71 6c 70 70 2e 66 6f 73 73 69 6c 0a 20 20  ysqlpp.fossil.  
07a0: 20 20 7e 2f 73 72 63 2f 20 20 20 20 20 20 20 20    ~/src/        
07b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20 57               # W
07c0: 6f 72 6b 69 6e 67 20 74 72 65 65 20 66 6f 72 20  orking tree for 
07d0: 73 6f 66 74 77 61 72 65 20 70 72 6f 6a 65 63 74  software project
07e0: 73 0a 20 20 20 20 20 20 20 20 6d 79 73 71 6c 70  s.        mysqlp
07f0: 70 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20  p/              
0800: 20 23 20 41 20 64 69 72 65 63 74 6f 72 79 20 66   # A directory f
0810: 6f 72 20 65 61 63 68 20 70 72 6f 6a 65 63 74 0a  or each project.
0820: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 75 6e              trun
0830: 6b 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 23  k/             #
0840: 20 50 72 69 6d 61 72 79 20 77 6f 72 6b 69 6e 67   Primary working
0850: 20 62 72 61 6e 63 68 20 66 6f 72 20 4d 79 53 51   branch for MySQ
0860: 4c 2b 2b 0a 20 20 20 20 20 20 20 20 20 20 20 20  L++.            
0870: 76 32 2e 33 2e 32 2d 6d 6f 64 65 72 6e 2f 20 20  v2.3.2-modern/  
0880: 20 20 20 23 20 43 68 65 63 6b 6f 75 74 20 66 6f     # Checkout fo
0890: 72 20 61 6e 6f 74 68 65 72 20 62 72 61 6e 63 68  r another branch
08a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 33 2e  .            v3.
08b0: 32 2e 33 2f 20 20 20 20 20 20 20 20 20 20 20 20  2.3/            
08c0: 23 20 43 68 65 63 6b 6f 75 74 20 66 6f 72 20 61  # Checkout for a
08d0: 20 74 61 67 67 65 64 20 73 74 61 62 6c 65 20 72   tagged stable r
08e0: 65 6c 65 61 73 65 0a 0a 59 6f 75 20 63 68 65 63  elease..You chec
08f0: 6b 20 6f 75 74 20 61 20 62 72 61 6e 63 68 20 6f  k out a branch o
0900: 72 20 74 61 67 20 6c 69 6b 65 20 73 6f 3a 0a 0a  r tag like so:..
0910: 20 20 20 20 24 20 63 64 20 7e 2f 73 72 63 2f 6d      $ cd ~/src/m
0920: 79 73 71 6c 70 70 2f 76 33 2e 32 2e 33 0a 20 20  ysqlpp/v3.2.3.  
0930: 20 20 24 20 66 6f 73 73 69 6c 20 6f 70 65 6e 20    $ fossil open 
0940: 7e 2f 6d 75 73 65 75 6d 2f 6d 79 73 71 6c 70 70  ~/museum/mysqlpp
0950: 2e 66 6f 73 73 69 6c 20 76 33 2e 32 2e 33 0a 0a  .fossil v3.2.3..
0960: 46 6f 73 73 69 6c 20 77 69 6c 6c 20 6c 65 74 20  Fossil will let 
0970: 79 6f 75 20 6d 61 6b 65 20 61 6e 79 20 6d 6f 64  you make any mod
0980: 69 66 69 63 61 74 69 6f 6e 73 20 79 6f 75 20 6c  ifications you l
0990: 69 6b 65 20 74 6f 20 79 6f 75 72 20 6c 6f 63 61  ike to your loca
09a0: 6c 0a 72 65 70 6f 73 69 74 6f 72 79 20 63 6f 70  l.repository cop
09b0: 79 2e 20 46 6f 72 20 74 68 6f 73 65 20 77 69 74  y. For those wit
09c0: 68 20 63 68 65 63 6b 2d 69 6e 20 70 72 69 76 69  h check-in privi
09d0: 6c 65 67 65 73 20 6f 6e 20 74 68 65 20 75 70 73  leges on the ups
09e0: 74 72 65 61 6d 0a 63 6f 70 79 2c 20 63 68 61 6e  tream.copy, chan
09f0: 67 65 73 20 67 65 74 20 61 75 74 6f 6d 61 74 69  ges get automati
0a00: 63 61 6c 6c 79 20 73 79 6e 63 65 64 20 77 69 74  cally synced wit
0a10: 68 20 69 74 20 62 79 20 64 65 66 61 75 6c 74 2e  h it by default.
0a20: 20 28 49 66 20 79 6f 75 0a 70 72 65 66 65 72 20   (If you.prefer 
0a30: 47 69 74 20 6f 72 20 4d 65 72 63 75 72 69 61 6c  Git or Mercurial
0a40: 20 73 74 79 6c 65 20 74 77 6f 2d 70 68 61 73 65   style two-phase
0a50: 20 63 6f 6d 6d 69 74 73 2c 20 79 6f 75 20 63 61   commits, you ca
0a60: 6e 20 73 61 79 20 60 66 6f 73 73 69 6c 20 73 65  n say `fossil se
0a70: 74 0a 61 75 74 6f 73 79 6e 63 20 6f 66 66 60 2c  t.autosync off`,
0a80: 20 74 68 65 6e 20 6c 61 74 65 72 20 73 61 79 20   then later say 
0a90: 60 66 6f 73 73 69 6c 20 70 75 73 68 60 20 61 66  `fossil push` af
0aa0: 74 65 72 20 6d 61 6b 69 6e 67 20 6f 6e 65 20 6f  ter making one o
0ab0: 72 20 6d 6f 72 65 0a 63 68 65 63 6b 69 6e 73 2e  r more.checkins.
0ac0: 29 20 49 66 20 79 6f 75 20 64 6f 6e 27 74 20 68  ) If you don't h
0ad0: 61 76 65 20 63 6f 6d 6d 69 74 20 63 61 70 61 62  ave commit capab
0ae0: 69 6c 69 74 79 20 6f 6e 20 74 68 65 20 63 65 6e  ility on the cen
0af0: 74 72 61 6c 20 72 65 70 6f 73 69 74 6f 72 79 0a  tral repository.
0b00: 73 65 72 76 65 72 2c 20 63 68 65 63 6b 69 6e 73  server, checkins
0b10: 20 6a 75 73 74 20 6d 6f 64 69 66 79 20 79 6f 75   just modify you
0b20: 72 20 6c 6f 63 61 6c 20 72 65 70 6f 73 69 74 6f  r local reposito
0b30: 72 79 20 63 6c 6f 6e 65 2e 20 49 66 20 79 6f 75  ry clone. If you
0b40: 20 64 6f 20 73 75 63 68 0a 63 68 65 63 6b 69 6e   do such.checkin
0b50: 73 20 6f 6e 20 61 20 62 72 61 6e 63 68 2c 20 79  s on a branch, y
0b60: 6f 75 20 64 6f 6e e2 80 99 74 20 6e 65 65 64 20  ou don...t need 
0b70: 74 6f 20 77 6f 72 72 79 20 61 62 6f 75 74 20 63  to worry about c
0b80: 6f 6e 66 6c 69 63 74 73 20 77 68 65 6e 0a 70 75  onflicts when.pu
0b90: 6c 6c 69 6e 67 20 64 6f 77 6e 20 75 70 73 74 72  lling down upstr
0ba0: 65 61 6d 20 63 68 61 6e 67 65 73 20 69 6e 74 6f  eam changes into
0bb0: 20 79 6f 75 72 20 6c 6f 63 61 6c 20 63 6c 6f 6e   your local clon
0bc0: 65 2e 0a 0a 44 65 76 65 6c 6f 70 65 72 73 20 61  e...Developers a
0bd0: 72 65 20 65 78 70 65 63 74 65 64 20 74 6f 20 6d  re expected to m
0be0: 61 6b 65 20 61 6c 6c 20 63 68 61 6e 67 65 73 20  ake all changes 
0bf0: 74 68 61 74 20 61 66 66 65 63 74 20 74 68 65 20  that affect the 
0c00: 6c 69 62 61 72 79 27 73 0a 41 50 49 2c 20 41 42  libary's.API, AB
0c10: 49 2c 20 6f 72 20 62 65 68 61 76 69 6f 72 20 6f  I, or behavior o
0c20: 6e 20 61 20 62 72 61 6e 63 68 2c 20 72 61 74 68  n a branch, rath
0c30: 65 72 20 74 68 61 6e 20 63 68 65 63 6b 20 73 75  er than check su
0c40: 63 68 20 63 68 61 6e 67 65 73 0a 64 69 72 65 63  ch changes.direc
0c50: 74 6c 79 20 69 6e 74 6f 20 74 68 65 20 74 72 75  tly into the tru
0c60: 6e 6b 2e 20 4f 6e 63 65 20 77 65 20 68 61 76 65  nk. Once we have
0c70: 20 64 69 73 63 75 73 73 65 64 20 74 68 65 20 63   discussed the c
0c80: 68 61 6e 67 65 20 6f 6e 20 74 68 65 0a 5b 66 6f  hange on the.[fo
0c90: 72 75 6d 5d 5b 66 6f 72 5d 20 61 6e 64 20 72 65  rum][for] and re
0ca0: 73 6f 6c 76 65 64 20 61 6e 79 20 69 73 73 73 75  solved any isssu
0cb0: 65 73 20 77 69 74 68 20 74 68 65 20 65 78 70 65  es with the expe
0cc0: 72 69 6d 65 6e 74 61 6c 20 62 72 61 6e 63 68 2c  rimental branch,
0cd0: 20 69 74 0a 77 69 6c 6c 20 62 65 20 6d 65 72 67   it.will be merg
0ce0: 65 64 20 69 6e 74 6f 20 74 68 65 20 74 72 75 6e  ed into the trun
0cf0: 6b 2e 0a 0a 43 72 65 61 74 69 6e 67 20 61 20 62  k...Creating a b
0d00: 72 61 6e 63 68 20 69 6e 20 46 6f 73 73 69 6c 20  ranch in Fossil 
0d10: 69 73 20 73 63 61 72 79 2d 73 69 6d 70 6c 65 2c  is scary-simple,
0d20: 20 74 6f 20 74 68 65 20 70 6f 69 6e 74 20 74 68   to the point th
0d30: 61 74 20 74 68 6f 73 65 0a 63 6f 6d 69 6e 67 20  at those.coming 
0d40: 66 72 6f 6d 20 6f 74 68 65 72 20 76 65 72 73 69  from other versi
0d50: 6f 6e 20 63 6f 6e 74 72 6f 6c 20 73 79 73 74 65  on control syste
0d60: 6d 73 20 6d 61 79 20 61 73 6b 2c 20 22 49 73 20  ms may ask, "Is 
0d70: 74 68 61 74 20 72 65 61 6c 6c 79 20 61 6c 6c 0a  that really all.
0d80: 74 68 65 72 65 20 69 73 20 74 6f 20 69 74 3f 22  there is to it?"
0d90: 20 59 65 73 2c 20 72 65 61 6c 6c 79 2c 20 74 68   Yes, really, th
0da0: 69 73 20 69 73 20 69 74 3a 0a 0a 20 20 20 20 24  is is it:..    $
0db0: 20 66 6f 73 73 69 6c 20 63 68 65 63 6b 69 6e 20   fossil checkin 
0dc0: 2d 2d 62 72 61 6e 63 68 20 6e 65 77 2d 62 72 61  --branch new-bra
0dd0: 6e 63 68 2d 6e 61 6d 65 0a 0a 54 68 61 74 20 69  nch-name..That i
0de0: 73 20 74 6f 20 73 61 79 2c 20 79 6f 75 20 6d 61  s to say, you ma
0df0: 6b 65 20 79 6f 75 72 20 63 68 61 6e 67 65 73 20  ke your changes 
0e00: 61 73 20 79 6f 75 20 6e 6f 72 6d 61 6c 6c 79 20  as you normally 
0e10: 77 6f 75 6c 64 3b 20 74 68 65 6e 20 77 68 65 6e  would; then when
0e20: 0a 79 6f 75 20 67 6f 20 74 6f 20 6d 61 6b 65 20  .you go to make 
0e30: 74 68 65 20 66 69 72 73 74 20 63 68 65 63 6b 69  the first checki
0e40: 6e 2c 20 79 6f 75 20 67 69 76 65 20 74 68 65 20  n, you give the 
0e50: 60 2d 2d 62 72 61 6e 63 68 60 20 6f 70 74 69 6f  `--branch` optio
0e60: 6e 20 74 6f 20 70 75 74 0a 74 68 65 20 63 68 61  n to put.the cha
0e70: 6e 67 65 73 20 6f 6e 20 61 20 6e 65 77 20 62 72  nges on a new br
0e80: 61 6e 63 68 2c 20 72 61 74 68 65 72 20 74 68 61  anch, rather tha
0e90: 6e 20 61 64 64 20 74 68 65 6d 20 74 6f 20 74 68  n add them to th
0ea0: 65 20 73 61 6d 65 20 62 72 61 6e 63 68 20 74 68  e same branch th
0eb0: 65 0a 63 68 61 6e 67 65 73 20 77 65 72 65 20 6d  e.changes were m
0ec0: 61 64 65 20 61 67 61 69 6e 73 74 2e 20 45 76 65  ade against. Eve
0ed0: 72 79 20 73 75 62 73 65 71 75 65 6e 74 20 63 68  ry subsequent ch
0ee0: 65 63 6b 69 6e 20 77 69 74 68 6f 75 74 20 61 20  eckin without a 
0ef0: 60 2d 2d 62 72 61 6e 63 68 60 0a 6f 70 74 69 6f  `--branch`.optio
0f00: 6e 20 67 65 74 73 20 63 68 65 63 6b 65 64 20 69  n gets checked i
0f10: 6e 20 61 73 20 74 68 65 20 6e 65 77 20 74 69 70  n as the new tip
0f20: 20 6f 66 20 74 68 61 74 20 62 72 61 6e 63 68 2e   of that branch.
0f30: 0a 0a 49 66 20 79 6f 75 e2 80 99 72 65 20 63 72  ..If you...re cr
0f40: 65 61 74 69 6e 67 20 61 20 62 72 61 6e 63 68 20  eating a branch 
0f50: 74 68 61 74 20 77 69 6c 6c 20 70 72 6f 62 61 62  that will probab
0f60: 6c 79 20 6c 69 76 65 20 61 20 6c 6f 6e 67 20 65  ly live a long e
0f70: 6e 6f 75 67 68 20 74 69 6d 65 0a 74 68 61 74 20  nough time.that 
0f80: 79 6f 75 e2 80 99 6c 6c 20 77 61 6e 74 20 74 6f  you...ll want to
0f90: 20 72 65 74 75 72 6e 20 74 6f 20 74 72 75 6e 6b   return to trunk
0fa0: 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 74 69 6d   one or more tim
0fb0: 65 73 20 77 68 69 6c 65 20 74 68 61 74 20 62 72  es while that br
0fc0: 61 6e 63 68 0a 6c 69 76 65 73 2c 20 79 6f 75 20  anch.lives, you 
0fd0: 6d 69 67 68 74 20 66 6f 6c 6c 6f 77 20 74 68 65  might follow the
0fe0: 20 61 62 6f 76 65 20 63 6f 6d 6d 61 6e 64 20 77   above command w
0ff0: 69 74 68 20 61 20 73 65 71 75 65 6e 63 65 20 6c  ith a sequence l
1000: 69 6b 65 20 74 68 69 73 3a 0a 0a 20 20 20 20 24  ike this:..    $
1010: 20 66 6f 73 73 69 6c 20 75 70 64 61 74 65 20 74   fossil update t
1020: 72 75 6e 6b 20 20 20 20 20 20 20 20 20 20 20 23  runk           #
1030: 20 72 65 74 75 72 6e 20 77 6f 72 6b 69 6e 67 20   return working 
1040: 64 69 72 20 74 6f 20 74 69 70 2d 6f 66 2d 74 72  dir to tip-of-tr
1050: 75 6e 6b 0a 20 20 20 20 24 20 6d 6b 64 69 72 20  unk.    $ mkdir 
1060: 2e 2e 2f 6e 65 77 2d 62 72 61 6e 63 68 2d 6e 61  ../new-branch-na
1070: 6d 65 0a 20 20 20 20 24 20 63 64 20 2e 2e 2f 6e  me.    $ cd ../n
1080: 65 77 2d 62 72 61 6e 63 68 2d 6e 61 6d 65 0a 20  ew-branch-name. 
1090: 20 20 20 24 20 66 6f 73 73 69 6c 20 6f 70 65 6e     $ fossil open
10a0: 20 7e 2f 6d 75 73 65 75 6d 2f 6d 79 73 71 6c 70   ~/museum/mysqlp
10b0: 70 2e 66 6f 73 73 69 6c 20 6e 65 77 2d 62 72 61  p.fossil new-bra
10c0: 6e 63 68 2d 6e 61 6d 65 0a 0a 4e 6f 77 20 79 6f  nch-name..Now yo
10d0: 75 20 63 61 6e 20 62 6f 75 6e 63 65 20 62 61 63  u can bounce bac
10e0: 6b 20 61 6e 64 20 66 6f 72 74 68 20 62 65 74 77  k and forth betw
10f0: 65 65 6e 20 74 72 75 6e 6b 20 61 6e 64 20 79 6f  een trunk and yo
1100: 75 72 20 6e 65 77 20 62 72 61 6e 63 68 20 77 69  ur new branch wi
1110: 74 68 0a 61 20 73 69 6d 70 6c 65 20 60 63 64 60  th.a simple `cd`
1120: 20 63 6f 6d 6d 61 6e 64 2c 20 72 61 74 68 65 72   command, rather
1130: 20 74 68 61 6e 20 73 77 69 74 63 68 69 6e 67 20   than switching 
1140: 69 6e 20 70 6c 61 63 65 2c 20 61 73 20 69 73 20  in place, as is 
1150: 74 79 70 69 63 61 6c 0a 77 69 74 68 20 47 69 74  typical.with Git
1160: 2e 20 54 68 69 73 20 73 74 79 6c 65 20 6f 66 20  . This style of 
1170: 77 6f 72 6b 20 61 76 6f 69 64 73 20 69 6e 76 61  work avoids inva
1180: 6c 69 64 61 74 69 6e 67 20 62 75 69 6c 64 20 73  lidating build s
1190: 79 73 74 65 6d 20 6f 75 74 70 75 74 73 2c 0a 61  ystem outputs,.a
11a0: 6e 64 20 69 74 20 6d 61 6b 65 73 20 69 74 20 70  nd it makes it p
11b0: 6f 73 73 69 62 6c 65 20 74 6f 20 73 77 69 74 63  ossible to switc
11c0: 68 20 62 72 61 6e 63 68 65 73 20 77 69 74 68 6f  h branches witho
11d0: 75 74 20 63 68 65 63 6b 69 6e 67 20 69 6e 20 6f  ut checking in o
11e0: 72 0a 73 74 61 73 68 69 6e 67 20 79 6f 75 72 20  r.stashing your 
11f0: 77 6f 72 6b 20 6f 6e 20 74 68 65 20 6f 74 68 65  work on the othe
1200: 72 20 62 72 61 6e 63 68 20 66 69 72 73 74 2e 0a  r branch first..
1210: 0a 5b 61 76 68 5d 3a 20 20 68 74 74 70 73 3a 2f  .[avh]:  https:/
1220: 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d  /tangentsoft.com
1230: 2f 6d 79 73 71 6c 70 70 2f 77 69 6b 69 3f 6e 61  /mysqlpp/wiki?na
1240: 6d 65 3d 41 62 72 69 64 67 65 64 2b 56 65 72 73  me=Abridged+Vers
1250: 69 6f 6e 2b 48 69 73 74 6f 72 79 0a 5b 64 76 63  ion+History.[dvc
1260: 73 5d 3a 20 68 74 74 70 3a 2f 2f 65 6e 2e 77 69  s]: http://en.wi
1270: 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77 69 6b 69  kipedia.org/wiki
1280: 2f 44 69 73 74 72 69 62 75 74 65 64 5f 72 65 76  /Distributed_rev
1290: 69 73 69 6f 6e 5f 63 6f 6e 74 72 6f 6c 0a 5b 66  ision_control.[f
12a0: 6f 72 5d 3a 20 20 68 74 74 70 73 3a 2f 2f 74 61  or]:  https://ta
12b0: 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d 79  ngentsoft.com/my
12c0: 73 71 6c 70 70 2f 66 72 6f 75 6d 2f 0a 5b 66 73  sqlpp/froum/.[fs
12d0: 6c 5d 3a 20 20 68 74 74 70 3a 2f 2f 66 6f 73 73  l]:  http://foss
12e0: 69 6c 2d 73 63 6d 2e 6f 72 67 2f 0a 5b 66 73 6c  il-scm.org/.[fsl
12f0: 62 5d 3a 20 68 74 74 70 3a 2f 2f 66 6f 73 73 69  b]: http://fossi
1300: 6c 2d 73 63 6d 2e 6f 72 67 2f 66 6f 73 73 69 6c  l-scm.org/fossil
1310: 2f 75 76 2f 64 6f 77 6e 6c 6f 61 64 2e 68 74 6d  /uv/download.htm
1320: 6c 0a 5b 66 73 6c 71 5d 3a 20 68 74 74 70 3a 2f  l.[fslq]: http:/
1330: 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f  /fossil-scm.org/
1340: 66 6f 73 73 69 6c 2f 64 6f 63 2f 74 72 75 6e 6b  fossil/doc/trunk
1350: 2f 77 77 77 2f 71 75 69 63 6b 73 74 61 72 74 2e  /www/quickstart.
1360: 77 69 6b 69 0a 5b 66 73 6c 73 5d 3a 20 68 74 74  wiki.[fsls]: htt
1370: 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e 6f  p://fossil-scm.o
1380: 72 67 2f 66 6f 73 73 69 6c 2f 64 6f 63 2f 74 72  rg/fossil/doc/tr
1390: 75 6e 6b 2f 77 77 77 2f 62 75 69 6c 64 2e 77 69  unk/www/build.wi
13a0: 6b 69 0a 5b 67 68 6d 5d 3a 20 20 68 74 74 70 73  ki.[ghm]:  https
13b0: 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 74 61  ://github.com/ta
13c0: 6e 67 65 6e 74 73 6f 66 74 2f 6d 79 73 71 6c 70  ngentsoft/mysqlp
13d0: 70 0a 0a 0a 23 23 20 3c 61 20 69 64 3d 22 62 6f  p...## <a id="bo
13e0: 6f 74 73 74 72 61 70 22 3e 3c 2f 61 3e 42 6f 6f  otstrap"></a>Boo
13f0: 74 73 74 72 61 70 70 69 6e 67 20 74 68 65 20 4c  tstrapping the L
1400: 69 62 72 61 72 79 0a 0a 57 68 65 6e 20 79 6f 75  ibrary..When you
1410: 20 63 68 65 63 6b 20 6f 75 74 20 4d 79 53 51 4c   check out MySQL
1420: 2b 2b 20 66 72 6f 6d 20 46 6f 73 73 69 6c 2c 20  ++ from Fossil, 
1430: 74 68 65 72 65 20 61 72 65 20 61 20 6c 6f 74 20  there are a lot 
1440: 6f 66 20 74 68 69 6e 67 73 0a 22 6d 69 73 73 69  of things."missi
1450: 6e 67 22 20 61 73 20 63 6f 6d 70 61 72 65 64 20  ng" as compared 
1460: 74 6f 20 61 20 64 69 73 74 72 69 62 75 74 65 64  to a distributed
1470: 20 74 61 72 62 61 6c 6c 2c 20 62 65 63 61 75 73   tarball, becaus
1480: 65 20 74 68 65 20 46 6f 73 73 69 6c 0a 72 65 70  e the Fossil.rep
1490: 6f 73 69 74 6f 72 79 20 63 6f 6e 74 61 69 6e 73  ository contains
14a0: 20 6f 6e 6c 79 20 73 6f 75 72 63 65 20 66 69 6c   only source fil
14b0: 65 73 2c 20 6e 6f 20 67 65 6e 65 72 61 74 65 64  es, no generated
14c0: 20 66 69 6c 65 73 2e 20 20 54 68 65 0a 70 72 6f   files.  The.pro
14d0: 63 65 73 73 20 74 68 61 74 20 74 75 72 6e 73 20  cess that turns 
14e0: 61 20 66 72 65 73 68 20 4d 79 53 51 4c 2b 2b 20  a fresh MySQL++ 
14f0: 72 65 70 6f 73 69 74 6f 72 79 20 63 68 65 63 6b  repository check
1500: 6f 75 74 20 69 6e 74 6f 0a 73 6f 6d 65 74 68 69  out into.somethi
1510: 6e 67 20 79 6f 75 20 63 61 6e 20 62 75 69 6c 64  ng you can build
1520: 20 61 6e 64 20 68 61 63 6b 20 6f 6e 20 69 73 20   and hack on is 
1530: 63 61 6c 6c 65 64 20 62 6f 6f 74 73 74 72 61 70  called bootstrap
1540: 70 69 6e 67 2e 0a 0a 42 6f 6f 73 74 72 61 70 70  ping...Boostrapp
1550: 69 6e 67 20 69 73 20 62 65 73 74 20 64 6f 6e 65  ing is best done
1560: 20 6f 6e 20 61 20 6d 6f 64 65 72 6e 20 55 6e 69   on a modern Uni
1570: 78 20 74 79 70 65 20 70 6c 61 74 66 6f 72 6d 3a  x type platform:
1580: 20 4c 69 6e 75 78 2c 20 4f 53 0a 58 2c 20 42 53   Linux, OS.X, BS
1590: 44 2c 20 53 6f 6c 61 72 69 73 2e 2e 2e 61 6e 79  D, Solaris...any
15a0: 20 76 65 72 73 69 6f 6e 20 72 65 6c 65 61 73 65   version release
15b0: 64 20 73 69 6e 63 65 20 32 30 30 35 20 6f 72 20  d since 2005 or 
15c0: 73 6f 2e 20 49 74 27 73 0a 70 6f 73 73 69 62 6c  so. It's.possibl
15d0: 65 20 74 6f 20 64 6f 20 69 74 20 6f 6e 20 57 69  e to do it on Wi
15e0: 6e 64 6f 77 73 2c 20 62 75 74 20 6d 75 63 68 20  ndows, but much 
15f0: 68 61 72 64 65 72 3b 20 77 65 20 63 6f 76 65 72  harder; we cover
1600: 20 74 68 65 20 6f 70 74 69 6f 6e 73 0a 62 65 6c   the options.bel
1610: 6f 77 20 69 6e 20 61 20 73 65 70 61 72 61 74 65  ow in a separate
1620: 20 73 65 63 74 69 6f 6e 2e 0a 0a 54 77 6f 20 6f   section...Two o
1630: 66 20 74 68 65 20 74 6f 6f 6c 73 20 79 6f 75 20  f the tools you 
1640: 6e 65 65 64 20 74 6f 20 64 6f 20 74 68 69 73 20  need to do this 
1650: 61 72 65 20 63 6f 6d 6d 6f 6e 6c 79 20 61 76 61  are commonly ava
1660: 69 6c 61 62 6c 65 20 6f 6e 20 55 6e 69 78 79 0a  ilable on Unixy.
1670: 73 79 73 74 65 6d 73 2c 20 61 74 20 6c 65 61 73  systems, at leas
1680: 74 20 61 73 20 61 6e 20 6f 70 74 69 6f 6e 3a 20  t as an option: 
1690: 50 65 72 6c 20 35 2c 20 61 6e 64 20 47 4e 55 20  Perl 5, and GNU 
16a0: 41 75 74 6f 63 6f 6e 66 20 31 2e 35 39 20 6f 72  Autoconf 1.59 or
16b0: 20 68 69 67 68 65 72 2e 0a 49 66 20 74 68 65 79   higher..If they
16c0: 27 72 65 20 6e 6f 74 20 69 6e 73 74 61 6c 6c 65  're not installe
16d0: 64 2c 20 79 6f 75 20 63 61 6e 20 70 72 6f 62 61  d, you can proba
16e0: 62 6c 79 20 72 75 6e 20 79 6f 75 72 20 73 79 73  bly run your sys
16f0: 74 65 6d 27 73 20 70 61 63 6b 61 67 65 0a 6d 61  tem's package.ma
1700: 6e 61 67 65 72 20 74 6f 20 69 6e 73 74 61 6c 6c  nager to install
1710: 20 73 75 69 74 61 62 6c 65 20 76 65 72 73 69 6f   suitable versio
1720: 6e 73 2e 0a 0a 54 68 65 72 65 27 73 20 61 20 74  ns...There's a t
1730: 68 69 72 64 20 74 6f 6f 6c 20 79 6f 75 27 6c 6c  hird tool you'll
1740: 20 6e 65 65 64 20 74 6f 20 62 6f 6f 74 73 74 72   need to bootstr
1750: 61 70 20 4d 79 53 51 4c 2b 2b 20 63 61 6c 6c 65  ap MySQL++ calle
1760: 64 0a 5b 42 61 6b 65 66 69 6c 65 5d 5b 62 66 5d  d.[Bakefile][bf]
1770: 2e 20 54 68 65 20 73 79 6e 74 61 78 20 75 73 65  . The syntax use
1780: 64 20 69 6e 20 60 6d 79 73 71 6c 2b 2b 2e 62 6b  d in `mysql++.bk
1790: 6c 60 20 72 65 71 75 69 72 65 73 20 61 74 20 6c  l` requires at l
17a0: 65 61 73 74 0a 42 61 6b 65 66 69 6c 65 20 30 2e  east.Bakefile 0.
17b0: 32 2e 35 20 6f 72 20 68 69 67 68 65 72 2c 20 77  2.5 or higher, w
17c0: 68 69 63 68 20 69 6e 20 74 75 72 6e 20 72 65 71  hich in turn req
17d0: 75 69 72 65 73 20 50 79 74 68 6f 6e 20 32 2e 33  uires Python 2.3
17e0: 20 6f 72 20 68 69 67 68 65 72 20 74 6f 0a 72 75   or higher to.ru
17f0: 6e 2e 20 59 6f 75 20 6d 61 79 20 72 65 71 75 69  n. You may requi
1800: 72 65 20 61 20 6e 65 77 65 72 20 76 65 72 73 69  re a newer versi
1810: 6f 6e 20 6f 66 20 42 61 6b 65 66 69 6c 65 20 74  on of Bakefile t
1820: 6f 20 73 75 70 70 6f 72 74 20 6e 65 77 65 72 20  o support newer 
1830: 4f 53 65 73 0a 61 6e 64 20 50 79 74 68 6f 6e 20  OSes.and Python 
1840: 76 65 72 73 69 6f 6e 73 3b 20 77 65 27 76 65 20  versions; we've 
1850: 74 65 73 74 65 64 20 77 69 74 68 20 76 65 72 73  tested with vers
1860: 69 6f 6e 73 20 75 70 20 74 6f 20 30 2e 32 2e 31  ions up to 0.2.1
1870: 31 0a 73 75 63 63 65 73 73 66 75 6c 6c 79 2e 0a  1.successfully..
1880: 0a 44 6f 20 6e 6f 74 20 75 73 65 20 61 6e 79 20  .Do not use any 
1890: 6f 66 20 74 68 65 20 42 61 6b 65 66 69 6c 65 20  of the Bakefile 
18a0: 31 2e 78 20 76 65 72 73 69 6f 6e 73 3a 20 69 74  1.x versions: it
18b0: e2 80 99 73 20 61 6e 20 69 6e 63 6f 6d 70 61 74  ...s an incompat
18c0: 69 62 6c 65 0a 63 68 61 6e 67 65 2c 20 61 6e 64  ible.change, and
18d0: 20 77 65 20 63 75 72 72 65 6e 74 6c 79 20 68 61   we currently ha
18e0: 76 65 20 6e 6f 20 69 6e 74 65 6e 74 69 6f 6e 20  ve no intention 
18f0: 74 6f 20 73 77 69 74 63 68 20 66 72 6f 6d 20 42  to switch from B
1900: 61 6b 65 66 69 6c 65 20 30 2e 78 2e 0a 0a 4f 6e  akefile 0.x...On
1910: 63 65 20 79 6f 75 20 68 61 76 65 20 61 6c 6c 20  ce you have all 
1920: 74 68 65 20 74 6f 6f 6c 73 20 69 6e 20 70 6c 61  the tools in pla
1930: 63 65 2c 20 79 6f 75 20 63 61 6e 20 62 6f 6f 74  ce, you can boot
1940: 73 74 72 61 70 20 4d 79 53 51 4c 2b 2b 20 77 69  strap MySQL++ wi
1950: 74 68 20 61 0a 42 6f 75 72 6e 65 20 73 68 65 6c  th a.Bourne shel
1960: 6c 20 73 63 72 69 70 74 20 63 61 6c 6c 65 64 20  l script called 
1970: 60 62 6f 6f 74 73 74 72 61 70 60 2c 20 77 68 69  `bootstrap`, whi
1980: 63 68 20 79 6f 75 20 67 65 74 20 61 73 20 70 61  ch you get as pa
1990: 72 74 20 6f 66 20 74 68 65 0a 46 6f 73 73 69 6c  rt of the.Fossil
19a0: 20 63 68 65 63 6b 6f 75 74 2e 20 49 74 27 73 20   checkout. It's 
19b0: 66 61 69 72 6c 79 20 70 6f 77 65 72 66 75 6c 2c  fairly powerful,
19c0: 20 77 69 74 68 20 6d 61 6e 79 20 6f 70 74 69 6f   with many optio
19d0: 6e 73 2e 20 20 46 6f 72 20 6d 6f 73 74 0a 63 61  ns.  For most.ca
19e0: 73 65 73 2c 20 69 74 20 73 75 66 66 69 63 65 73  ses, it suffices
19f0: 20 74 6f 20 6a 75 73 74 20 72 75 6e 20 69 74 20   to just run it 
1a00: 77 69 74 68 6f 75 74 20 61 6e 79 20 61 72 67 75  without any argu
1a10: 6d 65 6e 74 73 3a 0a 0a 20 20 20 20 24 20 2e 2f  ments:..    $ ./
1a20: 62 6f 6f 74 73 74 72 61 70 0a 0a 46 6f 72 20 6d  bootstrap..For m
1a30: 6f 72 65 20 75 6e 75 73 75 61 6c 20 73 69 74 75  ore unusual situ
1a40: 61 74 69 6f 6e 73 2c 20 68 65 72 65 27 73 20 74  ations, here's t
1a50: 68 65 20 63 6f 6d 70 6c 65 74 65 20 75 73 61 67  he complete usag
1a60: 65 3a 0a 0a 20 20 20 20 24 20 2e 2f 62 6f 6f 74  e:..    $ ./boot
1a70: 73 74 72 61 70 20 5b 6e 6f 7b 64 6f 63 2c 65 78  strap [no{doc,ex
1a80: 2c 6c 69 62 2c 6f 70 74 7d 5d 20 5b 70 65 64 61  ,lib,opt}] [peda
1a90: 6e 74 69 63 5d 20 5b 62 61 74 5d 20 5b 63 6f 6e  ntic] [bat] [con
1aa0: 66 69 67 75 72 65 20 66 6c 61 67 73 5d 0a 0a 41  figure flags]..A
1ab0: 72 67 75 6d 65 6e 74 73 3a 0a 0a 2a 20 20 20 60  rguments:..*   `
1ac0: 6e 6f 64 6f 63 60 0a 0a 20 20 20 20 54 68 65 20  nodoc`..    The 
1ad0: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 77 6f  documentation wo
1ae0: 6e 27 74 20 62 65 20 63 6f 6e 73 69 64 65 72 65  n't be considere
1af0: 64 20 61 20 70 72 65 72 65 71 75 69 73 69 74 65  d a prerequisite
1b00: 20 66 6f 72 20 62 75 69 6c 64 69 6e 67 0a 20 20   for building.  
1b10: 20 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69    the distributi
1b20: 6f 6e 20 74 61 72 62 61 6c 6c 2e 20 54 68 69 73  on tarball. This
1b30: 20 69 73 20 75 73 65 66 75 6c 20 6f 6e 20 73 79   is useful on sy
1b40: 73 74 65 6d 73 20 77 68 65 72 65 20 74 68 65 0a  stems where the.
1b50: 20 20 20 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f      documentatio
1b60: 6e 20 64 6f 65 73 6e 27 74 20 62 75 69 6c 64 20  n doesn't build 
1b70: 63 6f 72 72 65 63 74 6c 79 2c 20 61 6e 64 20 79  correctly, and y
1b80: 6f 75 20 6f 6e 6c 79 20 6e 65 65 64 20 74 6f 20  ou only need to 
1b90: 6d 61 6b 65 20 61 0a 20 20 20 20 62 69 6e 61 72  make a.    binar
1ba0: 79 20 52 50 4d 2e 20 54 68 61 74 20 70 72 6f 63  y RPM. That proc
1bb0: 65 73 73 20 72 65 71 75 69 72 65 73 20 61 20 74  ess requires a t
1bc0: 61 72 62 61 6c 6c 2c 20 62 75 74 20 64 6f 65 73  arball, but does
1bd0: 6e 27 74 20 6e 65 65 64 20 74 68 65 0a 20 20 20  n't need the.   
1be0: 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 20   documentation. 
1bf0: 44 6f 6e 27 74 20 64 69 73 74 72 69 62 75 74 65  Don't distribute
1c00: 20 74 68 65 20 74 61 72 62 61 6c 6c 20 6f 72 20   the tarball or 
1c10: 53 52 50 4d 20 74 68 61 74 20 72 65 73 75 6c 74  SRPM that result
1c20: 73 2c 20 61 73 0a 20 20 20 20 74 68 65 79 20 61  s, as.    they a
1c30: 72 65 20 6e 6f 20 67 6f 6f 64 20 66 6f 72 20 61  re no good for a
1c40: 6e 79 20 6f 74 68 65 72 20 70 75 72 70 6f 73 65  ny other purpose
1c50: 2e 0a 0a 2a 20 20 20 60 6e 6f 65 78 60 0a 0a 20  ...*   `noex`.. 
1c60: 20 20 20 54 68 65 20 67 65 6e 65 72 61 74 65 64     The generated
1c70: 20 60 4d 61 6b 65 66 69 6c 65 73 60 20 61 6e 64   `Makefiles` and
1c80: 20 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 77   project files w
1c90: 6f 6e 27 74 20 74 72 79 20 74 6f 20 62 75 69 6c  on't try to buil
1ca0: 64 20 61 6e 79 20 6f 66 0a 20 20 20 20 74 68 65  d any of.    the
1cb0: 20 65 78 61 6d 70 6c 65 73 2e 0a 0a 2a 20 20 20   examples...*   
1cc0: 60 6e 6f 6c 69 62 60 0a 0a 20 20 20 20 54 68 65  `nolib`..    The
1cd0: 20 67 65 6e 65 72 61 74 65 64 20 60 4d 61 6b 65   generated `Make
1ce0: 66 69 6c 65 73 60 20 61 6e 64 20 70 72 6f 6a 65  files` and proje
1cf0: 63 74 20 66 69 6c 65 73 20 77 6f 6e 27 74 20 74  ct files won't t
1d00: 72 79 20 74 6f 20 62 75 69 6c 64 20 74 68 65 0a  ry to build the.
1d10: 20 20 20 20 4d 79 53 51 4c 2b 2b 20 6c 69 62 72      MySQL++ libr
1d20: 61 72 79 2e 0a 0a 2a 20 20 20 60 6e 6f 6d 61 69  ary...*   `nomai
1d30: 6e 74 60 0a 0a 20 20 20 20 54 75 72 6e 20 6f 66  nt`..    Turn of
1d40: 66 20 22 6d 61 69 6e 74 61 69 6e 65 72 20 6d 6f  f "maintainer mo
1d50: 64 65 22 20 73 74 75 66 66 20 69 6e 20 74 68 65  de" stuff in the
1d60: 20 62 75 69 6c 64 2e 20 54 68 65 73 65 20 61 72   build. These ar
1d70: 65 20 66 65 61 74 75 72 65 73 0a 20 20 20 20 75  e features.    u
1d80: 73 65 64 20 6f 6e 6c 79 20 62 79 20 74 68 6f 73  sed only by thos
1d90: 65 20 62 75 69 6c 64 69 6e 67 20 4d 79 53 51 4c  e building MySQL
1da0: 2b 2b 20 66 72 6f 6d 20 46 6f 73 73 69 6c 2e 20  ++ from Fossil. 
1db0: 54 68 65 20 60 64 69 73 74 60 20 62 75 69 6c 64  The `dist` build
1dc0: 0a 20 20 20 20 74 61 72 67 65 74 20 75 73 65 73  .    target uses
1dd0: 20 74 68 69 73 20 77 68 65 6e 20 63 72 65 61 74   this when creat
1de0: 69 6e 67 20 74 68 65 20 74 61 72 62 61 6c 6c 2c  ing the tarball,
1df0: 20 62 65 63 61 75 73 65 20 69 74 20 72 65 64 75   because it redu
1e00: 63 65 73 20 74 68 65 0a 20 20 20 20 62 75 69 6c  ces the.    buil
1e10: 64 20 74 69 6d 65 20 73 6f 6d 65 77 68 61 74 2e  d time somewhat.
1e20: 0a 0a 2a 20 20 20 60 6e 6f 6f 70 74 60 0a 0a 20  ..*   `noopt`.. 
1e30: 20 20 20 43 6f 6d 70 69 6c 65 72 20 6f 70 74 69     Compiler opti
1e40: 6d 69 7a 61 74 69 6f 6e 20 77 69 6c 6c 20 62 65  mization will be
1e50: 20 74 75 72 6e 65 64 20 6f 66 66 2e 20 28 54 68   turned off. (Th
1e60: 69 73 20 63 75 72 72 65 6e 74 6c 79 20 68 61 73  is currently has
1e70: 20 6e 6f 0a 20 20 20 20 65 66 66 65 63 74 20 6f   no.    effect o
1e80: 6e 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 20  n the generated 
1e90: 4d 69 6e 47 57 20 4d 61 6b 65 66 69 6c 65 20 6f  MinGW Makefile o
1ea0: 72 20 74 68 65 20 56 69 73 75 61 6c 20 43 2b 2b  r the Visual C++
1eb0: 20 70 72 6f 6a 65 63 74 0a 20 20 20 20 66 69 6c   project.    fil
1ec0: 65 73 2e 29 0a 0a 2a 20 20 20 60 70 65 64 61 6e  es.)..*   `pedan
1ed0: 74 69 63 60 0a 0a 20 20 20 20 54 75 72 6e 73 20  tic`..    Turns 
1ee0: 6f 6e 20 61 6c 6c 20 6f 66 20 47 43 43 27 73 20  on all of GCC's 
1ef0: 77 61 72 6e 69 6e 67 73 20 61 6e 64 20 70 6f 72  warnings and por
1f00: 74 61 62 69 6c 69 74 79 20 63 68 65 63 6b 73 2e  tability checks.
1f10: 20 20 57 65 20 75 73 65 20 74 68 69 73 0a 20 20    We use this.  
1f20: 20 20 61 73 20 70 61 72 74 20 6f 66 20 6f 75 72    as part of our
1f30: 20 5b 72 65 6c 65 61 73 65 20 70 72 6f 63 65 73   [release proces
1f40: 73 5d 28 2e 2f 52 45 4c 45 41 53 45 2d 43 48 45  s](./RELEASE-CHE
1f50: 43 4b 4c 49 53 54 2e 74 78 74 29 2e 0a 0a 2a 20  CKLIST.txt)...* 
1f60: 20 20 60 62 61 74 60 0a 0a 20 20 20 20 52 75 6e    `bat`..    Run
1f70: 73 20 60 62 6f 6f 74 73 74 72 61 70 2e 62 61 74  s `bootstrap.bat
1f80: 60 20 76 69 61 20 60 63 6d 64 2e 65 78 65 60 20  ` via `cmd.exe` 
1f90: 66 6f 72 20 79 6f 75 2c 20 70 61 73 73 69 6e 67  for you, passing
1fa0: 20 61 6c 6f 6e 67 20 65 71 75 69 76 61 6c 65 6e   along equivalen
1fb0: 74 0a 20 20 20 20 6f 70 74 69 6f 6e 73 20 74 6f  t.    options to
1fc0: 20 61 6e 79 20 6f 66 20 74 68 65 20 22 2a 6e 6f   any of the "*no
1fd0: 2a 22 20 6f 70 74 69 6f 6e 73 20 79 6f 75 20 67  *" options you g
1fe0: 69 76 65 20 62 65 66 6f 72 65 20 69 74 2e 0a 0a  ive before it...
1ff0: 20 20 20 20 4f 6e 6c 79 20 74 68 65 20 22 2a 6e      Only the "*n
2000: 6f 2a 22 20 6f 70 74 69 6f 6e 73 20 61 62 6f 76  o*" options abov
2010: 65 20 68 61 76 65 20 61 6e 20 65 66 66 65 63 74  e have an effect
2020: 20 6f 6e 20 74 68 65 20 67 65 6e 65 72 61 74 65   on the generate
2030: 64 20 62 75 69 6c 64 0a 20 20 20 20 73 79 73 74  d build.    syst
2040: 65 6d 20 66 69 6c 65 73 20 77 68 65 6e 20 79 6f  em files when yo
2050: 75 20 67 69 76 65 20 22 60 62 61 74 60 22 2e 20  u give "`bat`". 
2060: 20 49 6e 20 70 61 72 74 69 63 75 6c 61 72 2c 20   In particular, 
2070: 74 68 65 20 66 69 6c 65 73 0a 20 20 20 20 67 65  the files.    ge
2080: 6e 65 72 61 74 65 64 20 62 79 20 60 62 6f 6f 74  nerated by `boot
2090: 73 74 72 61 70 2e 62 61 74 60 20 6d 61 6b 65 20  strap.bat` make 
20a0: 6e 6f 20 64 69 73 74 69 6e 63 74 69 6f 6e 20 62  no distinction b
20b0: 65 74 77 65 65 6e 20 22 70 65 64 61 6e 74 69 63  etween "pedantic
20c0: 22 0a 20 20 20 20 61 6e 64 20 6e 6f 72 6d 61 6c  ".    and normal
20d0: 20 62 75 69 6c 64 73 2e 0a 0a 20 20 20 20 50 61   builds...    Pa
20e0: 73 73 69 6e 67 20 60 62 61 74 60 20 73 74 6f 70  ssing `bat` stop
20f0: 73 20 61 6c 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69  s all command li
2100: 6e 65 20 70 72 6f 63 65 73 73 69 6e 67 20 69 6e  ne processing in
2110: 20 74 68 65 20 60 62 6f 6f 74 73 74 72 61 70 60   the `bootstrap`
2120: 0a 20 20 20 20 73 63 72 69 70 74 2c 20 73 6f 20  .    script, so 
2130: 69 66 20 79 6f 75 20 61 6c 73 6f 20 70 61 73 73  if you also pass
2140: 20 73 6f 6d 65 20 6f 66 20 74 68 65 20 6f 74 68   some of the oth
2150: 65 72 20 6f 70 74 69 6f 6e 73 2c 20 22 60 62 61  er options, "`ba
2160: 74 60 22 20 6d 75 73 74 0a 20 20 20 20 62 65 20  t`" must.    be 
2170: 6c 61 73 74 2e 0a 20 20 20 20 0a 20 20 20 20 54  last..    .    T
2180: 68 65 20 60 62 6f 6f 74 73 74 72 61 70 2e 62 61  he `bootstrap.ba
2190: 74 60 20 73 63 72 69 70 74 20 69 73 20 75 73 65  t` script is use
21a0: 66 75 6c 20 6f 6e 6c 79 20 77 68 65 6e 20 79 6f  ful only when yo
21b0: 75 20 69 6e 74 65 6e 64 20 74 6f 20 62 75 69 6c  u intend to buil
21c0: 64 0a 20 20 20 20 4d 79 53 51 4c 2b 2b 20 77 69  d.    MySQL++ wi
21d0: 74 68 20 4d 69 6e 47 57 20 6f 72 20 56 69 73 75  th MinGW or Visu
21e0: 61 6c 20 43 2b 2b 2c 20 61 6e 64 20 79 6f 75 20  al C++, and you 
21f0: 61 72 65 20 75 73 69 6e 67 20 43 79 67 77 69 6e  are using Cygwin
2200: 20 6f 6e 6c 79 20 61 73 20 61 0a 20 20 20 20 63   only as a.    c
2210: 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 65 6e 76 69  ommand line envi
2220: 72 6f 6e 6d 65 6e 74 2e 20 20 49 66 20 79 6f 75  ronment.  If you
2230: 20 69 6e 74 65 6e 64 20 74 6f 20 62 75 69 6c 64   intend to build
2240: 20 4d 79 53 51 4c 2b 2b 20 77 69 74 68 0a 20 20   MySQL++ with.  
2250: 20 20 43 79 67 77 69 6e 27 73 20 47 43 43 20 74    Cygwin's GCC t
2260: 6f 6f 6c 63 68 61 69 6e 2c 20 79 6f 75 20 6d 75  oolchain, you mu
2270: 73 74 20 6e 6f 74 20 67 69 76 65 20 74 68 69 73  st not give this
2280: 20 6f 70 74 69 6f 6e 2c 20 65 6c 73 65 20 79 6f   option, else yo
2290: 75 20 77 69 6c 6c 0a 20 20 20 20 6e 6f 74 20 65  u will.    not e
22a0: 6e 64 20 75 70 20 77 69 74 68 20 74 68 65 20 6e  nd up with the n
22b0: 65 63 65 73 73 61 72 79 20 62 75 69 6c 64 20 73  ecessary build s
22c0: 79 73 74 65 6d 20 66 69 6c 65 73 2e 0a 0a 20 20  ystem files...  
22d0: 20 20 4f 6e 65 20 61 64 76 61 6e 74 61 67 65 20    One advantage 
22e0: 6f 66 20 74 68 69 73 20 66 65 61 74 75 72 65 20  of this feature 
22f0: 69 73 20 74 68 61 74 20 74 68 65 20 63 6f 6d 6d  is that the comm
2300: 61 6e 64 73 20 6e 65 63 65 73 73 61 72 79 20 74  ands necessary t
2310: 6f 0a 20 20 20 20 61 63 68 69 65 76 65 20 61 20  o.    achieve a 
2320: 67 69 76 65 6e 20 65 66 66 65 63 74 20 77 69 74  given effect wit
2330: 68 20 60 62 6f 6f 74 73 74 72 61 70 2e 62 61 74  h `bootstrap.bat
2340: 60 20 77 68 65 6e 20 72 75 6e 20 76 69 61 20 60  ` when run via `
2350: 62 6f 6f 74 73 74 72 61 70 60 0a 20 20 20 20 61  bootstrap`.    a
2360: 72 65 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20  re shorter than 
2370: 77 68 65 6e 20 79 6f 75 20 72 75 6e 20 74 68 65  when you run the
2380: 20 62 61 74 63 68 20 66 69 6c 65 20 64 69 72 65   batch file dire
2390: 63 74 6c 79 2e 0a 0a 20 20 20 20 41 6e 6f 74 68  ctly...    Anoth
23a0: 65 72 20 61 64 76 61 6e 74 61 67 65 20 69 73 20  er advantage is 
23b0: 74 68 61 74 20 74 68 69 73 20 6c 6f 77 2d 73 74  that this low-st
23c0: 72 65 6e 67 74 68 20 76 65 72 73 69 6f 6e 20 6f  rength version o
23d0: 66 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70 0a  f the bootstrap.
23e0: 20 20 20 20 73 63 72 69 70 74 20 72 75 6e 73 20      script runs 
23f0: 66 61 73 74 65 72 20 74 68 61 6e 20 74 68 65 20  faster than the 
2400: 66 75 6c 6c 2d 73 74 72 65 6e 67 74 68 20 66 6f  full-strength fo
2410: 72 6d 2c 20 62 65 63 61 75 73 65 20 69 74 20 70  rm, because it p
2420: 72 6f 64 75 63 65 73 0a 20 20 20 20 66 65 77 65  roduces.    fewe
2430: 72 20 66 69 6c 65 73 2e 0a 0a 20 20 20 20 46 69  r files...    Fi
2440: 6e 61 6c 6c 79 2c 20 72 75 6e 6e 69 6e 67 20 60  nally, running `
2450: 62 6f 6f 74 73 74 72 61 70 2e 62 61 74 60 20 69  bootstrap.bat` i
2460: 6e 64 69 72 65 63 74 6c 79 20 6c 69 6b 65 20 74  ndirectly like t
2470: 68 69 73 20 6c 65 74 73 20 79 6f 75 20 61 76 6f  his lets you avo
2480: 69 64 0a 20 20 20 20 75 73 69 6e 67 20 60 63 6d  id.    using `cm
2490: 64 2e 65 78 65 60 2c 20 61 20 63 6f 6d 6d 61 6e  d.exe`, a comman
24a0: 64 20 73 68 65 6c 6c 20 67 72 65 61 74 6c 79 20  d shell greatly 
24b0: 69 6e 66 65 72 69 6f 72 20 74 6f 20 61 6e 79 20  inferior to any 
24c0: 6f 66 20 74 68 6f 73 65 0a 20 20 20 20 61 76 61  of those.    ava
24d0: 69 6c 61 62 6c 65 20 66 6f 72 20 43 79 67 77 69  ilable for Cygwi
24e0: 6e 2e 0a 0a 2a 20 20 20 60 63 6f 6e 66 69 67 75  n...*   `configu
24f0: 72 65 60 20 73 63 72 69 70 74 20 6f 70 74 69 6f  re` script optio
2500: 6e 73 0a 0a 20 20 20 20 41 73 20 73 6f 6f 6e 20  ns..    As soon 
2510: 61 73 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70  as the bootstrap
2520: 20 73 63 72 69 70 74 20 73 65 65 73 20 61 6e 20   script sees an 
2530: 6f 70 74 69 6f 6e 20 74 68 61 74 20 69 74 20 64  option that it d
2540: 6f 65 73 6e 27 74 0a 20 20 20 20 75 6e 64 65 72  oesn't.    under
2550: 73 74 61 6e 64 2c 20 69 74 20 73 74 6f 70 73 20  stand, it stops 
2560: 70 72 6f 63 65 73 73 69 6e 67 20 74 68 65 20 63  processing the c
2570: 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 20 20 41 6e  ommand line.  An
2580: 79 20 73 75 62 73 65 71 75 65 6e 74 0a 20 20 20  y subsequent.   
2590: 20 6f 70 74 69 6f 6e 73 20 61 72 65 20 70 61 73   options are pas
25a0: 73 65 64 20 74 6f 20 74 68 65 20 60 63 6f 6e 66  sed to the `conf
25b0: 69 67 75 72 65 60 20 73 63 72 69 70 74 2e 20 53  igure` script. S
25c0: 65 65 0a 20 20 20 20 5b 52 45 41 44 4d 45 2d 55  ee.    [README-U
25d0: 6e 69 78 2e 74 78 74 5d 5b 72 6d 75 5d 20 66 6f  nix.txt][rmu] fo
25e0: 72 20 6d 6f 72 65 20 6f 6e 20 60 63 6f 6e 66 69  r more on `confi
25f0: 67 75 72 65 60 20 73 63 72 69 70 74 20 6f 70 74  gure` script opt
2600: 69 6f 6e 73 2e 0a 0a 5b 62 66 5d 3a 20 20 68 74  ions...[bf]:  ht
2610: 74 70 3a 2f 2f 62 61 6b 65 66 69 6c 65 2e 6f 72  tp://bakefile.or
2620: 67 2f 0a 5b 72 6d 75 5d 3a 20 68 74 74 70 73 3a  g/.[rmu]: https:
2630: 2f 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f  //tangentsoft.co
2640: 6d 2f 6d 79 73 71 6c 70 70 2f 66 69 6c 65 2f 52  m/mysqlpp/file/R
2650: 45 41 44 4d 45 2d 55 6e 69 78 2e 74 78 74 0a 0a  EADME-Unix.txt..
2660: 0a 23 23 20 3c 61 20 69 64 3d 22 77 69 6e 62 73  .## <a id="winbs
2670: 22 3e 3c 2f 61 3e 42 6f 6f 74 73 74 72 61 70 70  "></a>Bootstrapp
2680: 69 6e 67 20 74 68 65 20 4c 69 62 72 61 72 79 20  ing the Library 
2690: 55 73 69 6e 67 20 4f 6e 6c 79 20 57 69 6e 64 6f  Using Only Windo
26a0: 77 73 0a 0a 54 68 65 20 74 68 69 6e 67 20 74 68  ws..The thing th
26b0: 61 74 20 6d 61 6b 65 73 20 62 6f 6f 74 73 74 72  at makes bootstr
26c0: 61 70 70 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77  apping on Window
26d0: 73 20 64 69 66 66 69 63 75 6c 74 20 69 73 20 74  s difficult is t
26e0: 68 61 74 20 6f 6e 65 20 6f 66 0a 74 68 65 20 72  hat one of.the r
26f0: 65 71 75 69 72 65 64 20 73 74 65 70 73 20 75 73  equired steps us
2700: 65 73 20 61 20 55 6e 69 78 2d 63 65 6e 74 72 69  es a Unix-centri
2710: 63 20 74 6f 6f 6c 2c 20 41 75 74 6f 63 6f 6e 66  c tool, Autoconf
2720: 2e 20 20 54 68 69 73 20 73 65 63 74 69 6f 6e 0a  .  This section.
2730: 67 69 76 65 73 20 61 6c 74 65 72 6e 61 74 69 76  gives alternativ
2740: 65 73 20 66 6f 72 20 65 69 74 68 65 72 20 67 65  es for either ge
2750: 74 74 69 6e 67 20 41 75 74 6f 63 6f 6e 66 20 77  tting Autoconf w
2760: 6f 72 6b 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77  orking on Window
2770: 73 20 6f 72 0a 61 76 6f 69 64 69 6e 67 20 74 68  s or.avoiding th
2780: 65 20 6e 65 65 64 20 66 6f 72 20 69 74 2e 0a 0a  e need for it...
2790: 54 68 65 20 74 68 69 6e 67 20 41 75 74 6f 63 6f  The thing Autoco
27a0: 6e 66 20 64 6f 65 73 20 74 68 61 74 27 73 20 72  nf does that's r
27b0: 65 6c 65 76 61 6e 74 20 74 6f 20 57 69 6e 64 6f  elevant to Windo
27c0: 77 73 20 62 75 69 6c 64 73 20 6f 66 20 4d 79 53  ws builds of MyS
27d0: 51 4c 2b 2b 0a 69 73 20 74 68 61 74 20 69 74 20  QL++.is that it 
27e0: 73 75 62 73 74 69 74 75 74 65 73 20 74 68 65 20  substitutes the 
27f0: 63 75 72 72 65 6e 74 20 4d 79 53 51 4c 2b 2b 20  current MySQL++ 
2800: 76 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 69  version number i
2810: 6e 74 6f 20 73 65 76 65 72 61 6c 0a 73 6f 75 72  nto several.sour
2820: 63 65 20 66 69 6c 65 73 2e 20 54 68 69 73 20 61  ce files. This a
2830: 6c 6c 6f 77 73 20 75 73 20 74 6f 20 63 68 61 6e  llows us to chan
2840: 67 65 20 74 68 65 20 76 65 72 73 69 6f 6e 20 6e  ge the version n
2850: 75 6d 62 65 72 20 69 6e 20 6a 75 73 74 20 6f 6e  umber in just on
2860: 65 0a 70 6c 61 63 65 20 e2 80 94 20 60 63 6f 6e  e.place ... `con
2870: 66 69 67 75 72 65 2e 61 63 60 20 e2 80 94 20 61  figure.ac` ... a
2880: 6e 64 20 68 61 76 65 20 69 74 20 61 70 70 6c 69  nd have it appli
2890: 65 64 20 74 6f 20 61 6c 6c 20 74 68 65 73 65 20  ed to all these 
28a0: 6f 74 68 65 72 20 70 6c 61 63 65 73 2e 0a 55 6e  other places..Un
28b0: 74 69 6c 20 79 6f 75 20 64 6f 20 74 68 69 73 20  til you do this 
28c0: 73 74 65 70 2c 20 61 20 46 6f 73 73 69 6c 20 63  step, a Fossil c
28d0: 68 65 63 6b 6f 75 74 20 6f 66 20 4d 79 53 51 4c  heckout of MySQL
28e0: 2b 2b 20 77 6f 6e 27 74 20 62 75 69 6c 64 2c 0a  ++ won't build,.
28f0: 62 65 63 61 75 73 65 20 74 68 65 73 65 20 66 69  because these fi
2900: 6c 65 73 20 77 69 74 68 20 74 68 65 20 76 65 72  les with the ver
2910: 73 69 6f 6e 20 6e 75 6d 62 65 72 73 20 69 6e 20  sion numbers in 
2920: 74 68 65 6d 20 77 6f 6e 27 74 20 62 65 20 67 65  them won't be ge
2930: 6e 65 72 61 74 65 64 2e 0a 0a 0a 23 23 23 20 4f  nerated....### O
2940: 70 74 69 6f 6e 20 31 3a 20 43 6f 70 79 20 74 68  ption 1: Copy th
2950: 65 20 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65  e generated file
2960: 73 20 6f 76 65 72 20 66 72 6f 6d 20 61 20 72 65  s over from a re
2970: 6c 65 61 73 65 64 20 76 65 72 73 69 6f 6e 0a 0a  leased version..
2980: 4f 6e 6c 79 20 6f 6e 65 20 6f 66 20 74 68 65 73  Only one of thes
2990: 65 20 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65  e generated file
29a0: 73 20 69 73 20 61 62 73 6f 6c 75 74 65 6c 79 20  s is absolutely 
29b0: 63 72 69 74 69 63 61 6c 20 74 6f 20 61 6c 6c 6f  critical to allo
29c0: 77 69 6e 67 0a 4d 79 53 51 4c 2b 2b 20 74 6f 20  wing.MySQL++ to 
29d0: 62 75 69 6c 64 3a 20 60 6c 69 62 2f 6d 79 73 71  build: `lib/mysq
29e0: 6c 2b 2b 2e 68 60 2e 20 53 6f 2c 20 74 68 65 20  l++.h`. So, the 
29f0: 73 69 6d 70 6c 65 73 74 20 6f 70 74 69 6f 6e 20  simplest option 
2a00: 79 6f 75 20 68 61 76 65 20 74 6f 0a 62 6f 6f 74  you have to.boot
2a10: 73 74 72 61 70 20 4d 79 53 51 4c 2b 2b 20 65 6e  strap MySQL++ en
2a20: 74 69 72 65 6c 79 20 6f 6e 20 57 69 6e 64 6f 77  tirely on Window
2a30: 73 20 69 73 20 74 6f 20 63 6f 70 79 20 60 6c 69  s is to copy `li
2a40: 62 2f 6d 79 73 71 6c 2b 2b 2e 68 60 20 6f 76 65  b/mysql++.h` ove
2a50: 72 0a 66 72 6f 6d 20 61 20 72 65 6c 65 61 73 65  r.from a release
2a60: 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 4d 79 53  d version of MyS
2a70: 51 4c 2b 2b 2e 20 57 68 69 6c 65 20 79 6f 75 27  QL++. While you'
2a80: 72 65 20 64 6f 69 6e 67 20 74 68 61 74 2c 20 79  re doing that, y
2a90: 6f 75 20 6d 69 67 68 74 0a 63 6f 70 79 20 6f 76  ou might.copy ov
2aa0: 65 72 20 74 68 65 20 6f 74 68 65 72 20 73 75 63  er the other suc
2ab0: 68 20 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65  h generated file
2ac0: 73 3a 0a 0a 20 20 20 20 69 6e 73 74 61 6c 6c 2e  s:..    install.
2ad0: 68 74 61 0a 20 20 20 20 6d 79 73 71 6c 2b 2b 2e  hta.    mysql++.
2ae0: 73 70 65 63 0a 20 20 20 20 64 6f 63 2f 75 73 65  spec.    doc/use
2af0: 72 6d 61 6e 2f 75 73 65 72 6d 61 6e 2e 64 62 78  rman/userman.dbx
2b00: 0a 20 20 20 20 6c 69 62 2f 44 6f 78 79 66 69 6c  .    lib/Doxyfil
2b10: 65 0a 0a 48 61 76 69 6e 67 20 64 6f 6e 65 20 74  e..Having done t
2b20: 68 61 74 2c 20 79 6f 75 20 63 61 6e 20 63 6f 6d  hat, you can com
2b30: 70 6c 65 74 65 20 74 68 65 20 62 6f 6f 74 73 74  plete the bootst
2b40: 72 61 70 70 69 6e 67 20 70 72 6f 63 65 73 73 20  rapping process 
2b50: 62 79 20 72 75 6e 6e 69 6e 67 0a 60 62 6f 6f 74  by running.`boot
2b60: 73 74 72 61 70 2e 62 61 74 60 2e 20 49 74 20 68  strap.bat`. It h
2b70: 61 73 20 74 68 65 20 73 61 6d 65 20 70 75 72 70  as the same purp
2b80: 6f 73 65 20 61 73 20 74 68 65 20 42 6f 75 72 6e  ose as the Bourn
2b90: 65 20 73 68 65 6c 6c 20 73 63 72 69 70 74 0a 64  e shell script.d
2ba0: 65 73 63 72 69 62 65 64 20 5b 61 62 6f 76 65 5d  escribed [above]
2bb0: 28 23 62 6f 6f 74 73 74 72 61 70 29 2c 20 62 75  (#bootstrap), bu
2bc0: 74 20 77 69 74 68 20 61 20 64 69 66 66 65 72 65  t with a differe
2bd0: 6e 74 20 61 6e 64 20 73 69 6d 70 6c 65 72 20 75  nt and simpler u
2be0: 73 61 67 65 3a 0a 0a 20 20 20 20 43 3a 5c 3e 20  sage:..    C:\> 
2bf0: 62 6f 6f 74 73 74 72 61 70 2e 62 61 74 20 5b 62  bootstrap.bat [b
2c00: 61 6b 65 66 69 6c 65 2d 6f 70 74 69 6f 6e 73 5d  akefile-options]
2c10: 0a 0a 41 6e 79 20 6f 70 74 69 6f 6e 73 20 70 61  ..Any options pa
2c20: 73 73 65 64 20 61 72 65 20 70 61 73 73 65 64 20  ssed are passed 
2c30: 61 73 2d 69 73 20 74 6f 20 42 61 6b 65 66 69 6c  as-is to Bakefil
2c40: 65 2e 20 54 68 69 73 20 69 73 20 6e 6f 72 6d 61  e. This is norma
2c50: 6c 6c 79 20 75 73 65 64 0a 74 6f 20 70 61 73 73  lly used.to pass
2c60: 20 60 2d 44 60 20 6f 70 74 69 6f 6e 73 20 74 6f   `-D` options to
2c70: 20 61 66 66 65 63 74 20 74 68 65 20 67 65 6e 65   affect the gene
2c80: 72 61 74 65 64 20 62 75 69 6c 64 20 73 79 73 74  rated build syst
2c90: 65 6d 20 6f 75 74 70 75 74 20 66 69 6c 65 73 2e  em output files.
2ca0: 0a 0a 0a 23 23 23 20 4f 70 74 69 6f 6e 20 32 3a  ...### Option 2:
2cb0: 20 43 79 67 77 69 6e 0a 0a 49 66 20 79 6f 75 27   Cygwin..If you'
2cc0: 64 20 6c 69 6b 65 20 74 6f 20 68 61 63 6b 20 6f  d like to hack o
2cd0: 6e 20 4d 79 53 51 4c 2b 2b 20 65 6e 74 69 72 65  n MySQL++ entire
2ce0: 6c 79 20 6f 6e 20 57 69 6e 64 6f 77 73 20 61 6e  ly on Windows an
2cf0: 64 20 68 61 76 65 20 61 6c 6c 20 74 68 65 0a 62  d have all the.b
2d00: 75 69 6c 64 20 66 72 65 65 64 6f 6d 73 20 65 6e  uild freedoms en
2d10: 6a 6f 79 65 64 20 62 79 20 74 68 6f 73 65 20 77  joyed by those w
2d20: 6f 72 6b 69 6e 67 20 6f 6e 20 55 6e 69 78 79 20  orking on Unixy 
2d30: 70 6c 61 74 66 6f 72 6d 73 2c 20 74 68 65 20 73  platforms, the s
2d40: 69 6d 70 6c 65 73 74 0a 73 6f 6c 75 74 69 6f 6e  implest.solution
2d50: 20 69 73 20 70 72 6f 62 61 62 6c 79 20 74 6f 20   is probably to 
2d60: 5b 69 6e 73 74 61 6c 6c 20 43 79 67 77 69 6e 5d  [install Cygwin]
2d70: 5b 63 79 67 5d 2e 20 49 74 20 64 6f 65 73 6e e2  [cyg]. It doesn.
2d80: 80 99 74 20 6d 61 74 74 65 72 20 77 68 65 74 68  ..t matter wheth
2d90: 65 72 0a 79 6f 75 20 75 73 65 20 74 68 65 20 33  er.you use the 3
2da0: 32 2d 62 69 74 20 6f 72 20 36 34 2d 62 69 74 20  2-bit or 64-bit 
2db0: 76 65 72 73 69 6f 6e 2c 20 66 6f 72 20 6f 75 72  version, for our
2dc0: 20 70 75 72 70 6f 73 65 73 20 68 65 72 65 2e 0a   purposes here..
2dd0: 0a 57 68 69 6c 65 20 69 6e 20 74 68 65 20 43 79  .While in the Cy
2de0: 67 77 69 6e 20 73 65 74 75 70 20 70 72 6f 67 72  gwin setup progr
2df0: 61 6d 2c 20 79 6f 75 20 77 69 6c 6c 20 68 61 76  am, you will hav
2e00: 65 20 74 6f 20 61 64 64 20 74 68 65 20 41 75 74  e to add the Aut
2e10: 6f 63 6f 6e 66 20 61 6e 64 0a 50 65 72 6c 20 35  oconf and.Perl 5
2e20: 20 70 61 63 6b 61 67 65 73 2c 20 77 68 69 63 68   packages, which
2e30: 20 61 72 65 6e 27 74 20 69 6e 73 74 61 6c 6c 65   aren't installe
2e40: 64 20 69 6e 20 43 79 67 77 69 6e 20 62 79 20 64  d in Cygwin by d
2e50: 65 66 61 75 6c 74 2e 20 20 41 75 74 6f 63 6f 6e  efault.  Autocon
2e60: 66 0a 69 73 20 69 6e 20 74 68 65 20 44 65 76 65  f.is in the Deve
2e70: 6c 20 63 61 74 65 67 6f 72 79 2c 20 61 6e 64 20  l category, and 
2e80: 50 65 72 6c 20 35 20 69 6e 20 74 68 65 20 49 6e  Perl 5 in the In
2e90: 74 65 72 70 72 65 74 65 72 73 20 63 61 74 65 67  terpreters categ
2ea0: 6f 72 79 2e 0a 0a 59 6f 75 20 77 69 6c 6c 20 61  ory...You will a
2eb0: 6c 73 6f 20 6e 65 65 64 20 74 6f 20 69 6e 73 74  lso need to inst
2ec0: 61 6c 6c 20 74 68 65 20 6e 61 74 69 76 65 20 57  all the native W
2ed0: 69 6e 64 6f 77 73 20 62 69 6e 61 72 79 20 76 65  indows binary ve
2ee0: 72 73 69 6f 6e 20 6f 66 0a 5b 42 61 6b 65 66 69  rsion of.[Bakefi
2ef0: 6c 65 5d 28 68 74 74 70 3a 2f 2f 62 61 6b 65 66  le](http://bakef
2f00: 69 6c 65 2e 6f 72 67 2f 29 2e 20 20 44 6f 6e 27  ile.org/).  Don'
2f10: 74 20 67 65 74 20 74 68 65 20 73 6f 75 72 63 65  t get the source
2f20: 20 76 65 72 73 69 6f 6e 20 61 6e 64 20 74 72 79   version and try
2f30: 0a 74 6f 20 62 75 69 6c 64 20 42 61 6b 65 66 69  .to build Bakefi
2f40: 6c 65 20 75 6e 64 65 72 20 43 79 67 77 69 6e 3b  le under Cygwin;
2f50: 20 69 74 20 77 6f 6e 27 74 20 77 6f 72 6b 2e 20   it won't work. 
2f60: 54 68 65 20 57 69 6e 64 6f 77 73 20 62 69 6e 61  The Windows bina
2f70: 72 79 0a 76 65 72 73 69 6f 6e 20 6f 66 20 42 61  ry.version of Ba
2f80: 6b 65 66 69 6c 65 20 69 6e 63 6c 75 64 65 73 20  kefile includes 
2f90: 61 6e 20 65 6d 62 65 64 64 65 64 20 76 65 72 73  an embedded vers
2fa0: 69 6f 6e 20 6f 66 20 50 79 74 68 6f 6e 2c 20 73  ion of Python, s
2fb0: 6f 20 79 6f 75 20 77 6f 6e 27 74 0a 6e 65 65 64  o you won't.need
2fc0: 20 74 6f 20 69 6e 73 74 61 6c 6c 20 43 79 67 77   to install Cygw
2fd0: 69 6e 27 73 20 50 79 74 68 6f 6e 2e 0a 0a 48 61  in's Python...Ha
2fe0: 76 69 6e 67 20 64 6f 6e 65 20 61 6c 6c 20 74 68  ving done all th
2ff0: 69 73 2c 20 79 6f 75 20 63 61 6e 20 66 6f 6c 6c  is, you can foll
3000: 6f 77 20 74 68 65 20 55 6e 69 78 20 62 6f 6f 74  ow the Unix boot
3010: 73 74 72 61 70 70 69 6e 67 0a 69 6e 73 74 72 75  strapping.instru
3020: 63 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 70 72  ctions in the pr
3030: 65 76 69 6f 75 73 20 73 65 63 74 69 6f 6e 2e 0a  evious section..
3040: 0a 5b 63 79 67 5d 3a 20 68 74 74 70 3a 2f 2f 63  .[cyg]: http://c
3050: 79 67 77 69 6e 2e 63 6f 6d 2f 0a 0a 0a 23 23 23  ygwin.com/...###
3060: 20 4f 70 74 69 6f 6e 20 33 3a 20 57 69 6e 64 6f   Option 3: Windo
3070: 77 73 20 53 75 62 73 79 73 74 65 6d 20 66 6f 72  ws Subsystem for
3080: 20 4c 69 6e 75 78 20 28 57 53 4c 29 0a 0a 49 66   Linux (WSL)..If
3090: 20 79 6f 75 e2 80 99 72 65 20 6f 6e 20 57 69 6e   you...re on Win
30a0: 64 6f 77 73 20 31 30 2c 20 79 6f 75 20 68 61 76  dows 10, you hav
30b0: 65 20 74 68 65 20 6f 70 74 69 6f 6e 20 6f 66 20  e the option of 
30c0: 5b 69 6e 73 74 61 6c 6c 69 6e 67 20 57 53 4c 5d  [installing WSL]
30d0: 5b 77 73 6c 5d 2c 20 61 0a 6c 69 67 68 74 77 65  [wsl], a.lightwe
30e0: 69 67 68 74 20 4c 69 6e 75 78 20 6b 65 72 6e 65  ight Linux kerne
30f0: 6c 20 61 6e 64 20 75 73 65 72 20 65 6e 76 69 72  l and user envir
3100: 6f 6e 6d 65 6e 74 20 74 68 61 74 20 72 75 6e 73  onment that runs
3110: 20 61 74 6f 70 20 57 69 6e 64 6f 77 73 2e 0a 54   atop Windows..T
3120: 68 69 73 20 69 73 20 66 75 6e 64 61 6d 65 6e 74  his is fundament
3130: 61 6c 6c 79 20 64 69 66 66 65 72 65 6e 74 20 74  ally different t
3140: 65 63 68 6e 6f 6c 6f 67 79 20 74 68 61 6e 20 43  echnology than C
3150: 79 67 77 69 6e 2c 20 62 75 74 20 74 68 65 0a 75  ygwin, but the.u
3160: 73 65 72 2d 6c 65 76 65 6c 20 65 66 66 65 63 74  ser-level effect
3170: 20 6f 66 20 69 74 20 69 73 20 74 68 65 20 73 61   of it is the sa
3180: 6d 65 20 61 73 20 66 61 72 20 61 73 20 4d 79 53  me as far as MyS
3190: 51 4c 2b 2b e2 80 99 73 20 62 75 69 6c 64 20 73  QL++...s build s
31a0: 79 73 74 65 6d 0a 67 6f 65 73 2e 0a 0a 41 73 73  ystem.goes...Ass
31b0: 75 6d 69 6e 67 20 79 6f 75 20 75 73 65 20 74 68  uming you use th
31c0: 65 20 64 65 66 61 75 6c 74 20 55 62 75 6e 74 75  e default Ubuntu
31d0: 20 65 6e 76 69 72 6f 6d 65 6e 74 20 61 74 6f 70   enviroment atop
31e0: 20 57 53 4c 2c 20 74 68 65 20 5b 73 74 61 6e 64   WSL, the [stand
31f0: 61 72 64 0a 62 6f 6f 74 73 74 72 61 70 70 69 6e  ard.bootstrappin
3200: 67 20 70 72 6f 63 65 73 73 5d 28 23 62 6f 6f 74  g process](#boot
3210: 73 74 72 61 70 29 20 61 70 70 6c 69 65 73 2c 20  strap) applies, 
3220: 61 66 74 65 72 20 79 6f 75 20 69 6e 73 74 61 6c  after you instal
3230: 6c 20 74 68 65 20 6e 65 65 64 65 64 0a 74 6f 6f  l the needed.too
3240: 6c 73 3a 0a 0a 20 20 20 20 24 20 61 70 74 20 69  ls:..    $ apt i
3250: 6e 73 74 61 6c 6c 20 62 61 6b 65 66 69 6c 65 20  nstall bakefile 
3260: 62 75 69 6c 64 2d 65 73 73 65 6e 74 69 61 6c 20  build-essential 
3270: 70 65 72 6c 20 6c 69 62 6d 79 73 71 6c 63 6c 69  perl libmysqlcli
3280: 65 6e 74 2d 64 65 76 0a 0a 5b 77 73 6c 5d 3a 20  ent-dev..[wsl]: 
3290: 68 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 6d 69 63  https://docs.mic
32a0: 72 6f 73 6f 66 74 2e 63 6f 6d 2f 65 6e 2d 75 73  rosoft.com/en-us
32b0: 2f 77 69 6e 64 6f 77 73 2f 77 73 6c 2f 69 6e 73  /windows/wsl/ins
32c0: 74 61 6c 6c 2d 77 69 6e 31 30 0a 0a 0a 23 23 23  tall-win10...###
32d0: 20 4f 70 74 69 6f 6e 20 34 3a 20 5b 22 48 65 72   Option 4: ["Her
32e0: 65 27 73 20 61 20 6e 69 63 6b 65 6c 2c 20 6b 69  e's a nickel, ki
32f0: 64 2c 20 67 65 74 20 79 6f 75 72 73 65 6c 66 20  d, get yourself 
3300: 61 20 62 65 74 74 65 72 20 63 6f 6d 70 75 74 65  a better compute
3310: 72 2e 22 5d 5b 64 63 5d 0a 0a 46 69 6e 61 6c 6c  r."][dc]..Finall
3320: 79 2c 20 79 6f 75 20 6d 69 67 68 74 20 68 61 76  y, you might hav
3330: 65 20 61 63 63 65 73 73 20 74 6f 20 61 20 55 6e  e access to a Un
3340: 69 78 79 20 73 79 73 74 65 6d 2c 20 6f 72 20 74  ixy system, or t
3350: 68 65 20 61 62 69 6c 69 74 79 20 74 6f 20 73 65  he ability to se
3360: 74 0a 6f 6e 65 20 75 70 2e 20 59 6f 75 20 64 6f  t.one up. You do
3370: 6e 27 74 20 65 76 65 6e 20 6e 65 65 64 20 61 20  n't even need a 
3380: 73 65 70 61 72 61 74 65 20 70 68 79 73 69 63 61  separate physica
3390: 6c 20 63 6f 6d 70 75 74 65 72 2c 20 6e 6f 77 20  l computer, now 
33a0: 74 68 61 74 0a 76 69 72 74 75 61 6c 20 6d 61 63  that.virtual mac
33b0: 68 69 6e 65 20 74 65 63 68 6f 6c 6f 67 79 20 69  hine techology i
33c0: 73 20 66 72 65 65 2e 0a 0a 47 69 76 65 6e 20 73  s free...Given s
33d0: 75 63 68 20 61 20 6d 61 63 68 69 6e 65 2c 20 79  uch a machine, y
33e0: 6f 75 27 64 20 64 6f 20 74 68 65 20 46 6f 73 73  ou'd do the Foss
33f0: 69 6c 20 63 68 65 63 6b 6f 75 74 20 6f 66 20 4d  il checkout of M
3400: 79 53 51 4c 2b 2b 20 6f 6e 20 74 68 61 74 0a 6d  ySQL++ on that.m
3410: 61 63 68 69 6e 65 2c 20 74 68 65 6e 20 62 6f 6f  achine, then boo
3420: 74 73 74 72 61 70 20 69 74 20 74 68 65 72 65 20  tstrap it there 
3430: 75 73 69 6e 67 20 74 68 65 20 69 6e 73 74 72 75  using the instru
3440: 63 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 70 72  ctions in the pr
3450: 65 76 69 6f 75 73 0a 73 65 63 74 69 6f 6e 2c 20  evious.section, 
3460: 61 6e 64 20 63 6f 70 79 20 74 68 65 20 67 65 6e  and copy the gen
3470: 65 72 61 74 65 64 20 66 69 6c 65 73 20 62 61 63  erated files bac
3480: 6b 20 74 6f 20 74 68 65 20 57 69 6e 64 6f 77 73  k to the Windows
3490: 20 62 6f 78 2e 0a 0a 5b 64 63 5d 3a 20 68 74 74   box...[dc]: htt
34a0: 70 3a 2f 2f 74 6f 6d 61 79 6b 6f 2e 63 6f 6d 2f  p://tomayko.com/
34b0: 77 72 69 74 69 6e 67 73 2f 74 68 61 74 2d 64 69  writings/that-di
34c0: 6c 62 65 72 74 2d 63 61 72 74 6f 6f 6e 0a 0a 0a  lbert-cartoon...
34d0: 23 23 20 4f 6e 20 4d 61 6e 69 70 75 6c 61 74 69  ## On Manipulati
34e0: 6e 67 20 74 68 65 20 42 75 69 6c 64 20 53 79 73  ng the Build Sys
34f0: 74 65 6d 20 53 6f 75 72 63 65 20 46 69 6c 65 73  tem Source Files
3500: 0a 0a 4f 6e 65 20 6f 66 20 74 68 65 20 74 68 69  ..One of the thi
3510: 6e 67 73 20 74 68 65 20 62 6f 6f 74 73 74 72 61  ngs the bootstra
3520: 70 70 69 6e 67 20 73 79 73 74 65 6d 20 64 65 73  pping system des
3530: 63 72 69 62 65 64 20 5b 61 62 6f 76 65 5d 28 23  cribed [above](#
3540: 62 6f 6f 74 73 74 72 61 70 29 0a 64 6f 65 73 20  bootstrap).does 
3550: 69 73 20 70 72 6f 64 75 63 65 73 20 76 61 72 69  is produces vari
3560: 6f 75 73 20 74 79 70 65 73 20 6f 66 20 70 72 6f  ous types of pro
3570: 6a 65 63 74 20 61 6e 64 20 6d 61 6b 65 20 66 69  ject and make fi
3580: 6c 65 73 20 66 72 6f 6d 20 61 20 73 6d 61 6c 6c  les from a small
3590: 0a 6e 75 6d 62 65 72 20 6f 66 20 73 6f 75 72 63  .number of sourc
35a0: 65 20 66 69 6c 65 73 2e 20 54 68 69 73 20 73 79  e files. This sy
35b0: 73 74 65 6d 20 6c 65 74 73 20 75 73 20 73 75 70  stem lets us sup
35c0: 70 6f 72 74 20 6d 61 6e 79 20 70 6c 61 74 66 6f  port many platfo
35d0: 72 6d 73 0a 77 69 74 68 6f 75 74 20 68 61 76 69  rms.without havi
35e0: 6e 67 20 74 6f 20 6d 61 69 6e 74 61 69 6e 20 73  ng to maintain s
35f0: 65 70 61 72 61 74 65 20 62 75 69 6c 64 20 73 79  eparate build sy
3600: 73 74 65 6d 20 66 69 6c 65 73 20 66 6f 72 20 65  stem files for e
3610: 61 63 68 0a 70 6c 61 74 66 6f 72 6d 2e 0a 0a 5b  ach.platform...[
3620: 42 61 6b 65 66 69 6c 65 5d 28 68 74 74 70 3a 2f  Bakefile](http:/
3630: 2f 62 61 6b 65 66 69 6c 65 2e 6f 72 67 2f 29 20  /bakefile.org/) 
3640: 70 72 6f 64 75 63 65 73 20 6d 6f 73 74 20 6f 66  produces most of
3650: 20 74 68 65 73 65 20 70 72 6f 6a 65 63 74 20 61   these project a
3660: 6e 64 20 6d 61 6b 65 0a 66 69 6c 65 73 20 66 72  nd make.files fr
3670: 6f 6d 20 61 20 73 69 6e 67 6c 65 20 73 6f 75 72  om a single sour
3680: 63 65 20 66 69 6c 65 20 63 61 6c 6c 65 64 20 5b  ce file called [
3690: 60 6d 79 73 71 6c 2b 2b 2e 62 6b 6c 60 5d 5b 62  `mysql++.bkl`][b
36a0: 6b 6c 5d 2e 0a 0a 45 78 63 65 70 74 20 66 6f 72  kl]...Except for
36b0: 20 73 6d 61 6c 6c 20 6c 6f 63 61 6c 20 63 68 61   small local cha
36c0: 6e 67 65 73 2c 20 69 74 27 73 20 62 65 73 74 20  nges, it's best 
36d0: 74 6f 20 63 68 61 6e 67 65 20 60 6d 79 73 71 6c  to change `mysql
36e0: 2b 2b 2e 62 6b 6c 60 20 61 6e 64 0a 22 72 65 2d  ++.bkl` and."re-
36f0: 62 61 6b 65 22 20 74 68 65 20 70 72 6f 6a 65 63  bake" the projec
3700: 74 20 61 6e 64 20 6d 61 6b 65 20 66 69 6c 65 73  t and make files
3710: 20 72 61 74 68 65 72 20 74 68 61 6e 20 63 68 61   rather than cha
3720: 6e 67 65 20 74 68 6f 73 65 20 66 69 6c 65 73 0a  nge those files.
3730: 64 69 72 65 63 74 6c 79 2e 20 59 6f 75 20 63 61  directly. You ca
3740: 6e 20 64 6f 20 74 68 69 73 20 77 69 74 68 20 74  n do this with t
3750: 68 65 20 62 6f 6f 74 73 74 72 61 70 20 73 63 72  he bootstrap scr
3760: 69 70 74 73 20 63 6f 76 65 72 65 64 20 61 62 6f  ipts covered abo
3770: 76 65 2e 20 4f 6e 0a 57 69 6e 64 6f 77 73 2c 20  ve. On.Windows, 
3780: 69 66 20 61 6c 6c 20 79 6f 75 27 76 65 20 63 68  if all you've ch
3790: 61 6e 67 65 64 20 69 73 20 60 6d 79 73 71 6c 2b  anged is `mysql+
37a0: 2b 2e 62 6b 6c 60 2c 20 79 6f 75 20 63 61 6e 20  +.bkl`, you can 
37b0: 75 73 65 0a 60 72 65 62 61 6b 65 2e 62 61 74 60  use.`rebake.bat`
37c0: 20 69 6e 73 74 65 61 64 2c 20 77 68 69 63 68 20   instead, which 
37d0: 64 6f 65 73 6e 27 74 20 74 72 79 20 74 6f 20 64  doesn't try to d
37e0: 6f 20 61 73 20 6d 75 63 68 20 61 73 0a 60 62 6f  o as much as.`bo
37f0: 6f 74 73 74 72 61 70 2e 62 61 74 60 2e 0a 0a 42  otstrap.bat`...B
3800: 61 6b 65 66 69 6c 65 20 70 72 6f 64 75 63 65 73  akefile produces
3810: 20 66 69 6e 69 73 68 65 64 20 70 72 6f 6a 65 63   finished projec
3820: 74 20 66 69 6c 65 73 20 66 6f 72 20 56 69 73 75  t files for Visu
3830: 61 6c 20 43 2b 2b 20 61 6e 64 20 58 63 6f 64 65  al C++ and Xcode
3840: 20 61 6e 64 0a 66 69 6e 69 73 68 65 64 20 60 4d   and.finished `M
3850: 61 6b 65 66 69 6c 65 73 60 20 66 6f 72 20 4d 69  akefiles` for Mi
3860: 6e 47 57 2e 20 49 74 20 61 6c 73 6f 20 70 72 6f  nGW. It also pro
3870: 64 75 63 65 73 20 60 4d 61 6b 65 66 69 6c 65 2e  duces `Makefile.
3880: 69 6e 60 2c 20 77 68 69 63 68 20 69 73 0a 69 6e  in`, which is.in
3890: 70 75 74 20 74 6f 20 47 4e 55 20 41 75 74 6f 63  put to GNU Autoc
38a0: 6f 6e 66 20 61 6c 6f 6e 67 20 77 69 74 68 20 60  onf along with `
38b0: 63 6f 6e 66 69 67 75 72 65 2e 61 63 60 20 61 6e  configure.ac` an
38c0: 64 20 60 63 6f 6e 66 69 67 2f 2a 60 2e 20 59 6f  d `config/*`. Yo
38d0: 75 20 6d 61 79 0a 6e 65 65 64 20 74 6f 20 63 68  u may.need to ch
38e0: 61 6e 67 65 20 74 68 65 73 65 20 6c 61 74 74 65  ange these latte
38f0: 72 20 66 69 6c 65 73 20 69 6e 20 61 64 64 69 74  r files in addit
3900: 69 6f 6e 20 74 6f 20 6f 72 20 69 6e 73 74 65 61  ion to or instea
3910: 64 20 6f 66 0a 60 6d 79 73 71 6c 2b 2b 2e 62 6b  d of.`mysql++.bk
3920: 6c 60 20 74 6f 20 67 65 74 20 74 68 65 20 65 66  l` to get the ef
3930: 66 65 63 74 20 79 6f 75 20 77 61 6e 74 2e 20 20  fect you want.  
3940: 52 75 6e 6e 69 6e 67 20 62 6f 6f 74 73 74 72 61  Running bootstra
3950: 70 0a 69 6e 63 6f 72 70 6f 72 61 74 65 73 20 63  p.incorporates c
3960: 68 61 6e 67 65 73 20 74 6f 20 61 6c 6c 20 6f 66  hanges to all of
3970: 20 74 68 65 73 65 20 66 69 6c 65 73 20 69 6e 20   these files in 
3980: 74 68 65 20 47 4e 55 20 41 75 74 6f 63 6f 6e 66  the GNU Autoconf
3990: 20 6f 75 74 70 75 74 2e 0a 0a 57 68 69 6c 65 20   output...While 
39a0: 42 61 6b 65 66 69 6c 65 27 73 20 64 6f 63 75 6d  Bakefile's docum
39b0: 65 6e 74 61 74 69 6f 6e 20 69 73 6e 27 74 20 61  entation isn't a
39c0: 73 20 63 6f 6d 70 72 65 68 65 6e 73 69 76 65 20  s comprehensive 
39d0: 61 73 20 69 74 0a 6f 75 67 68 74 20 74 6f 20 62  as it.ought to b
39e0: 65 2c 20 79 6f 75 20 63 61 6e 20 61 74 20 6c 65  e, you can at le
39f0: 61 73 74 20 63 6f 75 6e 74 20 6f 6e 20 69 74 20  ast count on it 
3a00: 74 6f 20 6c 69 73 74 20 61 6c 6c 20 6f 66 20 74  to list all of t
3a10: 68 65 0a 61 76 61 69 6c 61 62 6c 65 20 66 65 61  he.available fea
3a20: 74 75 72 65 73 2e 20 53 6f 2c 20 69 66 20 79 6f  tures. So, if yo
3a30: 75 20 63 61 6e 27 74 20 73 65 65 20 61 20 77 61  u can't see a wa
3a40: 79 20 74 6f 20 6d 61 6b 65 20 42 61 6b 65 66 69  y to make Bakefi
3a50: 6c 65 0a 64 6f 20 73 6f 6d 65 74 68 69 6e 67 2c  le.do something,
3a60: 20 69 74 27 73 20 6c 69 6b 65 6c 79 20 69 74 20   it's likely it 
3a70: 6a 75 73 74 20 63 61 6e 27 74 20 64 6f 20 69 74  just can't do it
3a80: 2e 20 42 61 6b 65 66 69 6c 65 20 69 73 20 61 0a  . Bakefile is a.
3a90: 68 69 67 68 2d 6c 65 76 65 6c 20 61 62 73 74 72  high-level abstr
3aa0: 61 63 74 69 6f 6e 20 6f 66 20 62 75 69 6c 64 20  action of build 
3ab0: 73 79 73 74 65 6d 73 20 69 6e 20 67 65 6e 65 72  systems in gener
3ac0: 61 6c 2c 20 73 6f 20 69 74 27 6c 6c 20 6e 65 76  al, so it'll nev
3ad0: 65 72 0a 73 75 70 70 6f 72 74 20 61 6c 6c 20 74  er.support all t
3ae0: 68 65 20 70 61 72 74 69 63 75 6c 61 72 73 20 6f  he particulars o
3af0: 66 20 65 76 65 72 79 20 6f 64 64 20 62 75 69 6c  f every odd buil
3b00: 64 20 73 79 73 74 65 6d 20 6f 75 74 20 74 68 65  d system out the
3b10: 72 65 2e 0a 0a 5b 62 6b 6c 5d 3a 20 68 74 74 70  re...[bkl]: http
3b20: 73 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e  s://tangentsoft.
3b30: 63 6f 6d 2f 6d 79 73 71 6c 70 70 2f 66 69 6c 65  com/mysqlpp/file
3b40: 2f 6d 79 73 71 6c 25 32 42 25 32 42 2e 62 6b 6c  /mysql%2B%2B.bkl
3b50: 0a 0a 0a 3c 61 20 69 64 3d 22 70 61 74 63 68 65  ...<a id="patche
3b60: 73 22 3e 3c 2f 61 3e 0a 23 23 20 53 75 62 6d 69  s"></a>.## Submi
3b70: 74 74 69 6e 67 20 50 61 74 63 68 65 73 0a 0a 49  tting Patches..I
3b80: 66 20 79 6f 75 20 77 69 73 68 20 74 6f 20 73 75  f you wish to su
3b90: 62 6d 69 74 20 61 20 70 61 74 63 68 20 74 6f 20  bmit a patch to 
3ba0: 74 68 65 20 6c 69 62 72 61 72 79 2c 20 69 74 e2  the library, it.
3bb0: 80 99 73 20 70 72 6f 62 61 62 6c 79 20 73 69 6d  ..s probably sim
3bc0: 70 6c 65 73 74 20 74 6f 0a 70 61 73 74 65 20 69  plest to.paste i
3bd0: 74 20 69 6e 74 6f 20 61 20 5b 66 6f 72 75 6d 20  t into a [forum 
3be0: 70 6f 73 74 5d 5b 66 6f 72 5d 2c 20 69 66 20 69  post][for], if i
3bf0: 74 e2 80 99 73 20 73 6d 61 6c 6c 2e 20 49 66 20  t...s small. If 
3c00: 69 74 e2 80 99 73 20 6c 61 72 67 65 2c 20 70 75  it...s large, pu
3c10: 74 20 69 74 0a 69 6e 20 50 61 73 74 65 62 69 6e  t it.in Pastebin
3c20: 20 6f 72 20 73 69 6d 69 6c 61 72 2c 20 74 68 65   or similar, the
3c30: 6e 20 6c 69 6e 6b 20 74 6f 20 69 74 20 66 72 6f  n link to it fro
3c40: 6d 20 61 20 66 6f 72 75 6d 20 70 6f 73 74 2e 20  m a forum post. 
3c50: 20 57 65 20 77 61 6e 74 0a 70 61 74 63 68 65 73   We want.patches
3c60: 20 69 6e 20 75 6e 69 66 69 65 64 20 64 69 66 66   in unified diff
3c70: 20 66 6f 72 6d 61 74 2e 0a 0a 57 65 20 77 69 6c   format...We wil
3c80: 6c 20 61 6c 73 6f 20 61 63 63 65 70 74 20 74 72  l also accept tr
3c90: 69 76 69 61 6c 20 70 61 74 63 68 65 73 20 6e 6f  ivial patches no
3ca0: 74 20 6e 65 65 64 69 6e 67 20 64 69 73 63 75 73  t needing discus
3cb0: 73 69 6f 6e 20 61 73 20 74 65 78 74 0a 6f 72 20  sion as text.or 
3cc0: 61 74 74 61 63 68 6d 65 6e 74 73 20 74 6f 20 5b  attachments to [
3cd0: 61 20 46 6f 73 73 69 6c 20 74 69 63 6b 65 74 5d  a Fossil ticket]
3ce0: 5b 74 6b 74 5d 2e 0a 0a 54 68 65 20 65 61 73 69  [tkt]...The easi
3cf0: 65 73 74 20 77 61 79 20 74 6f 20 67 65 74 20 61  est way to get a
3d00: 20 75 6e 69 66 69 65 64 20 64 69 66 66 20 69 73   unified diff is
3d10: 20 74 6f 20 63 68 65 63 6b 20 6f 75 74 20 61 20   to check out a 
3d20: 63 6f 70 79 20 6f 66 20 74 68 65 0a 63 75 72 72  copy of the.curr
3d30: 65 6e 74 20 4d 79 53 51 4c 2b 2b 20 74 72 65 65  ent MySQL++ tree
3d40: 20 5b 61 73 20 64 65 73 63 72 69 62 65 64 20 61   [as described a
3d50: 62 6f 76 65 5d 28 23 72 65 70 6f 29 2e 20 54 68  bove](#repo). Th
3d60: 65 6e 20 6d 61 6b 65 20 79 6f 75 72 20 63 68 61  en make your cha
3d70: 6e 67 65 2c 0a 60 63 64 60 20 74 6f 20 74 68 65  nge,.`cd` to the
3d80: 20 4d 79 53 51 4c 2b 2b 20 72 6f 6f 74 20 64 69   MySQL++ root di
3d90: 72 65 63 74 6f 72 79 2c 20 61 6e 64 20 61 73 6b  rectory, and ask
3da0: 20 46 6f 73 73 69 6c 20 74 6f 20 67 65 6e 65 72   Fossil to gener
3db0: 61 74 65 20 74 68 65 20 70 61 74 63 68 0a 66 6f  ate the patch.fo
3dc0: 72 20 79 6f 75 3a 0a 0a 20 20 20 20 24 20 66 6f  r you:..    $ fo
3dd0: 73 73 69 6c 20 64 69 66 66 20 3e 20 6d 79 63 68  ssil diff > mych
3de0: 61 6e 67 65 2e 70 61 74 63 68 0a 0a 49 66 20 79  ange.patch..If y
3df0: 6f 75 72 20 70 61 74 63 68 20 61 64 64 73 20 6e  our patch adds n
3e00: 65 77 20 66 69 6c 65 73 2c 20 6d 6f 76 65 73 20  ew files, moves 
3e10: 66 69 6c 65 73 2c 20 6f 72 20 6e 65 65 64 73 20  files, or needs 
3e20: 74 6f 20 62 65 20 75 6e 64 65 72 73 74 6f 6f 64  to be understood
3e30: 20 69 6e 0a 74 65 72 6d 73 20 6f 66 20 6d 75 6c   in.terms of mul
3e40: 74 69 70 6c 65 20 63 68 65 63 6b 69 6e 73 2c 20  tiple checkins, 
3e50: 69 74 27 73 20 62 65 73 74 20 74 6f 20 64 6f 20  it's best to do 
3e60: 74 68 61 74 20 77 6f 72 6b 20 6f 6e 20 61 20 5b  that work on a [
3e70: 70 72 69 76 61 74 65 0a 6c 6f 63 61 6c 20 62 72  private.local br
3e80: 61 6e 63 68 5d 28 23 70 72 69 76 61 74 65 29 2c  anch](#private),
3e90: 20 74 68 65 6e 20 73 65 6e 64 20 61 20 5b 62 75   then send a [bu
3ea0: 6e 64 6c 65 5d 5b 66 62 5d 20 69 6e 73 74 65 61  ndle][fb] instea
3eb0: 64 20 6f 66 20 61 20 70 61 74 63 68 2e 0a 0a 49  d of a patch...I
3ec0: 66 20 79 6f 75 27 76 65 20 73 65 6e 74 20 70 61  f you've sent pa
3ed0: 74 63 68 65 73 20 74 6f 20 4d 79 53 51 4c 2b 2b  tches to MySQL++
3ee0: 20 62 65 66 6f 72 65 20 61 6e 64 20 64 6f 6e 27   before and don'
3ef0: 74 20 68 61 76 65 20 61 20 46 6f 73 73 69 6c 0a  t have a Fossil.
3f00: 64 65 76 65 6c 6f 70 65 72 20 6c 6f 67 69 6e 2c  developer login,
3f10: 20 61 6e 6f 74 68 65 72 20 61 6c 74 65 72 6e 61   another alterna
3f20: 74 69 76 65 20 69 73 20 74 6f 20 61 73 6b 20 66  tive is to ask f
3f30: 6f 72 20 61 20 6c 6f 67 69 6e 20 62 65 66 6f 72  or a login befor
3f40: 65 20 79 6f 75 0a 62 65 67 69 6e 20 77 6f 72 6b  e you.begin work
3f50: 20 73 6f 20 74 68 61 74 20 79 6f 75 72 20 63 68   so that your ch
3f60: 61 6e 67 65 73 20 61 72 65 20 61 75 74 6f 6d 61  anges are automa
3f70: 74 69 63 61 6c 6c 79 20 73 79 6e 63 27 64 20 74  tically sync'd t
3f80: 6f 20 74 68 65 20 6d 61 69 6e 0a 46 6f 73 73 69  o the main.Fossi
3f90: 6c 20 72 65 70 6f 73 69 74 6f 72 79 20 61 73 20  l repository as 
3fa0: 79 6f 75 20 77 6f 72 6b 2c 20 73 6f 20 79 6f 75  you work, so you
3fb0: 20 64 6f 6e 27 74 20 68 61 76 65 20 74 6f 20 73   don't have to s
3fc0: 65 6e 64 20 62 75 6e 64 6c 65 73 20 6f 72 0a 70  end bundles or.p
3fd0: 61 74 63 68 20 66 69 6c 65 73 2e 20 57 65 20 67  atch files. We g
3fe0: 65 6e 65 72 61 6c 6c 79 20 64 6f 6e 27 74 20 72  enerally don't r
3ff0: 65 66 75 73 65 20 73 75 63 68 20 72 65 71 75 65  efuse such reque
4000: 73 74 73 20 69 66 20 79 6f 75 27 76 65 20 61 6c  sts if you've al
4010: 72 65 61 64 79 0a 70 72 6f 76 65 6e 20 79 6f 75  ready.proven you
4020: 72 20 61 62 69 6c 69 74 79 20 74 6f 20 77 6f 72  r ability to wor
4030: 6b 20 70 72 6f 64 75 63 74 69 76 65 6c 79 20 77  k productively w
4040: 69 74 68 20 74 68 65 20 4d 79 53 51 4c 2b 2b 20  ith the MySQL++ 
4050: 70 72 6f 6a 65 63 74 2e 0a 0a 49 66 20 79 6f 75  project...If you
4060: 27 72 65 20 6d 61 6b 69 6e 67 20 61 20 70 61 74  're making a pat
4070: 63 68 20 61 67 61 69 6e 73 74 20 61 20 4d 79 53  ch against a MyS
4080: 51 4c 2b 2b 20 64 69 73 74 72 69 62 75 74 69 6f  QL++ distributio
4090: 6e 20 74 61 72 62 61 6c 6c 2c 20 74 68 65 6e 0a  n tarball, then.
40a0: 79 6f 75 20 63 61 6e 20 67 65 6e 65 72 61 74 65  you can generate
40b0: 20 61 20 70 61 74 63 68 20 74 68 69 73 20 77 61   a patch this wa
40c0: 79 3a 0a 0a 20 20 20 20 24 20 64 69 66 66 20 2d  y:..    $ diff -
40d0: 72 75 4e 20 6d 79 73 71 6c 2b 2b 2d 6f 6c 64 64  ruN mysql++-oldd
40e0: 69 72 20 6d 79 73 71 6c 2b 2b 2d 6e 65 77 64 69  ir mysql++-newdi
40f0: 72 20 3e 20 6d 79 63 68 61 6e 67 65 2e 70 61 74  r > mychange.pat
4100: 63 68 0a 0a 54 68 65 20 60 64 69 66 66 60 20 63  ch..The `diff` c
4110: 6f 6d 6d 61 6e 64 20 69 73 20 70 61 72 74 20 6f  ommand is part o
4120: 66 20 65 76 65 72 79 20 55 6e 69 78 20 61 6e 64  f every Unix and
4130: 20 4c 69 6e 75 78 20 73 79 73 74 65 6d 2c 20 61   Linux system, a
4140: 6e 64 20 73 68 6f 75 6c 64 20 62 65 0a 69 6e 73  nd should be.ins
4150: 74 61 6c 6c 65 64 20 62 79 20 64 65 66 61 75 6c  talled by defaul
4160: 74 2e 20 49 66 20 79 6f 75 27 72 65 20 6f 6e 20  t. If you're on 
4170: 61 20 57 69 6e 64 6f 77 73 20 6d 61 63 68 69 6e  a Windows machin
4180: 65 2c 20 47 4e 55 20 64 69 66 66 20 69 73 20 70  e, GNU diff is p
4190: 61 72 74 0a 6f 66 20 5b 43 79 67 77 69 6e 5d 28  art.of [Cygwin](
41a0: 68 74 74 70 3a 2f 2f 63 79 67 77 69 6e 2e 63 6f  http://cygwin.co
41b0: 6d 2f 29 2e 20 46 6f 73 73 69 6c 20 69 73 20 61  m/). Fossil is a
41c0: 6c 73 6f 20 61 76 61 69 6c 61 62 6c 65 20 66 6f  lso available fo
41d0: 72 20 61 6c 6c 20 6f 66 0a 74 68 65 73 65 20 73  r all of.these s
41e0: 79 73 74 65 6d 73 2e 20 54 68 65 72 65 20 61 72  ystems. There ar
41f0: 65 20 6e 6f 20 65 78 63 75 73 65 73 20 66 6f 72  e no excuses for
4200: 20 6e 6f 74 20 62 65 69 6e 67 20 61 62 6c 65 20   not being able 
4210: 74 6f 20 6d 61 6b 65 20 75 6e 69 66 69 65 64 0a  to make unified.
4220: 64 69 66 66 73 2e 20 3a 29 0a 0a 41 6c 74 68 6f  diffs. :)..Altho
4230: 75 67 68 20 4d 79 53 51 4c 2b 2b 20 64 6f 65 73  ugh MySQL++ does
4240: 20 68 61 76 65 20 61 20 5b 47 69 74 48 75 62 20   have a [GitHub 
4250: 6d 69 72 72 6f 72 5d 5b 67 68 6d 5d 2c 20 77 65  mirror][ghm], we
4260: 20 64 6f 20 6e 6f 74 20 61 63 63 63 65 70 74 20   do not acccept 
4270: 50 52 73 0a 76 69 61 20 74 68 61 74 20 63 68 61  PRs.via that cha
4280: 6e 6e 65 6c 2c 20 62 65 63 61 75 73 65 20 74 68  nnel, because th
4290: 65 20 6d 69 72 72 6f 72 20 69 73 20 72 65 61 64  e mirror is read
42a0: 2d 6f 6e 6c 79 2e 20 59 6f 75 20 63 61 6e 20 73  -only. You can s
42b0: 74 69 6c 6c 20 73 65 6e 64 20 75 73 0a 61 20 50  till send us.a P
42c0: 52 20 74 68 72 6f 75 67 68 20 47 69 74 48 75 62  R through GitHub
42d0: 2c 20 62 75 74 20 72 65 61 6c 69 7a 65 20 74 68  , but realize th
42e0: 61 74 20 77 68 61 74 e2 80 99 73 20 67 6f 69 6e  at what...s goin
42f0: 67 20 74 6f 20 68 61 70 70 65 6e 20 6f 6e 20 74  g to happen on t
4300: 68 65 20 62 61 63 6b 0a 65 6e 64 20 69 73 20 74  he back.end is t
4310: 68 61 74 20 77 65 e2 80 99 6c 6c 20 67 65 6e 65  hat we...ll gene
4320: 72 61 74 65 20 61 20 70 61 74 63 68 20 61 6e 64  rate a patch and
4330: 20 61 70 70 6c 79 20 69 74 20 74 6f 20 74 68 65   apply it to the
4340: 20 46 6f 73 73 69 6c 20 72 65 70 6f 20 62 79 0a   Fossil repo by.
4350: 68 61 6e 64 2c 20 74 68 65 6e 20 75 70 64 61 74  hand, then updat
4360: 65 20 74 68 65 20 6d 69 72 72 6f 72 2c 20 73 6f  e the mirror, so
4370: 20 79 6f 75 20 77 6f 6e e2 80 99 74 20 67 65 74   you won...t get
4380: 20 47 69 74 48 75 62 20 63 72 65 64 69 74 20 66   GitHub credit f
4390: 6f 72 20 74 68 65 20 50 52 2e 0a 53 6f 72 72 79  or the PR..Sorry
43a0: 3b 20 74 68 65 72 65 e2 80 99 73 20 6e 6f 20 65  ; there...s no e
43b0: 61 73 79 20 77 61 79 20 66 6f 72 20 74 68 69 73  asy way for this
43c0: 20 6d 69 72 72 6f 72 69 6e 67 20 73 79 73 74 65   mirroring syste
43d0: 6d 20 74 6f 20 61 63 63 65 70 74 0a 63 6f 6e 74  m to accept.cont
43e0: 72 69 62 75 74 69 6f 6e 73 20 62 61 63 6b 20 74  ributions back t
43f0: 68 65 20 6f 74 68 65 72 20 64 69 72 65 63 74 69  he other directi
4400: 6f 6e 2e 20 49 66 20 79 6f 75 20 77 61 6e 74 20  on. If you want 
4410: 63 72 65 64 69 74 20 66 6f 72 20 74 68 65 0a 63  credit for the.c
4420: 6f 6d 6d 69 74 2c 20 61 73 6b 20 75 73 20 66 6f  ommit, ask us fo
4430: 72 20 61 6e 20 61 63 63 6f 75 6e 74 20 6f 6e 20  r an account on 
4440: 74 68 65 20 46 6f 73 73 69 6c 20 72 65 70 6f 2c  the Fossil repo,
4450: 20 61 6e 64 20 63 6f 6d 6d 69 74 20 69 74 20 74   and commit it t
4460: 68 65 72 65 0a 69 6e 73 74 65 61 64 2e 0a 0a 5b  here.instead...[
4470: 66 62 5d 3a 20 20 68 74 74 70 3a 2f 2f 66 6f 73  fb]:  http://fos
4480: 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f 66 6f 73 73  sil-scm.org/foss
4490: 69 6c 2f 68 65 6c 70 3f 63 6d 64 3d 62 75 6e 64  il/help?cmd=bund
44a0: 6c 65 0a 5b 74 6b 74 5d 3a 20 68 74 74 70 73 3a  le.[tkt]: https:
44b0: 2f 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f  //tangentsoft.co
44c0: 6d 2f 6d 79 73 71 6c 70 70 2f 74 6b 74 6e 65 77  m/mysqlpp/tktnew
44d0: 0a 0a 0a 23 23 20 54 68 65 20 4d 79 53 51 4c 2b  ...## The MySQL+
44e0: 2b 20 43 6f 64 65 20 53 74 79 6c 65 0a 0a 45 76  + Code Style..Ev
44f0: 65 72 79 20 63 6f 64 65 20 62 61 73 65 20 73 68  ery code base sh
4500: 6f 75 6c 64 20 68 61 76 65 20 61 20 63 6f 6d 6d  ould have a comm
4510: 6f 6e 20 63 6f 64 65 20 73 74 79 6c 65 2e 20 4c  on code style. L
4520: 6f 76 65 20 69 74 20 6f 72 0a 68 61 74 65 20 69  ove it or.hate i
4530: 74 2c 20 68 65 72 65 20 61 72 65 20 4d 79 53 51  t, here are MySQ
4540: 4c 2b 2b 27 73 20 63 75 72 72 65 6e 74 20 63 6f  L++'s current co
4550: 64 65 20 73 74 79 6c 65 20 72 75 6c 65 73 3a 0a  de style rules:.
4560: 0a 0a 23 23 23 20 53 6f 75 72 63 65 20 43 6f 64  ..### Source Cod
4570: 65 0a 0a 46 69 6c 65 20 74 79 70 65 73 3a 20 60  e..File types: `
4580: 61 63 60 2c 20 60 63 70 70 60 2c 20 60 68 60 2c  ac`, `cpp`, `h`,
4590: 20 60 69 6e 60 2c 20 60 6d 34 60 2c 20 60 70 6c   `in`, `m4`, `pl
45a0: 60 0a 0a 2d 20 20 20 54 61 62 73 20 66 6f 72 20  `..-   Tabs for 
45b0: 69 6e 64 65 6e 74 73 2c 20 73 69 7a 65 20 34 0a  indents, size 4.
45c0: 0a 2d 20 20 20 55 6e 69 78 20 6c 69 6e 65 20 65  .-   Unix line e
45d0: 6e 64 69 6e 67 73 2e 20 41 6e 79 20 64 65 63 65  ndings. Any dece
45e0: 6e 74 20 70 72 6f 67 72 61 6d 6d 65 72 27 73 20  nt programmer's 
45f0: 65 64 69 74 6f 72 20 63 61 6e 20 63 6f 70 65 20  editor can cope 
4600: 77 69 74 68 0a 20 20 20 20 74 68 69 73 2c 20 65  with.    this, e
4610: 76 65 6e 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0a  ven on Windows..
4620: 0a 2d 20 20 20 43 2f 43 2b 2b 20 72 75 6c 65 73  .-   C/C++ rules
4630: 3a 0a 0a 20 20 20 20 2d 20 20 20 42 61 73 65 20  :..    -   Base 
4640: 77 68 69 74 65 73 70 61 63 65 20 73 74 79 6c 65  whitespace style
4650: 20 69 73 20 41 54 26 54 69 73 68 3a 20 4b 26 52   is AT&Tish: K&R
4660: 2f 53 74 72 6f 75 73 74 72 75 70 2c 20 70 6c 75  /Stroustrup, plu
4670: 73 20 61 20 6c 69 74 74 6c 65 0a 20 20 20 20 20  s a little.     
4680: 20 20 20 6c 6f 63 61 6c 20 73 70 69 63 65 2e 20     local spice. 
4690: 49 66 20 79 6f 75 20 68 61 76 65 20 74 68 65 20  If you have the 
46a0: 69 6e 64 65 6e 74 28 31 29 20 70 72 6f 67 72 61  indent(1) progra
46b0: 6d 2c 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 69  m, the command i
46c0: 73 3a 0a 0a 20 20 20 20 20 20 20 20 20 20 20 20  s:..            
46d0: 69 6e 64 65 6e 74 20 2d 6b 72 20 2d 6e 63 65 20  indent -kr -nce 
46e0: 2d 63 6c 69 34 20 2d 73 73 20 2d 64 69 31 20 2d  -cli4 -ss -di1 -
46f0: 70 73 6c 20 2d 74 73 34 20 46 49 4c 45 53 2e 2e  psl -ts4 FILES..
4700: 2e 0a 0a 20 20 20 20 20 20 20 20 54 68 61 74 20  ...        That 
4710: 69 73 2c 20 64 6f 6e 27 74 20 63 75 64 64 6c 65  is, don't cuddle
4720: 20 65 6c 73 65 2c 20 69 6e 64 65 6e 74 20 63 61   else, indent ca
4730: 73 65 20 73 74 61 74 65 6d 65 6e 74 20 6c 61 62  se statement lab
4740: 65 6c 73 2c 20 73 70 61 63 65 0a 20 20 20 20 20  els, space.     
4750: 20 20 20 62 65 66 6f 72 65 20 73 65 6d 69 63 6f     before semico
4760: 6c 6f 6e 20 77 69 74 68 20 65 6d 70 74 79 20 6c  lon with empty l
4770: 6f 6f 70 20 62 6f 64 79 2c 20 6e 6f 20 65 78 74  oop body, no ext
4780: 72 61 20 73 70 61 63 65 20 62 65 74 77 65 65 6e  ra space between
4790: 20 61 0a 20 20 20 20 20 20 20 20 76 61 72 69 61   a.        varia
47a0: 62 6c 65 20 74 79 70 65 20 61 6e 64 20 6e 61 6d  ble type and nam
47b0: 65 2c 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20  e, return value 
47c0: 6f 66 20 66 75 6e 63 74 69 6f 6e 20 6f 6e 20 73  of function on s
47d0: 65 70 61 72 61 74 65 0a 20 20 20 20 20 20 20 20  eparate.        
47e0: 6c 69 6e 65 20 66 72 6f 6d 20 72 65 73 74 20 6f  line from rest o
47f0: 66 20 64 65 66 69 6e 69 74 69 6f 6e 2e 0a 0a 20  f definition... 
4800: 20 20 20 2d 20 20 20 43 6c 61 73 73 20 6e 61 6d     -   Class nam
4810: 65 73 20 61 72 65 20 69 6e 20 60 43 61 6d 65 6c  es are in `Camel
4820: 43 61 73 65 60 2c 20 75 70 70 65 72 63 61 73 65  Case`, uppercase
4830: 64 20 66 69 72 73 74 20 6c 65 74 74 65 72 0a 0a  d first letter..
4840: 20 20 20 20 2d 20 20 20 4d 65 74 68 6f 64 20 6e      -   Method n
4850: 61 6d 65 73 20 61 72 65 20 69 6e 20 60 61 6c 6c  ames are in `all
4860: 5f 6c 6f 77 65 72 5f 63 61 73 65 5f 77 69 74 68  _lower_case_with
4870: 5f 75 6e 64 65 72 73 63 6f 72 65 73 28 29 60 3b  _underscores()`;
4880: 0a 20 20 20 20 20 20 20 20 64 69 74 74 6f 20 6d  .        ditto m
4890: 6f 73 74 20 6f 74 68 65 72 20 67 6c 6f 62 61 6c  ost other global
48a0: 20 73 79 6d 62 6f 6c 73 2e 0a 0a 20 20 20 20 2d   symbols...    -
48b0: 20 20 20 4d 61 63 72 6f 20 6e 61 6d 65 73 20 61     Macro names a
48c0: 72 65 20 69 6e 20 60 41 4c 4c 5f 55 50 50 45 52  re in `ALL_UPPER
48d0: 43 41 53 45 5f 57 49 54 48 5f 55 4e 44 45 52 53  CASE_WITH_UNDERS
48e0: 43 4f 52 45 53 60 0a 0a 20 20 20 20 2d 20 20 20  CORES`..    -   
48f0: 44 6f 78 79 67 65 6e 20 63 6f 6d 6d 65 6e 74 20  Doxygen comment 
4900: 66 6f 72 20 61 6c 6c 20 70 75 62 6c 69 63 20 64  for all public d
4910: 65 63 6c 61 72 61 74 69 6f 6e 73 2c 20 75 6e 6c  eclarations, unl
4920: 65 73 73 20 74 68 65 72 65 20 69 73 20 61 0a 20  ess there is a. 
4930: 20 20 20 20 20 20 20 76 65 72 79 20 67 6f 6f 64         very good
4940: 20 72 65 61 73 6f 6e 20 74 6f 20 6b 65 65 70 20   reason to keep 
4950: 74 68 65 20 74 68 69 6e 67 20 75 6e 64 6f 63 75  the thing undocu
4960: 6d 65 6e 74 65 64 2e 0a 0a 2d 20 20 20 50 65 72  mented...-   Per
4970: 6c 20 61 6e 64 20 73 68 65 6c 6c 20 73 63 72 69  l and shell scri
4980: 70 74 20 72 75 6c 65 73 20 61 72 65 20 6d 6f 72  pt rules are mor
4990: 65 20 6f 72 20 6c 65 73 73 20 74 68 65 20 73 61  e or less the sa
49a0: 6d 65 20 61 73 20 66 6f 72 20 43 2f 43 2b 2b 2c  me as for C/C++,
49b0: 0a 20 20 20 20 74 6f 20 74 68 65 20 65 78 74 65  .    to the exte
49c0: 6e 74 20 74 68 69 73 20 6d 61 6b 65 73 20 73 65  nt this makes se
49d0: 6e 73 65 2e 0a 0a 0a 23 23 23 20 58 4d 4c 2f 48  nse....### XML/H
49e0: 54 4d 4c 20 44 69 61 6c 65 63 74 73 0a 0a 46 69  TML Dialects..Fi
49f0: 6c 65 20 74 79 70 65 73 3a 20 60 62 6b 6c 60 2c  le types: `bkl`,
4a00: 20 60 64 62 78 60 2c 20 60 68 74 61 60 0a 0a 2d   `dbx`, `hta`..-
4a10: 20 20 20 53 70 61 63 65 73 20 66 6f 72 20 69 6e     Spaces for in
4a20: 64 65 6e 74 73 2c 20 73 69 7a 65 20 32 2e 20 53  dents, size 2. S
4a30: 68 61 6c 6c 6f 77 20 69 6e 64 65 6e 74 73 20 64  hallow indents d
4a40: 75 65 20 74 6f 20 74 68 65 20 68 69 67 68 20 6c  ue to the high l
4a50: 65 76 65 6c 20 6f 66 0a 20 20 20 20 6e 65 73 74  evel of.    nest
4a60: 69 6e 67 20 6f 63 63 75 72 72 69 6e 67 20 69 6e  ing occurring in
4a70: 20 73 75 63 68 20 66 69 6c 65 73 2c 20 61 6e 64   such files, and
4a80: 20 73 70 61 63 65 73 20 62 65 63 61 75 73 65 20   spaces because 
4a90: 74 68 65 79 27 72 65 20 6e 6f 74 20 61 73 0a 20  they're not as. 
4aa0: 20 20 20 61 6e 6e 6f 79 69 6e 67 20 61 74 20 73     annoying at s
4ab0: 68 61 6c 6c 6f 77 20 69 6e 64 65 6e 74 20 6c 65  hallow indent le
4ac0: 76 65 6c 73 20 69 6e 20 65 64 69 74 6f 72 73 20  vels in editors 
4ad0: 74 68 61 74 20 64 6f 6e 27 74 20 74 72 65 61 74  that don't treat
4ae0: 20 73 70 61 63 65 0a 20 20 20 20 69 6e 64 65 6e   space.    inden
4af0: 74 73 20 6c 69 6b 65 20 74 61 62 73 2e 0a 0a 2d  ts like tabs...-
4b00: 20 20 20 55 6e 69 78 20 6c 69 6e 65 20 65 6e 64     Unix line end
4b10: 69 6e 67 73 2e 20 41 67 61 69 6e 2c 20 74 68 65  ings. Again, the
4b20: 73 65 20 61 72 65 20 69 6e 74 65 6e 64 65 64 20  se are intended 
4b30: 74 6f 20 62 65 20 76 69 65 77 65 64 20 69 6e 20  to be viewed in 
4b40: 61 0a 20 20 20 20 70 72 6f 67 72 61 6d 6d 65 72  a.    programmer
4b50: 27 73 20 74 65 78 74 20 65 64 69 74 6f 72 2c 20  's text editor, 
4b60: 77 68 69 63 68 20 73 68 6f 75 6c 64 20 77 6f 72  which should wor
4b70: 6b 20 77 69 74 68 20 55 6e 69 78 20 6c 69 6e 65  k with Unix line
4b80: 20 65 6e 64 69 6e 67 73 0a 20 20 20 20 6e 6f 20   endings.    no 
4b90: 6d 61 74 74 65 72 20 74 68 65 20 70 6c 61 74 66  matter the platf
4ba0: 6f 72 6d 2e 0a 0a 0a 23 23 23 20 50 6c 61 69 6e  orm....### Plain
4bb0: 20 54 65 78 74 20 46 69 6c 65 73 0a 0a 46 69 6c   Text Files..Fil
4bc0: 65 20 74 79 70 65 73 3a 20 60 74 78 74 60 0a 0a  e types: `txt`..
4bd0: 2d 20 20 20 53 70 61 63 65 73 20 66 6f 72 20 69  -   Spaces for i
4be0: 6e 64 65 6e 74 73 2c 20 73 69 7a 65 20 34 2e 20  ndents, size 4. 
4bf0: 53 70 61 63 65 73 20 62 65 63 61 75 73 65 20 73  Spaces because s
4c00: 75 63 68 20 66 69 6c 65 73 20 61 72 65 20 6f 66  uch files are of
4c10: 74 65 6e 0a 20 20 20 20 76 69 65 77 65 64 20 69  ten.    viewed i
4c20: 6e 20 4e 6f 74 65 70 61 64 20 61 6e 64 20 73 69  n Notepad and si
4c30: 6d 69 6c 61 72 6c 79 20 63 72 69 70 70 6c 65 64  milarly crippled
4c40: 20 74 65 78 74 20 65 64 69 74 6f 72 73 20 77 68   text editors wh
4c50: 69 63 68 20 75 73 65 20 61 0a 20 20 20 20 64 65  ich use a.    de
4c60: 66 61 75 6c 74 20 69 6e 64 65 6e 74 20 6c 65 76  fault indent lev
4c70: 65 6c 20 6f 66 20 38 2e 0a 0a 2d 20 20 20 44 4f  el of 8...-   DO
4c80: 53 20 6c 69 6e 65 20 65 6e 64 69 6e 67 73 2c 20  S line endings, 
4c90: 61 67 61 69 6e 20 66 6f 72 20 74 68 65 20 4e 6f  again for the No
4ca0: 74 65 70 61 64 20 72 65 61 73 6f 6e 2e 20 41 6e  tepad reason. An
4cb0: 64 20 6f 6e 20 6d 6f 64 65 72 6e 20 55 6e 69 78  d on modern Unix
4cc0: 79 0a 20 20 20 20 70 6c 61 74 66 6f 72 6d 73 2c  y.    platforms,
4cd0: 20 74 68 65 20 74 6f 6f 6c 73 20 63 6f 70 65 20   the tools cope 
4ce0: 77 69 74 68 20 44 4f 53 20 6c 69 6e 65 20 65 6e  with DOS line en
4cf0: 64 69 6e 67 73 20 72 65 61 73 6f 6e 61 62 6c 79  dings reasonably
4d00: 20 77 65 6c 6c 2e 0a 20 20 20 20 42 65 74 74 65   well..    Bette
4d10: 72 20 74 68 61 6e 20 74 68 65 20 63 6f 6e 76 65  r than the conve
4d20: 72 73 65 2c 20 61 6e 79 77 61 79 2e 0a 0a 0a 57  rse, anyway....W
4d30: 68 65 6e 20 69 6e 20 64 6f 75 62 74 2c 20 6d 69  hen in doubt, mi
4d40: 6d 69 63 20 77 68 61 74 20 79 6f 75 20 73 65 65  mic what you see
4d50: 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20   in the current 
4d60: 63 6f 64 65 2e 20 57 68 65 6e 20 73 74 69 6c 6c  code. When still
4d70: 20 69 6e 0a 64 6f 75 62 74 2c 20 61 73 6b 20 6f   in.doubt, ask o
4d80: 6e 20 5b 74 68 65 20 66 6f 72 75 6d 5d 5b 66 6f  n [the forum][fo
4d90: 72 5d 2e 0a 0a 0a 23 23 20 54 65 73 74 69 6e 67  r]....## Testing
4da0: 20 59 6f 75 72 20 50 72 6f 70 6f 73 65 64 20 43   Your Proposed C
4db0: 68 61 6e 67 65 0a 0a 4d 79 53 51 4c 2b 2b 20 69  hange..MySQL++ i
4dc0: 6e 63 6c 75 64 65 73 20 61 20 73 65 6c 66 2d 74  ncludes a self-t
4dd0: 65 73 74 20 6d 65 63 68 61 6e 69 73 6d 20 63 61  est mechanism ca
4de0: 6c 6c 65 64 20 60 64 74 65 73 74 60 2e 20 49 74  lled `dtest`. It
4df0: 27 73 20 61 20 42 6f 75 72 6e 65 0a 73 68 65 6c  's a Bourne.shel
4e00: 6c 20 73 63 72 69 70 74 2c 20 72 75 6e 20 6d 75  l script, run mu
4e10: 63 68 20 6c 69 6b 65 20 60 65 78 72 75 6e 60 3a  ch like `exrun`:
4e20: 0a 0a 20 20 20 20 24 20 2e 2f 64 74 65 73 74 20  ..    $ ./dtest 
4e30: 5b 2d 73 20 73 65 72 76 65 72 5f 61 64 64 72 5d  [-s server_addr]
4e40: 20 5b 2d 75 20 75 73 65 72 5d 20 5b 2d 70 20 70   [-u user] [-p p
4e50: 61 73 73 77 6f 72 64 5d 0a 0a 54 68 69 73 20 61  assword]..This a
4e60: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 72 75 6e  utomatically run
4e70: 73 20 6d 6f 73 74 20 6f 66 20 74 68 65 20 65 78  s most of the ex
4e80: 61 6d 70 6c 65 73 2c 20 63 61 70 74 75 72 65 73  amples, captures
4e90: 20 74 68 65 20 6f 75 74 70 75 74 73 20 74 6f 20   the outputs to 
4ea0: 61 0a 66 69 6c 65 2c 20 61 6e 64 20 74 68 65 6e  a.file, and then
4eb0: 20 63 6f 6d 70 61 72 65 73 20 74 68 61 74 20 74   compares that t
4ec0: 6f 20 61 20 6b 6e 6f 77 6e 2d 67 6f 6f 64 20 72  o a known-good r
4ed0: 75 6e 27 73 20 6f 75 74 70 75 74 73 2c 20 73 74  un's outputs, st
4ee0: 6f 72 65 64 20 69 6e 0a 60 62 6d 61 72 6b 2e 74  ored in.`bmark.t
4ef0: 78 74 60 2e 20 53 6f 2c 20 62 65 66 6f 72 65 20  xt`. So, before 
4f00: 79 6f 75 20 73 75 62 6d 69 74 20 61 20 70 61 74  you submit a pat
4f10: 63 68 2c 20 72 75 6e 20 60 64 74 65 73 74 60 20  ch, run `dtest` 
4f20: 74 6f 20 73 65 65 20 69 66 0a 61 6e 79 74 68 69  to see if.anythi
4f30: 6e 67 20 68 61 73 20 63 68 61 6e 67 65 64 2e 20  ng has changed. 
4f40: 49 66 20 73 6f 6d 65 74 68 69 6e 67 20 68 61 73  If something has
4f50: 20 61 6e 64 20 79 6f 75 20 63 61 6e 27 74 20 61   and you can't a
4f60: 63 63 6f 75 6e 74 20 66 6f 72 20 69 74 2c 20 69  ccount for it, i
4f70: 74 0a 72 65 70 72 65 73 65 6e 74 73 20 61 20 70  t.represents a p
4f80: 72 6f 62 6c 65 6d 20 74 68 61 74 20 79 6f 75 27  roblem that you'
4f90: 6c 6c 20 68 61 76 65 20 74 6f 20 66 69 78 20 62  ll have to fix b
4fa0: 65 66 6f 72 65 20 73 75 62 6d 69 74 74 69 6e 67  efore submitting
4fb0: 20 74 68 65 0a 70 61 74 63 68 2e 20 49 66 20 69   the.patch. If i
4fc0: 74 20 67 69 76 65 73 20 61 6e 20 65 78 70 65 63  t gives an expec
4fd0: 74 65 64 20 63 68 61 6e 67 65 2c 20 72 65 6d 6f  ted change, remo
4fe0: 76 65 20 60 62 6d 61 72 6b 2e 74 78 74 60 2c 20  ve `bmark.txt`, 
4ff0: 72 65 2d 72 75 6e 0a 60 64 74 65 73 74 60 2c 20  re-run.`dtest`, 
5000: 61 6e 64 20 69 6e 63 6c 75 64 65 20 74 68 65 20  and include the 
5010: 60 62 6d 61 72 6b 2e 74 78 74 60 20 64 69 66 66  `bmark.txt` diff
5020: 73 20 69 6e 20 79 6f 75 72 20 70 61 74 63 68 2e  s in your patch.
5030: 20 54 68 69 73 0a 63 6f 6d 6d 75 6e 69 63 61 74   This.communicat
5040: 65 73 20 74 6f 20 75 73 20 74 68 65 20 66 61 63  es to us the fac
5050: 74 20 74 68 61 74 20 79 6f 75 20 6b 6e 6f 77 20  t that you know 
5060: 74 68 65 72 65 20 61 72 65 20 64 69 66 66 65 72  there are differ
5070: 65 6e 63 65 73 20 61 6e 64 20 77 61 6e 74 0a 74  ences and want.t
5080: 68 65 20 70 61 74 63 68 20 65 76 61 6c 75 61 74  he patch evaluat
5090: 65 64 20 61 6e 79 77 61 79 2e 20 4f 74 68 65 72  ed anyway. Other
50a0: 77 69 73 65 2c 20 77 65 20 61 72 65 20 6c 69 6b  wise, we are lik
50b0: 65 6c 79 20 74 6f 20 76 69 65 77 20 74 68 65 20  ely to view the 
50c0: 63 68 61 6e 67 65 0a 61 73 20 61 20 62 75 67 2e  change.as a bug.
50d0: 0a 0a 60 64 74 65 73 74 60 20 61 6c 73 6f 20 72  ..`dtest` also r
50e0: 75 6e 73 20 61 6c 6c 20 6f 66 20 74 68 65 20 75  uns all of the u
50f0: 6e 69 74 20 74 65 73 74 73 20 69 6e 20 60 74 65  nit tests in `te
5100: 73 74 2f 2a 60 2e 20 54 68 65 20 70 75 72 70 6f  st/*`. The purpo
5110: 73 65 20 6f 66 0a 60 74 65 73 74 2f 2a 60 20 69  se of.`test/*` i
5120: 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  s different from
5130: 20 74 68 61 74 20 6f 66 20 60 65 78 61 6d 70 6c   that of `exampl
5140: 65 73 2f 2a 60 3a 0a 0a 2d 20 20 20 60 74 65 73  es/*`:..-   `tes
5150: 74 2f 2a 60 20 61 72 65 20 75 6e 69 74 20 74 65  t/*` are unit te
5160: 73 74 73 3a 20 65 61 63 68 20 74 65 73 74 73 20  sts: each tests 
5170: 6f 6e 6c 79 20 6f 6e 65 20 4d 79 53 51 4c 2b 2b  only one MySQL++
5180: 20 63 6c 61 73 73 2c 0a 20 20 20 20 69 6e 64 65   class,.    inde
5190: 70 65 6e 64 65 6e 74 20 6f 66 20 65 76 65 72 79  pendent of every
51a0: 74 68 69 6e 67 20 65 6c 73 65 2e 20 42 65 63 61  thing else. Beca
51b0: 75 73 65 20 44 42 20 61 63 63 65 73 73 20 72 65  use DB access re
51c0: 71 75 69 72 65 73 20 73 65 76 65 72 61 6c 0a 20  quires several. 
51d0: 20 20 20 4d 79 53 51 4c 2b 2b 20 63 6c 61 73 73     MySQL++ class
51e0: 65 73 20 74 6f 20 63 6f 6f 70 65 72 61 74 65 2c  es to cooperate,
51f0: 20 61 20 75 6e 69 74 20 74 65 73 74 20 6e 65 76   a unit test nev
5200: 65 72 20 61 63 63 65 73 73 65 73 20 61 20 64 61  er accesses a da
5210: 74 61 62 61 73 65 3b 0a 20 20 20 20 68 65 6e 63  tabase;.    henc
5220: 65 2c 20 6e 6f 20 75 6e 69 74 20 74 65 73 74 20  e, no unit test 
5230: 6e 65 65 64 73 20 44 42 20 63 6f 6e 6e 65 63 74  needs DB connect
5240: 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73 2e 20  ion parameters. 
5250: 20 57 65 20 77 69 6c 6c 20 6e 65 76 65 72 0a 20   We will never. 
5260: 20 20 20 67 65 74 20 31 30 30 25 20 63 6f 64 65     get 100% code
5270: 20 63 6f 76 65 72 61 67 65 20 66 72 6f 6d 20 60   coverage from `
5280: 74 65 73 74 2f 2a 60 20 61 6c 6f 6e 65 2e 0a 0a  test/*` alone...
5290: 2d 20 20 20 60 65 78 61 6d 70 6c 65 73 2f 2a 60  -   `examples/*`
52a0: 20 63 61 6e 20 62 65 20 74 68 6f 75 67 68 74 20   can be thought 
52b0: 6f 66 20 61 73 20 69 6e 74 65 67 72 61 74 69 6f  of as integratio
52c0: 6e 20 74 65 73 74 73 3a 20 74 68 65 79 20 74 65  n tests: they te
52d0: 73 74 20 6d 61 6e 79 0a 20 20 20 20 70 69 65 63  st many.    piec
52e0: 65 73 20 6f 66 20 4d 79 53 51 4c 2b 2b 20 77 6f  es of MySQL++ wo
52f0: 72 6b 69 6e 67 20 74 6f 67 65 74 68 65 72 2c 20  rking together, 
5300: 61 63 63 65 73 73 69 6e 67 20 61 20 72 65 61 6c  accessing a real
5310: 20 64 61 74 61 62 61 73 65 0a 20 20 20 20 73 65   database.    se
5320: 72 76 65 72 2e 20 49 6e 20 61 64 64 69 74 69 6f  rver. In additio
5330: 6e 20 74 6f 20 65 6e 73 75 72 69 6e 67 20 74 68  n to ensuring th
5340: 61 74 20 61 6c 6c 20 74 68 65 20 70 69 65 63 65  at all the piece
5350: 73 20 77 6f 72 6b 20 74 6f 67 65 74 68 65 72 0a  s work together.
5360: 20 20 20 20 61 6e 64 20 67 69 76 65 20 63 6f 6e      and give con
5370: 73 69 73 74 65 6e 74 20 72 65 73 75 6c 74 73 20  sistent results 
5380: 66 72 6f 6d 20 70 6c 61 74 66 6f 72 6d 20 74 6f  from platform to
5390: 20 70 6c 61 74 66 6f 72 6d 20 61 6e 64 20 72 75   platform and ru
53a0: 6e 20 74 6f 0a 20 20 20 20 72 75 6e 2c 20 69 74  n to.    run, it
53b0: 20 61 6c 73 6f 20 66 69 6c 6c 73 20 69 6e 20 67   also fills in g
53c0: 61 70 73 20 69 6e 20 74 68 65 20 63 6f 64 65 20  aps in the code 
53d0: 63 6f 76 65 72 61 67 65 20 77 68 65 72 65 20 6e  coverage where n
53e0: 6f 20 73 75 69 74 61 62 6c 65 0a 20 20 20 20 60  o suitable.    `
53f0: 74 65 73 74 2f 2a 60 20 6d 6f 64 75 6c 65 20 63  test/*` module c
5400: 6f 75 6c 64 20 62 65 20 63 72 65 61 74 65 64 2e  ould be created.
5410: 0a 0a 2d 20 20 20 60 74 65 73 74 2f 2a 60 20 70  ..-   `test/*` p
5420: 72 6f 67 72 61 6d 73 20 61 6c 77 61 79 73 20 72  rograms always r
5430: 75 6e 20 73 69 6c 65 6e 74 6c 79 20 6f 6e 20 73  un silently on s
5440: 75 63 63 65 73 73 2c 20 77 72 69 74 69 6e 67 20  uccess, writing 
5450: 6f 75 74 70 75 74 0a 20 20 20 20 6f 6e 6c 79 20  output.    only 
5460: 74 6f 20 69 6e 64 69 63 61 74 65 20 74 65 73 74  to indicate test
5470: 20 66 61 69 6c 75 72 65 73 2e 20 54 68 69 73 20   failures. This 
5480: 69 73 20 62 65 63 61 75 73 65 20 74 68 65 79 27  is because they'
5490: 72 65 20 75 73 75 61 6c 6c 79 20 6f 6e 6c 79 0a  re usually only.
54a0: 20 20 20 20 72 75 6e 20 76 69 61 20 60 64 74 65      run via `dte
54b0: 73 74 60 2e 0a 0a 2d 20 20 20 60 65 78 61 6d 70  st`...-   `examp
54c0: 6c 65 73 2f 2a 60 20 61 72 65 20 61 6c 77 61 79  les/*` are alway
54d0: 73 20 22 6e 6f 69 73 79 2c 22 20 72 65 67 61 72  s "noisy," regar
54e0: 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68 65 72  dless of whether
54f0: 20 74 68 65 79 20 73 75 63 63 65 65 64 0a 20 20   they succeed.  
5500: 20 20 6f 72 20 66 61 69 6c 2c 20 62 65 63 61 75    or fail, becau
5510: 73 65 20 74 68 65 79 27 72 65 20 61 6c 73 6f 20  se they're also 
5520: 72 75 6e 20 69 6e 74 65 72 61 63 74 69 76 65 6c  run interactivel
5530: 79 20 62 79 20 70 65 6f 70 6c 65 20 6c 65 61 72  y by people lear
5540: 6e 69 6e 67 0a 20 20 20 20 74 6f 20 75 73 65 20  ning.    to use 
5550: 4d 79 53 51 4c 2b 2b 2e 0a 0a 50 61 74 63 68 65  MySQL++...Patche
5560: 73 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 65  s should include
5570: 20 74 65 73 74 73 20 69 66 20 74 68 65 79 20 69   tests if they i
5580: 6e 74 72 6f 64 75 63 65 20 6e 65 77 20 66 75 6e  ntroduce new fun
5590: 63 74 69 6f 6e 61 6c 69 74 79 20 6f 72 20 66 69  ctionality or fi
55a0: 78 0a 61 20 62 75 67 20 74 68 61 74 20 74 68 65  x.a bug that the
55b0: 20 65 78 69 73 74 69 6e 67 20 74 65 73 74 20 63   existing test c
55c0: 6f 76 65 72 61 67 65 20 66 61 69 6c 65 64 20 74  overage failed t
55d0: 6f 20 63 61 74 63 68 2e 20 20 49 66 20 74 68 65  o catch.  If the
55e0: 20 74 65 73 74 20 69 73 0a 6e 6f 69 73 79 2c 20   test is.noisy, 
55f0: 6e 65 65 64 73 20 44 42 20 61 63 63 65 73 73 2c  needs DB access,
5600: 20 6f 72 20 74 65 73 74 73 20 6d 75 6c 74 69 70   or tests multip
5610: 6c 65 20 70 61 72 74 73 20 6f 66 20 74 68 65 20  le parts of the 
5620: 6c 69 62 72 61 72 79 20 61 74 20 6f 6e 63 65 2c  library at once,
5630: 0a 69 74 20 67 6f 65 73 20 69 6e 20 60 65 78 61  .it goes in `exa
5640: 6d 70 6c 65 73 2f 2a 60 2e 20 49 66 20 79 6f 75  mples/*`. If you
5650: 72 20 63 68 61 6e 67 65 20 61 66 66 65 63 74 73  r change affects
5660: 20 6f 6e 6c 79 20 6f 6e 65 20 63 6c 61 73 73 20   only one class 
5670: 69 6e 0a 4d 79 53 51 4c 2b 2b 20 61 6e 64 20 74  in.MySQL++ and t
5680: 65 73 74 69 6e 67 20 69 74 20 63 61 6e 20 62 65  esting it can be
5690: 20 64 6f 6e 65 20 77 69 74 68 6f 75 74 20 69 6e   done without in
56a0: 73 74 61 6e 74 69 61 74 69 6e 67 20 6f 74 68 65  stantiating othe
56b0: 72 20 4d 79 53 51 4c 2b 2b 0a 63 6c 61 73 73 65  r MySQL++.classe
56c0: 73 20 e2 80 94 20 6f 74 68 65 72 20 74 68 61 6e  s ... other than
56d0: 20 62 79 20 63 6f 6d 70 6f 73 69 74 69 6f 6e 2c   by composition,
56e0: 20 6f 66 20 63 6f 75 72 73 65 20 e2 80 94 20 69   of course ... i
56f0: 74 20 73 68 6f 75 6c 64 20 67 6f 20 69 6e 0a 60  t should go in.`
5700: 74 65 73 74 2f 2a 60 2e 0a 0a 49 6e 20 67 65 6e  test/*`...In gen
5710: 65 72 61 6c 2c 20 70 72 65 66 65 72 20 6d 6f 64  eral, prefer mod
5720: 69 66 79 69 6e 67 20 61 6e 20 65 78 69 73 74 69  ifying an existi
5730: 6e 67 20 60 65 78 61 6d 70 6c 65 73 2f 2a 60 20  ng `examples/*` 
5740: 6f 72 20 60 74 65 73 74 2f 2a 60 0a 70 72 6f 67  or `test/*`.prog
5750: 72 61 6d 2e 20 20 41 64 64 20 61 20 6e 65 77 20  ram.  Add a new 
5760: 6f 6e 65 20 6f 6e 6c 79 20 69 66 20 79 6f 75 27  one only if you'
5770: 72 65 20 69 6e 74 72 6f 64 75 63 69 6e 67 20 62  re introducing b
5780: 72 61 6e 64 20 6e 65 77 0a 66 75 6e 63 74 69 6f  rand new.functio
5790: 6e 61 6c 69 74 79 20 6f 72 20 77 68 65 6e 20 61  nality or when a
57a0: 20 67 69 76 65 6e 20 66 65 61 74 75 72 65 20 63   given feature c
57b0: 75 72 72 65 6e 74 6c 79 20 68 61 73 20 6e 6f 20  urrently has no 
57c0: 74 65 73 74 20 61 74 20 61 6c 6c 2e 0a 0a 42 65  test at all...Be
57d0: 77 61 72 65 20 74 68 61 74 20 74 68 65 20 70 72  ware that the pr
57e0: 69 6d 61 72 79 20 72 6f 6c 65 20 74 68 65 20 65  imary role the e
57f0: 78 61 6d 70 6c 65 73 20 69 73 20 74 6f 20 69 6c  xamples is to il
5800: 6c 75 73 74 72 61 74 65 20 70 6f 69 6e 74 73 20  lustrate points 
5810: 69 6e 20 74 68 65 0a 75 73 65 72 20 6d 61 6e 75  in the.user manu
5820: 61 6c 2e 20 49 66 20 61 6e 20 65 78 69 73 74 69  al. If an existi
5830: 6e 67 20 65 78 61 6d 70 6c 65 20 64 6f 65 73 20  ng example does 
5840: 73 6f 6d 65 74 68 69 6e 67 20 73 69 6d 69 6c 61  something simila
5850: 72 20 74 6f 20 77 68 61 74 20 61 0a 70 72 6f 70  r to what a.prop
5860: 65 72 20 74 65 73 74 20 77 6f 75 6c 64 20 6e 65  er test would ne
5870: 65 64 20 74 6f 20 64 6f 20 61 6e 64 20 74 68 65  ed to do and the
5880: 20 74 65 73 74 20 64 6f 65 73 6e 27 74 20 63 68   test doesn't ch
5890: 61 6e 67 65 20 74 68 65 20 6e 61 74 75 72 65 20  ange the nature 
58a0: 6f 66 0a 74 68 65 20 65 78 61 6d 70 6c 65 2c 20  of.the example, 
58b0: 64 6f 6e 27 74 20 77 6f 72 72 79 20 61 62 6f 75  don't worry abou
58c0: 74 20 63 68 61 6e 67 69 6e 67 20 74 68 65 20 65  t changing the e
58d0: 78 61 6d 70 6c 65 20 63 6f 64 65 2e 20 49 66 20  xample code. If 
58e0: 79 6f 75 72 20 74 65 73 74 0a 77 6f 75 6c 64 20  your test.would 
58f0: 63 68 61 6e 67 65 20 74 68 65 20 6e 61 74 75 72  change the natur
5900: 65 20 6f 66 20 74 68 65 20 65 78 61 6d 70 6c 65  e of the example
5910: 2c 20 79 6f 75 20 65 69 74 68 65 72 20 6e 65 65  , you either nee
5920: 64 20 74 6f 20 64 6f 20 74 68 65 20 74 65 73 74  d to do the test
5930: 0a 61 6e 6f 74 68 65 72 20 77 61 79 2c 20 6f 72  .another way, or
5940: 20 61 6c 73 6f 20 73 75 62 6d 69 74 20 61 20 63   also submit a c
5950: 68 61 6e 67 65 20 74 6f 20 60 64 6f 63 2f 75 73  hange to `doc/us
5960: 65 72 6d 61 6e 2f 2a 2e 64 62 78 60 20 74 68 61  erman/*.dbx` tha
5970: 74 0a 69 6e 63 6f 72 70 6f 72 61 74 65 73 20 74  t.incorporates t
5980: 68 65 20 64 69 66 66 65 72 65 6e 63 65 2e 0a 0a  he difference...
5990: 0a 23 23 20 41 64 64 69 6e 67 20 53 75 70 70 6f  .## Adding Suppo
59a0: 72 74 20 66 6f 72 20 61 20 44 69 66 66 65 72 65  rt for a Differe
59b0: 6e 74 20 43 6f 6d 70 69 6c 65 72 0a 0a 41 73 20  nt Compiler..As 
59c0: 64 65 73 63 72 69 62 65 64 20 61 62 6f 76 65 2c  described above,
59d0: 20 4d 79 53 51 4c 2b 2b 20 75 73 65 73 20 74 68   MySQL++ uses th
59e0: 65 20 42 61 6b 65 66 69 6c 65 20 73 79 73 74 65  e Bakefile syste
59f0: 6d 20 66 6f 72 20 63 72 65 61 74 69 6e 67 0a 70  m for creating.p
5a00: 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 61 6e 64  roject files and
5a10: 20 6d 61 6b 65 66 69 6c 65 73 2e 20 54 68 69 73   makefiles. This
5a20: 20 61 6c 6c 6f 77 73 20 75 73 20 74 6f 20 6d 61   allows us to ma
5a30: 6b 65 20 63 68 61 6e 67 65 73 20 74 6f 20 61 20  ke changes to a 
5a40: 73 69 6e 67 6c 65 0a 73 65 74 20 6f 66 20 66 69  single.set of fi
5a50: 6c 65 73 2c 20 61 6e 64 20 68 61 76 65 20 74 68  les, and have th
5a60: 65 20 70 72 6f 70 65 72 20 63 68 61 6e 67 65 73  e proper changes
5a70: 20 62 65 20 6d 61 64 65 20 74 6f 20 61 6c 6c 20   be made to all 
5a80: 67 65 6e 65 72 61 74 65 64 0a 70 72 6f 6a 65 63  generated.projec
5a90: 74 20 66 69 6c 65 73 20 61 6e 64 20 6d 61 6b 65  t files and make
5aa0: 66 69 6c 65 73 2e 20 49 6e 20 74 68 65 20 70 61  files. In the pa
5ab0: 73 74 2c 20 77 65 20 75 73 65 64 20 6d 6f 72 65  st, we used more
5ac0: 20 61 64 2d 68 6f 63 20 73 79 73 74 65 6d 73 2c   ad-hoc systems,
5ad0: 0a 61 6e 64 20 77 65 27 64 20 66 72 65 71 75 65  .and we'd freque
5ae0: 6e 74 6c 79 20 66 6f 72 67 65 74 20 74 6f 20 75  ntly forget to u
5af0: 70 64 61 74 65 20 69 6e 64 69 76 69 64 75 61 6c  pdate individual
5b00: 20 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 61   project files a
5b10: 6e 64 0a 6d 61 6b 65 66 69 6c 65 73 2c 20 73 6f  nd.makefiles, so
5b20: 20 61 74 20 61 6e 79 20 67 69 76 65 6e 20 74 69   at any given ti
5b30: 6d 65 2c 20 61 74 20 6c 65 61 73 74 20 6f 6e 65  me, at least one
5b40: 20 74 61 72 67 65 74 20 77 61 73 20 6c 69 6b 65   target was like
5b50: 6c 79 20 74 6f 20 62 65 0a 62 72 6f 6b 65 6e 2e  ly to be.broken.
5b60: 0a 0a 49 66 20 4d 79 53 51 4c 2b 2b 20 64 6f 65  ..If MySQL++ doe
5b70: 73 6e 27 74 20 63 75 72 72 65 6e 74 6c 79 20 73  sn't currently s
5b80: 68 69 70 20 77 69 74 68 20 70 72 6f 6a 65 63 74  hip with project
5b90: 20 66 69 6c 65 73 20 6f 72 20 6d 61 6b 65 66 69   files or makefi
5ba0: 6c 65 73 20 74 75 6e 65 64 0a 66 6f 72 20 79 6f  les tuned.for yo
5bb0: 75 72 20 63 6f 6d 70 69 6c 65 72 20 6f 66 20 63  ur compiler of c
5bc0: 68 6f 69 63 65 2c 20 79 6f 75 20 6e 65 65 64 20  hoice, you need 
5bd0: 74 6f 20 77 6f 72 6b 20 74 68 72 6f 75 67 68 20  to work through 
5be0: 74 68 65 20 42 61 6b 65 66 69 6c 65 0a 6d 65 63  the Bakefile.mec
5bf0: 68 61 6e 69 73 6d 20 74 6f 20 61 64 64 20 73 75  hanism to add su
5c00: 70 70 6f 72 74 2e 20 57 65 27 72 65 20 6e 6f 74  pport. We're not
5c10: 20 77 69 6c 6c 69 6e 67 20 74 6f 20 64 6f 20 61   willing to do a
5c20: 64 2d 68 6f 63 20 70 6c 61 74 66 6f 72 6d 0a 73  d-hoc platform.s
5c30: 75 70 70 6f 72 74 20 61 6e 79 20 6d 6f 72 65 2c  upport any more,
5c40: 20 73 6f 20 70 6c 65 61 73 65 20 64 6f 6e 27 74   so please don't
5c50: 20 61 73 6b 20 69 66 20 79 6f 75 20 63 61 6e 20   ask if you can 
5c60: 73 65 6e 64 20 75 73 20 70 72 6f 6a 65 63 74 20  send us project 
5c70: 66 69 6c 65 73 0a 69 6e 73 74 65 61 64 3b 20 77  files.instead; w
5c80: 65 20 64 6f 6e 27 74 20 77 61 6e 74 20 74 68 65  e don't want the
5c90: 6d 2e 0a 0a 49 66 20 79 6f 75 20 77 61 6e 74 20  m...If you want 
5ca0: 74 6f 20 70 6f 72 74 20 4d 79 53 51 4c 2b 2b 20  to port MySQL++ 
5cb0: 74 6f 20 61 6e 6f 74 68 65 72 20 70 6c 61 74 66  to another platf
5cc0: 6f 72 6d 2c 20 77 65 20 6e 65 65 64 20 74 6f 20  orm, we need to 
5cd0: 62 65 20 63 6f 6e 66 69 64 65 6e 74 0a 74 68 61  be confident.tha
5ce0: 74 20 74 68 65 20 65 6e 74 69 72 65 20 6c 69 62  t the entire lib
5cf0: 72 61 72 79 20 77 6f 72 6b 73 20 6f 6e 20 79 6f  rary works on yo
5d00: 75 72 20 70 6c 61 74 66 6f 72 6d 20 62 65 66 6f  ur platform befo
5d10: 72 65 20 77 65 27 6c 6c 20 61 63 63 65 70 74 0a  re we'll accept.
5d20: 70 61 74 63 68 65 73 2e 20 49 6e 20 74 68 65 20  patches. In the 
5d30: 70 61 73 74 2c 20 77 65 27 76 65 20 68 61 64 20  past, we've had 
5d40: 62 72 6f 6b 65 6e 20 70 6f 72 74 73 20 74 68 61  broken ports tha
5d50: 74 20 77 65 72 65 20 6d 69 73 73 69 6e 67 20 69  t were missing i
5d60: 6d 70 6f 72 74 61 6e 74 0a 6c 69 62 72 61 72 79  mportant.library
5d70: 20 66 65 61 74 75 72 65 73 2c 20 6f 72 20 74 68   features, or th
5d80: 61 74 20 63 72 61 73 68 65 64 20 77 68 65 6e 20  at crashed when 
5d90: 62 75 69 6c 74 20 69 6e 20 63 65 72 74 61 69 6e  built in certain
5da0: 20 77 61 79 73 2e 20 46 65 77 20 70 65 6f 70 6c   ways. Few peopl
5db0: 65 0a 77 69 6c 6c 20 6b 6e 6f 77 69 6e 67 6c 79  e.will knowingly
5dc0: 20 75 73 65 20 61 20 63 72 69 70 70 6c 65 64 20   use a crippled 
5dd0: 76 65 72 73 69 6f 6e 20 6f 66 20 4d 79 53 51 4c  version of MySQL
5de0: 2b 2b 2c 20 73 69 6e 63 65 20 74 68 65 72 65 20  ++, since there 
5df0: 61 72 65 0a 75 73 75 61 6c 6c 79 20 61 63 63 65  are.usually acce
5e00: 70 74 61 62 6c 65 20 61 6c 74 65 72 6e 61 74 69  ptable alternati
5e10: 76 65 73 2e 20 20 54 68 65 72 65 66 6f 72 65 2c  ves.  Therefore,
5e20: 20 73 75 63 68 20 70 6f 72 74 73 20 62 65 63 6f   such ports beco
5e30: 6d 65 0a 6d 61 69 6e 74 65 6e 61 6e 63 65 20 62  me.maintenance b
5e40: 61 67 67 61 67 65 20 77 69 74 68 20 6c 69 74 74  aggage with litt
5e50: 6c 65 20 63 6f 6d 70 65 6e 73 61 74 69 6e 67 20  le compensating 
5e60: 76 61 6c 75 65 2e 0a 0a 0a 3c 61 20 6e 61 6d 65  value....<a name
5e70: 3d 22 70 72 69 76 61 74 65 22 3e 3c 2f 61 3e 0a  ="private"></a>.
5e80: 23 23 20 4d 61 69 6e 74 61 69 6e 69 6e 67 20 61  ## Maintaining a
5e90: 20 50 72 69 76 61 74 65 20 52 65 70 6f 73 69 74   Private Reposit
5ea0: 6f 72 79 0a 0a 41 6c 74 68 6f 75 67 68 20 46 6f  ory..Although Fo
5eb0: 73 73 69 6c 20 73 79 6e 63 73 20 63 68 61 6e 67  ssil syncs chang
5ec0: 65 73 20 62 61 63 6b 20 74 6f 20 74 68 65 20 5b  es back to the [
5ed0: 4d 79 53 51 4c 2b 2b 20 46 6f 73 73 69 6c 0a 72  MySQL++ Fossil.r
5ee0: 65 70 6f 73 69 74 6f 72 79 5d 5b 68 6f 6d 65 5d  epository][home]
5ef0: 20 62 79 20 64 65 66 61 75 6c 74 2c 20 69 74 20   by default, it 
5f00: 69 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 6d  is possible to m
5f10: 61 69 6e 74 61 69 6e 20 61 20 70 72 69 76 61 74  aintain a privat
5f20: 65 20 63 6f 70 79 0a 74 68 61 74 20 73 69 6d 70  e copy.that simp
5f30: 6c 79 20 70 75 6c 6c 73 20 63 68 61 6e 67 65 73  ly pulls changes
5f40: 20 69 6e 20 6f 63 63 61 73 69 6f 6e 61 6c 6c 79   in occasionally
5f50: 2e 0a 0a 54 68 65 20 66 69 72 73 74 20 73 74 65  ...The first ste
5f60: 70 20 69 73 20 74 6f 20 74 75 72 6e 20 6f 66 66  p is to turn off
5f70: 20 74 68 65 20 61 75 74 6f 2d 73 79 6e 63 20 66   the auto-sync f
5f80: 65 61 74 75 72 65 3a 0a 0a 20 20 20 20 20 24 20  eature:..     $ 
5f90: 66 6f 73 73 69 6c 20 73 65 74 20 61 75 74 6f 73  fossil set autos
5fa0: 79 6e 63 20 6f 66 66 0a 0a 54 68 65 6e 2c 20 49  ync off..Then, I
5fb0: 20 72 65 63 6f 6d 6d 65 6e 64 20 74 68 61 74 20   recommend that 
5fc0: 79 6f 75 20 6d 61 6b 65 20 61 6e 79 20 6c 6f 63  you make any loc
5fd0: 61 6c 20 63 68 61 6e 67 65 73 20 6f 6e 20 61 20  al changes on a 
5fe0: 62 72 61 6e 63 68 3a 0a 0a 20 20 20 20 2e 2e 2e  branch:..    ...
5ff0: 68 61 63 6b 2c 20 68 61 63 6b 2c 20 68 61 63 6b  hack, hack, hack
6000: 2e 2e 2e 0a 20 20 20 20 24 20 66 6f 73 73 69 6c  ....    $ fossil
6010: 20 63 69 20 2d 2d 62 72 61 6e 63 68 20 6d 79 2d   ci --branch my-
6020: 6c 6f 63 61 6c 2d 62 72 61 6e 63 68 0a 0a 41 66  local-branch..Af
6030: 74 65 72 20 79 6f 75 20 67 69 76 65 20 74 68 65  ter you give the
6040: 20 60 2d 2d 62 72 61 6e 63 68 60 20 6f 70 74 69   `--branch` opti
6050: 6f 6e 20 6f 6e 20 61 20 63 68 65 63 6b 69 6e 2c  on on a checkin,
6060: 20 46 6f 73 73 69 6c 20 61 75 74 6f 6d 61 74 69   Fossil automati
6070: 63 61 6c 6c 79 0a 73 77 69 74 63 68 65 73 20 79  cally.switches y
6080: 6f 75 72 20 6c 6f 63 61 6c 20 63 68 65 63 6b 6f  our local checko
6090: 75 74 20 74 6f 20 74 68 61 74 20 62 72 61 6e 63  ut to that branc
60a0: 68 2c 20 73 6f 20 74 68 61 74 20 61 6c 6c 20 66  h, so that all f
60b0: 75 72 74 68 65 72 0a 63 68 65 63 6b 69 6e 73 20  urther.checkins 
60c0: 63 61 6e 20 62 65 20 6d 61 64 65 20 77 69 74 68  can be made with
60d0: 6f 75 74 20 74 68 65 20 60 2d 2d 62 72 61 6e 63  out the `--branc
60e0: 68 60 20 6f 70 74 69 6f 6e 2e 20 20 54 6f 20 67  h` option.  To g
60f0: 65 74 20 62 61 63 6b 20 74 6f 20 74 68 65 0a 74  et back to the.t
6100: 72 75 6e 6b 2c 20 79 6f 75 27 64 20 73 61 79 20  runk, you'd say 
6110: 60 66 6f 73 73 69 6c 20 75 70 20 74 72 75 6e 6b  `fossil up trunk
6120: 60 2c 20 62 75 74 20 75 6e 64 65 72 20 74 68 69  `, but under thi
6130: 73 20 77 6f 72 6b 66 6c 6f 77 2c 20 74 68 65 20  s workflow, the 
6140: 6e 65 65 64 0a 66 6f 72 20 74 68 61 74 20 77 69  need.for that wi
6150: 6c 6c 20 62 65 20 72 61 72 65 2e 0a 0a 57 68 65  ll be rare...Whe
6160: 6e 20 73 6f 6d 65 74 68 69 6e 67 20 68 61 70 70  n something happ
6170: 65 6e 73 20 6f 6e 20 74 68 65 20 6f 66 66 69 63  ens on the offic
6180: 69 61 6c 20 74 72 75 6e 6b 20 6f 6e 20 60 74 61  ial trunk on `ta
6190: 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 60 20 74  ngentsoft.com` t
61a0: 68 61 74 0a 79 6f 75 20 77 61 6e 74 20 70 75 6c  hat.you want pul
61b0: 6c 65 64 20 69 6e 74 6f 20 79 6f 75 72 20 70 72  led into your pr
61c0: 69 76 61 74 65 20 72 65 70 6f 73 69 74 6f 72 79  ivate repository
61d0: 2c 20 73 61 79 3a 0a 0a 20 20 20 20 24 20 66 6f  , say:..    $ fo
61e0: 73 73 69 6c 20 73 79 6e 63 0a 20 20 20 20 24 20  ssil sync.    $ 
61f0: 66 6f 73 73 69 6c 20 6d 65 72 67 65 20 74 72 75  fossil merge tru
6200: 6e 6b 0a 0a 54 68 65 20 66 69 72 73 74 20 63 6f  nk..The first co
6210: 6d 6d 61 6e 64 20 70 75 6c 6c 73 20 61 6c 6c 20  mmand pulls all 
6220: 72 65 6d 6f 74 65 20 63 68 61 6e 67 65 73 20 69  remote changes i
6230: 6e 74 6f 20 79 6f 75 72 20 6c 6f 63 61 6c 20 63  nto your local c
6240: 6c 6f 6e 65 2c 20 62 75 74 0a 73 69 6e 63 65 20  lone, but.since 
6250: 74 68 6f 73 65 20 63 68 61 6e 67 65 73 20 64 6f  those changes do
6260: 6e 27 74 20 61 66 66 65 63 74 20 79 6f 75 72 20  n't affect your 
6270: 70 72 69 76 61 74 65 20 62 72 61 6e 63 68 2c 20  private branch, 
6280: 79 6f 75 20 77 6f 6e 27 74 20 73 65 65 20 61 6e  you won't see an
6290: 79 0a 69 6d 6d 65 64 69 61 74 65 20 63 68 61 6e  y.immediate chan
62a0: 67 65 2e 20 54 68 65 20 73 65 63 6f 6e 64 20 61  ge. The second a
62b0: 74 74 65 6d 70 74 73 20 74 6f 20 6d 65 72 67 65  ttempts to merge
62c0: 20 74 68 65 20 74 72 75 6e 6b 20 62 72 61 6e 63   the trunk branc
62d0: 68 27 73 0a 63 68 61 6e 67 65 73 20 73 69 6e 63  h's.changes sinc
62e0: 65 20 74 68 65 20 6c 61 73 74 20 62 72 61 6e 63  e the last branc
62f0: 68 20 6f 72 20 6d 65 72 67 65 20 70 6f 69 6e 74  h or merge point
6300: 20 69 6e 74 6f 20 79 6f 75 72 20 70 72 69 76 61   into your priva
6310: 74 65 20 62 72 61 6e 63 68 2e 0a 0a 57 68 65 74  te branch...Whet
6320: 68 65 72 20 74 68 65 20 6d 65 72 67 65 20 69 73  her the merge is
6330: 20 73 75 63 63 65 73 73 66 75 6c 20 6f 72 20 6e   successful or n
6340: 6f 74 2c 20 46 6f 73 73 69 6c 20 64 6f 65 73 20  ot, Fossil does 
6350: 6e 6f 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a  not immediately.
6360: 6d 6f 64 69 66 79 20 79 6f 75 72 20 63 6c 6f 6e  modify your clon
6370: 65 2c 20 6f 6e 6c 79 20 74 68 65 20 77 6f 72 6b  e, only the work
6380: 69 6e 67 20 63 68 65 63 6b 6f 75 74 20 64 69 72  ing checkout dir
6390: 65 63 74 6f 72 79 2e 20 59 6f 75 20 6d 75 73 74  ectory. You must
63a0: 20 74 68 65 6e 0a 73 61 79 20 60 66 6f 73 73 69   then.say `fossi
63b0: 6c 20 63 69 60 20 6f 6e 63 65 20 79 6f 75 27 72  l ci` once you'r
63c0: 65 20 68 61 70 70 79 20 77 69 74 68 20 74 68 65  e happy with the
63d0: 20 6d 65 72 67 65 2e 20 55 6e 74 69 6c 20 74 68   merge. Until th
63e0: 65 6e 2c 20 61 6c 6c 20 74 68 65 0a 75 73 75 61  en, all the.usua
63f0: 6c 20 46 6f 73 73 69 6c 20 63 6f 6d 6d 61 6e 64  l Fossil command
6400: 73 20 6c 69 6b 65 20 60 66 6f 73 73 69 6c 20 64  s like `fossil d
6410: 69 66 66 60 20 61 6e 64 20 60 66 6f 73 73 69 6c  iff` and `fossil
6420: 20 73 74 61 74 75 73 60 20 77 69 6c 6c 20 68 65   status` will he
6430: 6c 70 0a 79 6f 75 20 63 6f 6d 65 20 74 6f 20 74  lp.you come to t
6440: 68 61 74 20 64 65 63 69 73 69 6f 6e 2e 0a 0a 49  hat decision...I
6450: 66 20 79 6f 75 20 65 76 65 72 20 64 65 63 69 64  f you ever decid
6460: 65 20 74 6f 20 63 6f 6e 74 72 69 62 75 74 65 20  e to contribute 
6470: 79 6f 75 72 20 70 72 69 76 61 74 65 20 62 72 61  your private bra
6480: 6e 63 68 20 74 6f 20 74 68 65 20 4d 79 53 51 4c  nch to the MySQL
6490: 2b 2b 0a 70 72 6f 6a 65 63 74 2c 20 74 68 65 72  ++.project, ther
64a0: 65 20 61 72 65 20 61 20 63 6f 75 70 6c 65 20 6f  e are a couple o
64b0: 66 20 65 61 73 79 20 77 61 79 73 20 74 6f 20 61  f easy ways to a
64c0: 63 68 69 65 76 65 20 74 68 61 74 2e 20 41 73 6b  chieve that. Ask
64d0: 20 61 62 6f 75 74 20 69 74 0a 6f 6e 20 5b 74 68   about it.on [th
64e0: 65 20 66 6f 72 75 6d 5d 5b 66 6f 72 5d 20 69 66  e forum][for] if
64f0: 20 79 6f 75 20 66 69 6e 64 20 79 6f 75 72 73 65   you find yourse
6500: 6c 66 20 69 6e 20 74 68 69 73 20 73 69 74 75 61  lf in this situa
6510: 74 69 6f 6e 2e 0a 0a 5b 68 6f 6d 65 5d 3a 20 68  tion...[home]: h
6520: 74 74 70 73 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f  ttps://tangentso
6530: 66 74 2e 63 6f 6d 2f 6d 79 73 71 6c 70 70 2f 0a  ft.com/mysqlpp/.