Hex Artifact Content

Artifact 39df1905cf6f023756cbdff39af51d26ed6d4554:


0000: 23 20 44 65 76 65 6c 6f 70 65 72 20 47 75 69 64  # Developer Guid
0010: 65 0a 0a 54 68 69 73 20 69 73 20 61 20 67 75 69  e..This is a gui
0020: 64 65 20 66 6f 72 20 64 65 76 65 6c 6f 70 65 72  de for developer
0030: 73 20 74 6f 20 66 6f 6c 6c 6f 77 20 66 6f 72 20  s to follow for 
0040: 76 61 72 69 6f 75 73 20 70 61 72 74 73 20 6f 66  various parts of
0050: 20 74 68 65 20 72 65 70 6f 73 69 74 6f 72 79 2e   the repository.
0060: 0a 0a 23 23 20 52 65 6c 65 61 73 69 6e 67 0a 0a  ..## Releasing..
0070: 57 68 65 6e 20 61 20 72 65 6c 65 61 73 65 20 69  When a release i
0080: 73 20 74 6f 20 62 65 20 6d 61 64 65 2c 20 69 74  s to be made, it
0090: 20 69 73 20 70 65 72 66 6f 72 6d 65 64 20 69 6e   is performed in
00a0: 20 61 6e 6f 74 68 65 72 20 62 72 61 6e 63 68 20   another branch 
00b0: 61 6e 64 20 62 65 63 6f 6d 65 73 0a 73 65 70 61  and becomes.sepa
00c0: 72 61 74 65 20 66 72 6f 6d 20 60 74 72 75 6e 6b  rate from `trunk
00d0: 60 2e 20 54 68 69 73 20 6d 65 61 6e 73 20 74 68  `. This means th
00e0: 61 74 20 60 74 72 75 6e 6b 60 20 69 73 20 61 6c  at `trunk` is al
00f0: 77 61 79 73 20 69 6e 20 61 20 73 74 61 74 65 20  ways in a state 
0100: 6f 66 0a 70 65 72 70 65 74 75 61 6c 20 64 65 76  of.perpetual dev
0110: 65 6c 6f 70 6d 65 6e 74 2e 20 57 69 74 68 69 6e  elopment. Within
0120: 20 74 68 65 73 65 20 62 72 61 6e 63 68 65 73 2c   these branches,
0130: 20 74 68 65 72 65 20 61 72 65 20 62 75 67 20 66   there are bug f
0140: 69 78 65 73 20 61 6e 64 0a 72 65 6c 65 61 73 65  ixes and.release
0150: 73 2e 20 57 68 65 6e 20 61 20 63 6f 6d 6d 69 74  s. When a commit
0160: 20 69 73 20 72 65 61 64 79 20 66 6f 72 20 61 20   is ready for a 
0170: 72 65 6c 65 61 73 65 20 74 68 65 6e 20 69 74 20  release then it 
0180: 73 68 6f 75 6c 64 20 6a 75 73 74 20 62 65 20 74  should just be t
0190: 61 67 67 65 64 0a 61 6e 64 20 62 75 69 6c 74 20  agged.and built 
01a0: 61 63 63 6f 72 64 69 6e 67 6c 79 2e 20 49 74 20  accordingly. It 
01b0: 69 73 20 62 65 73 74 20 74 6f 20 61 76 6f 69 64  is best to avoid
01c0: 20 68 61 76 69 6e 67 20 72 65 6c 65 61 73 65 73   having releases
01d0: 20 61 6e 64 20 73 75 63 68 20 69 6e 20 74 68 65   and such in the
01e0: 0a 60 74 72 75 6e 6b 60 20 62 72 61 6e 63 68 20  .`trunk` branch 
01f0: 62 65 63 61 75 73 65 20 69 74 20 77 69 6c 6c 20  because it will 
0200: 63 6f 6d 70 6c 69 63 61 74 65 20 62 75 67 20 66  complicate bug f
0210: 69 78 65 73 20 61 6e 64 20 6f 74 68 65 72 20 74  ixes and other t
0220: 68 69 6e 67 73 2e 20 53 6f 0a 77 68 65 6e 20 61  hings. So.when a
0230: 20 72 65 6c 65 61 73 65 20 69 73 20 74 6f 20 62   release is to b
0240: 65 20 6d 61 64 65 3a 0a 0a 20 2a 20 55 70 64 61  e made:.. * Upda
0250: 74 65 20 74 68 65 20 63 68 61 6e 67 65 6c 6f 67  te the changelog
0260: 20 77 69 74 68 20 74 68 65 20 70 6c 61 6e 6e 65   with the planne
0270: 64 20 72 65 6c 65 61 73 65 20 64 61 74 65 20 69  d release date i
0280: 66 20 69 74 20 69 73 20 6b 6e 6f 77 6e 20 61 74  f it is known at
0290: 20 74 68 65 0a 20 20 20 74 69 6d 65 2c 20 6f 74   the.   time, ot
02a0: 68 65 72 77 69 73 65 20 69 74 20 69 73 20 6e 6f  herwise it is no
02b0: 74 20 6b 6e 6f 77 6e 2e 0a 20 2a 20 46 6f 72 6b  t known.. * Fork
02c0: 20 74 68 65 20 62 72 61 6e 63 68 20 61 6e 64 20   the branch and 
02d0: 6d 61 6b 65 20 61 20 6e 65 77 20 62 72 61 6e 63  make a new branc
02e0: 68 20 66 72 6f 6d 20 60 74 72 75 6e 6b 60 20 66  h from `trunk` f
02f0: 6f 72 20 74 68 65 20 72 65 6c 65 61 73 65 20 74  or the release t
0300: 6f 0a 20 20 20 62 65 20 64 6f 6e 65 2c 20 61 6e  o.   be done, an
0310: 20 65 78 61 6d 70 6c 65 20 77 6f 75 6c 64 20 62   example would b
0320: 65 20 60 72 65 6c 65 61 73 65 2d 30 2e 32 2e 78  e `release-0.2.x
0330: 60 2e 0a 20 2a 20 49 6e 20 74 68 65 20 6e 65 77  `.. * In the new
0340: 20 60 72 65 6c 65 61 73 65 2d 30 2e 32 2e 78 60   `release-0.2.x`
0350: 20 62 72 61 6e 63 68 2c 20 75 70 64 61 74 65 20   branch, update 
0360: 74 68 65 20 76 65 72 73 69 6f 6e 20 6e 75 6d 62  the version numb
0370: 65 72 73 20 69 6e 20 74 68 65 0a 20 20 20 61 70  ers in the.   ap
0380: 70 72 6f 70 72 69 61 74 65 20 70 6c 61 63 65 73  propriate places
0390: 20 73 6f 20 74 68 69 6e 67 73 20 61 72 65 20 75   so things are u
03a0: 70 64 61 74 65 64 2e 0a 20 2a 20 54 61 67 20 74  pdated.. * Tag t
03b0: 68 65 20 63 6f 6d 6d 69 74 20 61 73 20 60 30 2e  he commit as `0.
03c0: 32 2e 30 60 20 6f 72 20 61 6e 20 69 6e 63 72 65  2.0` or an incre
03d0: 61 73 69 6e 67 20 72 65 6c 65 61 73 65 20 76 65  asing release ve
03e0: 72 73 69 6f 6e 0a 20 20 20 28 65 78 61 6d 70 6c  rsion.   (exampl
03f0: 65 3a 20 60 30 2e 32 2e 31 60 29 20 66 6f 72 20  e: `0.2.1`) for 
0400: 65 61 63 68 20 69 6e 63 72 65 61 73 69 6e 67 20  each increasing 
0410: 72 65 6c 65 61 73 65 2e 0a 20 2a 20 44 6f 20 61  release.. * Do a
0420: 6c 6c 20 74 68 65 20 63 6f 6d 6d 6f 6e 20 72 65  ll the common re
0430: 6c 65 61 73 65 20 73 74 75 66 66 2e 0a 20 2a 20  lease stuff.. * 
0440: 57 68 69 6c 65 20 69 6e 20 60 74 72 75 6e 6b 60  While in `trunk`
0450: 2c 20 64 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69  , do the followi
0460: 6e 67 3a 0a 20 20 20 2a 20 54 68 65 20 64 65 76  ng:.   * The dev
0470: 65 6c 6f 70 6d 65 6e 74 20 76 65 72 73 69 6f 6e  elopment version
0480: 20 63 61 6e 20 62 65 20 62 75 6d 70 65 64 20 69   can be bumped i
0490: 6e 20 77 68 69 63 68 20 63 61 73 65 0a 20 20 20  n which case.   
04a0: 20 20 74 68 65 20 76 65 72 73 69 6f 6e 20 77 69    the version wi
04b0: 6c 6c 20 62 65 20 69 6e 63 72 65 6d 65 6e 74 65  ll be incremente
04c0: 64 20 62 79 20 74 77 6f 20 61 6e 64 20 77 69 6c  d by two and wil
04d0: 6c 20 62 65 20 6f 64 64 20 28 33 2c 20 35 2c 20  l be odd (3, 5, 
04e0: 37 2c 20 65 74 63 2e 29 2e 0a 20 20 20 2a 20 41  7, etc.)..   * A
04f0: 64 64 20 74 68 65 20 6e 65 78 74 20 76 65 72 73  dd the next vers
0500: 69 6f 6e 20 74 6f 20 74 68 65 20 63 68 61 6e 67  ion to the chang
0510: 65 6c 6f 67 2c 20 73 6f 20 74 68 61 74 20 69 74  elog, so that it
0520: 20 6d 61 79 20 62 65 20 75 70 64 61 74 65 64 20   may be updated 
0530: 77 68 65 6e 0a 20 20 20 20 20 74 68 65 72 65 20  when.     there 
0540: 69 73 20 61 20 6e 65 77 20 6d 61 6a 6f 72 20 63  is a new major c
0550: 68 61 6e 67 65 2e 0a 0a 23 23 23 20 42 75 67 2d  hange...### Bug-
0560: 66 69 78 20 61 6e 64 20 4f 74 68 65 72 77 69 73  fix and Otherwis
0570: 65 20 52 65 6c 65 61 73 65 73 0a 0a 49 66 20 61  e Releases..If a
0580: 20 62 75 67 2d 66 69 78 20 6f 72 20 6f 74 68 65   bug-fix or othe
0590: 72 77 69 73 65 20 68 61 73 20 74 6f 20 62 65 20  rwise has to be 
05a0: 64 6f 6e 65 20 6f 6e 20 61 20 72 65 6c 65 61 73  done on a releas
05b0: 65 20 76 65 72 73 69 6f 6e 2c 20 73 69 6e 63 65  e version, since
05c0: 20 74 68 65 0a 72 65 6c 65 61 73 65 20 69 73 20   the.release is 
05d0: 69 6e 20 69 74 73 20 6f 77 6e 20 62 72 61 6e 63  in its own branc
05e0: 68 2c 20 74 68 65 20 77 6f 72 6b 20 63 61 6e 20  h, the work can 
05f0: 62 65 20 64 6f 6e 65 20 69 6e 20 74 68 61 74 20  be done in that 
0600: 62 72 61 6e 63 68 2e 20 41 6e 79 20 66 69 78 65  branch. Any fixe
0610: 73 0a 73 68 6f 75 6c 64 20 68 61 76 65 20 61 6c  s.should have al
0620: 72 65 61 64 79 20 62 65 65 6e 20 6d 61 64 65 20  ready been made 
0630: 69 6e 20 60 74 72 75 6e 6b 60 20 69 66 20 61 70  in `trunk` if ap
0640: 70 6c 69 63 61 62 6c 65 2c 20 74 68 65 6e 20 69  plicable, then i
0650: 74 20 63 61 6e 20 62 65 0a 63 68 65 72 72 79 20  t can be.cherry 
0660: 70 69 63 6b 65 64 20 69 6e 74 6f 20 74 68 65 20  picked into the 
0670: 72 65 6c 65 61 73 65 20 62 72 61 6e 63 68 2e 20  release branch. 
0680: 54 68 65 6e 20 6f 6e 63 65 20 74 68 65 20 66 69  Then once the fi
0690: 78 65 73 20 68 61 76 65 20 62 65 65 6e 20 6d 61  xes have been ma
06a0: 64 65 20 61 6e 64 0a 61 20 6e 65 77 20 76 65 72  de and.a new ver
06b0: 73 69 6f 6e 20 69 73 20 72 65 6c 65 61 73 65 64  sion is released
06c0: 20 74 68 65 20 72 65 6c 65 61 73 65 20 76 65 72   the release ver
06d0: 73 69 6f 6e 20 73 68 6f 75 6c 64 20 62 65 20 69  sion should be i
06e0: 6e 63 72 65 6d 65 6e 74 65 64 20 28 74 68 61 74  ncremented (that
06f0: 20 69 73 0a 60 30 2e 32 2e 30 60 20 74 6f 20 60   is.`0.2.0` to `
0700: 30 2e 32 2e 31 60 20 74 6f 20 60 30 2e 32 2e 32  0.2.1` to `0.2.2
0710: 60 29 2e 20 54 68 65 6e 20 61 6e 79 20 6f 66 20  `). Then any of 
0720: 74 68 65 20 72 65 6c 65 61 73 65 20 72 65 6c 61  the release rela
0730: 74 65 64 20 73 74 75 66 66 20 73 68 6f 75 6c 64  ted stuff should
0740: 0a 62 65 20 64 6f 6e 65 2e 0a 0a 23 23 23 20 43  .be done...### C
0750: 6f 6d 6d 6f 6e 20 52 65 6c 65 61 73 65 20 53 74  ommon Release St
0760: 75 66 66 0a 0a 57 68 65 6e 20 61 20 72 65 6c 65  uff..When a rele
0770: 61 73 65 20 69 73 20 64 6f 6e 65 2c 20 61 6c 6c  ase is done, all
0780: 20 6f 66 20 74 68 65 20 62 69 6e 61 72 69 65 73   of the binaries
0790: 20 61 6e 64 20 61 63 63 6f 72 64 69 6e 67 20 69   and according i
07a0: 6e 66 6f 72 6d 61 74 69 6f 6e 20 6d 75 73 74 20  nformation must 
07b0: 62 65 0a 75 70 64 61 74 65 64 2e 20 49 74 20 69  be.updated. It i
07c0: 73 20 61 73 73 75 6d 65 64 20 74 68 61 74 20 60  s assumed that `
07d0: 53 51 55 49 52 52 45 4c 4a 4d 45 60 20 69 73 20  SQUIRRELJME` is 
07e0: 61 6e 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76  an environment v
07f0: 61 72 69 61 62 6c 65 20 74 6f 20 74 68 65 0a 72  ariable to the.r
0800: 6f 6f 74 20 6f 66 20 74 68 65 20 53 71 75 69 72  oot of the Squir
0810: 72 65 6c 4a 4d 45 20 73 6f 75 72 63 65 20 74 72  relJME source tr
0820: 65 65 2e 20 43 68 65 63 6b 6f 75 74 20 74 68 65  ee. Checkout the
0830: 20 74 61 67 20 6f 72 20 63 6f 6d 6d 69 74 20 77   tag or commit w
0840: 68 69 63 68 20 74 68 65 0a 72 65 6c 65 61 73 65  hich the.release
0850: 20 69 73 20 74 6f 20 62 65 20 64 6f 6e 65 20 6f   is to be done o
0860: 6e 2e 20 54 68 65 6e 20 72 75 6e 20 74 68 65 20  n. Then run the 
0870: 66 6f 6c 6c 6f 77 69 6e 67 20 63 6f 6d 6d 61 6e  following comman
0880: 64 3a 0a 0a 20 2a 20 60 24 53 51 55 49 52 52 45  d:.. * `$SQUIRRE
0890: 4c 4a 4d 45 2f 75 74 69 6c 73 2d 64 65 76 2f 75  LJME/utils-dev/u
08a0: 70 6c 6f 61 64 72 65 6c 65 61 73 65 2e 73 68 20  ploadrelease.sh 
08b0: 24 5f 5f 72 65 6c 65 61 73 65 5f 76 65 72 73 69  $__release_versi
08c0: 6f 6e 5f 5f 60 0a 0a 54 68 69 73 20 77 69 6c 6c  on__`..This will
08d0: 20 70 65 72 66 6f 72 6d 20 61 6e 20 61 75 74 6f   perform an auto
08e0: 2d 62 75 69 6c 64 20 6f 66 20 65 76 65 72 79 74  -build of everyt
08f0: 68 69 6e 67 20 61 6e 64 20 74 68 65 6e 20 73 74  hing and then st
0900: 6f 72 65 20 74 68 65 20 72 65 6c 65 61 73 65 20  ore the release 
0910: 69 6e 0a 74 68 65 20 60 24 5f 5f 72 65 6c 65 61  in.the `$__relea
0920: 73 65 5f 76 65 72 73 69 6f 6e 5f 5f 60 20 64 69  se_version__` di
0930: 72 65 63 74 6f 72 79 2c 20 74 68 65 73 65 20 62  rectory, these b
0940: 69 6e 61 72 69 65 73 20 61 72 65 20 69 6d 70 6f  inaries are impo
0950: 72 74 61 6e 74 2e 20 4f 6e 63 65 20 74 68 65 0a  rtant. Once the.
0960: 62 69 6e 61 72 69 65 73 20 61 6e 64 20 73 6f 75  binaries and sou
0970: 72 63 65 73 20 61 72 65 20 62 75 69 6c 74 2c 20  rces are built, 
0980: 74 68 65 79 20 73 68 6f 75 6c 64 20 62 65 20 75  they should be u
0990: 70 6c 6f 61 64 65 64 20 74 6f 20 74 68 65 20 66  ploaded to the f
09a0: 6f 6c 6c 6f 77 69 6e 67 0a 6c 6f 63 61 74 69 6f  ollowing.locatio
09b0: 6e 73 3a 0a 0a 20 2a 20 46 6f 73 73 69 6c 20 28  ns:.. * Fossil (
09c0: 3c 68 74 74 70 73 3a 2f 2f 6d 75 6c 74 69 70 68  <https://multiph
09d0: 61 73 69 63 61 70 70 73 2e 6e 65 74 2f 3e 29 0a  asicapps.net/>).
09e0: 20 20 20 2a 20 54 68 65 20 60 75 70 6c 6f 61 64     * The `upload
09f0: 72 65 6c 65 61 73 65 2e 73 68 60 20 73 63 72 69  release.sh` scri
0a00: 70 74 20 74 61 6b 65 73 20 63 61 72 65 20 6f 66  pt takes care of
0a10: 20 70 75 74 74 69 6e 67 20 74 68 65 20 66 69 6c   putting the fil
0a20: 65 73 20 69 6e 20 74 68 65 0a 20 20 20 20 20 72  es in the.     r
0a30: 65 70 6f 73 69 74 6f 72 79 2e 0a 20 20 20 2a 20  epository..   * 
0a40: 59 6f 75 20 77 69 6c 6c 20 6e 65 65 64 20 74 6f  You will need to
0a50: 20 65 64 69 74 20 74 68 65 20 64 6f 77 6e 6c 6f   edit the downlo
0a60: 61 64 20 70 61 67 65 20 74 6f 20 61 64 64 20 74  ad page to add t
0a70: 68 65 20 6e 65 77 20 76 65 72 73 69 6f 6e 2c 20  he new version, 
0a80: 74 68 69 73 0a 20 20 20 20 20 77 69 6c 6c 20 62  this.     will b
0a90: 65 20 64 6f 6e 65 20 77 69 74 68 20 60 66 6f 73  e done with `fos
0aa0: 73 69 6c 20 75 6e 76 65 72 73 69 6f 6e 20 65 64  sil unversion ed
0ab0: 69 74 20 64 6f 77 6e 6c 6f 61 64 2e 6d 6b 64 60  it download.mkd`
0ac0: 2e 0a 20 20 20 2a 20 53 79 6e 63 68 72 6f 6e 69  ..   * Synchroni
0ad0: 7a 65 20 74 68 65 20 72 65 70 6f 73 69 74 6f 72  ze the repositor
0ae0: 79 20 77 69 74 68 20 74 68 65 20 75 6e 76 65 72  y with the unver
0af0: 73 69 6f 6e 65 64 20 73 70 61 63 65 2e 0a 20 2a  sioned space.. *
0b00: 20 47 69 74 48 75 62 0a 20 20 20 2a 20 47 6f 20   GitHub.   * Go 
0b10: 74 6f 20 72 65 6c 65 61 73 65 73 2e 0a 20 20 20  to releases..   
0b20: 2a 20 44 72 61 66 74 20 61 20 6e 65 77 20 72 65  * Draft a new re
0b30: 6c 65 61 73 65 2e 0a 20 20 20 2a 20 43 68 6f 6f  lease..   * Choo
0b40: 73 65 20 74 68 65 20 72 65 6c 65 61 73 65 20 74  se the release t
0b50: 61 67 20 79 6f 75 20 6a 75 73 74 20 6d 61 64 65  ag you just made
0b60: 2e 20 4e 6f 74 65 20 74 68 61 74 20 74 68 65 72  . Note that ther
0b70: 65 20 6d 69 67 68 74 20 62 65 20 61 20 64 65 6c  e might be a del
0b80: 61 79 0a 20 20 20 20 20 62 65 66 6f 72 65 20 47  ay.     before G
0b90: 69 74 48 75 62 20 69 73 20 75 70 64 61 74 65 64  itHub is updated
0ba0: 2c 20 73 6f 20 62 65 20 70 61 74 69 65 6e 74 20  , so be patient 
0bb0: 6f 72 20 66 6f 72 63 65 20 69 74 20 74 6f 20 75  or force it to u
0bc0: 70 64 61 74 65 20 6d 61 6e 75 61 6c 6c 79 2e 0a  pdate manually..
0bd0: 20 20 20 2a 20 54 69 74 6c 65 20 74 68 65 20 72     * Title the r
0be0: 65 6c 65 61 73 65 2e 0a 20 2a 20 53 6f 75 72 63  elease.. * Sourc
0bf0: 65 46 6f 72 67 65 0a 20 20 20 2a 20 43 72 65 61  eForge.   * Crea
0c00: 74 65 20 61 20 6e 65 77 20 64 69 72 65 63 74 6f  te a new directo
0c10: 72 79 20 66 6f 72 20 74 68 65 20 72 65 6c 65 61  ry for the relea
0c20: 73 65 20 6e 75 6d 62 65 72 2e 0a 20 20 20 2a 20  se number..   * 
0c30: 55 70 6c 6f 61 64 20 61 6c 6c 20 6f 66 20 74 68  Upload all of th
0c40: 65 20 66 69 6c 65 73 20 69 6e 74 6f 20 74 68 61  e files into tha
0c50: 74 20 64 69 72 65 63 74 6f 72 79 2e 0a 20 20 20  t directory..   
0c60: 2a 20 41 70 70 72 6f 70 72 69 61 74 65 6c 79 20  * Appropriately 
0c70: 73 65 74 20 74 68 65 20 6f 70 65 72 61 74 69 6e  set the operatin
0c80: 67 20 73 79 73 74 65 6d 73 20 66 6f 72 20 74 68  g systems for th
0c90: 65 20 62 69 6e 61 72 69 65 73 2e 0a 0a           e binaries...