MySQL++

Hex Artifact Content
Login

Artifact f3d36e7ec56e5719fae6caf7f229b6d966db79be3561505756e5068be694c012:


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 55 53 45 52 4e 41 4d 45 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 5b 69 74 e2 80 99 73  Git, but [it...s
0680: 20 61 6e 20 69 6e 74 65 6e 74 69 6f 6e 61 6c 20   an intentional 
0690: 66 65 61 74 75 72 65 5d 5b 6d 63 6b 5d 20 6f 66  feature][mck] of
06a0: 20 46 6f 73 73 69 6c 20 74 68 61 74 20 74 68 65   Fossil that the
06b0: 0a 72 65 70 6f 73 69 74 6f 72 79 20 61 6e 64 20  .repository and 
06c0: 77 6f 72 6b 69 6e 67 20 64 69 72 65 63 74 6f 72  working director
06d0: 69 65 73 20 61 72 65 20 73 65 70 61 72 61 74 65  ies are separate
06e0: 2e 20 49 74 20 61 6c 6c 6f 77 73 20 79 6f 75 20  . It allows you 
06f0: 74 6f 20 65 61 73 69 6c 79 0a 6d 61 6e 61 67 65  to easily.manage
0700: 20 6d 75 6c 74 69 70 6c 65 20 69 6e 64 65 70 65   multiple indepe
0710: 6e 64 65 6e 74 20 63 68 65 63 6b 6f 75 74 73 20  ndent checkouts 
0720: 66 72 6f 6d 20 61 20 73 69 6e 67 6c 65 20 72 65  from a single re
0730: 70 6f 20 63 6c 6f 6e 65 2e 20 49 20 6c 69 6b 65  po clone. I like
0740: 20 61 0a 77 6f 72 6b 69 6e 67 20 74 72 65 65 20   a.working tree 
0750: 74 68 61 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20  that looks like 
0760: 74 68 69 73 3a 0a 0a 20 20 20 20 7e 2f 6d 75 73  this:..    ~/mus
0770: 65 75 6d 2f 20 20 20 20 20 20 20 20 20 20 20 20  eum/            
0780: 20 20 20 20 20 20 23 20 57 68 65 72 65 20 6f 6e        # Where on
0790: 65 20 6b 65 65 70 73 20 66 6f 73 73 69 6c 73 2c  e keeps fossils,
07a0: 20 72 69 67 68 74 3f 0a 20 20 20 20 20 20 20 20   right?.        
07b0: 6d 79 73 71 6c 70 70 2e 66 6f 73 73 69 6c 0a 20  mysqlpp.fossil. 
07c0: 20 20 20 7e 2f 73 72 63 2f 20 20 20 20 20 20 20     ~/src/       
07d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 20                # 
07e0: 57 6f 72 6b 69 6e 67 20 74 72 65 65 20 66 6f 72  Working tree for
07f0: 20 73 6f 66 74 77 61 72 65 20 70 72 6f 6a 65 63   software projec
0800: 74 73 0a 20 20 20 20 20 20 20 20 6d 79 73 71 6c  ts.        mysql
0810: 70 70 2f 20 20 20 20 20 20 20 20 20 20 20 20 20  pp/             
0820: 20 20 23 20 41 20 64 69 72 65 63 74 6f 72 79 20    # A directory 
0830: 66 6f 72 20 65 61 63 68 20 70 72 6f 6a 65 63 74  for each project
0840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 72 75  .            tru
0850: 6e 6b 2f 20 20 20 20 20 20 20 20 20 20 20 20 20  nk/             
0860: 23 20 50 72 69 6d 61 72 79 20 77 6f 72 6b 69 6e  # Primary workin
0870: 67 20 62 72 61 6e 63 68 20 66 6f 72 20 4d 79 53  g branch for MyS
0880: 51 4c 2b 2b 0a 20 20 20 20 20 20 20 20 20 20 20  QL++.           
0890: 20 76 32 2e 33 2e 32 2d 6d 6f 64 65 72 6e 2f 20   v2.3.2-modern/ 
08a0: 20 20 20 20 23 20 43 68 65 63 6b 6f 75 74 20 66      # Checkout f
08b0: 6f 72 20 61 6e 6f 74 68 65 72 20 62 72 61 6e 63  or another branc
08c0: 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 33  h.            v3
08d0: 2e 32 2e 33 2f 20 20 20 20 20 20 20 20 20 20 20  .2.3/           
08e0: 20 23 20 43 68 65 63 6b 6f 75 74 20 66 6f 72 20   # Checkout for 
08f0: 61 20 74 61 67 67 65 64 20 73 74 61 62 6c 65 20  a tagged stable 
0900: 72 65 6c 65 61 73 65 0a 0a 59 6f 75 20 63 68 65  release..You che
0910: 63 6b 20 6f 75 74 20 61 20 62 72 61 6e 63 68 20  ck out a branch 
0920: 6f 72 20 74 61 67 20 6c 69 6b 65 20 73 6f 3a 0a  or tag like so:.
0930: 0a 20 20 20 20 24 20 63 64 20 7e 2f 73 72 63 2f  .    $ cd ~/src/
0940: 6d 79 73 71 6c 70 70 2f 76 33 2e 32 2e 33 0a 20  mysqlpp/v3.2.3. 
0950: 20 20 20 24 20 66 6f 73 73 69 6c 20 6f 70 65 6e     $ fossil open
0960: 20 7e 2f 6d 75 73 65 75 6d 2f 6d 79 73 71 6c 70   ~/museum/mysqlp
0970: 70 2e 66 6f 73 73 69 6c 20 76 33 2e 32 2e 33 0a  p.fossil v3.2.3.
0980: 0a 46 6f 73 73 69 6c 20 77 69 6c 6c 20 6c 65 74  .Fossil will let
0990: 20 79 6f 75 20 6d 61 6b 65 20 61 6e 79 20 6d 6f   you make any mo
09a0: 64 69 66 69 63 61 74 69 6f 6e 73 20 79 6f 75 20  difications you 
09b0: 6c 69 6b 65 20 74 6f 20 79 6f 75 72 20 6c 6f 63  like to your loc
09c0: 61 6c 0a 72 65 70 6f 73 69 74 6f 72 79 20 63 6f  al.repository co
09d0: 70 79 2e 20 46 6f 72 20 74 68 6f 73 65 20 77 69  py. For those wi
09e0: 74 68 20 63 68 65 63 6b 2d 69 6e 20 70 72 69 76  th check-in priv
09f0: 69 6c 65 67 65 73 20 6f 6e 20 74 68 65 20 75 70  ileges on the up
0a00: 73 74 72 65 61 6d 0a 63 6f 70 79 2c 20 63 68 61  stream.copy, cha
0a10: 6e 67 65 73 20 67 65 74 20 61 75 74 6f 6d 61 74  nges get automat
0a20: 69 63 61 6c 6c 79 20 73 79 6e 63 65 64 20 77 69  ically synced wi
0a30: 74 68 20 69 74 20 62 79 20 64 65 66 61 75 6c 74  th it by default
0a40: 2e 0a 0a 28 49 66 20 79 6f 75 20 70 72 65 66 65  ...(If you prefe
0a50: 72 20 47 69 74 20 6f 72 20 4d 65 72 63 75 72 69  r Git or Mercuri
0a60: 61 6c 20 73 74 79 6c 65 20 74 77 6f 2d 70 68 61  al style two-pha
0a70: 73 65 20 63 6f 6d 6d 69 74 73 2c 20 79 6f 75 20  se commits, you 
0a80: 63 61 6e 20 73 61 79 0a 60 66 6f 73 73 69 6c 20  can say.`fossil 
0a90: 73 65 74 20 61 75 74 6f 73 79 6e 63 20 6f 66 66  set autosync off
0aa0: 60 2c 20 74 68 65 6e 20 6c 61 74 65 72 20 73 61  `, then later sa
0ab0: 79 20 60 66 6f 73 73 69 6c 20 70 75 73 68 60 20  y `fossil push` 
0ac0: 61 66 74 65 72 20 6d 61 6b 69 6e 67 20 6f 6e 65  after making one
0ad0: 0a 6f 72 20 6d 6f 72 65 20 63 68 65 63 6b 69 6e  .or more checkin
0ae0: 73 2e 29 0a 0a 49 66 20 79 6f 75 20 64 6f 6e 27  s.)..If you don'
0af0: 74 20 68 61 76 65 20 63 6f 6d 6d 69 74 20 63 61  t have commit ca
0b00: 70 61 62 69 6c 69 74 79 20 6f 6e 20 74 68 65 20  pability on the 
0b10: 63 65 6e 74 72 61 6c 20 72 65 70 6f 73 69 74 6f  central reposito
0b20: 72 79 20 73 65 72 76 65 72 2c 0a 63 68 65 63 6b  ry server,.check
0b30: 69 6e 73 20 6a 75 73 74 20 6d 6f 64 69 66 79 20  ins just modify 
0b40: 79 6f 75 72 20 6c 6f 63 61 6c 20 72 65 70 6f 73  your local repos
0b50: 69 74 6f 72 79 20 63 6c 6f 6e 65 2e 20 49 66 20  itory clone. If 
0b60: 79 6f 75 20 64 6f 20 73 75 63 68 0a 63 68 65 63  you do such.chec
0b70: 6b 69 6e 73 20 6f 6e 20 61 20 62 72 61 6e 63 68  kins on a branch
0b80: 2c 20 79 6f 75 20 64 6f 6e e2 80 99 74 20 6e 65  , you don...t ne
0b90: 65 64 20 74 6f 20 77 6f 72 72 79 20 61 62 6f 75  ed to worry abou
0ba0: 74 20 63 6f 6e 66 6c 69 63 74 73 20 77 68 65 6e  t conflicts when
0bb0: 0a 70 75 6c 6c 69 6e 67 20 64 6f 77 6e 20 75 70  .pulling down up
0bc0: 73 74 72 65 61 6d 20 63 68 61 6e 67 65 73 20 69  stream changes i
0bd0: 6e 74 6f 20 79 6f 75 72 20 6c 6f 63 61 6c 20 63  nto your local c
0be0: 6c 6f 6e 65 2e 0a 0a 44 65 76 65 6c 6f 70 65 72  lone...Developer
0bf0: 73 20 61 72 65 20 65 78 70 65 63 74 65 64 20 74  s are expected t
0c00: 6f 20 6d 61 6b 65 20 61 6c 6c 20 63 68 61 6e 67  o make all chang
0c10: 65 73 20 74 68 61 74 20 61 66 66 65 63 74 20 74  es that affect t
0c20: 68 65 20 6c 69 62 61 72 79 27 73 0a 41 50 49 2c  he libary's.API,
0c30: 20 41 42 49 2c 20 6f 72 20 62 65 68 61 76 69 6f   ABI, or behavio
0c40: 72 20 6f 6e 20 61 20 62 72 61 6e 63 68 2c 20 72  r on a branch, r
0c50: 61 74 68 65 72 20 74 68 61 6e 20 63 68 65 63 6b  ather than check
0c60: 20 73 75 63 68 20 63 68 61 6e 67 65 73 0a 64 69   such changes.di
0c70: 72 65 63 74 6c 79 20 69 6e 74 6f 20 74 68 65 20  rectly into the 
0c80: 74 72 75 6e 6b 2e 20 4f 6e 63 65 20 77 65 20 68  trunk. Once we h
0c90: 61 76 65 20 64 69 73 63 75 73 73 65 64 20 74 68  ave discussed th
0ca0: 65 20 63 68 61 6e 67 65 20 6f 6e 20 74 68 65 0a  e change on the.
0cb0: 5b 66 6f 72 75 6d 5d 5b 66 6f 72 5d 20 61 6e 64  [forum][for] and
0cc0: 20 72 65 73 6f 6c 76 65 64 20 61 6e 79 20 69 73   resolved any is
0cd0: 73 73 75 65 73 20 77 69 74 68 20 74 68 65 20 65  ssues with the e
0ce0: 78 70 65 72 69 6d 65 6e 74 61 6c 20 62 72 61 6e  xperimental bran
0cf0: 63 68 2c 20 69 74 0a 77 69 6c 6c 20 62 65 20 6d  ch, it.will be m
0d00: 65 72 67 65 64 20 69 6e 74 6f 20 74 68 65 20 74  erged into the t
0d10: 72 75 6e 6b 2e 0a 0a 43 72 65 61 74 69 6e 67 20  runk...Creating 
0d20: 61 20 62 72 61 6e 63 68 20 69 6e 20 46 6f 73 73  a branch in Foss
0d30: 69 6c 20 69 73 20 73 63 61 72 79 2d 73 69 6d 70  il is scary-simp
0d40: 6c 65 2c 20 74 6f 20 74 68 65 20 70 6f 69 6e 74  le, to the point
0d50: 20 74 68 61 74 20 74 68 6f 73 65 0a 63 6f 6d 69   that those.comi
0d60: 6e 67 20 66 72 6f 6d 20 6f 74 68 65 72 20 76 65  ng from other ve
0d70: 72 73 69 6f 6e 20 63 6f 6e 74 72 6f 6c 20 73 79  rsion control sy
0d80: 73 74 65 6d 73 20 6d 61 79 20 61 73 6b 2c 20 22  stems may ask, "
0d90: 49 73 20 74 68 61 74 20 72 65 61 6c 6c 79 20 61  Is that really a
0da0: 6c 6c 0a 74 68 65 72 65 20 69 73 20 74 6f 20 69  ll.there is to i
0db0: 74 3f 22 20 59 65 73 2c 20 72 65 61 6c 6c 79 2c  t?" Yes, really,
0dc0: 20 74 68 69 73 20 69 73 20 69 74 3a 0a 0a 20 20   this is it:..  
0dd0: 20 20 24 20 66 6f 73 73 69 6c 20 63 68 65 63 6b    $ fossil check
0de0: 69 6e 20 2d 2d 62 72 61 6e 63 68 20 6e 65 77 2d  in --branch new-
0df0: 62 72 61 6e 63 68 2d 6e 61 6d 65 0a 0a 54 68 61  branch-name..Tha
0e00: 74 20 69 73 20 74 6f 20 73 61 79 2c 20 79 6f 75  t is to say, you
0e10: 20 6d 61 6b 65 20 79 6f 75 72 20 63 68 61 6e 67   make your chang
0e20: 65 73 20 61 73 20 79 6f 75 20 6e 6f 72 6d 61 6c  es as you normal
0e30: 6c 79 20 77 6f 75 6c 64 3b 20 74 68 65 6e 20 77  ly would; then w
0e40: 68 65 6e 0a 79 6f 75 20 67 6f 20 74 6f 20 6d 61  hen.you go to ma
0e50: 6b 65 20 74 68 65 20 66 69 72 73 74 20 63 68 65  ke the first che
0e60: 63 6b 69 6e 2c 20 79 6f 75 20 67 69 76 65 20 74  ckin, you give t
0e70: 68 65 20 60 2d 2d 62 72 61 6e 63 68 60 20 6f 70  he `--branch` op
0e80: 74 69 6f 6e 20 74 6f 20 70 75 74 0a 74 68 65 20  tion to put.the 
0e90: 63 68 61 6e 67 65 73 20 6f 6e 20 61 20 6e 65 77  changes on a new
0ea0: 20 62 72 61 6e 63 68 2c 20 72 61 74 68 65 72 20   branch, rather 
0eb0: 74 68 61 6e 20 61 64 64 20 74 68 65 6d 20 74 6f  than add them to
0ec0: 20 74 68 65 20 73 61 6d 65 20 62 72 61 6e 63 68   the same branch
0ed0: 20 74 68 65 0a 63 68 61 6e 67 65 73 20 77 65 72   the.changes wer
0ee0: 65 20 6d 61 64 65 20 61 67 61 69 6e 73 74 2e 20  e made against. 
0ef0: 45 76 65 72 79 20 73 75 62 73 65 71 75 65 6e 74  Every subsequent
0f00: 20 63 68 65 63 6b 69 6e 20 77 69 74 68 6f 75 74   checkin without
0f10: 20 61 20 60 2d 2d 62 72 61 6e 63 68 60 0a 6f 70   a `--branch`.op
0f20: 74 69 6f 6e 20 67 65 74 73 20 63 68 65 63 6b 65  tion gets checke
0f30: 64 20 69 6e 20 61 73 20 74 68 65 20 6e 65 77 20  d in as the new 
0f40: 74 69 70 20 6f 66 20 74 68 61 74 20 62 72 61 6e  tip of that bran
0f50: 63 68 2e 0a 0a 49 66 20 79 6f 75 e2 80 99 72 65  ch...If you...re
0f60: 20 63 72 65 61 74 69 6e 67 20 61 20 62 72 61 6e   creating a bran
0f70: 63 68 20 74 68 61 74 20 77 69 6c 6c 20 70 72 6f  ch that will pro
0f80: 62 61 62 6c 79 20 6c 69 76 65 20 61 20 6c 6f 6e  bably live a lon
0f90: 67 20 65 6e 6f 75 67 68 20 74 69 6d 65 0a 74 68  g enough time.th
0fa0: 61 74 20 79 6f 75 e2 80 99 6c 6c 20 77 61 6e 74  at you...ll want
0fb0: 20 74 6f 20 72 65 74 75 72 6e 20 74 6f 20 74 72   to return to tr
0fc0: 75 6e 6b 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20  unk one or more 
0fd0: 74 69 6d 65 73 20 77 68 69 6c 65 20 74 68 61 74  times while that
0fe0: 20 62 72 61 6e 63 68 0a 6c 69 76 65 73 2c 20 79   branch.lives, y
0ff0: 6f 75 20 6d 69 67 68 74 20 66 6f 6c 6c 6f 77 20  ou might follow 
1000: 74 68 65 20 61 62 6f 76 65 20 63 6f 6d 6d 61 6e  the above comman
1010: 64 20 77 69 74 68 20 61 20 73 65 71 75 65 6e 63  d with a sequenc
1020: 65 20 6c 69 6b 65 20 74 68 69 73 3a 0a 0a 20 20  e like this:..  
1030: 20 20 24 20 66 6f 73 73 69 6c 20 75 70 64 61 74    $ fossil updat
1040: 65 20 74 72 75 6e 6b 20 20 20 20 20 20 20 20 20  e trunk         
1050: 20 20 23 20 72 65 74 75 72 6e 20 77 6f 72 6b 69    # return worki
1060: 6e 67 20 64 69 72 20 74 6f 20 74 69 70 2d 6f 66  ng dir to tip-of
1070: 2d 74 72 75 6e 6b 0a 20 20 20 20 24 20 6d 6b 64  -trunk.    $ mkd
1080: 69 72 20 2e 2e 2f 6e 65 77 2d 62 72 61 6e 63 68  ir ../new-branch
1090: 2d 6e 61 6d 65 0a 20 20 20 20 24 20 63 64 20 2e  -name.    $ cd .
10a0: 2e 2f 6e 65 77 2d 62 72 61 6e 63 68 2d 6e 61 6d  ./new-branch-nam
10b0: 65 0a 20 20 20 20 24 20 66 6f 73 73 69 6c 20 6f  e.    $ fossil o
10c0: 70 65 6e 20 7e 2f 6d 75 73 65 75 6d 2f 6d 79 73  pen ~/museum/mys
10d0: 71 6c 70 70 2e 66 6f 73 73 69 6c 20 6e 65 77 2d  qlpp.fossil new-
10e0: 62 72 61 6e 63 68 2d 6e 61 6d 65 0a 0a 4e 6f 77  branch-name..Now
10f0: 20 79 6f 75 20 63 61 6e 20 62 6f 75 6e 63 65 20   you can bounce 
1100: 62 61 63 6b 20 61 6e 64 20 66 6f 72 74 68 20 62  back and forth b
1110: 65 74 77 65 65 6e 20 74 72 75 6e 6b 20 61 6e 64  etween trunk and
1120: 20 79 6f 75 72 20 6e 65 77 20 62 72 61 6e 63 68   your new branch
1130: 20 77 69 74 68 0a 61 20 73 69 6d 70 6c 65 20 60   with.a simple `
1140: 63 64 60 20 63 6f 6d 6d 61 6e 64 2c 20 72 61 74  cd` command, rat
1150: 68 65 72 20 74 68 61 6e 20 73 77 69 74 63 68 69  her than switchi
1160: 6e 67 20 69 6e 20 70 6c 61 63 65 2c 20 61 73 20  ng in place, as 
1170: 69 73 20 74 79 70 69 63 61 6c 0a 77 69 74 68 20  is typical.with 
1180: 47 69 74 2e 20 54 68 69 73 20 73 74 79 6c 65 20  Git. This style 
1190: 6f 66 20 77 6f 72 6b 20 61 76 6f 69 64 73 20 69  of work avoids i
11a0: 6e 76 61 6c 69 64 61 74 69 6e 67 20 62 75 69 6c  nvalidating buil
11b0: 64 20 73 79 73 74 65 6d 20 6f 75 74 70 75 74 73  d system outputs
11c0: 2c 0a 61 6e 64 20 69 74 20 6d 61 6b 65 73 20 69  ,.and it makes i
11d0: 74 20 70 6f 73 73 69 62 6c 65 20 74 6f 20 73 77  t possible to sw
11e0: 69 74 63 68 20 62 72 61 6e 63 68 65 73 20 77 69  itch branches wi
11f0: 74 68 6f 75 74 20 63 68 65 63 6b 69 6e 67 20 69  thout checking i
1200: 6e 20 6f 72 0a 73 74 61 73 68 69 6e 67 20 79 6f  n or.stashing yo
1210: 75 72 20 77 6f 72 6b 20 6f 6e 20 74 68 65 20 6f  ur work on the o
1220: 74 68 65 72 20 62 72 61 6e 63 68 20 66 69 72 73  ther branch firs
1230: 74 2e 0a 0a 5b 61 76 68 5d 3a 20 20 68 74 74 70  t...[avh]:  http
1240: 73 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e  s://tangentsoft.
1250: 63 6f 6d 2f 6d 79 73 71 6c 70 70 2f 77 69 6b 69  com/mysqlpp/wiki
1260: 3f 6e 61 6d 65 3d 41 62 72 69 64 67 65 64 2b 56  ?name=Abridged+V
1270: 65 72 73 69 6f 6e 2b 48 69 73 74 6f 72 79 0a 5b  ersion+History.[
1280: 64 76 63 73 5d 3a 20 68 74 74 70 3a 2f 2f 65 6e  dvcs]: http://en
1290: 2e 77 69 6b 69 70 65 64 69 61 2e 6f 72 67 2f 77  .wikipedia.org/w
12a0: 69 6b 69 2f 44 69 73 74 72 69 62 75 74 65 64 5f  iki/Distributed_
12b0: 72 65 76 69 73 69 6f 6e 5f 63 6f 6e 74 72 6f 6c  revision_control
12c0: 0a 5b 66 6f 72 5d 3a 20 20 68 74 74 70 73 3a 2f  .[for]:  https:/
12d0: 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d  /tangentsoft.com
12e0: 2f 6d 79 73 71 6c 70 70 2f 66 6f 72 75 6d 2f 0a  /mysqlpp/forum/.
12f0: 5b 66 73 6c 5d 3a 20 20 68 74 74 70 3a 2f 2f 66  [fsl]:  http://f
1300: 6f 73 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f 0a 5b  ossil-scm.org/.[
1310: 66 73 6c 62 5d 3a 20 68 74 74 70 3a 2f 2f 66 6f  fslb]: http://fo
1320: 73 73 69 6c 2d 73 63 6d 2e 6f 72 67 2f 66 6f 73  ssil-scm.org/fos
1330: 73 69 6c 2f 75 76 2f 64 6f 77 6e 6c 6f 61 64 2e  sil/uv/download.
1340: 68 74 6d 6c 0a 5b 66 73 6c 71 5d 3a 20 68 74 74  html.[fslq]: htt
1350: 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e 6f  p://fossil-scm.o
1360: 72 67 2f 66 6f 73 73 69 6c 2f 64 6f 63 2f 74 72  rg/fossil/doc/tr
1370: 75 6e 6b 2f 77 77 77 2f 71 75 69 63 6b 73 74 61  unk/www/quicksta
1380: 72 74 2e 77 69 6b 69 0a 5b 66 73 6c 73 5d 3a 20  rt.wiki.[fsls]: 
1390: 68 74 74 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63  http://fossil-sc
13a0: 6d 2e 6f 72 67 2f 66 6f 73 73 69 6c 2f 64 6f 63  m.org/fossil/doc
13b0: 2f 74 72 75 6e 6b 2f 77 77 77 2f 62 75 69 6c 64  /trunk/www/build
13c0: 2e 77 69 6b 69 0a 5b 67 68 6d 5d 3a 20 20 68 74  .wiki.[ghm]:  ht
13d0: 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d  tps://github.com
13e0: 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2f 6d 79 73  /tangentsoft/mys
13f0: 71 6c 70 70 0a 5b 6d 63 6b 5d 3a 20 20 68 74 74  qlpp.[mck]:  htt
1400: 70 73 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e  ps://fossil-scm.
1410: 6f 72 67 2f 66 6f 73 73 69 6c 2f 64 6f 63 2f 74  org/fossil/doc/t
1420: 72 75 6e 6b 2f 77 77 77 2f 66 6f 73 73 69 6c 2d  runk/www/fossil-
1430: 76 2d 67 69 74 2e 77 69 6b 69 23 63 68 65 63 6b  v-git.wiki#check
1440: 6f 75 74 73 0a 0a 0a 23 23 20 3c 61 20 69 64 3d  outs...## <a id=
1450: 22 62 6f 6f 74 73 74 72 61 70 22 3e 3c 2f 61 3e  "bootstrap"></a>
1460: 42 6f 6f 74 73 74 72 61 70 70 69 6e 67 20 74 68  Bootstrapping th
1470: 65 20 4c 69 62 72 61 72 79 0a 0a 57 68 65 6e 20  e Library..When 
1480: 79 6f 75 20 63 68 65 63 6b 20 6f 75 74 20 4d 79  you check out My
1490: 53 51 4c 2b 2b 20 66 72 6f 6d 20 46 6f 73 73 69  SQL++ from Fossi
14a0: 6c 2c 20 74 68 65 72 65 20 61 72 65 20 61 20 6c  l, there are a l
14b0: 6f 74 20 6f 66 20 74 68 69 6e 67 73 0a 22 6d 69  ot of things."mi
14c0: 73 73 69 6e 67 22 20 61 73 20 63 6f 6d 70 61 72  ssing" as compar
14d0: 65 64 20 74 6f 20 61 20 64 69 73 74 72 69 62 75  ed to a distribu
14e0: 74 65 64 20 74 61 72 62 61 6c 6c 2c 20 62 65 63  ted tarball, bec
14f0: 61 75 73 65 20 74 68 65 20 46 6f 73 73 69 6c 0a  ause the Fossil.
1500: 72 65 70 6f 73 69 74 6f 72 79 20 63 6f 6e 74 61  repository conta
1510: 69 6e 73 20 6f 6e 6c 79 20 73 6f 75 72 63 65 20  ins only source 
1520: 66 69 6c 65 73 2c 20 6e 6f 20 67 65 6e 65 72 61  files, no genera
1530: 74 65 64 20 66 69 6c 65 73 2e 20 20 54 68 65 0a  ted files.  The.
1540: 70 72 6f 63 65 73 73 20 74 68 61 74 20 74 75 72  process that tur
1550: 6e 73 20 61 20 66 72 65 73 68 20 4d 79 53 51 4c  ns a fresh MySQL
1560: 2b 2b 20 72 65 70 6f 73 69 74 6f 72 79 20 63 68  ++ repository ch
1570: 65 63 6b 6f 75 74 20 69 6e 74 6f 0a 73 6f 6d 65  eckout into.some
1580: 74 68 69 6e 67 20 79 6f 75 20 63 61 6e 20 62 75  thing you can bu
1590: 69 6c 64 20 61 6e 64 20 68 61 63 6b 20 6f 6e 20  ild and hack on 
15a0: 69 73 20 63 61 6c 6c 65 64 20 62 6f 6f 74 73 74  is called bootst
15b0: 72 61 70 70 69 6e 67 2e 0a 0a 42 6f 6f 73 74 72  rapping...Boostr
15c0: 61 70 70 69 6e 67 20 69 73 20 62 65 73 74 20 64  apping is best d
15d0: 6f 6e 65 20 6f 6e 20 61 20 6d 6f 64 65 72 6e 20  one on a modern 
15e0: 55 6e 69 78 20 74 79 70 65 20 70 6c 61 74 66 6f  Unix type platfo
15f0: 72 6d 3a 20 4c 69 6e 75 78 2c 20 4f 53 20 58 2c  rm: Linux, OS X,
1600: 0a 42 53 44 2c 20 53 6f 6c 61 72 69 73 2e 2e 2e  .BSD, Solaris...
1610: 61 6e 79 20 76 65 72 73 69 6f 6e 20 72 65 6c 65  any version rele
1620: 61 73 65 64 20 73 69 6e 63 65 20 32 30 30 35 20  ased since 2005 
1630: 6f 72 20 73 6f 2e 0a 0a 49 74 27 73 20 70 6f 73  or so...It's pos
1640: 73 69 62 6c 65 20 74 6f 20 5b 62 6f 6f 74 73 74  sible to [bootst
1650: 72 61 70 20 4d 79 53 51 4c 2b 2b 20 6f 6e 20 57  rap MySQL++ on W
1660: 69 6e 64 6f 77 73 5d 28 23 77 69 6e 62 73 29 2c  indows](#winbs),
1670: 20 62 75 74 20 69 74 e2 80 99 73 20 6d 75 63 68   but it...s much
1680: 0a 68 61 72 64 65 72 2e 0a 0a 54 77 6f 20 6f 66  .harder...Two of
1690: 20 74 68 65 20 74 6f 6f 6c 73 20 79 6f 75 20 6e   the tools you n
16a0: 65 65 64 20 74 6f 20 64 6f 20 74 68 69 73 20 61  eed to do this a
16b0: 72 65 20 63 6f 6d 6d 6f 6e 6c 79 20 61 76 61 69  re commonly avai
16c0: 6c 61 62 6c 65 20 6f 6e 20 55 6e 69 78 79 0a 73  lable on Unixy.s
16d0: 79 73 74 65 6d 73 2c 20 61 74 20 6c 65 61 73 74  ystems, at least
16e0: 20 61 73 20 61 6e 20 6f 70 74 69 6f 6e 3a 20 50   as an option: P
16f0: 65 72 6c 20 35 2c 20 61 6e 64 20 47 4e 55 20 41  erl 5, and GNU A
1700: 75 74 6f 63 6f 6e 66 20 31 2e 35 39 20 6f 72 20  utoconf 1.59 or 
1710: 68 69 67 68 65 72 2e 0a 49 66 20 74 68 65 79 27  higher..If they'
1720: 72 65 20 6e 6f 74 20 69 6e 73 74 61 6c 6c 65 64  re not installed
1730: 2c 20 79 6f 75 20 63 61 6e 20 70 72 6f 62 61 62  , you can probab
1740: 6c 79 20 72 75 6e 20 79 6f 75 72 20 73 79 73 74  ly run your syst
1750: 65 6d 27 73 20 70 61 63 6b 61 67 65 0a 6d 61 6e  em's package.man
1760: 61 67 65 72 20 74 6f 20 69 6e 73 74 61 6c 6c 20  ager to install 
1770: 73 75 69 74 61 62 6c 65 20 76 65 72 73 69 6f 6e  suitable version
1780: 73 2e 0a 0a 54 68 65 72 65 27 73 20 61 20 74 68  s...There's a th
1790: 69 72 64 20 74 6f 6f 6c 20 79 6f 75 27 6c 6c 20  ird tool you'll 
17a0: 6e 65 65 64 20 74 6f 20 62 6f 6f 74 73 74 72 61  need to bootstra
17b0: 70 20 4d 79 53 51 4c 2b 2b 20 63 61 6c 6c 65 64  p MySQL++ called
17c0: 0a 5b 42 61 6b 65 66 69 6c 65 5d 5b 62 66 5d 2e  .[Bakefile][bf].
17d0: 20 54 68 65 20 73 79 6e 74 61 78 20 75 73 65 64   The syntax used
17e0: 20 69 6e 20 60 6d 79 73 71 6c 2b 2b 2e 62 6b 6c   in `mysql++.bkl
17f0: 60 20 72 65 71 75 69 72 65 73 20 61 74 20 6c 65  ` requires at le
1800: 61 73 74 0a 42 61 6b 65 66 69 6c 65 20 30 2e 32  ast.Bakefile 0.2
1810: 2e 35 20 6f 72 20 68 69 67 68 65 72 2c 20 77 68  .5 or higher, wh
1820: 69 63 68 20 69 6e 20 74 75 72 6e 20 72 65 71 75  ich in turn requ
1830: 69 72 65 73 20 50 79 74 68 6f 6e 20 32 2e 33 20  ires Python 2.3 
1840: 6f 72 20 68 69 67 68 65 72 20 74 6f 0a 72 75 6e  or higher to.run
1850: 2e 20 59 6f 75 20 6d 61 79 20 72 65 71 75 69 72  . You may requir
1860: 65 20 61 20 6e 65 77 65 72 20 76 65 72 73 69 6f  e a newer versio
1870: 6e 20 6f 66 20 42 61 6b 65 66 69 6c 65 20 74 6f  n of Bakefile to
1880: 20 73 75 70 70 6f 72 74 20 6e 65 77 65 72 20 4f   support newer O
1890: 53 65 73 0a 61 6e 64 20 50 79 74 68 6f 6e 20 76  Ses.and Python v
18a0: 65 72 73 69 6f 6e 73 3b 20 77 65 27 76 65 20 74  ersions; we've t
18b0: 65 73 74 65 64 20 77 69 74 68 20 76 65 72 73 69  ested with versi
18c0: 6f 6e 73 20 75 70 20 74 6f 20 30 2e 32 2e 31 31  ons up to 0.2.11
18d0: 0a 73 75 63 63 65 73 73 66 75 6c 6c 79 2e 0a 0a  .successfully...
18e0: 44 6f 20 6e 6f 74 20 75 73 65 20 61 6e 79 20 6f  Do not use any o
18f0: 66 20 74 68 65 20 42 61 6b 65 66 69 6c 65 20 31  f the Bakefile 1
1900: 2e 78 20 76 65 72 73 69 6f 6e 73 3a 20 69 74 e2  .x versions: it.
1910: 80 99 73 20 61 6e 20 69 6e 63 6f 6d 70 61 74 69  ..s an incompati
1920: 62 6c 65 0a 63 68 61 6e 67 65 2c 20 61 6e 64 20  ble.change, and 
1930: 77 65 20 63 75 72 72 65 6e 74 6c 79 20 68 61 76  we currently hav
1940: 65 20 6e 6f 20 69 6e 74 65 6e 74 69 6f 6e 20 74  e no intention t
1950: 6f 20 73 77 69 74 63 68 20 66 72 6f 6d 20 42 61  o switch from Ba
1960: 6b 65 66 69 6c 65 20 30 2e 78 2e 0a 0a 4f 6e 63  kefile 0.x...Onc
1970: 65 20 79 6f 75 20 68 61 76 65 20 61 6c 6c 20 74  e you have all t
1980: 68 65 20 74 6f 6f 6c 73 20 69 6e 20 70 6c 61 63  he tools in plac
1990: 65 2c 20 79 6f 75 20 63 61 6e 20 62 6f 6f 74 73  e, you can boots
19a0: 74 72 61 70 20 4d 79 53 51 4c 2b 2b 20 77 69 74  trap MySQL++ wit
19b0: 68 20 61 0a 42 6f 75 72 6e 65 20 73 68 65 6c 6c  h a.Bourne shell
19c0: 20 73 63 72 69 70 74 20 63 61 6c 6c 65 64 20 60   script called `
19d0: 62 6f 6f 74 73 74 72 61 70 60 2c 20 77 68 69 63  bootstrap`, whic
19e0: 68 20 79 6f 75 20 67 65 74 20 61 73 20 70 61 72  h you get as par
19f0: 74 20 6f 66 20 74 68 65 0a 46 6f 73 73 69 6c 20  t of the.Fossil 
1a00: 63 68 65 63 6b 6f 75 74 2e 20 49 74 27 73 20 66  checkout. It's f
1a10: 61 69 72 6c 79 20 70 6f 77 65 72 66 75 6c 2c 20  airly powerful, 
1a20: 77 69 74 68 20 6d 61 6e 79 20 6f 70 74 69 6f 6e  with many option
1a30: 73 2e 20 20 46 6f 72 20 6d 6f 73 74 0a 63 61 73  s.  For most.cas
1a40: 65 73 2c 20 69 74 20 73 75 66 66 69 63 65 73 20  es, it suffices 
1a50: 74 6f 20 6a 75 73 74 20 72 75 6e 20 69 74 20 77  to just run it w
1a60: 69 74 68 6f 75 74 20 61 6e 79 20 61 72 67 75 6d  ithout any argum
1a70: 65 6e 74 73 3a 0a 0a 20 20 20 20 24 20 2e 2f 62  ents:..    $ ./b
1a80: 6f 6f 74 73 74 72 61 70 0a 0a 46 6f 72 20 6d 6f  ootstrap..For mo
1a90: 72 65 20 75 6e 75 73 75 61 6c 20 73 69 74 75 61  re unusual situa
1aa0: 74 69 6f 6e 73 2c 20 68 65 72 65 27 73 20 74 68  tions, here's th
1ab0: 65 20 63 6f 6d 70 6c 65 74 65 20 75 73 61 67 65  e complete usage
1ac0: 3a 0a 0a 20 20 20 20 24 20 2e 2f 62 6f 6f 74 73  :..    $ ./boots
1ad0: 74 72 61 70 20 5b 6e 6f 7b 64 6f 63 2c 65 78 2c  trap [no{doc,ex,
1ae0: 6c 69 62 2c 6f 70 74 7d 5d 20 5b 70 65 64 61 6e  lib,opt}] [pedan
1af0: 74 69 63 5d 20 5b 62 61 74 5d 20 5b 63 6f 6e 66  tic] [bat] [conf
1b00: 69 67 75 72 65 20 66 6c 61 67 73 5d 0a 0a 41 72  igure flags]..Ar
1b10: 67 75 6d 65 6e 74 73 3a 0a 0a 2a 20 20 20 60 6e  guments:..*   `n
1b20: 6f 64 6f 63 60 0a 0a 20 20 20 20 54 68 65 20 64  odoc`..    The d
1b30: 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 77 6f 6e  ocumentation won
1b40: 27 74 20 62 65 20 63 6f 6e 73 69 64 65 72 65 64  't be considered
1b50: 20 61 20 70 72 65 72 65 71 75 69 73 69 74 65 20   a prerequisite 
1b60: 66 6f 72 20 62 75 69 6c 64 69 6e 67 0a 20 20 20  for building.   
1b70: 20 74 68 65 20 64 69 73 74 72 69 62 75 74 69 6f   the distributio
1b80: 6e 20 74 61 72 62 61 6c 6c 2e 20 54 68 69 73 20  n tarball. This 
1b90: 69 73 20 75 73 65 66 75 6c 20 6f 6e 20 73 79 73  is useful on sys
1ba0: 74 65 6d 73 20 77 68 65 72 65 20 74 68 65 0a 20  tems where the. 
1bb0: 20 20 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e     documentation
1bc0: 20 64 6f 65 73 6e 27 74 20 62 75 69 6c 64 20 63   doesn't build c
1bd0: 6f 72 72 65 63 74 6c 79 2c 20 61 6e 64 20 79 6f  orrectly, and yo
1be0: 75 20 6f 6e 6c 79 20 6e 65 65 64 20 74 6f 20 6d  u only need to m
1bf0: 61 6b 65 20 61 0a 20 20 20 20 62 69 6e 61 72 79  ake a.    binary
1c00: 20 52 50 4d 2e 20 54 68 61 74 20 70 72 6f 63 65   RPM. That proce
1c10: 73 73 20 72 65 71 75 69 72 65 73 20 61 20 74 61  ss requires a ta
1c20: 72 62 61 6c 6c 2c 20 62 75 74 20 64 6f 65 73 6e  rball, but doesn
1c30: 27 74 20 6e 65 65 64 20 74 68 65 0a 20 20 20 20  't need the.    
1c40: 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 20 44  documentation. D
1c50: 6f 6e 27 74 20 64 69 73 74 72 69 62 75 74 65 20  on't distribute 
1c60: 74 68 65 20 74 61 72 62 61 6c 6c 20 6f 72 20 53  the tarball or S
1c70: 52 50 4d 20 74 68 61 74 20 72 65 73 75 6c 74 73  RPM that results
1c80: 2c 20 61 73 0a 20 20 20 20 74 68 65 79 20 61 72  , as.    they ar
1c90: 65 20 6e 6f 20 67 6f 6f 64 20 66 6f 72 20 61 6e  e no good for an
1ca0: 79 20 6f 74 68 65 72 20 70 75 72 70 6f 73 65 2e  y other purpose.
1cb0: 0a 0a 2a 20 20 20 60 6e 6f 65 78 60 0a 0a 20 20  ..*   `noex`..  
1cc0: 20 20 54 68 65 20 67 65 6e 65 72 61 74 65 64 20    The generated 
1cd0: 60 4d 61 6b 65 66 69 6c 65 73 60 20 61 6e 64 20  `Makefiles` and 
1ce0: 70 72 6f 6a 65 63 74 20 66 69 6c 65 73 20 77 6f  project files wo
1cf0: 6e 27 74 20 74 72 79 20 74 6f 20 62 75 69 6c 64  n't try to build
1d00: 20 61 6e 79 20 6f 66 0a 20 20 20 20 74 68 65 20   any of.    the 
1d10: 65 78 61 6d 70 6c 65 73 2e 0a 0a 2a 20 20 20 60  examples...*   `
1d20: 6e 6f 6c 69 62 60 0a 0a 20 20 20 20 54 68 65 20  nolib`..    The 
1d30: 67 65 6e 65 72 61 74 65 64 20 60 4d 61 6b 65 66  generated `Makef
1d40: 69 6c 65 73 60 20 61 6e 64 20 70 72 6f 6a 65 63  iles` and projec
1d50: 74 20 66 69 6c 65 73 20 77 6f 6e 27 74 20 74 72  t files won't tr
1d60: 79 20 74 6f 20 62 75 69 6c 64 20 74 68 65 0a 20  y to build the. 
1d70: 20 20 20 4d 79 53 51 4c 2b 2b 20 6c 69 62 72 61     MySQL++ libra
1d80: 72 79 2e 0a 0a 2a 20 20 20 60 6e 6f 6d 61 69 6e  ry...*   `nomain
1d90: 74 60 0a 0a 20 20 20 20 54 75 72 6e 20 6f 66 66  t`..    Turn off
1da0: 20 22 6d 61 69 6e 74 61 69 6e 65 72 20 6d 6f 64   "maintainer mod
1db0: 65 22 20 73 74 75 66 66 20 69 6e 20 74 68 65 20  e" stuff in the 
1dc0: 62 75 69 6c 64 2e 20 54 68 65 73 65 20 61 72 65  build. These are
1dd0: 20 66 65 61 74 75 72 65 73 0a 20 20 20 20 75 73   features.    us
1de0: 65 64 20 6f 6e 6c 79 20 62 79 20 74 68 6f 73 65  ed only by those
1df0: 20 62 75 69 6c 64 69 6e 67 20 4d 79 53 51 4c 2b   building MySQL+
1e00: 2b 20 66 72 6f 6d 20 46 6f 73 73 69 6c 2e 20 54  + from Fossil. T
1e10: 68 65 20 60 64 69 73 74 60 20 62 75 69 6c 64 0a  he `dist` build.
1e20: 20 20 20 20 74 61 72 67 65 74 20 75 73 65 73 20      target uses 
1e30: 74 68 69 73 20 77 68 65 6e 20 63 72 65 61 74 69  this when creati
1e40: 6e 67 20 74 68 65 20 74 61 72 62 61 6c 6c 2c 20  ng the tarball, 
1e50: 62 65 63 61 75 73 65 20 69 74 20 72 65 64 75 63  because it reduc
1e60: 65 73 20 74 68 65 0a 20 20 20 20 62 75 69 6c 64  es the.    build
1e70: 20 74 69 6d 65 20 73 6f 6d 65 77 68 61 74 2e 0a   time somewhat..
1e80: 0a 2a 20 20 20 60 6e 6f 6f 70 74 60 0a 0a 20 20  .*   `noopt`..  
1e90: 20 20 43 6f 6d 70 69 6c 65 72 20 6f 70 74 69 6d    Compiler optim
1ea0: 69 7a 61 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20  ization will be 
1eb0: 74 75 72 6e 65 64 20 6f 66 66 2e 20 28 54 68 69  turned off. (Thi
1ec0: 73 20 63 75 72 72 65 6e 74 6c 79 20 68 61 73 20  s currently has 
1ed0: 6e 6f 0a 20 20 20 20 65 66 66 65 63 74 20 6f 6e  no.    effect on
1ee0: 20 74 68 65 20 67 65 6e 65 72 61 74 65 64 20 4d   the generated M
1ef0: 69 6e 47 57 20 4d 61 6b 65 66 69 6c 65 20 6f 72  inGW Makefile or
1f00: 20 74 68 65 20 56 69 73 75 61 6c 20 43 2b 2b 20   the Visual C++ 
1f10: 70 72 6f 6a 65 63 74 0a 20 20 20 20 66 69 6c 65  project.    file
1f20: 73 2e 29 0a 0a 2a 20 20 20 60 70 65 64 61 6e 74  s.)..*   `pedant
1f30: 69 63 60 0a 0a 20 20 20 20 54 75 72 6e 73 20 6f  ic`..    Turns o
1f40: 6e 20 61 6c 6c 20 6f 66 20 47 43 43 27 73 20 77  n all of GCC's w
1f50: 61 72 6e 69 6e 67 73 20 61 6e 64 20 70 6f 72 74  arnings and port
1f60: 61 62 69 6c 69 74 79 20 63 68 65 63 6b 73 2e 20  ability checks. 
1f70: 20 57 65 20 75 73 65 20 74 68 69 73 0a 20 20 20   We use this.   
1f80: 20 61 73 20 70 61 72 74 20 6f 66 20 6f 75 72 20   as part of our 
1f90: 5b 72 65 6c 65 61 73 65 20 70 72 6f 63 65 73 73  [release process
1fa0: 5d 28 2e 2f 52 45 4c 45 41 53 45 2d 43 48 45 43  ](./RELEASE-CHEC
1fb0: 4b 4c 49 53 54 2e 74 78 74 29 2e 0a 0a 2a 20 20  KLIST.txt)...*  
1fc0: 20 60 62 61 74 60 0a 0a 20 20 20 20 52 75 6e 73   `bat`..    Runs
1fd0: 20 60 62 6f 6f 74 73 74 72 61 70 2e 62 61 74 60   `bootstrap.bat`
1fe0: 20 76 69 61 20 60 63 6d 64 2e 65 78 65 60 20 66   via `cmd.exe` f
1ff0: 6f 72 20 79 6f 75 2c 20 70 61 73 73 69 6e 67 20  or you, passing 
2000: 61 6c 6f 6e 67 20 65 71 75 69 76 61 6c 65 6e 74  along equivalent
2010: 0a 20 20 20 20 6f 70 74 69 6f 6e 73 20 74 6f 20  .    options to 
2020: 61 6e 79 20 6f 66 20 74 68 65 20 22 2a 6e 6f 2a  any of the "*no*
2030: 22 20 6f 70 74 69 6f 6e 73 20 79 6f 75 20 67 69  " options you gi
2040: 76 65 20 62 65 66 6f 72 65 20 69 74 2e 0a 0a 20  ve before it... 
2050: 20 20 20 4f 6e 6c 79 20 74 68 65 20 22 2a 6e 6f     Only the "*no
2060: 2a 22 20 6f 70 74 69 6f 6e 73 20 61 62 6f 76 65  *" options above
2070: 20 68 61 76 65 20 61 6e 20 65 66 66 65 63 74 20   have an effect 
2080: 6f 6e 20 74 68 65 20 67 65 6e 65 72 61 74 65 64  on the generated
2090: 20 62 75 69 6c 64 0a 20 20 20 20 73 79 73 74 65   build.    syste
20a0: 6d 20 66 69 6c 65 73 20 77 68 65 6e 20 79 6f 75  m files when you
20b0: 20 67 69 76 65 20 22 60 62 61 74 60 22 2e 20 20   give "`bat`".  
20c0: 49 6e 20 70 61 72 74 69 63 75 6c 61 72 2c 20 74  In particular, t
20d0: 68 65 20 66 69 6c 65 73 0a 20 20 20 20 67 65 6e  he files.    gen
20e0: 65 72 61 74 65 64 20 62 79 20 60 62 6f 6f 74 73  erated by `boots
20f0: 74 72 61 70 2e 62 61 74 60 20 6d 61 6b 65 20 6e  trap.bat` make n
2100: 6f 20 64 69 73 74 69 6e 63 74 69 6f 6e 20 62 65  o distinction be
2110: 74 77 65 65 6e 20 22 70 65 64 61 6e 74 69 63 22  tween "pedantic"
2120: 0a 20 20 20 20 61 6e 64 20 6e 6f 72 6d 61 6c 20  .    and normal 
2130: 62 75 69 6c 64 73 2e 0a 0a 20 20 20 20 50 61 73  builds...    Pas
2140: 73 69 6e 67 20 60 62 61 74 60 20 73 74 6f 70 73  sing `bat` stops
2150: 20 61 6c 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e   all command lin
2160: 65 20 70 72 6f 63 65 73 73 69 6e 67 20 69 6e 20  e processing in 
2170: 74 68 65 20 60 62 6f 6f 74 73 74 72 61 70 60 0a  the `bootstrap`.
2180: 20 20 20 20 73 63 72 69 70 74 2c 20 73 6f 20 69      script, so i
2190: 66 20 79 6f 75 20 61 6c 73 6f 20 70 61 73 73 20  f you also pass 
21a0: 73 6f 6d 65 20 6f 66 20 74 68 65 20 6f 74 68 65  some of the othe
21b0: 72 20 6f 70 74 69 6f 6e 73 2c 20 22 60 62 61 74  r options, "`bat
21c0: 60 22 20 6d 75 73 74 0a 20 20 20 20 62 65 20 6c  `" must.    be l
21d0: 61 73 74 2e 0a 20 20 20 20 0a 20 20 20 20 54 68  ast..    .    Th
21e0: 65 20 60 62 6f 6f 74 73 74 72 61 70 2e 62 61 74  e `bootstrap.bat
21f0: 60 20 73 63 72 69 70 74 20 69 73 20 75 73 65 66  ` script is usef
2200: 75 6c 20 6f 6e 6c 79 20 77 68 65 6e 20 79 6f 75  ul only when you
2210: 20 69 6e 74 65 6e 64 20 74 6f 20 62 75 69 6c 64   intend to build
2220: 0a 20 20 20 20 4d 79 53 51 4c 2b 2b 20 77 69 74  .    MySQL++ wit
2230: 68 20 4d 69 6e 47 57 20 6f 72 20 56 69 73 75 61  h MinGW or Visua
2240: 6c 20 43 2b 2b 2c 20 61 6e 64 20 79 6f 75 20 61  l C++, and you a
2250: 72 65 20 75 73 69 6e 67 20 43 79 67 77 69 6e 20  re using Cygwin 
2260: 6f 6e 6c 79 20 61 73 20 61 0a 20 20 20 20 63 6f  only as a.    co
2270: 6d 6d 61 6e 64 20 6c 69 6e 65 20 65 6e 76 69 72  mmand line envir
2280: 6f 6e 6d 65 6e 74 2e 20 20 49 66 20 79 6f 75 20  onment.  If you 
2290: 69 6e 74 65 6e 64 20 74 6f 20 62 75 69 6c 64 20  intend to build 
22a0: 4d 79 53 51 4c 2b 2b 20 77 69 74 68 0a 20 20 20  MySQL++ with.   
22b0: 20 43 79 67 77 69 6e 27 73 20 47 43 43 20 74 6f   Cygwin's GCC to
22c0: 6f 6c 63 68 61 69 6e 2c 20 79 6f 75 20 6d 75 73  olchain, you mus
22d0: 74 20 6e 6f 74 20 67 69 76 65 20 74 68 69 73 20  t not give this 
22e0: 6f 70 74 69 6f 6e 2c 20 65 6c 73 65 20 79 6f 75  option, else you
22f0: 20 77 69 6c 6c 0a 20 20 20 20 6e 6f 74 20 65 6e   will.    not en
2300: 64 20 75 70 20 77 69 74 68 20 74 68 65 20 6e 65  d up with the ne
2310: 63 65 73 73 61 72 79 20 62 75 69 6c 64 20 73 79  cessary build sy
2320: 73 74 65 6d 20 66 69 6c 65 73 2e 0a 0a 20 20 20  stem files...   
2330: 20 4f 6e 65 20 61 64 76 61 6e 74 61 67 65 20 6f   One advantage o
2340: 66 20 74 68 69 73 20 66 65 61 74 75 72 65 20 69  f this feature i
2350: 73 20 74 68 61 74 20 74 68 65 20 63 6f 6d 6d 61  s that the comma
2360: 6e 64 73 20 6e 65 63 65 73 73 61 72 79 20 74 6f  nds necessary to
2370: 0a 20 20 20 20 61 63 68 69 65 76 65 20 61 20 67  .    achieve a g
2380: 69 76 65 6e 20 65 66 66 65 63 74 20 77 69 74 68  iven effect with
2390: 20 60 62 6f 6f 74 73 74 72 61 70 2e 62 61 74 60   `bootstrap.bat`
23a0: 20 77 68 65 6e 20 72 75 6e 20 76 69 61 20 60 62   when run via `b
23b0: 6f 6f 74 73 74 72 61 70 60 0a 20 20 20 20 61 72  ootstrap`.    ar
23c0: 65 20 73 68 6f 72 74 65 72 20 74 68 61 6e 20 77  e shorter than w
23d0: 68 65 6e 20 79 6f 75 20 72 75 6e 20 74 68 65 20  hen you run the 
23e0: 62 61 74 63 68 20 66 69 6c 65 20 64 69 72 65 63  batch file direc
23f0: 74 6c 79 2e 0a 0a 20 20 20 20 41 6e 6f 74 68 65  tly...    Anothe
2400: 72 20 61 64 76 61 6e 74 61 67 65 20 69 73 20 74  r advantage is t
2410: 68 61 74 20 74 68 69 73 20 6c 6f 77 2d 73 74 72  hat this low-str
2420: 65 6e 67 74 68 20 76 65 72 73 69 6f 6e 20 6f 66  ength version of
2430: 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70 0a 20   the bootstrap. 
2440: 20 20 20 73 63 72 69 70 74 20 72 75 6e 73 20 66     script runs f
2450: 61 73 74 65 72 20 74 68 61 6e 20 74 68 65 20 66  aster than the f
2460: 75 6c 6c 2d 73 74 72 65 6e 67 74 68 20 66 6f 72  ull-strength for
2470: 6d 2c 20 62 65 63 61 75 73 65 20 69 74 20 70 72  m, because it pr
2480: 6f 64 75 63 65 73 0a 20 20 20 20 66 65 77 65 72  oduces.    fewer
2490: 20 66 69 6c 65 73 2e 0a 0a 20 20 20 20 46 69 6e   files...    Fin
24a0: 61 6c 6c 79 2c 20 72 75 6e 6e 69 6e 67 20 60 62  ally, running `b
24b0: 6f 6f 74 73 74 72 61 70 2e 62 61 74 60 20 69 6e  ootstrap.bat` in
24c0: 64 69 72 65 63 74 6c 79 20 6c 69 6b 65 20 74 68  directly like th
24d0: 69 73 20 6c 65 74 73 20 79 6f 75 20 61 76 6f 69  is lets you avoi
24e0: 64 0a 20 20 20 20 75 73 69 6e 67 20 60 63 6d 64  d.    using `cmd
24f0: 2e 65 78 65 60 2c 20 61 20 63 6f 6d 6d 61 6e 64  .exe`, a command
2500: 20 73 68 65 6c 6c 20 67 72 65 61 74 6c 79 20 69   shell greatly i
2510: 6e 66 65 72 69 6f 72 20 74 6f 20 61 6e 79 20 6f  nferior to any o
2520: 66 20 74 68 6f 73 65 0a 20 20 20 20 61 76 61 69  f those.    avai
2530: 6c 61 62 6c 65 20 66 6f 72 20 43 79 67 77 69 6e  lable for Cygwin
2540: 2e 0a 0a 2a 20 20 20 60 63 6f 6e 66 69 67 75 72  ...*   `configur
2550: 65 60 20 73 63 72 69 70 74 20 6f 70 74 69 6f 6e  e` script option
2560: 73 0a 0a 20 20 20 20 41 73 20 73 6f 6f 6e 20 61  s..    As soon a
2570: 73 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70 20  s the bootstrap 
2580: 73 63 72 69 70 74 20 73 65 65 73 20 61 6e 20 6f  script sees an o
2590: 70 74 69 6f 6e 20 74 68 61 74 20 69 74 20 64 6f  ption that it do
25a0: 65 73 6e 27 74 0a 20 20 20 20 75 6e 64 65 72 73  esn't.    unders
25b0: 74 61 6e 64 2c 20 69 74 20 73 74 6f 70 73 20 70  tand, it stops p
25c0: 72 6f 63 65 73 73 69 6e 67 20 74 68 65 20 63 6f  rocessing the co
25d0: 6d 6d 61 6e 64 20 6c 69 6e 65 2e 20 20 41 6e 79  mmand line.  Any
25e0: 20 73 75 62 73 65 71 75 65 6e 74 0a 20 20 20 20   subsequent.    
25f0: 6f 70 74 69 6f 6e 73 20 61 72 65 20 70 61 73 73  options are pass
2600: 65 64 20 74 6f 20 74 68 65 20 60 63 6f 6e 66 69  ed to the `confi
2610: 67 75 72 65 60 20 73 63 72 69 70 74 2e 20 53 65  gure` script. Se
2620: 65 0a 20 20 20 20 5b 52 45 41 44 4d 45 2d 55 6e  e.    [README-Un
2630: 69 78 2e 74 78 74 5d 5b 72 6d 75 5d 20 66 6f 72  ix.txt][rmu] for
2640: 20 6d 6f 72 65 20 6f 6e 20 60 63 6f 6e 66 69 67   more on `config
2650: 75 72 65 60 20 73 63 72 69 70 74 20 6f 70 74 69  ure` script opti
2660: 6f 6e 73 2e 0a 0a 5b 62 66 5d 3a 20 20 68 74 74  ons...[bf]:  htt
2670: 70 3a 2f 2f 62 61 6b 65 66 69 6c 65 2e 6f 72 67  p://bakefile.org
2680: 2f 0a 5b 72 6d 75 5d 3a 20 68 74 74 70 73 3a 2f  /.[rmu]: https:/
2690: 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d  /tangentsoft.com
26a0: 2f 6d 79 73 71 6c 70 70 2f 66 69 6c 65 2f 52 45  /mysqlpp/file/RE
26b0: 41 44 4d 45 2d 55 6e 69 78 2e 74 78 74 0a 0a 0a  ADME-Unix.txt...
26c0: 23 23 20 3c 61 20 69 64 3d 22 77 69 6e 62 73 22  ## <a id="winbs"
26d0: 3e 3c 2f 61 3e 42 6f 6f 74 73 74 72 61 70 70 69  ></a>Bootstrappi
26e0: 6e 67 20 74 68 65 20 4c 69 62 72 61 72 79 20 55  ng the Library U
26f0: 73 69 6e 67 20 4f 6e 6c 79 20 57 69 6e 64 6f 77  sing Only Window
2700: 73 0a 0a 54 68 65 20 74 68 69 6e 67 20 74 68 61  s..The thing tha
2710: 74 20 6d 61 6b 65 73 20 62 6f 6f 74 73 74 72 61  t makes bootstra
2720: 70 70 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73  pping on Windows
2730: 20 64 69 66 66 69 63 75 6c 74 20 69 73 20 74 68   difficult is th
2740: 61 74 20 6f 6e 65 20 6f 66 0a 74 68 65 20 72 65  at one of.the re
2750: 71 75 69 72 65 64 20 73 74 65 70 73 20 75 73 65  quired steps use
2760: 73 20 61 20 55 6e 69 78 2d 63 65 6e 74 72 69 63  s a Unix-centric
2770: 20 74 6f 6f 6c 2c 20 41 75 74 6f 63 6f 6e 66 2e   tool, Autoconf.
2780: 20 20 54 68 69 73 20 73 65 63 74 69 6f 6e 0a 67    This section.g
2790: 69 76 65 73 20 61 6c 74 65 72 6e 61 74 69 76 65  ives alternative
27a0: 73 20 66 6f 72 20 65 69 74 68 65 72 20 67 65 74  s for either get
27b0: 74 69 6e 67 20 41 75 74 6f 63 6f 6e 66 20 77 6f  ting Autoconf wo
27c0: 72 6b 69 6e 67 20 6f 6e 20 57 69 6e 64 6f 77 73  rking on Windows
27d0: 20 6f 72 0a 61 76 6f 69 64 69 6e 67 20 74 68 65   or.avoiding the
27e0: 20 6e 65 65 64 20 66 6f 72 20 69 74 2e 0a 0a 54   need for it...T
27f0: 68 65 20 74 68 69 6e 67 20 41 75 74 6f 63 6f 6e  he thing Autocon
2800: 66 20 64 6f 65 73 20 74 68 61 74 27 73 20 72 65  f does that's re
2810: 6c 65 76 61 6e 74 20 74 6f 20 57 69 6e 64 6f 77  levant to Window
2820: 73 20 62 75 69 6c 64 73 20 6f 66 20 4d 79 53 51  s builds of MySQ
2830: 4c 2b 2b 0a 69 73 20 74 68 61 74 20 69 74 20 73  L++.is that it s
2840: 75 62 73 74 69 74 75 74 65 73 20 74 68 65 20 63  ubstitutes the c
2850: 75 72 72 65 6e 74 20 4d 79 53 51 4c 2b 2b 20 76  urrent MySQL++ v
2860: 65 72 73 69 6f 6e 20 6e 75 6d 62 65 72 20 69 6e  ersion number in
2870: 74 6f 20 73 65 76 65 72 61 6c 0a 73 6f 75 72 63  to several.sourc
2880: 65 20 66 69 6c 65 73 2e 20 54 68 69 73 20 61 6c  e files. This al
2890: 6c 6f 77 73 20 75 73 20 74 6f 20 63 68 61 6e 67  lows us to chang
28a0: 65 20 74 68 65 20 76 65 72 73 69 6f 6e 20 6e 75  e the version nu
28b0: 6d 62 65 72 20 69 6e 20 6a 75 73 74 20 6f 6e 65  mber in just one
28c0: 0a 70 6c 61 63 65 20 e2 80 94 20 60 63 6f 6e 66  .place ... `conf
28d0: 69 67 75 72 65 2e 61 63 60 20 e2 80 94 20 61 6e  igure.ac` ... an
28e0: 64 20 68 61 76 65 20 69 74 20 61 70 70 6c 69 65  d have it applie
28f0: 64 20 74 6f 20 61 6c 6c 20 74 68 65 73 65 20 6f  d to all these o
2900: 74 68 65 72 20 70 6c 61 63 65 73 2e 0a 55 6e 74  ther places..Unt
2910: 69 6c 20 79 6f 75 20 64 6f 20 74 68 69 73 20 73  il you do this s
2920: 74 65 70 2c 20 61 20 46 6f 73 73 69 6c 20 63 68  tep, a Fossil ch
2930: 65 63 6b 6f 75 74 20 6f 66 20 4d 79 53 51 4c 2b  eckout of MySQL+
2940: 2b 20 77 6f 6e 27 74 20 62 75 69 6c 64 2c 0a 62  + won't build,.b
2950: 65 63 61 75 73 65 20 74 68 65 73 65 20 66 69 6c  ecause these fil
2960: 65 73 20 77 69 74 68 20 74 68 65 20 76 65 72 73  es with the vers
2970: 69 6f 6e 20 6e 75 6d 62 65 72 73 20 69 6e 20 74  ion numbers in t
2980: 68 65 6d 20 77 6f 6e 27 74 20 62 65 20 67 65 6e  hem won't be gen
2990: 65 72 61 74 65 64 2e 0a 0a 0a 23 23 23 20 4f 70  erated....### Op
29a0: 74 69 6f 6e 20 31 3a 20 43 6f 70 79 20 74 68 65  tion 1: Copy the
29b0: 20 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65 73   generated files
29c0: 20 6f 76 65 72 20 66 72 6f 6d 20 61 20 72 65 6c   over from a rel
29d0: 65 61 73 65 64 20 76 65 72 73 69 6f 6e 0a 0a 4f  eased version..O
29e0: 6e 6c 79 20 6f 6e 65 20 6f 66 20 74 68 65 73 65  nly one of these
29f0: 20 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65 73   generated files
2a00: 20 69 73 20 61 62 73 6f 6c 75 74 65 6c 79 20 63   is absolutely c
2a10: 72 69 74 69 63 61 6c 20 74 6f 20 61 6c 6c 6f 77  ritical to allow
2a20: 69 6e 67 0a 4d 79 53 51 4c 2b 2b 20 74 6f 20 62  ing.MySQL++ to b
2a30: 75 69 6c 64 3a 20 60 6c 69 62 2f 6d 79 73 71 6c  uild: `lib/mysql
2a40: 2b 2b 2e 68 60 2e 20 53 6f 2c 20 74 68 65 20 73  ++.h`. So, the s
2a50: 69 6d 70 6c 65 73 74 20 6f 70 74 69 6f 6e 20 79  implest option y
2a60: 6f 75 20 68 61 76 65 20 74 6f 0a 62 6f 6f 74 73  ou have to.boots
2a70: 74 72 61 70 20 4d 79 53 51 4c 2b 2b 20 65 6e 74  trap MySQL++ ent
2a80: 69 72 65 6c 79 20 6f 6e 20 57 69 6e 64 6f 77 73  irely on Windows
2a90: 20 69 73 20 74 6f 20 63 6f 70 79 20 60 6c 69 62   is to copy `lib
2aa0: 2f 6d 79 73 71 6c 2b 2b 2e 68 60 20 6f 76 65 72  /mysql++.h` over
2ab0: 0a 66 72 6f 6d 20 61 20 72 65 6c 65 61 73 65 64  .from a released
2ac0: 20 76 65 72 73 69 6f 6e 20 6f 66 20 4d 79 53 51   version of MySQ
2ad0: 4c 2b 2b 2e 20 57 68 69 6c 65 20 79 6f 75 27 72  L++. While you'r
2ae0: 65 20 64 6f 69 6e 67 20 74 68 61 74 2c 20 79 6f  e doing that, yo
2af0: 75 20 6d 69 67 68 74 0a 63 6f 70 79 20 6f 76 65  u might.copy ove
2b00: 72 20 74 68 65 20 6f 74 68 65 72 20 73 75 63 68  r the other such
2b10: 20 67 65 6e 65 72 61 74 65 64 20 66 69 6c 65 73   generated files
2b20: 3a 0a 0a 20 20 20 20 69 6e 73 74 61 6c 6c 2e 68  :..    install.h
2b30: 74 61 0a 20 20 20 20 6d 79 73 71 6c 2b 2b 2e 73  ta.    mysql++.s
2b40: 70 65 63 0a 20 20 20 20 64 6f 63 2f 75 73 65 72  pec.    doc/user
2b50: 6d 61 6e 2f 75 73 65 72 6d 61 6e 2e 64 62 78 0a  man/userman.dbx.
2b60: 20 20 20 20 6c 69 62 2f 44 6f 78 79 66 69 6c 65      lib/Doxyfile
2b70: 0a 0a 48 61 76 69 6e 67 20 64 6f 6e 65 20 74 68  ..Having done th
2b80: 61 74 2c 20 79 6f 75 20 63 61 6e 20 63 6f 6d 70  at, you can comp
2b90: 6c 65 74 65 20 74 68 65 20 62 6f 6f 74 73 74 72  lete the bootstr
2ba0: 61 70 70 69 6e 67 20 70 72 6f 63 65 73 73 20 62  apping process b
2bb0: 79 20 72 75 6e 6e 69 6e 67 0a 60 62 6f 6f 74 73  y running.`boots
2bc0: 74 72 61 70 2e 62 61 74 60 2e 20 49 74 20 68 61  trap.bat`. It ha
2bd0: 73 20 74 68 65 20 73 61 6d 65 20 70 75 72 70 6f  s the same purpo
2be0: 73 65 20 61 73 20 74 68 65 20 42 6f 75 72 6e 65  se as the Bourne
2bf0: 20 73 68 65 6c 6c 20 73 63 72 69 70 74 0a 64 65   shell script.de
2c00: 73 63 72 69 62 65 64 20 5b 61 62 6f 76 65 5d 28  scribed [above](
2c10: 23 62 6f 6f 74 73 74 72 61 70 29 2c 20 62 75 74  #bootstrap), but
2c20: 20 77 69 74 68 20 61 20 64 69 66 66 65 72 65 6e   with a differen
2c30: 74 20 61 6e 64 20 73 69 6d 70 6c 65 72 20 75 73  t and simpler us
2c40: 61 67 65 3a 0a 0a 20 20 20 20 43 3a 5c 3e 20 62  age:..    C:\> b
2c50: 6f 6f 74 73 74 72 61 70 2e 62 61 74 20 5b 62 61  ootstrap.bat [ba
2c60: 6b 65 66 69 6c 65 2d 6f 70 74 69 6f 6e 73 5d 0a  kefile-options].
2c70: 0a 41 6e 79 20 6f 70 74 69 6f 6e 73 20 70 61 73  .Any options pas
2c80: 73 65 64 20 61 72 65 20 70 61 73 73 65 64 20 61  sed are passed a
2c90: 73 2d 69 73 20 74 6f 20 42 61 6b 65 66 69 6c 65  s-is to Bakefile
2ca0: 2e 20 54 68 69 73 20 69 73 20 6e 6f 72 6d 61 6c  . This is normal
2cb0: 6c 79 20 75 73 65 64 0a 74 6f 20 70 61 73 73 20  ly used.to pass 
2cc0: 60 2d 44 60 20 6f 70 74 69 6f 6e 73 20 74 6f 20  `-D` options to 
2cd0: 61 66 66 65 63 74 20 74 68 65 20 67 65 6e 65 72  affect the gener
2ce0: 61 74 65 64 20 62 75 69 6c 64 20 73 79 73 74 65  ated build syste
2cf0: 6d 20 6f 75 74 70 75 74 20 66 69 6c 65 73 2e 0a  m output files..
2d00: 0a 0a 23 23 23 20 4f 70 74 69 6f 6e 20 32 3a 20  ..### Option 2: 
2d10: 43 79 67 77 69 6e 0a 0a 49 66 20 79 6f 75 27 64  Cygwin..If you'd
2d20: 20 6c 69 6b 65 20 74 6f 20 68 61 63 6b 20 6f 6e   like to hack on
2d30: 20 4d 79 53 51 4c 2b 2b 20 65 6e 74 69 72 65 6c   MySQL++ entirel
2d40: 79 20 6f 6e 20 57 69 6e 64 6f 77 73 20 61 6e 64  y on Windows and
2d50: 20 68 61 76 65 20 61 6c 6c 20 74 68 65 0a 62 75   have all the.bu
2d60: 69 6c 64 20 66 72 65 65 64 6f 6d 73 20 65 6e 6a  ild freedoms enj
2d70: 6f 79 65 64 20 62 79 20 74 68 6f 73 65 20 77 6f  oyed by those wo
2d80: 72 6b 69 6e 67 20 6f 6e 20 55 6e 69 78 79 20 70  rking on Unixy p
2d90: 6c 61 74 66 6f 72 6d 73 2c 20 74 68 65 20 73 69  latforms, the si
2da0: 6d 70 6c 65 73 74 0a 73 6f 6c 75 74 69 6f 6e 20  mplest.solution 
2db0: 69 73 20 70 72 6f 62 61 62 6c 79 20 74 6f 20 5b  is probably to [
2dc0: 69 6e 73 74 61 6c 6c 20 43 79 67 77 69 6e 5d 5b  install Cygwin][
2dd0: 63 79 67 5d 2e 20 49 74 20 64 6f 65 73 6e e2 80  cyg]. It doesn..
2de0: 99 74 20 6d 61 74 74 65 72 20 77 68 65 74 68 65  .t matter whethe
2df0: 72 0a 79 6f 75 20 75 73 65 20 74 68 65 20 33 32  r.you use the 32
2e00: 2d 62 69 74 20 6f 72 20 36 34 2d 62 69 74 20 76  -bit or 64-bit v
2e10: 65 72 73 69 6f 6e 2c 20 66 6f 72 20 6f 75 72 20  ersion, for our 
2e20: 70 75 72 70 6f 73 65 73 20 68 65 72 65 2e 0a 0a  purposes here...
2e30: 57 68 69 6c 65 20 69 6e 20 74 68 65 20 43 79 67  While in the Cyg
2e40: 77 69 6e 20 73 65 74 75 70 20 70 72 6f 67 72 61  win setup progra
2e50: 6d 2c 20 79 6f 75 20 77 69 6c 6c 20 68 61 76 65  m, you will have
2e60: 20 74 6f 20 61 64 64 20 74 68 65 20 41 75 74 6f   to add the Auto
2e70: 63 6f 6e 66 20 61 6e 64 0a 50 65 72 6c 20 35 20  conf and.Perl 5 
2e80: 70 61 63 6b 61 67 65 73 2c 20 77 68 69 63 68 20  packages, which 
2e90: 61 72 65 6e 27 74 20 69 6e 73 74 61 6c 6c 65 64  aren't installed
2ea0: 20 69 6e 20 43 79 67 77 69 6e 20 62 79 20 64 65   in Cygwin by de
2eb0: 66 61 75 6c 74 2e 20 20 41 75 74 6f 63 6f 6e 66  fault.  Autoconf
2ec0: 0a 69 73 20 69 6e 20 74 68 65 20 44 65 76 65 6c  .is in the Devel
2ed0: 20 63 61 74 65 67 6f 72 79 2c 20 61 6e 64 20 50   category, and P
2ee0: 65 72 6c 20 35 20 69 6e 20 74 68 65 20 49 6e 74  erl 5 in the Int
2ef0: 65 72 70 72 65 74 65 72 73 20 63 61 74 65 67 6f  erpreters catego
2f00: 72 79 2e 0a 0a 59 6f 75 20 77 69 6c 6c 20 61 6c  ry...You will al
2f10: 73 6f 20 6e 65 65 64 20 74 6f 20 69 6e 73 74 61  so need to insta
2f20: 6c 6c 20 74 68 65 20 6e 61 74 69 76 65 20 57 69  ll the native Wi
2f30: 6e 64 6f 77 73 20 62 69 6e 61 72 79 20 76 65 72  ndows binary ver
2f40: 73 69 6f 6e 20 6f 66 0a 5b 42 61 6b 65 66 69 6c  sion of.[Bakefil
2f50: 65 5d 28 68 74 74 70 3a 2f 2f 62 61 6b 65 66 69  e](http://bakefi
2f60: 6c 65 2e 6f 72 67 2f 29 2e 20 20 44 6f 6e 27 74  le.org/).  Don't
2f70: 20 67 65 74 20 74 68 65 20 73 6f 75 72 63 65 20   get the source 
2f80: 76 65 72 73 69 6f 6e 20 61 6e 64 20 74 72 79 0a  version and try.
2f90: 74 6f 20 62 75 69 6c 64 20 42 61 6b 65 66 69 6c  to build Bakefil
2fa0: 65 20 75 6e 64 65 72 20 43 79 67 77 69 6e 3b 20  e under Cygwin; 
2fb0: 69 74 20 77 6f 6e 27 74 20 77 6f 72 6b 2e 20 54  it won't work. T
2fc0: 68 65 20 57 69 6e 64 6f 77 73 20 62 69 6e 61 72  he Windows binar
2fd0: 79 0a 76 65 72 73 69 6f 6e 20 6f 66 20 42 61 6b  y.version of Bak
2fe0: 65 66 69 6c 65 20 69 6e 63 6c 75 64 65 73 20 61  efile includes a
2ff0: 6e 20 65 6d 62 65 64 64 65 64 20 76 65 72 73 69  n embedded versi
3000: 6f 6e 20 6f 66 20 50 79 74 68 6f 6e 2c 20 73 6f  on of Python, so
3010: 20 79 6f 75 20 77 6f 6e 27 74 0a 6e 65 65 64 20   you won't.need 
3020: 74 6f 20 69 6e 73 74 61 6c 6c 20 43 79 67 77 69  to install Cygwi
3030: 6e 27 73 20 50 79 74 68 6f 6e 2e 0a 0a 48 61 76  n's Python...Hav
3040: 69 6e 67 20 64 6f 6e 65 20 61 6c 6c 20 74 68 69  ing done all thi
3050: 73 2c 20 79 6f 75 20 63 61 6e 20 66 6f 6c 6c 6f  s, you can follo
3060: 77 20 74 68 65 20 55 6e 69 78 20 62 6f 6f 74 73  w the Unix boots
3070: 74 72 61 70 70 69 6e 67 0a 69 6e 73 74 72 75 63  trapping.instruc
3080: 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 70 72 65  tions in the pre
3090: 76 69 6f 75 73 20 73 65 63 74 69 6f 6e 2e 0a 0a  vious section...
30a0: 5b 63 79 67 5d 3a 20 68 74 74 70 3a 2f 2f 63 79  [cyg]: http://cy
30b0: 67 77 69 6e 2e 63 6f 6d 2f 0a 0a 0a 23 23 23 20  gwin.com/...### 
30c0: 4f 70 74 69 6f 6e 20 33 3a 20 57 69 6e 64 6f 77  Option 3: Window
30d0: 73 20 53 75 62 73 79 73 74 65 6d 20 66 6f 72 20  s Subsystem for 
30e0: 4c 69 6e 75 78 20 28 57 53 4c 29 0a 0a 49 66 20  Linux (WSL)..If 
30f0: 79 6f 75 e2 80 99 72 65 20 6f 6e 20 57 69 6e 64  you...re on Wind
3100: 6f 77 73 20 31 30 2c 20 79 6f 75 20 68 61 76 65  ows 10, you have
3110: 20 74 68 65 20 6f 70 74 69 6f 6e 20 6f 66 20 5b   the option of [
3120: 69 6e 73 74 61 6c 6c 69 6e 67 20 57 53 4c 5d 5b  installing WSL][
3130: 77 73 6c 5d 2c 20 61 0a 6c 69 67 68 74 77 65 69  wsl], a.lightwei
3140: 67 68 74 20 4c 69 6e 75 78 20 6b 65 72 6e 65 6c  ght Linux kernel
3150: 20 61 6e 64 20 75 73 65 72 20 65 6e 76 69 72 6f   and user enviro
3160: 6e 6d 65 6e 74 20 74 68 61 74 20 72 75 6e 73 20  nment that runs 
3170: 61 74 6f 70 20 57 69 6e 64 6f 77 73 2e 0a 54 68  atop Windows..Th
3180: 69 73 20 69 73 20 66 75 6e 64 61 6d 65 6e 74 61  is is fundamenta
3190: 6c 6c 79 20 64 69 66 66 65 72 65 6e 74 20 74 65  lly different te
31a0: 63 68 6e 6f 6c 6f 67 79 20 74 68 61 6e 20 43 79  chnology than Cy
31b0: 67 77 69 6e 2c 20 62 75 74 20 74 68 65 0a 75 73  gwin, but the.us
31c0: 65 72 2d 6c 65 76 65 6c 20 65 66 66 65 63 74 20  er-level effect 
31d0: 6f 66 20 69 74 20 69 73 20 74 68 65 20 73 61 6d  of it is the sam
31e0: 65 20 61 73 20 66 61 72 20 61 73 20 4d 79 53 51  e as far as MySQ
31f0: 4c 2b 2b e2 80 99 73 20 62 75 69 6c 64 20 73 79  L++...s build sy
3200: 73 74 65 6d 0a 67 6f 65 73 2e 0a 0a 41 73 73 75  stem.goes...Assu
3210: 6d 69 6e 67 20 79 6f 75 20 75 73 65 20 74 68 65  ming you use the
3220: 20 64 65 66 61 75 6c 74 20 55 62 75 6e 74 75 20   default Ubuntu 
3230: 65 6e 76 69 72 6f 6d 65 6e 74 20 61 74 6f 70 20  enviroment atop 
3240: 57 53 4c 2c 20 74 68 65 20 5b 73 74 61 6e 64 61  WSL, the [standa
3250: 72 64 0a 62 6f 6f 74 73 74 72 61 70 70 69 6e 67  rd.bootstrapping
3260: 20 70 72 6f 63 65 73 73 5d 28 23 62 6f 6f 74 73   process](#boots
3270: 74 72 61 70 29 20 61 70 70 6c 69 65 73 2c 20 61  trap) applies, a
3280: 66 74 65 72 20 79 6f 75 20 69 6e 73 74 61 6c 6c  fter you install
3290: 20 74 68 65 20 6e 65 65 64 65 64 0a 74 6f 6f 6c   the needed.tool
32a0: 73 3a 0a 0a 20 20 20 20 24 20 61 70 74 20 69 6e  s:..    $ apt in
32b0: 73 74 61 6c 6c 20 62 61 6b 65 66 69 6c 65 20 62  stall bakefile b
32c0: 75 69 6c 64 2d 65 73 73 65 6e 74 69 61 6c 20 70  uild-essential p
32d0: 65 72 6c 20 6c 69 62 6d 79 73 71 6c 63 6c 69 65  erl libmysqlclie
32e0: 6e 74 2d 64 65 76 0a 0a 5b 77 73 6c 5d 3a 20 68  nt-dev..[wsl]: h
32f0: 74 74 70 73 3a 2f 2f 64 6f 63 73 2e 6d 69 63 72  ttps://docs.micr
3300: 6f 73 6f 66 74 2e 63 6f 6d 2f 65 6e 2d 75 73 2f  osoft.com/en-us/
3310: 77 69 6e 64 6f 77 73 2f 77 73 6c 2f 69 6e 73 74  windows/wsl/inst
3320: 61 6c 6c 2d 77 69 6e 31 30 0a 0a 0a 23 23 23 20  all-win10...### 
3330: 4f 70 74 69 6f 6e 20 34 3a 20 5b 22 48 65 72 65  Option 4: ["Here
3340: 27 73 20 61 20 6e 69 63 6b 65 6c 2c 20 6b 69 64  's a nickel, kid
3350: 2c 20 67 65 74 20 79 6f 75 72 73 65 6c 66 20 61  , get yourself a
3360: 20 62 65 74 74 65 72 20 63 6f 6d 70 75 74 65 72   better computer
3370: 2e 22 5d 5b 64 63 5d 0a 0a 46 69 6e 61 6c 6c 79  ."][dc]..Finally
3380: 2c 20 79 6f 75 20 6d 69 67 68 74 20 68 61 76 65  , you might have
3390: 20 61 63 63 65 73 73 20 74 6f 20 61 20 55 6e 69   access to a Uni
33a0: 78 79 20 73 79 73 74 65 6d 2c 20 6f 72 20 74 68  xy system, or th
33b0: 65 20 61 62 69 6c 69 74 79 20 74 6f 20 73 65 74  e ability to set
33c0: 0a 6f 6e 65 20 75 70 2e 20 59 6f 75 20 64 6f 6e  .one up. You don
33d0: 27 74 20 65 76 65 6e 20 6e 65 65 64 20 61 20 73  't even need a s
33e0: 65 70 61 72 61 74 65 20 70 68 79 73 69 63 61 6c  eparate physical
33f0: 20 63 6f 6d 70 75 74 65 72 2c 20 6e 6f 77 20 74   computer, now t
3400: 68 61 74 0a 76 69 72 74 75 61 6c 20 6d 61 63 68  hat.virtual mach
3410: 69 6e 65 20 74 65 63 68 6f 6c 6f 67 79 20 69 73  ine techology is
3420: 20 66 72 65 65 2e 0a 0a 47 69 76 65 6e 20 73 75   free...Given su
3430: 63 68 20 61 20 6d 61 63 68 69 6e 65 2c 20 79 6f  ch a machine, yo
3440: 75 27 64 20 64 6f 20 74 68 65 20 46 6f 73 73 69  u'd do the Fossi
3450: 6c 20 63 68 65 63 6b 6f 75 74 20 6f 66 20 4d 79  l checkout of My
3460: 53 51 4c 2b 2b 20 6f 6e 20 74 68 61 74 0a 6d 61  SQL++ on that.ma
3470: 63 68 69 6e 65 2c 20 74 68 65 6e 20 62 6f 6f 74  chine, then boot
3480: 73 74 72 61 70 20 69 74 20 74 68 65 72 65 20 75  strap it there u
3490: 73 69 6e 67 20 74 68 65 20 69 6e 73 74 72 75 63  sing the instruc
34a0: 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 70 72 65  tions in the pre
34b0: 76 69 6f 75 73 0a 73 65 63 74 69 6f 6e 2c 20 61  vious.section, a
34c0: 6e 64 20 63 6f 70 79 20 74 68 65 20 67 65 6e 65  nd copy the gene
34d0: 72 61 74 65 64 20 66 69 6c 65 73 20 62 61 63 6b  rated files back
34e0: 20 74 6f 20 74 68 65 20 57 69 6e 64 6f 77 73 20   to the Windows 
34f0: 62 6f 78 2e 0a 0a 5b 64 63 5d 3a 20 68 74 74 70  box...[dc]: http
3500: 3a 2f 2f 74 6f 6d 61 79 6b 6f 2e 63 6f 6d 2f 77  ://tomayko.com/w
3510: 72 69 74 69 6e 67 73 2f 74 68 61 74 2d 64 69 6c  ritings/that-dil
3520: 62 65 72 74 2d 63 61 72 74 6f 6f 6e 0a 0a 0a 23  bert-cartoon...#
3530: 23 20 4f 6e 20 4d 61 6e 69 70 75 6c 61 74 69 6e  # On Manipulatin
3540: 67 20 74 68 65 20 42 75 69 6c 64 20 53 79 73 74  g the Build Syst
3550: 65 6d 20 53 6f 75 72 63 65 20 46 69 6c 65 73 0a  em Source Files.
3560: 0a 4f 6e 65 20 6f 66 20 74 68 65 20 74 68 69 6e  .One of the thin
3570: 67 73 20 74 68 65 20 62 6f 6f 74 73 74 72 61 70  gs the bootstrap
3580: 70 69 6e 67 20 73 79 73 74 65 6d 20 64 65 73 63  ping system desc
3590: 72 69 62 65 64 20 5b 61 62 6f 76 65 5d 28 23 62  ribed [above](#b
35a0: 6f 6f 74 73 74 72 61 70 29 0a 64 6f 65 73 20 69  ootstrap).does i
35b0: 73 20 70 72 6f 64 75 63 65 73 20 76 61 72 69 6f  s produces vario
35c0: 75 73 20 74 79 70 65 73 20 6f 66 20 70 72 6f 6a  us types of proj
35d0: 65 63 74 20 61 6e 64 20 6d 61 6b 65 20 66 69 6c  ect and make fil
35e0: 65 73 20 66 72 6f 6d 20 61 20 73 6d 61 6c 6c 0a  es from a small.
35f0: 6e 75 6d 62 65 72 20 6f 66 20 73 6f 75 72 63 65  number of source
3600: 20 66 69 6c 65 73 2e 20 54 68 69 73 20 73 79 73   files. This sys
3610: 74 65 6d 20 6c 65 74 73 20 75 73 20 73 75 70 70  tem lets us supp
3620: 6f 72 74 20 6d 61 6e 79 20 70 6c 61 74 66 6f 72  ort many platfor
3630: 6d 73 0a 77 69 74 68 6f 75 74 20 68 61 76 69 6e  ms.without havin
3640: 67 20 74 6f 20 6d 61 69 6e 74 61 69 6e 20 73 65  g to maintain se
3650: 70 61 72 61 74 65 20 62 75 69 6c 64 20 73 79 73  parate build sys
3660: 74 65 6d 20 66 69 6c 65 73 20 66 6f 72 20 65 61  tem files for ea
3670: 63 68 0a 70 6c 61 74 66 6f 72 6d 2e 0a 0a 5b 42  ch.platform...[B
3680: 61 6b 65 66 69 6c 65 5d 5b 62 66 5d 20 70 72 6f  akefile][bf] pro
3690: 64 75 63 65 73 20 6d 6f 73 74 20 6f 66 20 74 68  duces most of th
36a0: 65 73 65 20 70 72 6f 6a 65 63 74 20 61 6e 64 20  ese project and 
36b0: 6d 61 6b 65 0a 66 69 6c 65 73 20 66 72 6f 6d 20  make.files from 
36c0: 61 20 73 69 6e 67 6c 65 20 73 6f 75 72 63 65 20  a single source 
36d0: 66 69 6c 65 20 63 61 6c 6c 65 64 20 5b 60 6d 79  file called [`my
36e0: 73 71 6c 2b 2b 2e 62 6b 6c 60 5d 5b 62 6b 6c 5d  sql++.bkl`][bkl]
36f0: 2e 0a 0a 45 78 63 65 70 74 20 66 6f 72 20 73 6d  ...Except for sm
3700: 61 6c 6c 20 6c 6f 63 61 6c 20 63 68 61 6e 67 65  all local change
3710: 73 2c 20 69 74 27 73 20 62 65 73 74 20 74 6f 20  s, it's best to 
3720: 63 68 61 6e 67 65 20 60 6d 79 73 71 6c 2b 2b 2e  change `mysql++.
3730: 62 6b 6c 60 20 61 6e 64 0a 22 72 65 2d 62 61 6b  bkl` and."re-bak
3740: 65 22 20 74 68 65 20 70 72 6f 6a 65 63 74 20 61  e" the project a
3750: 6e 64 20 6d 61 6b 65 20 66 69 6c 65 73 20 72 61  nd make files ra
3760: 74 68 65 72 20 74 68 61 6e 20 63 68 61 6e 67 65  ther than change
3770: 20 74 68 6f 73 65 20 66 69 6c 65 73 0a 64 69 72   those files.dir
3780: 65 63 74 6c 79 2e 20 59 6f 75 20 63 61 6e 20 64  ectly. You can d
3790: 6f 20 74 68 69 73 20 77 69 74 68 20 74 68 65 20  o this with the 
37a0: 62 6f 6f 74 73 74 72 61 70 20 73 63 72 69 70 74  bootstrap script
37b0: 73 20 63 6f 76 65 72 65 64 20 61 62 6f 76 65 2e  s covered above.
37c0: 20 4f 6e 0a 57 69 6e 64 6f 77 73 2c 20 69 66 20   On.Windows, if 
37d0: 61 6c 6c 20 79 6f 75 27 76 65 20 63 68 61 6e 67  all you've chang
37e0: 65 64 20 69 73 20 60 6d 79 73 71 6c 2b 2b 2e 62  ed is `mysql++.b
37f0: 6b 6c 60 2c 20 79 6f 75 20 63 61 6e 20 75 73 65  kl`, you can use
3800: 0a 60 72 65 62 61 6b 65 2e 62 61 74 60 20 69 6e  .`rebake.bat` in
3810: 73 74 65 61 64 2c 20 77 68 69 63 68 20 64 6f 65  stead, which doe
3820: 73 6e 27 74 20 74 72 79 20 74 6f 20 64 6f 20 61  sn't try to do a
3830: 73 20 6d 75 63 68 20 61 73 0a 60 62 6f 6f 74 73  s much as.`boots
3840: 74 72 61 70 2e 62 61 74 60 2e 0a 0a 42 61 6b 65  trap.bat`...Bake
3850: 66 69 6c 65 20 70 72 6f 64 75 63 65 73 20 66 69  file produces fi
3860: 6e 69 73 68 65 64 20 70 72 6f 6a 65 63 74 20 66  nished project f
3870: 69 6c 65 73 20 66 6f 72 20 56 69 73 75 61 6c 20  iles for Visual 
3880: 43 2b 2b 20 61 6e 64 20 58 63 6f 64 65 20 61 6e  C++ and Xcode an
3890: 64 0a 66 69 6e 69 73 68 65 64 20 60 4d 61 6b 65  d.finished `Make
38a0: 66 69 6c 65 73 60 20 66 6f 72 20 4d 69 6e 47 57  files` for MinGW
38b0: 2e 20 49 74 20 61 6c 73 6f 20 70 72 6f 64 75 63  . It also produc
38c0: 65 73 20 60 4d 61 6b 65 66 69 6c 65 2e 69 6e 60  es `Makefile.in`
38d0: 2c 20 77 68 69 63 68 20 69 73 0a 69 6e 70 75 74  , which is.input
38e0: 20 74 6f 20 47 4e 55 20 41 75 74 6f 63 6f 6e 66   to GNU Autoconf
38f0: 20 61 6c 6f 6e 67 20 77 69 74 68 20 60 63 6f 6e   along with `con
3900: 66 69 67 75 72 65 2e 61 63 60 20 61 6e 64 20 60  figure.ac` and `
3910: 63 6f 6e 66 69 67 2f 2a 60 2e 20 59 6f 75 20 6d  config/*`. You m
3920: 61 79 0a 6e 65 65 64 20 74 6f 20 63 68 61 6e 67  ay.need to chang
3930: 65 20 74 68 65 73 65 20 6c 61 74 74 65 72 20 66  e these latter f
3940: 69 6c 65 73 20 69 6e 20 61 64 64 69 74 69 6f 6e  iles in addition
3950: 20 74 6f 20 6f 72 20 69 6e 73 74 65 61 64 20 6f   to or instead o
3960: 66 0a 60 6d 79 73 71 6c 2b 2b 2e 62 6b 6c 60 20  f.`mysql++.bkl` 
3970: 74 6f 20 67 65 74 20 74 68 65 20 65 66 66 65 63  to get the effec
3980: 74 20 79 6f 75 20 77 61 6e 74 2e 20 20 52 75 6e  t you want.  Run
3990: 6e 69 6e 67 20 62 6f 6f 74 73 74 72 61 70 0a 69  ning bootstrap.i
39a0: 6e 63 6f 72 70 6f 72 61 74 65 73 20 63 68 61 6e  ncorporates chan
39b0: 67 65 73 20 74 6f 20 61 6c 6c 20 6f 66 20 74 68  ges to all of th
39c0: 65 73 65 20 66 69 6c 65 73 20 69 6e 20 74 68 65  ese files in the
39d0: 20 47 4e 55 20 41 75 74 6f 63 6f 6e 66 20 6f 75   GNU Autoconf ou
39e0: 74 70 75 74 2e 0a 0a 57 68 69 6c 65 20 42 61 6b  tput...While Bak
39f0: 65 66 69 6c 65 27 73 20 64 6f 63 75 6d 65 6e 74  efile's document
3a00: 61 74 69 6f 6e 20 69 73 6e 27 74 20 61 73 20 63  ation isn't as c
3a10: 6f 6d 70 72 65 68 65 6e 73 69 76 65 20 61 73 20  omprehensive as 
3a20: 69 74 0a 6f 75 67 68 74 20 74 6f 20 62 65 2c 20  it.ought to be, 
3a30: 79 6f 75 20 63 61 6e 20 61 74 20 6c 65 61 73 74  you can at least
3a40: 20 63 6f 75 6e 74 20 6f 6e 20 69 74 20 74 6f 20   count on it to 
3a50: 6c 69 73 74 20 61 6c 6c 20 6f 66 20 74 68 65 0a  list all of the.
3a60: 61 76 61 69 6c 61 62 6c 65 20 66 65 61 74 75 72  available featur
3a70: 65 73 2e 20 53 6f 2c 20 69 66 20 79 6f 75 20 63  es. So, if you c
3a80: 61 6e 27 74 20 73 65 65 20 61 20 77 61 79 20 74  an't see a way t
3a90: 6f 20 6d 61 6b 65 20 42 61 6b 65 66 69 6c 65 0a  o make Bakefile.
3aa0: 64 6f 20 73 6f 6d 65 74 68 69 6e 67 2c 20 69 74  do something, it
3ab0: 27 73 20 6c 69 6b 65 6c 79 20 69 74 20 6a 75 73  's likely it jus
3ac0: 74 20 63 61 6e 27 74 20 64 6f 20 69 74 2e 20 42  t can't do it. B
3ad0: 61 6b 65 66 69 6c 65 20 69 73 20 61 0a 68 69 67  akefile is a.hig
3ae0: 68 2d 6c 65 76 65 6c 20 61 62 73 74 72 61 63 74  h-level abstract
3af0: 69 6f 6e 20 6f 66 20 62 75 69 6c 64 20 73 79 73  ion of build sys
3b00: 74 65 6d 73 20 69 6e 20 67 65 6e 65 72 61 6c 2c  tems in general,
3b10: 20 73 6f 20 69 74 27 6c 6c 20 6e 65 76 65 72 0a   so it'll never.
3b20: 73 75 70 70 6f 72 74 20 61 6c 6c 20 74 68 65 20  support all the 
3b30: 70 61 72 74 69 63 75 6c 61 72 73 20 6f 66 20 65  particulars of e
3b40: 76 65 72 79 20 6f 64 64 20 62 75 69 6c 64 20 73  very odd build s
3b50: 79 73 74 65 6d 20 6f 75 74 20 74 68 65 72 65 2e  ystem out there.
3b60: 0a 0a 5b 62 6b 6c 5d 3a 20 68 74 74 70 73 3a 2f  ..[bkl]: https:/
3b70: 2f 74 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d  /tangentsoft.com
3b80: 2f 6d 79 73 71 6c 70 70 2f 66 69 6c 65 2f 6d 79  /mysqlpp/file/my
3b90: 73 71 6c 25 32 42 25 32 42 2e 62 6b 6c 0a 0a 0a  sql%2B%2B.bkl...
3ba0: 3c 61 20 69 64 3d 22 70 61 74 63 68 65 73 22 3e  <a id="patches">
3bb0: 3c 2f 61 3e 0a 23 23 20 53 75 62 6d 69 74 74 69  </a>.## Submitti
3bc0: 6e 67 20 50 61 74 63 68 65 73 0a 0a 49 66 20 79  ng Patches..If y
3bd0: 6f 75 20 77 69 73 68 20 74 6f 20 73 75 62 6d 69  ou wish to submi
3be0: 74 20 61 20 70 61 74 63 68 20 74 6f 20 74 68 65  t a patch to the
3bf0: 20 6c 69 62 72 61 72 79 20 61 6e 64 20 79 6f 75   library and you
3c00: 20 64 6f 20 6e 6f 74 20 68 61 76 65 20 61 0a 64   do not have a.d
3c10: 65 76 65 6c 6f 70 65 72 20 61 63 63 6f 75 6e 74  eveloper account
3c20: 20 6f 6e 20 6f 75 72 20 46 6f 73 73 69 6c 20 72   on our Fossil r
3c30: 65 70 6f 2c 20 69 74 e2 80 99 73 20 70 72 6f 62  epo, it...s prob
3c40: 61 62 6c 79 20 73 69 6d 70 6c 65 73 74 20 74 6f  ably simplest to
3c50: 20 70 61 73 74 65 20 69 74 0a 69 6e 74 6f 20 61   paste it.into a
3c60: 20 5b 66 6f 72 75 6d 20 70 6f 73 74 5d 5b 66 6f   [forum post][fo
3c70: 72 5d 2c 20 69 66 20 69 74 e2 80 99 73 20 73 6d  r], if it...s sm
3c80: 61 6c 6c 2e 20 49 66 20 69 74 e2 80 99 73 20 6c  all. If it...s l
3c90: 61 72 67 65 2c 20 70 75 74 20 69 74 20 69 6e 0a  arge, put it in.
3ca0: 50 61 73 74 65 62 69 6e 20 6f 72 20 73 69 6d 69  Pastebin or simi
3cb0: 6c 61 72 2c 20 74 68 65 6e 20 6c 69 6e 6b 20 74  lar, then link t
3cc0: 6f 20 69 74 20 66 72 6f 6d 20 61 20 66 6f 72 75  o it from a foru
3cd0: 6d 20 70 6f 73 74 2e 20 20 57 65 20 77 61 6e 74  m post.  We want
3ce0: 20 70 61 74 63 68 65 73 0a 69 6e 20 75 6e 69 66   patches.in unif
3cf0: 69 65 64 20 64 69 66 66 20 66 6f 72 6d 61 74 2e  ied diff format.
3d00: 0a 0a 57 65 20 77 69 6c 6c 20 61 6c 73 6f 20 61  ..We will also a
3d10: 63 63 65 70 74 20 74 72 69 76 69 61 6c 20 70 61  ccept trivial pa
3d20: 74 63 68 65 73 20 6e 6f 74 20 6e 65 65 64 69 6e  tches not needin
3d30: 67 20 64 69 73 63 75 73 73 69 6f 6e 20 61 73 20  g discussion as 
3d40: 74 65 78 74 0a 6f 72 20 61 74 74 61 63 68 6d 65  text.or attachme
3d50: 6e 74 73 20 74 6f 20 5b 61 20 46 6f 73 73 69 6c  nts to [a Fossil
3d60: 20 74 69 63 6b 65 74 5d 5b 74 6b 74 5d 2e 0a 0a   ticket][tkt]...
3d70: 54 68 65 20 65 61 73 69 65 73 74 20 77 61 79 20  The easiest way 
3d80: 74 6f 20 67 65 74 20 61 20 75 6e 69 66 69 65 64  to get a unified
3d90: 20 64 69 66 66 20 69 73 20 74 6f 20 63 68 65 63   diff is to chec
3da0: 6b 20 6f 75 74 20 61 20 63 6f 70 79 20 6f 66 20  k out a copy of 
3db0: 74 68 65 0a 63 75 72 72 65 6e 74 20 4d 79 53 51  the.current MySQ
3dc0: 4c 2b 2b 20 74 72 65 65 20 5b 61 73 20 64 65 73  L++ tree [as des
3dd0: 63 72 69 62 65 64 20 61 62 6f 76 65 5d 28 23 72  cribed above](#r
3de0: 65 70 6f 29 2e 20 54 68 65 6e 20 6d 61 6b 65 20  epo). Then make 
3df0: 79 6f 75 72 20 63 68 61 6e 67 65 2c 0a 60 63 64  your change,.`cd
3e00: 60 20 74 6f 20 74 68 65 20 4d 79 53 51 4c 2b 2b  ` to the MySQL++
3e10: 20 72 6f 6f 74 20 64 69 72 65 63 74 6f 72 79 2c   root directory,
3e20: 20 61 6e 64 20 61 73 6b 20 46 6f 73 73 69 6c 20   and ask Fossil 
3e30: 74 6f 20 67 65 6e 65 72 61 74 65 20 74 68 65 20  to generate the 
3e40: 70 61 74 63 68 0a 66 6f 72 20 79 6f 75 3a 0a 0a  patch.for you:..
3e50: 20 20 20 20 24 20 66 6f 73 73 69 6c 20 64 69 66      $ fossil dif
3e60: 66 20 3e 20 6d 79 63 68 61 6e 67 65 2e 70 61 74  f > mychange.pat
3e70: 63 68 0a 0a 49 66 20 79 6f 75 72 20 70 61 74 63  ch..If your patc
3e80: 68 20 61 64 64 73 20 6e 65 77 20 66 69 6c 65 73  h adds new files
3e90: 2c 20 6d 6f 76 65 73 20 66 69 6c 65 73 2c 20 6f  , moves files, o
3ea0: 72 20 6e 65 65 64 73 20 74 6f 20 62 65 20 75 6e  r needs to be un
3eb0: 64 65 72 73 74 6f 6f 64 20 69 6e 0a 74 65 72 6d  derstood in.term
3ec0: 73 20 6f 66 20 6d 75 6c 74 69 70 6c 65 20 63 68  s of multiple ch
3ed0: 65 63 6b 69 6e 73 2c 20 69 74 27 73 20 62 65 73  eckins, it's bes
3ee0: 74 20 74 6f 20 64 6f 20 74 68 61 74 20 77 6f 72  t to do that wor
3ef0: 6b 20 6f 6e 20 61 0a 5b 70 72 69 76 61 74 65 20  k on a.[private 
3f00: 6c 6f 63 61 6c 20 62 72 61 6e 63 68 5d 28 23 70  local branch](#p
3f10: 72 69 76 61 74 65 29 2c 20 74 68 65 6e 20 73 65  rivate), then se
3f20: 6e 64 20 61 20 5b 62 75 6e 64 6c 65 5d 5b 66 62  nd a [bundle][fb
3f30: 5d 20 69 6e 73 74 65 61 64 20 6f 66 20 61 0a 70  ] instead of a.p
3f40: 61 74 63 68 2e 0a 0a 49 66 20 79 6f 75 27 76 65  atch...If you've
3f50: 20 73 65 6e 74 20 70 61 74 63 68 65 73 20 74 6f   sent patches to
3f60: 20 4d 79 53 51 4c 2b 2b 20 62 65 66 6f 72 65 20   MySQL++ before 
3f70: 61 6e 64 20 64 6f 6e 27 74 20 68 61 76 65 20 61  and don't have a
3f80: 20 46 6f 73 73 69 6c 0a 64 65 76 65 6c 6f 70 65   Fossil.develope
3f90: 72 20 6c 6f 67 69 6e 2c 20 61 6e 6f 74 68 65 72  r login, another
3fa0: 20 61 6c 74 65 72 6e 61 74 69 76 65 20 69 73 20   alternative is 
3fb0: 74 6f 20 61 73 6b 20 66 6f 72 20 61 20 6c 6f 67  to ask for a log
3fc0: 69 6e 20 62 65 66 6f 72 65 20 79 6f 75 0a 62 65  in before you.be
3fd0: 67 69 6e 20 77 6f 72 6b 20 73 6f 20 74 68 61 74  gin work so that
3fe0: 20 79 6f 75 72 20 63 68 61 6e 67 65 73 20 61 72   your changes ar
3ff0: 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  e automatically 
4000: 73 79 6e 63 27 64 20 74 6f 20 74 68 65 20 6d 61  sync'd to the ma
4010: 69 6e 0a 46 6f 73 73 69 6c 20 72 65 70 6f 73 69  in.Fossil reposi
4020: 74 6f 72 79 20 61 73 20 79 6f 75 20 77 6f 72 6b  tory as you work
4030: 2c 20 73 6f 20 79 6f 75 20 64 6f 6e 27 74 20 68  , so you don't h
4040: 61 76 65 20 74 6f 20 73 65 6e 64 20 62 75 6e 64  ave to send bund
4050: 6c 65 73 20 6f 72 0a 70 61 74 63 68 20 66 69 6c  les or.patch fil
4060: 65 73 2e 20 57 65 20 67 65 6e 65 72 61 6c 6c 79  es. We generally
4070: 20 64 6f 6e 27 74 20 72 65 66 75 73 65 20 73 75   don't refuse su
4080: 63 68 20 72 65 71 75 65 73 74 73 20 69 66 20 79  ch requests if y
4090: 6f 75 27 76 65 20 61 6c 72 65 61 64 79 0a 70 72  ou've already.pr
40a0: 6f 76 65 6e 20 79 6f 75 72 20 61 62 69 6c 69 74  oven your abilit
40b0: 79 20 74 6f 20 77 6f 72 6b 20 70 72 6f 64 75 63  y to work produc
40c0: 74 69 76 65 6c 79 20 77 69 74 68 20 74 68 65 20  tively with the 
40d0: 4d 79 53 51 4c 2b 2b 20 70 72 6f 6a 65 63 74 2e  MySQL++ project.
40e0: 0a 0a 49 66 20 79 6f 75 27 72 65 20 6d 61 6b 69  ..If you're maki
40f0: 6e 67 20 61 20 70 61 74 63 68 20 61 67 61 69 6e  ng a patch again
4100: 73 74 20 61 20 4d 79 53 51 4c 2b 2b 20 64 69 73  st a MySQL++ dis
4110: 74 72 69 62 75 74 69 6f 6e 20 74 61 72 62 61 6c  tribution tarbal
4120: 6c 2c 20 74 68 65 6e 0a 79 6f 75 20 63 61 6e 20  l, then.you can 
4130: 67 65 6e 65 72 61 74 65 20 61 20 70 61 74 63 68  generate a patch
4140: 20 74 68 69 73 20 77 61 79 3a 0a 0a 20 20 20 20   this way:..    
4150: 24 20 64 69 66 66 20 2d 72 75 4e 20 6d 79 73 71  $ diff -ruN mysq
4160: 6c 2b 2b 2d 6f 6c 64 64 69 72 20 6d 79 73 71 6c  l++-olddir mysql
4170: 2b 2b 2d 6e 65 77 64 69 72 20 3e 20 6d 79 63 68  ++-newdir > mych
4180: 61 6e 67 65 2e 70 61 74 63 68 0a 0a 54 68 65 20  ange.patch..The 
4190: 60 64 69 66 66 60 20 63 6f 6d 6d 61 6e 64 20 69  `diff` command i
41a0: 73 20 70 61 72 74 20 6f 66 20 65 76 65 72 79 20  s part of every 
41b0: 55 6e 69 78 20 61 6e 64 20 4c 69 6e 75 78 20 73  Unix and Linux s
41c0: 79 73 74 65 6d 2c 20 61 6e 64 20 73 68 6f 75 6c  ystem, and shoul
41d0: 64 20 62 65 0a 69 6e 73 74 61 6c 6c 65 64 20 62  d be.installed b
41e0: 79 20 64 65 66 61 75 6c 74 2e 20 49 66 20 79 6f  y default. If yo
41f0: 75 27 72 65 20 6f 6e 20 61 20 57 69 6e 64 6f 77  u're on a Window
4200: 73 20 6d 61 63 68 69 6e 65 2c 20 47 4e 55 20 64  s machine, GNU d
4210: 69 66 66 20 69 73 20 70 61 72 74 0a 6f 66 20 5b  iff is part.of [
4220: 43 79 67 77 69 6e 5d 28 68 74 74 70 3a 2f 2f 63  Cygwin](http://c
4230: 79 67 77 69 6e 2e 63 6f 6d 2f 29 2e 20 46 6f 73  ygwin.com/). Fos
4240: 73 69 6c 20 69 73 20 61 6c 73 6f 20 61 76 61 69  sil is also avai
4250: 6c 61 62 6c 65 20 66 6f 72 20 61 6c 6c 20 6f 66  lable for all of
4260: 0a 74 68 65 73 65 20 73 79 73 74 65 6d 73 2e 20  .these systems. 
4270: 54 68 65 72 65 20 61 72 65 20 6e 6f 20 65 78 63  There are no exc
4280: 75 73 65 73 20 66 6f 72 20 6e 6f 74 20 62 65 69  uses for not bei
4290: 6e 67 20 61 62 6c 65 20 74 6f 20 6d 61 6b 65 20  ng able to make 
42a0: 75 6e 69 66 69 65 64 0a 64 69 66 66 73 2e 20 3a  unified.diffs. :
42b0: 29 0a 0a 41 6c 74 68 6f 75 67 68 20 4d 79 53 51  )..Although MySQ
42c0: 4c 2b 2b 20 64 6f 65 73 20 68 61 76 65 20 61 20  L++ does have a 
42d0: 5b 47 69 74 48 75 62 20 6d 69 72 72 6f 72 5d 5b  [GitHub mirror][
42e0: 67 68 6d 5d 2c 20 77 65 20 70 72 65 66 65 72 20  ghm], we prefer 
42f0: 6e 6f 74 20 74 6f 0a 61 63 63 63 65 70 74 20 50  not to.acccept P
4300: 52 73 20 76 69 61 20 74 68 61 74 20 63 68 61 6e  Rs via that chan
4310: 6e 65 6c 2e 20 49 74 20 69 73 20 69 6e 74 65 6e  nel. It is inten
4320: 64 65 64 20 61 73 20 61 20 72 65 61 64 2d 6f 6e  ded as a read-on
4330: 6c 79 20 6d 69 72 72 6f 72 20 66 6f 72 0a 74 68  ly mirror for.th
4340: 6f 73 65 20 68 65 61 76 69 6c 79 20 74 69 65 64  ose heavily tied
4350: 20 69 6e 74 6f 20 47 69 74 2d 62 61 73 65 64 20   into Git-based 
4360: 74 6f 6f 6c 69 6e 67 2e 20 59 6f 75 e2 80 99 72  tooling. You...r
4370: 65 20 77 65 6c 63 6f 6d 65 20 74 6f 20 73 65 6e  e welcome to sen
4380: 64 20 75 73 20 61 0a 50 52 20 61 6e 79 77 61 79  d us a.PR anyway
4390: 2c 20 62 75 74 20 72 65 61 6c 69 7a 65 20 74 68  , but realize th
43a0: 61 74 20 77 68 61 74 e2 80 99 73 20 67 6f 69 6e  at what...s goin
43b0: 67 20 74 6f 20 68 61 70 70 65 6e 20 6f 6e 20 74  g to happen on t
43c0: 68 65 20 62 61 63 6b 20 65 6e 64 20 69 73 0a 74  he back end is.t
43d0: 68 61 74 20 77 65 e2 80 99 6c 6c 20 67 65 6e 65  hat we...ll gene
43e0: 72 61 74 65 20 61 20 70 61 74 63 68 2c 20 61 70  rate a patch, ap
43f0: 70 6c 79 20 69 74 20 74 6f 20 74 68 65 20 46 6f  ply it to the Fo
4400: 73 73 69 6c 20 72 65 70 6f 20 62 79 20 68 61 6e  ssil repo by han
4410: 64 2c 20 74 65 73 74 0a 69 74 2c 20 61 6e 64 20  d, test.it, and 
4420: 74 68 65 6e 20 63 6f 6d 6d 69 74 20 69 74 20 74  then commit it t
4430: 6f 20 74 68 65 20 72 65 70 6f 73 69 74 6f 72 79  o the repository
4440: 20 75 6e 64 65 72 20 6f 6e 65 20 6f 66 20 74 68   under one of th
4450: 65 20 65 78 69 73 74 69 6e 67 0a 64 65 76 65 6c  e existing.devel
4460: 6f 70 65 72 20 61 63 63 6f 75 6e 74 73 2e 20 4f  oper accounts. O
4470: 6e 6c 79 20 74 68 65 6e 20 64 6f 20 77 65 20 75  nly then do we u
4480: 70 64 61 74 65 20 74 68 65 20 6d 69 72 72 6f 72  pdate the mirror
4490: 20 73 6f 20 74 68 61 74 20 74 68 65 20 63 68 61   so that the cha
44a0: 6e 67 65 0a 61 70 70 65 61 72 73 20 6f 6e 20 47  nge.appears on G
44b0: 69 74 48 75 62 2c 20 61 6e 64 20 79 6f 75 20 64  itHub, and you d
44c0: 6f 6e e2 80 99 74 20 67 65 74 20 47 69 74 48 75  on...t get GitHu
44d0: 62 20 63 72 65 64 69 74 20 66 6f 72 20 74 68 65  b credit for the
44e0: 20 50 52 2e 20 54 68 69 73 20 69 73 0a 61 6c 6c   PR. This is.all
44f0: 20 64 75 65 20 74 6f 20 5b 69 6e 68 65 72 65 6e   due to [inheren
4500: 74 20 6c 69 6d 69 74 61 74 69 6f 6e 73 20 6f 66  t limitations of
4510: 20 74 68 65 20 6d 69 72 72 6f 72 69 6e 67 20 70   the mirroring p
4520: 72 6f 63 65 73 73 5d 5b 66 67 65 5d 2e 20 49 66  rocess][fge]. If
4530: 20 79 6f 75 0a 77 61 6e 74 20 63 72 65 64 69 74   you.want credit
4540: 20 66 6f 72 20 79 6f 75 72 20 63 6f 64 65 20 63   for your code c
4550: 6f 6e 74 72 69 62 75 74 69 6f 6e 73 2c 20 61 73  ontributions, as
4560: 6b 20 75 73 20 66 6f 72 20 61 6e 20 61 63 63 6f  k us for an acco
4570: 75 6e 74 20 6f 6e 20 74 68 65 0a 46 6f 73 73 69  unt on the.Fossi
4580: 6c 20 72 65 70 6f 2c 20 74 68 65 6e 20 63 6f 6d  l repo, then com
4590: 6d 69 74 20 69 74 20 74 68 65 72 65 20 69 6e 73  mit it there ins
45a0: 74 65 61 64 2e 0a 0a 5b 66 62 5d 3a 20 20 68 74  tead...[fb]:  ht
45b0: 74 70 3a 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e  tp://fossil-scm.
45c0: 6f 72 67 2f 66 6f 73 73 69 6c 2f 68 65 6c 70 3f  org/fossil/help?
45d0: 63 6d 64 3d 62 75 6e 64 6c 65 0a 5b 66 67 65 5d  cmd=bundle.[fge]
45e0: 3a 20 68 74 74 70 73 3a 2f 2f 66 6f 73 73 69 6c  : https://fossil
45f0: 2d 73 63 6d 2e 6f 72 67 2f 66 6f 73 73 69 6c 2f  -scm.org/fossil/
4600: 64 6f 63 2f 74 72 75 6e 6b 2f 77 77 77 2f 6d 69  doc/trunk/www/mi
4610: 72 72 6f 72 74 6f 67 69 74 68 75 62 2e 6d 64 0a  rrortogithub.md.
4620: 5b 74 6b 74 5d 3a 20 68 74 74 70 73 3a 2f 2f 74  [tkt]: https://t
4630: 61 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 2f 6d  angentsoft.com/m
4640: 79 73 71 6c 70 70 2f 74 6b 74 6e 65 77 0a 0a 0a  ysqlpp/tktnew...
4650: 23 23 20 54 68 65 20 4d 79 53 51 4c 2b 2b 20 43  ## The MySQL++ C
4660: 6f 64 65 20 53 74 79 6c 65 0a 0a 45 76 65 72 79  ode Style..Every
4670: 20 63 6f 64 65 20 62 61 73 65 20 73 68 6f 75 6c   code base shoul
4680: 64 20 68 61 76 65 20 61 20 63 6f 6d 6d 6f 6e 20  d have a common 
4690: 63 6f 64 65 20 73 74 79 6c 65 2e 20 4c 6f 76 65  code style. Love
46a0: 20 69 74 20 6f 72 0a 68 61 74 65 20 69 74 2c 20   it or.hate it, 
46b0: 68 65 72 65 20 61 72 65 20 4d 79 53 51 4c 2b 2b  here are MySQL++
46c0: 27 73 20 63 75 72 72 65 6e 74 20 63 6f 64 65 20  's current code 
46d0: 73 74 79 6c 65 20 72 75 6c 65 73 3a 0a 0a 0a 23  style rules:...#
46e0: 23 23 20 53 6f 75 72 63 65 20 43 6f 64 65 0a 0a  ## Source Code..
46f0: 46 69 6c 65 20 74 79 70 65 73 3a 20 60 61 63 60  File types: `ac`
4700: 2c 20 60 63 70 70 60 2c 20 60 68 60 2c 20 60 69  , `cpp`, `h`, `i
4710: 6e 60 2c 20 60 6d 34 60 2c 20 60 70 6c 60 0a 0a  n`, `m4`, `pl`..
4720: 2d 20 20 20 54 61 62 73 20 66 6f 72 20 69 6e 64  -   Tabs for ind
4730: 65 6e 74 73 2c 20 73 69 7a 65 20 34 0a 0a 2d 20  ents, size 4..- 
4740: 20 20 55 6e 69 78 20 6c 69 6e 65 20 65 6e 64 69    Unix line endi
4750: 6e 67 73 2e 20 41 6e 79 20 64 65 63 65 6e 74 20  ngs. Any decent 
4760: 70 72 6f 67 72 61 6d 6d 65 72 27 73 20 65 64 69  programmer's edi
4770: 74 6f 72 20 63 61 6e 20 63 6f 70 65 20 77 69 74  tor can cope wit
4780: 68 0a 20 20 20 20 74 68 69 73 2c 20 65 76 65 6e  h.    this, even
4790: 20 6f 6e 20 57 69 6e 64 6f 77 73 2e 0a 0a 2d 20   on Windows...- 
47a0: 20 20 43 2f 43 2b 2b 20 72 75 6c 65 73 3a 0a 0a    C/C++ rules:..
47b0: 20 20 20 20 2d 20 20 20 42 61 73 65 20 77 68 69      -   Base whi
47c0: 74 65 73 70 61 63 65 20 73 74 79 6c 65 20 69 73  tespace style is
47d0: 20 41 54 26 54 69 73 68 3a 20 4b 26 52 2f 53 74   AT&Tish: K&R/St
47e0: 72 6f 75 73 74 72 75 70 2c 20 70 6c 75 73 20 61  roustrup, plus a
47f0: 20 6c 69 74 74 6c 65 0a 20 20 20 20 20 20 20 20   little.        
4800: 6c 6f 63 61 6c 20 73 70 69 63 65 2e 20 49 66 20  local spice. If 
4810: 79 6f 75 20 68 61 76 65 20 74 68 65 20 69 6e 64  you have the ind
4820: 65 6e 74 28 31 29 20 70 72 6f 67 72 61 6d 2c 20  ent(1) program, 
4830: 74 68 65 20 63 6f 6d 6d 61 6e 64 20 69 73 3a 0a  the command is:.
4840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64  .            ind
4850: 65 6e 74 20 2d 6b 72 20 2d 6e 63 65 20 2d 63 6c  ent -kr -nce -cl
4860: 69 34 20 2d 73 73 20 2d 64 69 31 20 2d 70 73 6c  i4 -ss -di1 -psl
4870: 20 2d 74 73 34 20 46 49 4c 45 53 2e 2e 2e 0a 0a   -ts4 FILES.....
4880: 20 20 20 20 20 20 20 20 54 68 61 74 20 69 73 2c          That is,
4890: 20 64 6f 6e 27 74 20 63 75 64 64 6c 65 20 65 6c   don't cuddle el
48a0: 73 65 2c 20 69 6e 64 65 6e 74 20 63 61 73 65 20  se, indent case 
48b0: 73 74 61 74 65 6d 65 6e 74 20 6c 61 62 65 6c 73  statement labels
48c0: 2c 20 73 70 61 63 65 0a 20 20 20 20 20 20 20 20  , space.        
48d0: 62 65 66 6f 72 65 20 73 65 6d 69 63 6f 6c 6f 6e  before semicolon
48e0: 20 77 69 74 68 20 65 6d 70 74 79 20 6c 6f 6f 70   with empty loop
48f0: 20 62 6f 64 79 2c 20 6e 6f 20 65 78 74 72 61 20   body, no extra 
4900: 73 70 61 63 65 20 62 65 74 77 65 65 6e 20 61 0a  space between a.
4910: 20 20 20 20 20 20 20 20 76 61 72 69 61 62 6c 65          variable
4920: 20 74 79 70 65 20 61 6e 64 20 6e 61 6d 65 2c 20   type and name, 
4930: 72 65 74 75 72 6e 20 76 61 6c 75 65 20 6f 66 20  return value of 
4940: 66 75 6e 63 74 69 6f 6e 20 6f 6e 20 73 65 70 61  function on sepa
4950: 72 61 74 65 0a 20 20 20 20 20 20 20 20 6c 69 6e  rate.        lin
4960: 65 20 66 72 6f 6d 20 72 65 73 74 20 6f 66 20 64  e from rest of d
4970: 65 66 69 6e 69 74 69 6f 6e 2e 0a 0a 20 20 20 20  efinition...    
4980: 2d 20 20 20 43 6c 61 73 73 20 6e 61 6d 65 73 20  -   Class names 
4990: 61 72 65 20 69 6e 20 60 43 61 6d 65 6c 43 61 73  are in `CamelCas
49a0: 65 60 2c 20 75 70 70 65 72 63 61 73 65 64 20 66  e`, uppercased f
49b0: 69 72 73 74 20 6c 65 74 74 65 72 0a 0a 20 20 20  irst letter..   
49c0: 20 2d 20 20 20 4d 65 74 68 6f 64 20 6e 61 6d 65   -   Method name
49d0: 73 20 61 72 65 20 69 6e 20 60 61 6c 6c 5f 6c 6f  s are in `all_lo
49e0: 77 65 72 5f 63 61 73 65 5f 77 69 74 68 5f 75 6e  wer_case_with_un
49f0: 64 65 72 73 63 6f 72 65 73 28 29 60 3b 0a 20 20  derscores()`;.  
4a00: 20 20 20 20 20 20 64 69 74 74 6f 20 6d 6f 73 74        ditto most
4a10: 20 6f 74 68 65 72 20 67 6c 6f 62 61 6c 20 73 79   other global sy
4a20: 6d 62 6f 6c 73 2e 0a 0a 20 20 20 20 2d 20 20 20  mbols...    -   
4a30: 4d 61 63 72 6f 20 6e 61 6d 65 73 20 61 72 65 20  Macro names are 
4a40: 69 6e 20 60 41 4c 4c 5f 55 50 50 45 52 43 41 53  in `ALL_UPPERCAS
4a50: 45 5f 57 49 54 48 5f 55 4e 44 45 52 53 43 4f 52  E_WITH_UNDERSCOR
4a60: 45 53 60 0a 0a 20 20 20 20 2d 20 20 20 44 6f 78  ES`..    -   Dox
4a70: 79 67 65 6e 20 63 6f 6d 6d 65 6e 74 20 66 6f 72  ygen comment for
4a80: 20 61 6c 6c 20 70 75 62 6c 69 63 20 64 65 63 6c   all public decl
4a90: 61 72 61 74 69 6f 6e 73 2c 20 75 6e 6c 65 73 73  arations, unless
4aa0: 20 74 68 65 72 65 20 69 73 20 61 0a 20 20 20 20   there is a.    
4ab0: 20 20 20 20 76 65 72 79 20 67 6f 6f 64 20 72 65      very good re
4ac0: 61 73 6f 6e 20 74 6f 20 6b 65 65 70 20 74 68 65  ason to keep the
4ad0: 20 74 68 69 6e 67 20 75 6e 64 6f 63 75 6d 65 6e   thing undocumen
4ae0: 74 65 64 2e 0a 0a 2d 20 20 20 50 65 72 6c 20 61  ted...-   Perl a
4af0: 6e 64 20 73 68 65 6c 6c 20 73 63 72 69 70 74 20  nd shell script 
4b00: 72 75 6c 65 73 20 61 72 65 20 6d 6f 72 65 20 6f  rules are more o
4b10: 72 20 6c 65 73 73 20 74 68 65 20 73 61 6d 65 20  r less the same 
4b20: 61 73 20 66 6f 72 20 43 2f 43 2b 2b 2c 0a 20 20  as for C/C++,.  
4b30: 20 20 74 6f 20 74 68 65 20 65 78 74 65 6e 74 20    to the extent 
4b40: 74 68 69 73 20 6d 61 6b 65 73 20 73 65 6e 73 65  this makes sense
4b50: 2e 0a 0a 0a 23 23 23 20 58 4d 4c 2f 48 54 4d 4c  ....### XML/HTML
4b60: 20 44 69 61 6c 65 63 74 73 0a 0a 46 69 6c 65 20   Dialects..File 
4b70: 74 79 70 65 73 3a 20 60 62 6b 6c 60 2c 20 60 64  types: `bkl`, `d
4b80: 62 78 60 2c 20 60 68 74 61 60 0a 0a 2d 20 20 20  bx`, `hta`..-   
4b90: 53 70 61 63 65 73 20 66 6f 72 20 69 6e 64 65 6e  Spaces for inden
4ba0: 74 73 2c 20 73 69 7a 65 20 32 2e 20 53 68 61 6c  ts, size 2. Shal
4bb0: 6c 6f 77 20 69 6e 64 65 6e 74 73 20 64 75 65 20  low indents due 
4bc0: 74 6f 20 74 68 65 20 68 69 67 68 20 6c 65 76 65  to the high leve
4bd0: 6c 20 6f 66 0a 20 20 20 20 6e 65 73 74 69 6e 67  l of.    nesting
4be0: 20 6f 63 63 75 72 72 69 6e 67 20 69 6e 20 73 75   occurring in su
4bf0: 63 68 20 66 69 6c 65 73 2c 20 61 6e 64 20 73 70  ch files, and sp
4c00: 61 63 65 73 20 62 65 63 61 75 73 65 20 74 68 65  aces because the
4c10: 79 27 72 65 20 6e 6f 74 20 61 73 0a 20 20 20 20  y're not as.    
4c20: 61 6e 6e 6f 79 69 6e 67 20 61 74 20 73 68 61 6c  annoying at shal
4c30: 6c 6f 77 20 69 6e 64 65 6e 74 20 6c 65 76 65 6c  low indent level
4c40: 73 20 69 6e 20 65 64 69 74 6f 72 73 20 74 68 61  s in editors tha
4c50: 74 20 64 6f 6e 27 74 20 74 72 65 61 74 20 73 70  t don't treat sp
4c60: 61 63 65 0a 20 20 20 20 69 6e 64 65 6e 74 73 20  ace.    indents 
4c70: 6c 69 6b 65 20 74 61 62 73 2e 0a 0a 2d 20 20 20  like tabs...-   
4c80: 55 6e 69 78 20 6c 69 6e 65 20 65 6e 64 69 6e 67  Unix line ending
4c90: 73 2e 20 41 67 61 69 6e 2c 20 74 68 65 73 65 20  s. Again, these 
4ca0: 61 72 65 20 69 6e 74 65 6e 64 65 64 20 74 6f 20  are intended to 
4cb0: 62 65 20 76 69 65 77 65 64 20 69 6e 20 61 0a 20  be viewed in a. 
4cc0: 20 20 20 70 72 6f 67 72 61 6d 6d 65 72 27 73 20     programmer's 
4cd0: 74 65 78 74 20 65 64 69 74 6f 72 2c 20 77 68 69  text editor, whi
4ce0: 63 68 20 73 68 6f 75 6c 64 20 77 6f 72 6b 20 77  ch should work w
4cf0: 69 74 68 20 55 6e 69 78 20 6c 69 6e 65 20 65 6e  ith Unix line en
4d00: 64 69 6e 67 73 0a 20 20 20 20 6e 6f 20 6d 61 74  dings.    no mat
4d10: 74 65 72 20 74 68 65 20 70 6c 61 74 66 6f 72 6d  ter the platform
4d20: 2e 0a 0a 0a 23 23 23 20 50 6c 61 69 6e 20 54 65  ....### Plain Te
4d30: 78 74 20 46 69 6c 65 73 0a 0a 46 69 6c 65 20 74  xt Files..File t
4d40: 79 70 65 73 3a 20 60 74 78 74 60 0a 0a 2d 20 20  ypes: `txt`..-  
4d50: 20 53 70 61 63 65 73 20 66 6f 72 20 69 6e 64 65   Spaces for inde
4d60: 6e 74 73 2c 20 73 69 7a 65 20 34 2e 20 53 70 61  nts, size 4. Spa
4d70: 63 65 73 20 62 65 63 61 75 73 65 20 73 75 63 68  ces because such
4d80: 20 66 69 6c 65 73 20 61 72 65 20 6f 66 74 65 6e   files are often
4d90: 0a 20 20 20 20 76 69 65 77 65 64 20 69 6e 20 4e  .    viewed in N
4da0: 6f 74 65 70 61 64 20 61 6e 64 20 73 69 6d 69 6c  otepad and simil
4db0: 61 72 6c 79 20 63 72 69 70 70 6c 65 64 20 74 65  arly crippled te
4dc0: 78 74 20 65 64 69 74 6f 72 73 20 77 68 69 63 68  xt editors which
4dd0: 20 75 73 65 20 61 0a 20 20 20 20 64 65 66 61 75   use a.    defau
4de0: 6c 74 20 69 6e 64 65 6e 74 20 6c 65 76 65 6c 20  lt indent level 
4df0: 6f 66 20 38 2e 0a 0a 2d 20 20 20 44 4f 53 20 6c  of 8...-   DOS l
4e00: 69 6e 65 20 65 6e 64 69 6e 67 73 2c 20 61 67 61  ine endings, aga
4e10: 69 6e 20 66 6f 72 20 74 68 65 20 4e 6f 74 65 70  in for the Notep
4e20: 61 64 20 72 65 61 73 6f 6e 2e 20 41 6e 64 20 6f  ad reason. And o
4e30: 6e 20 6d 6f 64 65 72 6e 20 55 6e 69 78 79 0a 20  n modern Unixy. 
4e40: 20 20 20 70 6c 61 74 66 6f 72 6d 73 2c 20 74 68     platforms, th
4e50: 65 20 74 6f 6f 6c 73 20 63 6f 70 65 20 77 69 74  e tools cope wit
4e60: 68 20 44 4f 53 20 6c 69 6e 65 20 65 6e 64 69 6e  h DOS line endin
4e70: 67 73 20 72 65 61 73 6f 6e 61 62 6c 79 20 77 65  gs reasonably we
4e80: 6c 6c 2e 0a 20 20 20 20 42 65 74 74 65 72 20 74  ll..    Better t
4e90: 68 61 6e 20 74 68 65 20 63 6f 6e 76 65 72 73 65  han the converse
4ea0: 2c 20 61 6e 79 77 61 79 2e 0a 0a 0a 57 68 65 6e  , anyway....When
4eb0: 20 69 6e 20 64 6f 75 62 74 2c 20 6d 69 6d 69 63   in doubt, mimic
4ec0: 20 77 68 61 74 20 79 6f 75 20 73 65 65 20 69 6e   what you see in
4ed0: 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 64   the current cod
4ee0: 65 2e 20 57 68 65 6e 20 73 74 69 6c 6c 20 69 6e  e. When still in
4ef0: 0a 64 6f 75 62 74 2c 20 61 73 6b 20 6f 6e 20 5b  .doubt, ask on [
4f00: 74 68 65 20 66 6f 72 75 6d 5d 5b 66 6f 72 5d 2e  the forum][for].
4f10: 0a 0a 0a 23 23 20 54 65 73 74 69 6e 67 20 59 6f  ...## Testing Yo
4f20: 75 72 20 50 72 6f 70 6f 73 65 64 20 43 68 61 6e  ur Proposed Chan
4f30: 67 65 0a 0a 4d 79 53 51 4c 2b 2b 20 69 6e 63 6c  ge..MySQL++ incl
4f40: 75 64 65 73 20 61 20 73 65 6c 66 2d 74 65 73 74  udes a self-test
4f50: 20 6d 65 63 68 61 6e 69 73 6d 20 63 61 6c 6c 65   mechanism calle
4f60: 64 20 60 64 74 65 73 74 60 2e 20 49 74 27 73 20  d `dtest`. It's 
4f70: 61 20 42 6f 75 72 6e 65 0a 73 68 65 6c 6c 20 73  a Bourne.shell s
4f80: 63 72 69 70 74 2c 20 72 75 6e 20 6d 75 63 68 20  cript, run much 
4f90: 6c 69 6b 65 20 60 65 78 72 75 6e 60 3a 0a 0a 20  like `exrun`:.. 
4fa0: 20 20 20 24 20 2e 2f 64 74 65 73 74 20 5b 2d 73     $ ./dtest [-s
4fb0: 20 73 65 72 76 65 72 5f 61 64 64 72 5d 20 5b 2d   server_addr] [-
4fc0: 75 20 75 73 65 72 5d 20 5b 2d 70 20 70 61 73 73  u user] [-p pass
4fd0: 77 6f 72 64 5d 0a 0a 54 68 69 73 20 61 75 74 6f  word]..This auto
4fe0: 6d 61 74 69 63 61 6c 6c 79 20 72 75 6e 73 20 6d  matically runs m
4ff0: 6f 73 74 20 6f 66 20 74 68 65 20 65 78 61 6d 70  ost of the examp
5000: 6c 65 73 2c 20 63 61 70 74 75 72 65 73 20 74 68  les, captures th
5010: 65 20 6f 75 74 70 75 74 73 20 74 6f 20 61 0a 66  e outputs to a.f
5020: 69 6c 65 2c 20 61 6e 64 20 74 68 65 6e 20 63 6f  ile, and then co
5030: 6d 70 61 72 65 73 20 74 68 61 74 20 74 6f 20 61  mpares that to a
5040: 20 6b 6e 6f 77 6e 2d 67 6f 6f 64 20 72 75 6e 27   known-good run'
5050: 73 20 6f 75 74 70 75 74 73 2c 20 73 74 6f 72 65  s outputs, store
5060: 64 20 69 6e 0a 60 62 6d 61 72 6b 2e 74 78 74 60  d in.`bmark.txt`
5070: 2e 20 53 6f 2c 20 62 65 66 6f 72 65 20 79 6f 75  . So, before you
5080: 20 73 75 62 6d 69 74 20 61 20 70 61 74 63 68 2c   submit a patch,
5090: 20 72 75 6e 20 60 64 74 65 73 74 60 20 74 6f 20   run `dtest` to 
50a0: 73 65 65 20 69 66 0a 61 6e 79 74 68 69 6e 67 20  see if.anything 
50b0: 68 61 73 20 63 68 61 6e 67 65 64 2e 20 49 66 20  has changed. If 
50c0: 73 6f 6d 65 74 68 69 6e 67 20 68 61 73 20 61 6e  something has an
50d0: 64 20 79 6f 75 20 63 61 6e 27 74 20 61 63 63 6f  d you can't acco
50e0: 75 6e 74 20 66 6f 72 20 69 74 2c 20 69 74 0a 72  unt for it, it.r
50f0: 65 70 72 65 73 65 6e 74 73 20 61 20 70 72 6f 62  epresents a prob
5100: 6c 65 6d 20 74 68 61 74 20 79 6f 75 27 6c 6c 20  lem that you'll 
5110: 68 61 76 65 20 74 6f 20 66 69 78 20 62 65 66 6f  have to fix befo
5120: 72 65 20 73 75 62 6d 69 74 74 69 6e 67 20 74 68  re submitting th
5130: 65 0a 70 61 74 63 68 2e 20 49 66 20 69 74 20 67  e.patch. If it g
5140: 69 76 65 73 20 61 6e 20 65 78 70 65 63 74 65 64  ives an expected
5150: 20 63 68 61 6e 67 65 2c 20 72 65 6d 6f 76 65 20   change, remove 
5160: 60 62 6d 61 72 6b 2e 74 78 74 60 2c 20 72 65 2d  `bmark.txt`, re-
5170: 72 75 6e 0a 60 64 74 65 73 74 60 2c 20 61 6e 64  run.`dtest`, and
5180: 20 69 6e 63 6c 75 64 65 20 74 68 65 20 60 62 6d   include the `bm
5190: 61 72 6b 2e 74 78 74 60 20 64 69 66 66 73 20 69  ark.txt` diffs i
51a0: 6e 20 79 6f 75 72 20 70 61 74 63 68 2e 20 54 68  n your patch. Th
51b0: 69 73 0a 63 6f 6d 6d 75 6e 69 63 61 74 65 73 20  is.communicates 
51c0: 74 6f 20 75 73 20 74 68 65 20 66 61 63 74 20 74  to us the fact t
51d0: 68 61 74 20 79 6f 75 20 6b 6e 6f 77 20 74 68 65  hat you know the
51e0: 72 65 20 61 72 65 20 64 69 66 66 65 72 65 6e 63  re are differenc
51f0: 65 73 20 61 6e 64 20 77 61 6e 74 0a 74 68 65 20  es and want.the 
5200: 70 61 74 63 68 20 65 76 61 6c 75 61 74 65 64 20  patch evaluated 
5210: 61 6e 79 77 61 79 2e 20 4f 74 68 65 72 77 69 73  anyway. Otherwis
5220: 65 2c 20 77 65 20 61 72 65 20 6c 69 6b 65 6c 79  e, we are likely
5230: 20 74 6f 20 76 69 65 77 20 74 68 65 20 63 68 61   to view the cha
5240: 6e 67 65 0a 69 6e 20 74 68 65 20 70 72 6f 67 72  nge.in the progr
5250: 61 6d 20 6f 75 74 70 75 74 73 20 61 73 20 61 20  am outputs as a 
5260: 62 75 67 20 6f 72 20 72 65 67 72 65 73 73 69 6f  bug or regressio
5270: 6e 2e 0a 0a 60 64 74 65 73 74 60 20 61 6c 73 6f  n...`dtest` also
5280: 20 72 75 6e 73 20 61 6c 6c 20 6f 66 20 74 68 65   runs all of the
5290: 20 75 6e 69 74 20 74 65 73 74 73 20 69 6e 20 60   unit tests in `
52a0: 74 65 73 74 2f 2a 60 2e 20 54 68 65 20 70 75 72  test/*`. The pur
52b0: 70 6f 73 65 20 6f 66 0a 60 74 65 73 74 2f 2a 60  pose of.`test/*`
52c0: 20 69 73 20 64 69 66 66 65 72 65 6e 74 20 66 72   is different fr
52d0: 6f 6d 20 74 68 61 74 20 6f 66 20 60 65 78 61 6d  om that of `exam
52e0: 70 6c 65 73 2f 2a 60 3a 0a 0a 2d 20 20 20 60 74  ples/*`:..-   `t
52f0: 65 73 74 2f 2a 60 20 61 72 65 20 75 6e 69 74 20  est/*` are unit 
5300: 74 65 73 74 73 3a 20 65 61 63 68 20 74 65 73 74  tests: each test
5310: 73 20 6f 6e 6c 79 20 6f 6e 65 20 4d 79 53 51 4c  s only one MySQL
5320: 2b 2b 20 63 6c 61 73 73 2c 0a 20 20 20 20 69 6e  ++ class,.    in
5330: 64 65 70 65 6e 64 65 6e 74 20 6f 66 20 65 76 65  dependent of eve
5340: 72 79 74 68 69 6e 67 20 65 6c 73 65 2e 20 42 65  rything else. Be
5350: 63 61 75 73 65 20 44 42 20 61 63 63 65 73 73 20  cause DB access 
5360: 72 65 71 75 69 72 65 73 20 73 65 76 65 72 61 6c  requires several
5370: 0a 20 20 20 20 4d 79 53 51 4c 2b 2b 20 63 6c 61  .    MySQL++ cla
5380: 73 73 65 73 20 74 6f 20 63 6f 6f 70 65 72 61 74  sses to cooperat
5390: 65 2c 20 61 20 75 6e 69 74 20 74 65 73 74 20 6e  e, a unit test n
53a0: 65 76 65 72 20 61 63 63 65 73 73 65 73 20 61 20  ever accesses a 
53b0: 64 61 74 61 62 61 73 65 3b 0a 20 20 20 20 68 65  database;.    he
53c0: 6e 63 65 2c 20 6e 6f 20 75 6e 69 74 20 74 65 73  nce, no unit tes
53d0: 74 20 6e 65 65 64 73 20 44 42 20 63 6f 6e 6e 65  t needs DB conne
53e0: 63 74 69 6f 6e 20 70 61 72 61 6d 65 74 65 72 73  ction parameters
53f0: 2e 20 20 57 65 20 77 69 6c 6c 20 6e 65 76 65 72  .  We will never
5400: 0a 20 20 20 20 67 65 74 20 31 30 30 25 20 63 6f  .    get 100% co
5410: 64 65 20 63 6f 76 65 72 61 67 65 20 66 72 6f 6d  de coverage from
5420: 20 60 74 65 73 74 2f 2a 60 20 61 6c 6f 6e 65 2e   `test/*` alone.
5430: 0a 0a 2d 20 20 20 60 65 78 61 6d 70 6c 65 73 2f  ..-   `examples/
5440: 2a 60 20 63 61 6e 20 62 65 20 74 68 6f 75 67 68  *` can be though
5450: 74 20 6f 66 20 61 73 20 69 6e 74 65 67 72 61 74  t of as integrat
5460: 69 6f 6e 20 74 65 73 74 73 3a 20 74 68 65 79 20  ion tests: they 
5470: 74 65 73 74 20 6d 61 6e 79 0a 20 20 20 20 70 69  test many.    pi
5480: 65 63 65 73 20 6f 66 20 4d 79 53 51 4c 2b 2b 20  eces of MySQL++ 
5490: 77 6f 72 6b 69 6e 67 20 74 6f 67 65 74 68 65 72  working together
54a0: 2c 20 61 63 63 65 73 73 69 6e 67 20 61 20 72 65  , accessing a re
54b0: 61 6c 20 64 61 74 61 62 61 73 65 0a 20 20 20 20  al database.    
54c0: 73 65 72 76 65 72 2e 20 49 6e 20 61 64 64 69 74  server. In addit
54d0: 69 6f 6e 20 74 6f 20 65 6e 73 75 72 69 6e 67 20  ion to ensuring 
54e0: 74 68 61 74 20 61 6c 6c 20 74 68 65 20 70 69 65  that all the pie
54f0: 63 65 73 20 77 6f 72 6b 20 74 6f 67 65 74 68 65  ces work togethe
5500: 72 0a 20 20 20 20 61 6e 64 20 67 69 76 65 20 63  r.    and give c
5510: 6f 6e 73 69 73 74 65 6e 74 20 72 65 73 75 6c 74  onsistent result
5520: 73 20 66 72 6f 6d 20 70 6c 61 74 66 6f 72 6d 20  s from platform 
5530: 74 6f 20 70 6c 61 74 66 6f 72 6d 20 61 6e 64 20  to platform and 
5540: 72 75 6e 20 74 6f 0a 20 20 20 20 72 75 6e 2c 20  run to.    run, 
5550: 69 74 20 61 6c 73 6f 20 66 69 6c 6c 73 20 69 6e  it also fills in
5560: 20 67 61 70 73 20 69 6e 20 74 68 65 20 63 6f 64   gaps in the cod
5570: 65 20 63 6f 76 65 72 61 67 65 20 77 68 65 72 65  e coverage where
5580: 20 6e 6f 20 73 75 69 74 61 62 6c 65 0a 20 20 20   no suitable.   
5590: 20 60 74 65 73 74 2f 2a 60 20 6d 6f 64 75 6c 65   `test/*` module
55a0: 20 63 6f 75 6c 64 20 62 65 20 63 72 65 61 74 65   could be create
55b0: 64 2e 0a 0a 2d 20 20 20 60 74 65 73 74 2f 2a 60  d...-   `test/*`
55c0: 20 70 72 6f 67 72 61 6d 73 20 61 6c 77 61 79 73   programs always
55d0: 20 72 75 6e 20 73 69 6c 65 6e 74 6c 79 20 6f 6e   run silently on
55e0: 20 73 75 63 63 65 73 73 2c 20 77 72 69 74 69 6e   success, writin
55f0: 67 20 6f 75 74 70 75 74 0a 20 20 20 20 6f 6e 6c  g output.    onl
5600: 79 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 65  y to indicate te
5610: 73 74 20 66 61 69 6c 75 72 65 73 2e 20 54 68 69  st failures. Thi
5620: 73 20 69 73 20 62 65 63 61 75 73 65 20 74 68 65  s is because the
5630: 79 27 72 65 20 75 73 75 61 6c 6c 79 20 6f 6e 6c  y're usually onl
5640: 79 0a 20 20 20 20 72 75 6e 20 76 69 61 20 60 64  y.    run via `d
5650: 74 65 73 74 60 2e 0a 0a 2d 20 20 20 60 65 78 61  test`...-   `exa
5660: 6d 70 6c 65 73 2f 2a 60 20 61 72 65 20 61 6c 77  mples/*` are alw
5670: 61 79 73 20 22 6e 6f 69 73 79 2c 22 20 72 65 67  ays "noisy," reg
5680: 61 72 64 6c 65 73 73 20 6f 66 20 77 68 65 74 68  ardless of wheth
5690: 65 72 20 74 68 65 79 20 73 75 63 63 65 65 64 0a  er they succeed.
56a0: 20 20 20 20 6f 72 20 66 61 69 6c 2c 20 62 65 63      or fail, bec
56b0: 61 75 73 65 20 74 68 65 79 27 72 65 20 61 6c 73  ause they're als
56c0: 6f 20 72 75 6e 20 69 6e 74 65 72 61 63 74 69 76  o run interactiv
56d0: 65 6c 79 20 62 79 20 70 65 6f 70 6c 65 20 6c 65  ely by people le
56e0: 61 72 6e 69 6e 67 0a 20 20 20 20 74 6f 20 75 73  arning.    to us
56f0: 65 20 4d 79 53 51 4c 2b 2b 2e 0a 0a 50 61 74 63  e MySQL++...Patc
5700: 68 65 73 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75  hes should inclu
5710: 64 65 20 74 65 73 74 73 20 69 66 20 74 68 65 79  de tests if they
5720: 20 69 6e 74 72 6f 64 75 63 65 20 6e 65 77 20 66   introduce new f
5730: 75 6e 63 74 69 6f 6e 61 6c 69 74 79 20 6f 72 20  unctionality or 
5740: 66 69 78 0a 61 20 62 75 67 20 74 68 61 74 20 74  fix.a bug that t
5750: 68 65 20 65 78 69 73 74 69 6e 67 20 74 65 73 74  he existing test
5760: 20 63 6f 76 65 72 61 67 65 20 66 61 69 6c 65 64   coverage failed
5770: 20 74 6f 20 63 61 74 63 68 2e 20 20 49 66 20 74   to catch.  If t
5780: 68 65 20 74 65 73 74 20 69 73 0a 6e 6f 69 73 79  he test is.noisy
5790: 2c 20 6e 65 65 64 73 20 44 42 20 61 63 63 65 73  , needs DB acces
57a0: 73 2c 20 6f 72 20 74 65 73 74 73 20 6d 75 6c 74  s, or tests mult
57b0: 69 70 6c 65 20 70 61 72 74 73 20 6f 66 20 74 68  iple parts of th
57c0: 65 20 6c 69 62 72 61 72 79 20 61 74 20 6f 6e 63  e library at onc
57d0: 65 2c 0a 69 74 20 67 6f 65 73 20 69 6e 20 60 65  e,.it goes in `e
57e0: 78 61 6d 70 6c 65 73 2f 2a 60 2e 20 49 66 20 79  xamples/*`. If y
57f0: 6f 75 72 20 63 68 61 6e 67 65 20 61 66 66 65 63  our change affec
5800: 74 73 20 6f 6e 6c 79 20 6f 6e 65 20 63 6c 61 73  ts only one clas
5810: 73 20 69 6e 0a 4d 79 53 51 4c 2b 2b 20 61 6e 64  s in.MySQL++ and
5820: 20 74 65 73 74 69 6e 67 20 69 74 20 63 61 6e 20   testing it can 
5830: 62 65 20 64 6f 6e 65 20 77 69 74 68 6f 75 74 20  be done without 
5840: 69 6e 73 74 61 6e 74 69 61 74 69 6e 67 20 6f 74  instantiating ot
5850: 68 65 72 20 4d 79 53 51 4c 2b 2b 0a 63 6c 61 73  her MySQL++.clas
5860: 73 65 73 20 e2 80 94 20 6f 74 68 65 72 20 74 68  ses ... other th
5870: 61 6e 20 62 79 20 63 6f 6d 70 6f 73 69 74 69 6f  an by compositio
5880: 6e 2c 20 6f 66 20 63 6f 75 72 73 65 20 e2 80 94  n, of course ...
5890: 20 69 74 20 73 68 6f 75 6c 64 20 67 6f 20 69 6e   it should go in
58a0: 0a 60 74 65 73 74 2f 2a 60 2e 0a 0a 49 6e 20 67  .`test/*`...In g
58b0: 65 6e 65 72 61 6c 2c 20 70 72 65 66 65 72 20 6d  eneral, prefer m
58c0: 6f 64 69 66 79 69 6e 67 20 61 6e 20 65 78 69 73  odifying an exis
58d0: 74 69 6e 67 20 60 65 78 61 6d 70 6c 65 73 2f 2a  ting `examples/*
58e0: 60 20 6f 72 20 60 74 65 73 74 2f 2a 60 0a 70 72  ` or `test/*`.pr
58f0: 6f 67 72 61 6d 2e 20 20 41 64 64 20 61 20 6e 65  ogram.  Add a ne
5900: 77 20 6f 6e 65 20 6f 6e 6c 79 20 69 66 20 79 6f  w one only if yo
5910: 75 27 72 65 20 69 6e 74 72 6f 64 75 63 69 6e 67  u're introducing
5920: 20 62 72 61 6e 64 20 6e 65 77 0a 66 75 6e 63 74   brand new.funct
5930: 69 6f 6e 61 6c 69 74 79 20 6f 72 20 77 68 65 6e  ionality or when
5940: 20 61 20 67 69 76 65 6e 20 66 65 61 74 75 72 65   a given feature
5950: 20 63 75 72 72 65 6e 74 6c 79 20 68 61 73 20 6e   currently has n
5960: 6f 20 74 65 73 74 20 61 74 20 61 6c 6c 2e 0a 0a  o test at all...
5970: 42 65 77 61 72 65 20 74 68 61 74 20 74 68 65 20  Beware that the 
5980: 70 72 69 6d 61 72 79 20 72 6f 6c 65 20 6f 66 20  primary role of 
5990: 74 68 65 20 65 78 61 6d 70 6c 65 73 20 69 73 20  the examples is 
59a0: 74 6f 20 69 6c 6c 75 73 74 72 61 74 65 20 70 6f  to illustrate po
59b0: 69 6e 74 73 20 69 6e 20 74 68 65 0a 75 73 65 72  ints in the.user
59c0: 20 6d 61 6e 75 61 6c 2e 20 49 66 20 61 6e 20 65   manual. If an e
59d0: 78 69 73 74 69 6e 67 20 65 78 61 6d 70 6c 65 20  xisting example 
59e0: 64 6f 65 73 20 73 6f 6d 65 74 68 69 6e 67 20 73  does something s
59f0: 69 6d 69 6c 61 72 20 74 6f 20 77 68 61 74 20 61  imilar to what a
5a00: 0a 70 72 6f 70 65 72 20 74 65 73 74 20 77 6f 75  .proper test wou
5a10: 6c 64 20 6e 65 65 64 20 74 6f 20 64 6f 20 61 6e  ld need to do an
5a20: 64 20 74 68 65 20 74 65 73 74 20 64 6f 65 73 6e  d the test doesn
5a30: 27 74 20 63 68 61 6e 67 65 20 74 68 65 20 6e 61  't change the na
5a40: 74 75 72 65 20 6f 66 0a 74 68 65 20 65 78 61 6d  ture of.the exam
5a50: 70 6c 65 2c 20 64 6f 6e 27 74 20 77 6f 72 72 79  ple, don't worry
5a60: 20 61 62 6f 75 74 20 63 68 61 6e 67 69 6e 67 20   about changing 
5a70: 74 68 65 20 65 78 61 6d 70 6c 65 20 63 6f 64 65  the example code
5a80: 2e 20 49 66 20 79 6f 75 72 20 74 65 73 74 0a 77  . If your test.w
5a90: 6f 75 6c 64 20 63 68 61 6e 67 65 20 74 68 65 20  ould change the 
5aa0: 6e 61 74 75 72 65 20 6f 66 20 74 68 65 20 65 78  nature of the ex
5ab0: 61 6d 70 6c 65 2c 20 79 6f 75 20 65 69 74 68 65  ample, you eithe
5ac0: 72 20 6e 65 65 64 20 74 6f 20 64 6f 20 74 68 65  r need to do the
5ad0: 20 74 65 73 74 0a 61 6e 6f 74 68 65 72 20 77 61   test.another wa
5ae0: 79 20 6f 72 20 61 6c 73 6f 20 73 75 62 6d 69 74  y or also submit
5af0: 20 61 20 63 68 61 6e 67 65 20 74 6f 20 60 64 6f   a change to `do
5b00: 63 2f 75 73 65 72 6d 61 6e 2f 2a 2e 64 62 78 60  c/userman/*.dbx`
5b10: 20 74 68 61 74 0a 69 6e 63 6f 72 70 6f 72 61 74   that.incorporat
5b20: 65 73 20 74 68 65 20 64 69 66 66 65 72 65 6e 63  es the differenc
5b30: 65 2e 0a 0a 0a 23 23 20 41 64 64 69 6e 67 20 53  e....## Adding S
5b40: 75 70 70 6f 72 74 20 66 6f 72 20 61 20 44 69 66  upport for a Dif
5b50: 66 65 72 65 6e 74 20 43 6f 6d 70 69 6c 65 72 0a  ferent Compiler.
5b60: 0a 41 73 20 64 65 73 63 72 69 62 65 64 20 61 62  .As described ab
5b70: 6f 76 65 2c 20 4d 79 53 51 4c 2b 2b 20 75 73 65  ove, MySQL++ use
5b80: 73 20 74 68 65 20 42 61 6b 65 66 69 6c 65 20 73  s the Bakefile s
5b90: 79 73 74 65 6d 20 66 6f 72 20 63 72 65 61 74 69  ystem for creati
5ba0: 6e 67 0a 70 72 6f 6a 65 63 74 20 66 69 6c 65 73  ng.project files
5bb0: 20 61 6e 64 20 6d 61 6b 65 66 69 6c 65 73 2e 20   and makefiles. 
5bc0: 54 68 69 73 20 61 6c 6c 6f 77 73 20 61 20 73 69  This allows a si
5bd0: 6e 67 6c 65 20 63 68 61 6e 67 65 20 74 6f 20 70  ngle change to p
5be0: 72 6f 70 61 67 61 74 65 0a 61 63 72 6f 73 73 20  ropagate.across 
5bf0: 61 6c 6c 20 62 75 69 6c 64 20 73 79 73 74 65 6d  all build system
5c00: 73 20 77 65 20 73 75 70 70 6f 72 74 2e 20 49 6e  s we support. In
5c10: 20 74 68 65 20 70 61 73 74 2c 20 77 65 20 75 73   the past, we us
5c20: 65 64 20 6d 6f 72 65 20 61 64 2d 68 6f 63 0a 73  ed more ad-hoc.s
5c30: 79 73 74 65 6d 73 2c 20 61 6e 64 20 77 65 27 64  ystems, and we'd
5c40: 20 66 72 65 71 75 65 6e 74 6c 79 20 66 6f 72 67   frequently forg
5c50: 65 74 20 74 6f 20 75 70 64 61 74 65 20 74 68 65  et to update the
5c60: 20 62 75 69 6c 64 20 73 79 73 74 65 6d 20 66 6f   build system fo
5c70: 72 20 61 0a 70 61 72 74 69 63 75 6c 61 72 20 70  r a.particular p
5c80: 6c 61 74 66 6f 72 6d 2c 20 73 6f 20 74 68 61 74  latform, so that
5c90: 20 61 74 20 61 6e 79 20 67 69 76 65 6e 20 74 69   at any given ti
5ca0: 6d 65 2c 20 61 74 20 6c 65 61 73 74 20 6f 6e 65  me, at least one
5cb0: 20 74 61 72 67 65 74 20 77 61 73 0a 6c 69 6b 65   target was.like
5cc0: 6c 79 20 74 6f 20 62 65 20 62 72 6f 6b 65 6e 2e  ly to be broken.
5cd0: 20 57 65 20 77 69 6c 6c 20 74 68 65 72 65 66 6f   We will therefo
5ce0: 72 65 20 72 65 73 69 73 74 20 61 6e 79 20 63 68  re resist any ch
5cf0: 61 6e 67 65 20 74 68 61 74 20 72 65 71 75 69 72  ange that requir
5d00: 65 73 0a 74 68 61 74 20 77 65 20 67 6f 20 62 61  es.that we go ba
5d10: 63 6b 20 74 6f 20 64 69 73 74 72 69 62 75 74 69  ck to distributi
5d20: 6e 67 20 6d 61 6e 75 61 6c 6c 79 2d 6d 61 69 6e  ng manually-main
5d30: 74 61 69 6e 65 64 20 62 75 69 6c 64 20 73 79 73  tained build sys
5d40: 74 65 6d 20 66 69 6c 65 73 0a 6e 6f 74 20 67 65  tem files.not ge
5d50: 6e 65 72 61 74 65 64 20 66 72 6f 6d 20 61 20 73  nerated from a s
5d60: 69 6e 67 6c 65 20 73 6f 75 72 63 65 2e 0a 0a 49  ingle source...I
5d70: 66 20 4d 79 53 51 4c 2b 2b 20 64 6f 65 73 6e 27  f MySQL++ doesn'
5d80: 74 20 63 75 72 72 65 6e 74 6c 79 20 73 68 69 70  t currently ship
5d90: 20 77 69 74 68 20 70 72 6f 6a 65 63 74 20 66 69   with project fi
5da0: 6c 65 73 20 6f 72 20 6d 61 6b 65 66 69 6c 65 73  les or makefiles
5db0: 20 74 75 6e 65 64 0a 66 6f 72 20 79 6f 75 72 20   tuned.for your 
5dc0: 63 6f 6d 70 69 6c 65 72 20 6f 66 20 63 68 6f 69  compiler of choi
5dd0: 63 65 2c 20 79 6f 75 20 6e 65 65 64 20 74 6f 20  ce, you need to 
5de0: 77 6f 72 6b 20 74 68 72 6f 75 67 68 20 74 68 65  work through the
5df0: 20 42 61 6b 65 66 69 6c 65 0a 6d 65 63 68 61 6e   Bakefile.mechan
5e00: 69 73 6d 20 74 6f 20 61 64 64 20 73 75 70 70 6f  ism to add suppo
5e10: 72 74 2e 20 57 65 27 72 65 20 6e 6f 74 20 77 69  rt. We're not wi
5e20: 6c 6c 69 6e 67 20 74 6f 20 64 6f 20 61 64 2d 68  lling to do ad-h
5e30: 6f 63 20 70 6c 61 74 66 6f 72 6d 0a 73 75 70 70  oc platform.supp
5e40: 6f 72 74 20 61 6e 79 20 6d 6f 72 65 2c 20 73 6f  ort any more, so
5e50: 20 70 6c 65 61 73 65 20 64 6f 6e 27 74 20 61 73   please don't as
5e60: 6b 20 69 66 20 79 6f 75 20 63 61 6e 20 73 65 6e  k if you can sen
5e70: 64 20 75 73 20 70 72 6f 6a 65 63 74 20 66 69 6c  d us project fil
5e80: 65 73 0a 69 6e 73 74 65 61 64 3b 20 77 65 20 64  es.instead; we d
5e90: 6f 6e 27 74 20 77 61 6e 74 20 74 68 65 6d 2e 0a  on't want them..
5ea0: 0a 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20  .If you want to 
5eb0: 70 6f 72 74 20 4d 79 53 51 4c 2b 2b 20 74 6f 20  port MySQL++ to 
5ec0: 61 6e 6f 74 68 65 72 20 70 6c 61 74 66 6f 72 6d  another platform
5ed0: 2c 20 77 65 20 6e 65 65 64 20 74 6f 20 62 65 20  , we need to be 
5ee0: 63 6f 6e 66 69 64 65 6e 74 0a 74 68 61 74 20 74  confident.that t
5ef0: 68 65 20 65 6e 74 69 72 65 20 6c 69 62 72 61 72  he entire librar
5f00: 79 20 77 6f 72 6b 73 20 6f 6e 20 79 6f 75 72 20  y works on your 
5f10: 70 6c 61 74 66 6f 72 6d 20 62 65 66 6f 72 65 20  platform before 
5f20: 77 65 27 6c 6c 20 61 63 63 65 70 74 0a 70 61 74  we'll accept.pat
5f30: 63 68 65 73 2e 20 49 6e 20 74 68 65 20 70 61 73  ches. In the pas
5f40: 74 2c 20 77 65 27 76 65 20 68 61 64 20 62 72 6f  t, we've had bro
5f50: 6b 65 6e 20 70 6f 72 74 73 20 74 68 61 74 20 77  ken ports that w
5f60: 65 72 65 20 65 69 74 68 65 72 20 6d 69 73 73 69  ere either missi
5f70: 6e 67 0a 69 6d 70 6f 72 74 61 6e 74 20 6c 69 62  ng.important lib
5f80: 72 61 72 79 20 66 65 61 74 75 72 65 73 2c 20 6f  rary features, o
5f90: 72 20 77 68 69 63 68 20 63 72 61 73 68 65 64 20  r which crashed 
5fa0: 77 68 65 6e 20 62 75 69 6c 74 20 69 6e 20 63 65  when built in ce
5fb0: 72 74 61 69 6e 20 77 61 79 73 2e 0a 46 65 77 20  rtain ways..Few 
5fc0: 70 65 6f 70 6c 65 20 77 69 6c 6c 20 6b 6e 6f 77  people will know
5fd0: 69 6e 67 6c 79 20 75 73 65 20 61 20 63 72 69 70  ingly use a crip
5fe0: 70 6c 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20  pled version of 
5ff0: 4d 79 53 51 4c 2b 2b 2c 20 73 69 6e 63 65 20 74  MySQL++, since t
6000: 68 65 72 65 0a 61 72 65 20 75 73 75 61 6c 6c 79  here.are usually
6010: 20 61 63 63 65 70 74 61 62 6c 65 20 61 6c 74 65   acceptable alte
6020: 72 6e 61 74 69 76 65 73 2e 20 20 54 68 65 72 65  rnatives.  There
6030: 66 6f 72 65 2c 20 73 75 63 68 20 70 6f 72 74 73  fore, such ports
6040: 20 62 65 63 6f 6d 65 0a 6d 61 69 6e 74 65 6e 61   become.maintena
6050: 6e 63 65 20 62 61 67 67 61 67 65 20 77 69 74 68  nce baggage with
6060: 20 6c 69 74 74 6c 65 20 63 6f 6d 70 65 6e 73 61   little compensa
6070: 74 69 6e 67 20 76 61 6c 75 65 2e 0a 0a 0a 3c 61  ting value....<a
6080: 20 6e 61 6d 65 3d 22 70 72 69 76 61 74 65 22 3e   name="private">
6090: 3c 2f 61 3e 0a 23 23 20 4d 61 69 6e 74 61 69 6e  </a>.## Maintain
60a0: 69 6e 67 20 61 20 50 72 69 76 61 74 65 20 52 65  ing a Private Re
60b0: 70 6f 73 69 74 6f 72 79 0a 0a 41 6c 74 68 6f 75  pository..Althou
60c0: 67 68 20 46 6f 73 73 69 6c 20 73 79 6e 63 73 20  gh Fossil syncs 
60d0: 63 68 61 6e 67 65 73 20 62 61 63 6b 20 74 6f 20  changes back to 
60e0: 74 68 65 20 5b 4d 79 53 51 4c 2b 2b 20 46 6f 73  the [MySQL++ Fos
60f0: 73 69 6c 0a 72 65 70 6f 73 69 74 6f 72 79 5d 5b  sil.repository][
6100: 68 6f 6d 65 5d 20 62 79 20 64 65 66 61 75 6c 74  home] by default
6110: 2c 20 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65  , it is possible
6120: 20 74 6f 20 6d 61 69 6e 74 61 69 6e 20 61 20 70   to maintain a p
6130: 72 69 76 61 74 65 20 63 6f 70 79 0a 74 68 61 74  rivate copy.that
6140: 20 73 69 6d 70 6c 79 20 70 75 6c 6c 73 20 63 68   simply pulls ch
6150: 61 6e 67 65 73 20 69 6e 20 6f 63 63 61 73 69 6f  anges in occasio
6160: 6e 61 6c 6c 79 2e 0a 0a 54 68 65 20 66 69 72 73  nally...The firs
6170: 74 20 73 74 65 70 20 69 73 20 74 6f 20 74 75 72  t step is to tur
6180: 6e 20 6f 66 66 20 74 68 65 20 61 75 74 6f 2d 73  n off the auto-s
6190: 79 6e 63 20 66 65 61 74 75 72 65 3a 0a 0a 20 20  ync feature:..  
61a0: 20 20 20 24 20 66 6f 73 73 69 6c 20 73 65 74 20     $ fossil set 
61b0: 61 75 74 6f 73 79 6e 63 20 6f 66 66 0a 0a 2e 2e  autosync off....
61c0: 2e 6f 72 20 73 65 74 20 69 74 20 73 6f 20 69 74  .or set it so it
61d0: 20 6f 6e 6c 79 20 70 75 6c 6c 73 20 66 72 6f 6d   only pulls from
61e0: 20 74 68 65 20 63 65 6e 74 72 61 6c 20 72 65 70   the central rep
61f0: 6f 20 77 69 74 68 6f 75 74 20 74 72 79 69 6e 67  o without trying
6200: 20 74 6f 20 70 75 73 68 0a 6c 6f 63 61 6c 20 63   to push.local c
6210: 68 61 6e 67 65 73 2c 20 6d 61 6b 69 6e 67 20 69  hanges, making i
6220: 74 20 63 6f 6d 70 6c 61 69 6e 20 74 68 61 74 20  t complain that 
6230: 79 6f 75 20 64 6f 6e e2 80 99 74 20 68 61 76 65  you don...t have
6240: 20 63 6f 6d 6d 69 74 20 63 61 70 61 62 69 6c 69   commit capabili
6250: 74 79 3a 0a 0a 20 20 20 20 20 24 20 66 6f 73 73  ty:..     $ foss
6260: 69 6c 20 73 65 74 20 61 75 74 6f 73 79 6e 63 20  il set autosync 
6270: 70 75 6c 6c 6f 6e 6c 79 0a 0a 54 68 65 6e 20 49  pullonly..Then I
6280: 20 72 65 63 6f 6d 6d 65 6e 64 20 74 68 61 74 20   recommend that 
6290: 79 6f 75 20 6d 61 6b 65 20 61 6e 79 20 6c 6f 63  you make any loc
62a0: 61 6c 20 63 68 61 6e 67 65 73 20 6f 6e 20 61 20  al changes on a 
62b0: 62 72 61 6e 63 68 3a 0a 0a 20 20 20 20 2e 2e 2e  branch:..    ...
62c0: 68 61 63 6b 2c 20 68 61 63 6b 2c 20 68 61 63 6b  hack, hack, hack
62d0: 2e 2e 2e 0a 20 20 20 20 24 20 66 6f 73 73 69 6c  ....    $ fossil
62e0: 20 63 69 20 2d 2d 62 72 61 6e 63 68 20 6d 79 2d   ci --branch my-
62f0: 6c 6f 63 61 6c 2d 62 72 61 6e 63 68 0a 0a 41 66  local-branch..Af
6300: 74 65 72 20 79 6f 75 20 67 69 76 65 20 74 68 65  ter you give the
6310: 20 60 2d 2d 62 72 61 6e 63 68 60 20 6f 70 74 69   `--branch` opti
6320: 6f 6e 20 6f 6e 20 61 20 63 68 65 63 6b 69 6e 2c  on on a checkin,
6330: 20 46 6f 73 73 69 6c 20 61 75 74 6f 6d 61 74 69   Fossil automati
6340: 63 61 6c 6c 79 0a 73 77 69 74 63 68 65 73 20 79  cally.switches y
6350: 6f 75 72 20 6c 6f 63 61 6c 20 63 68 65 63 6b 6f  our local checko
6360: 75 74 20 74 6f 20 74 68 61 74 20 62 72 61 6e 63  ut to that branc
6370: 68 2c 20 73 6f 20 74 68 61 74 20 61 6c 6c 20 66  h, so that all f
6380: 75 72 74 68 65 72 0a 63 68 65 63 6b 69 6e 73 20  urther.checkins 
6390: 63 61 6e 20 62 65 20 6d 61 64 65 20 77 69 74 68  can be made with
63a0: 6f 75 74 20 74 68 65 20 60 2d 2d 62 72 61 6e 63  out the `--branc
63b0: 68 60 20 6f 70 74 69 6f 6e 2e 20 20 54 6f 20 67  h` option.  To g
63c0: 65 74 20 62 61 63 6b 20 74 6f 20 74 68 65 0a 74  et back to the.t
63d0: 72 75 6e 6b 2c 20 79 6f 75 27 64 20 73 61 79 20  runk, you'd say 
63e0: 60 66 6f 73 73 69 6c 20 75 70 20 74 72 75 6e 6b  `fossil up trunk
63f0: 60 2c 20 62 75 74 20 75 6e 64 65 72 20 74 68 69  `, but under thi
6400: 73 20 77 6f 72 6b 66 6c 6f 77 2c 20 74 68 65 20  s workflow, the 
6410: 6e 65 65 64 0a 66 6f 72 20 74 68 61 74 20 77 69  need.for that wi
6420: 6c 6c 20 62 65 20 72 61 72 65 2e 0a 0a 57 68 65  ll be rare...Whe
6430: 6e 20 73 6f 6d 65 74 68 69 6e 67 20 68 61 70 70  n something happ
6440: 65 6e 73 20 6f 6e 20 74 68 65 20 6f 66 66 69 63  ens on the offic
6450: 69 61 6c 20 74 72 75 6e 6b 20 6f 6e 20 60 74 61  ial trunk on `ta
6460: 6e 67 65 6e 74 73 6f 66 74 2e 63 6f 6d 60 20 74  ngentsoft.com` t
6470: 68 61 74 0a 79 6f 75 20 77 61 6e 74 20 70 75 6c  hat.you want pul
6480: 6c 65 64 20 69 6e 74 6f 20 79 6f 75 72 20 70 72  led into your pr
6490: 69 76 61 74 65 20 72 65 70 6f 73 69 74 6f 72 79  ivate repository
64a0: 2c 20 73 61 79 3a 0a 0a 20 20 20 20 24 20 66 6f  , say:..    $ fo
64b0: 73 73 69 6c 20 70 75 6c 6c 0a 20 20 20 20 24 20  ssil pull.    $ 
64c0: 66 6f 73 73 69 6c 20 6d 65 72 67 65 20 74 72 75  fossil merge tru
64d0: 6e 6b 0a 0a 54 68 65 20 66 69 72 73 74 20 63 6f  nk..The first co
64e0: 6d 6d 61 6e 64 20 70 75 6c 6c 73 20 61 6c 6c 20  mmand pulls all 
64f0: 72 65 6d 6f 74 65 20 63 68 61 6e 67 65 73 20 69  remote changes i
6500: 6e 74 6f 20 79 6f 75 72 20 6c 6f 63 61 6c 20 63  nto your local c
6510: 6c 6f 6e 65 2c 20 62 75 74 0a 73 69 6e 63 65 20  lone, but.since 
6520: 74 68 6f 73 65 20 63 68 61 6e 67 65 73 20 64 6f  those changes do
6530: 6e 27 74 20 61 66 66 65 63 74 20 79 6f 75 72 20  n't affect your 
6540: 70 72 69 76 61 74 65 20 62 72 61 6e 63 68 2c 20  private branch, 
6550: 79 6f 75 20 77 6f 6e 27 74 20 73 65 65 20 61 6e  you won't see an
6560: 79 0a 69 6d 6d 65 64 69 61 74 65 20 63 68 61 6e  y.immediate chan
6570: 67 65 2e 20 54 68 65 20 73 65 63 6f 6e 64 20 61  ge. The second a
6580: 74 74 65 6d 70 74 73 20 74 6f 20 6d 65 72 67 65  ttempts to merge
6590: 20 74 68 65 20 74 72 75 6e 6b 20 62 72 61 6e 63   the trunk branc
65a0: 68 27 73 0a 63 68 61 6e 67 65 73 20 73 69 6e 63  h's.changes sinc
65b0: 65 20 74 68 65 20 6c 61 73 74 20 62 72 61 6e 63  e the last branc
65c0: 68 20 6f 72 20 6d 65 72 67 65 20 70 6f 69 6e 74  h or merge point
65d0: 20 69 6e 74 6f 20 79 6f 75 72 20 70 72 69 76 61   into your priva
65e0: 74 65 20 62 72 61 6e 63 68 2e 0a 0a 57 68 65 74  te branch...Whet
65f0: 68 65 72 20 74 68 65 20 6d 65 72 67 65 20 69 73  her the merge is
6600: 20 73 75 63 63 65 73 73 66 75 6c 20 6f 72 20 6e   successful or n
6610: 6f 74 2c 20 46 6f 73 73 69 6c 20 64 6f 65 73 20  ot, Fossil does 
6620: 6e 6f 74 20 69 6d 6d 65 64 69 61 74 65 6c 79 0a  not immediately.
6630: 6d 6f 64 69 66 79 20 79 6f 75 72 20 63 6c 6f 6e  modify your clon
6640: 65 2c 20 6f 6e 6c 79 20 74 68 65 20 77 6f 72 6b  e, only the work
6650: 69 6e 67 20 63 68 65 63 6b 6f 75 74 20 64 69 72  ing checkout dir
6660: 65 63 74 6f 72 79 2e 20 59 6f 75 20 6d 75 73 74  ectory. You must
6670: 20 74 68 65 6e 0a 73 61 79 20 60 66 6f 73 73 69   then.say `fossi
6680: 6c 20 63 69 60 20 6f 6e 63 65 20 79 6f 75 27 72  l ci` once you'r
6690: 65 20 68 61 70 70 79 20 77 69 74 68 20 74 68 65  e happy with the
66a0: 20 6d 65 72 67 65 2e 20 55 6e 74 69 6c 20 74 68   merge. Until th
66b0: 65 6e 2c 20 61 6c 6c 20 74 68 65 0a 75 73 75 61  en, all the.usua
66c0: 6c 20 46 6f 73 73 69 6c 20 63 6f 6d 6d 61 6e 64  l Fossil command
66d0: 73 20 6c 69 6b 65 20 60 66 6f 73 73 69 6c 20 64  s like `fossil d
66e0: 69 66 66 60 20 61 6e 64 20 60 66 6f 73 73 69 6c  iff` and `fossil
66f0: 20 73 74 61 74 75 73 60 20 77 69 6c 6c 20 68 65   status` will he
6700: 6c 70 0a 79 6f 75 20 63 6f 6d 65 20 74 6f 20 74  lp.you come to t
6710: 68 61 74 20 64 65 63 69 73 69 6f 6e 2e 0a 0a 49  hat decision...I
6720: 66 20 79 6f 75 20 65 76 65 72 20 64 65 63 69 64  f you ever decid
6730: 65 20 74 6f 20 63 6f 6e 74 72 69 62 75 74 65 20  e to contribute 
6740: 79 6f 75 72 20 70 72 69 76 61 74 65 20 62 72 61  your private bra
6750: 6e 63 68 20 74 6f 20 74 68 65 20 4d 79 53 51 4c  nch to the MySQL
6760: 2b 2b 0a 70 72 6f 6a 65 63 74 2c 20 74 68 65 72  ++.project, ther
6770: 65 20 61 72 65 20 61 20 63 6f 75 70 6c 65 20 6f  e are a couple o
6780: 66 20 65 61 73 79 20 77 61 79 73 20 74 6f 20 61  f easy ways to a
6790: 63 68 69 65 76 65 20 74 68 61 74 2e 20 41 73 6b  chieve that. Ask
67a0: 20 61 62 6f 75 74 20 69 74 0a 6f 6e 20 5b 74 68   about it.on [th
67b0: 65 20 66 6f 72 75 6d 5d 5b 66 6f 72 5d 20 69 66  e forum][for] if
67c0: 20 79 6f 75 20 66 69 6e 64 20 79 6f 75 72 73 65   you find yourse
67d0: 6c 66 20 69 6e 20 74 68 69 73 20 73 69 74 75 61  lf in this situa
67e0: 74 69 6f 6e 2e 0a 0a 5b 68 6f 6d 65 5d 3a 20 68  tion...[home]: h
67f0: 74 74 70 73 3a 2f 2f 74 61 6e 67 65 6e 74 73 6f  ttps://tangentso
6800: 66 74 2e 63 6f 6d 2f 6d 79 73 71 6c 70 70 2f 0a  ft.com/mysqlpp/.