Hex Artifact Content
Not logged in

Artifact 849df9860df602dc2c55163d658c6b138213122f:

File www/selfcheck.html part of check-in [b807acf62e] - Documentation updates by drh on 2007-07-24 12:52:32.

0000: 3c 68 74 6d 6c 3e 0a 3c 68 65 61 64 3e 0a 3c 74  <html>.<head>.<t
0010: 69 74 6c 65 3e 46 6f 73 73 69 6c 20 52 65 70 6f  itle>Fossil Repo
0020: 73 69 74 6f 72 79 20 49 6e 74 65 67 72 69 74 79  sitory Integrity
0030: 20 53 65 6c 66 2d 43 68 65 63 6b 73 3c 2f 74 69   Self-Checks</ti
0040: 74 6c 65 3e 0a 3c 2f 68 65 61 64 3e 0a 3c 62 6f  tle>.</head>.<bo
0050: 64 79 20 62 67 63 6f 6c 6f 72 3d 22 77 68 69 74  dy bgcolor="whit
0060: 65 22 3e 0a 3c 68 31 20 61 6c 69 67 6e 3d 22 63  e">.<h1 align="c
0070: 65 6e 74 65 72 22 3e 0a 46 6f 73 73 69 6c 20 52  enter">.Fossil R
0080: 65 70 6f 73 69 74 6f 72 79 20 49 6e 74 65 67 72  epository Integr
0090: 69 74 79 20 53 65 6c 66 2d 43 68 65 63 6b 73 0a  ity Self-Checks.
00a0: 3c 2f 68 31 3e 0a 0a 3c 70 3e 0a 45 76 65 6e 20  </h1>..<p>.Even 
00b0: 74 68 6f 75 67 68 20 66 6f 73 73 69 6c 20 69 73  though fossil is
00c0: 20 61 20 72 65 6c 61 74 69 76 65 6c 79 20 6e 65   a relatively ne
00d0: 77 20 70 72 6f 6a 65 63 74 20 61 6e 64 20 73 74  w project and st
00e0: 69 6c 6c 20 63 6f 6e 74 61 69 6e 73 0a 6d 61 6e  ill contains.man
00f0: 79 20 62 75 67 73 2c 20 69 74 20 69 73 20 64 65  y bugs, it is de
0100: 73 69 67 6e 65 64 20 77 69 74 68 20 66 65 61 74  signed with feat
0110: 75 72 65 73 20 74 6f 20 67 69 76 65 20 69 74 20  ures to give it 
0120: 61 20 68 69 67 68 20 6c 65 76 65 6c 0a 6f 66 20  a high level.of 
0130: 69 6e 74 65 67 72 69 74 79 20 73 6f 20 74 68 61  integrity so tha
0140: 74 20 79 6f 75 20 63 61 6e 20 68 61 76 65 20 63  t you can have c
0150: 6f 6e 66 69 64 65 6e 63 65 20 74 68 61 74 20 79  onfidence that y
0160: 6f 75 20 77 69 6c 6c 20 6e 6f 74 0a 6c 6f 73 65  ou will not.lose
0170: 20 79 6f 75 72 20 66 69 6c 65 73 2e 20 20 54 68   your files.  Th
0180: 69 73 20 6e 6f 74 65 20 64 65 73 63 72 69 62 65  is note describe
0190: 73 20 74 68 65 20 64 65 66 65 6e 73 69 76 65 20  s the defensive 
01a0: 6d 65 61 73 75 72 65 73 20 74 68 61 74 0a 66 6f  measures that.fo
01b0: 73 73 69 6c 20 75 73 65 73 20 74 6f 20 68 65 6c  ssil uses to hel
01c0: 70 20 70 72 65 76 65 6e 74 20 66 69 6c 65 20 6c  p prevent file l
01d0: 6f 73 73 20 64 75 65 20 74 6f 20 62 75 67 73 2e  oss due to bugs.
01e0: 0a 3c 2f 70 3e 0a 0a 3c 68 32 3e 41 74 6f 6d 69  .</p>..<h2>Atomi
01f0: 63 20 43 68 65 63 6b 2d 69 6e 73 20 57 69 74 68  c Check-ins With
0200: 20 52 6f 6c 6c 62 61 63 6b 3c 2f 68 32 3e 0a 0a   Rollback</h2>..
0210: 3c 70 3e 0a 54 68 65 20 66 6f 73 73 69 6c 20 72  <p>.The fossil r
0220: 65 70 6f 73 69 74 6f 72 79 20 69 73 20 61 6e 0a  epository is an.
0230: 3c 61 20 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f  <a href="http://
0240: 77 77 77 2e 73 71 6c 69 74 65 2e 6f 72 67 2f 22  www.sqlite.org/"
0250: 3e 53 51 4c 69 74 65 20 76 65 72 73 69 6f 6e 20  >SQLite version 
0260: 33 3c 2f 61 3e 20 64 61 74 61 62 61 73 65 20 66  3</a> database f
0270: 69 6c 65 2e 20 20 0a 53 51 4c 69 74 65 20 69 73  ile.  .SQLite is
0280: 20 76 65 72 79 20 6d 61 74 75 72 65 20 61 6e 64   very mature and
0290: 20 73 74 61 62 6c 65 20 61 6e 64 20 68 61 73 20   stable and has 
02a0: 62 65 65 6e 20 69 6e 20 77 69 64 65 2d 73 70 72  been in wide-spr
02b0: 65 61 64 20 75 73 65 20 66 6f 72 20 6d 61 6e 79  ead use for many
02c0: 0a 79 65 61 72 73 2c 20 73 6f 20 77 65 20 68 61  .years, so we ha
02d0: 76 65 20 6c 69 74 74 6c 65 20 77 6f 72 72 69 65  ve little worrie
02e0: 73 20 74 68 61 74 20 69 74 20 6d 69 67 68 74 20  s that it might 
02f0: 63 61 75 73 65 20 72 65 70 6f 73 69 74 6f 72 79  cause repository
0300: 0a 63 6f 72 72 75 70 74 69 6f 6e 2e 20 20 53 51  .corruption.  SQ
0310: 4c 69 74 65 0a 64 61 74 61 62 61 73 65 73 20 64  Lite.databases d
0320: 6f 20 6e 6f 74 20 63 6f 72 72 75 70 74 20 65 76  o not corrupt ev
0330: 65 6e 20 69 66 20 61 20 70 72 6f 67 72 61 6d 20  en if a program 
0340: 6f 72 20 73 79 73 74 65 6d 20 63 72 61 73 68 20  or system crash 
0350: 6f 72 20 70 6f 77 65 72 0a 66 61 69 6c 75 72 65  or power.failure
0360: 20 6f 63 63 75 72 73 20 69 6e 20 74 68 65 20 6d   occurs in the m
0370: 69 64 64 6c 65 20 6f 66 20 74 68 65 20 75 70 64  iddle of the upd
0380: 61 74 65 2e 20 20 49 66 20 73 6f 6d 65 20 6b 69  ate.  If some ki
0390: 6e 64 20 6f 66 20 63 72 61 73 68 0a 64 6f 65 73  nd of crash.does
03a0: 20 6f 63 63 75 72 20 69 6e 20 74 68 65 20 6d 69   occur in the mi
03b0: 64 64 6c 65 20 6f 66 20 61 20 63 68 61 6e 67 65  ddle of a change
03c0: 2c 20 74 68 65 6e 20 61 6c 6c 20 74 68 65 20 63  , then all the c
03d0: 68 61 6e 67 65 73 20 61 72 65 20 72 6f 6c 6c 65  hanges are rolle
03e0: 64 0a 62 61 63 6b 20 74 68 65 20 6e 65 78 74 20  d.back the next 
03f0: 74 69 6d 65 20 74 68 61 74 20 74 68 65 20 64 61  time that the da
0400: 74 61 62 61 73 65 20 69 73 20 61 63 63 65 73 73  tabase is access
0410: 65 64 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 41 20  ed..</p>..<p>.A 
0420: 63 68 65 63 6b 2d 69 6e 20 6f 70 65 72 61 74 69  check-in operati
0430: 6f 6e 20 69 6e 20 66 6f 73 73 69 6c 20 6d 61 6b  on in fossil mak
0440: 65 73 20 6d 61 6e 79 20 63 68 61 6e 67 65 73 20  es many changes 
0450: 74 6f 20 74 68 65 20 72 65 70 6f 73 69 74 6f 72  to the repositor
0460: 79 0a 64 61 74 61 62 61 73 65 2e 20 20 42 75 74  y.database.  But
0470: 20 61 6c 6c 20 74 68 65 73 65 20 63 68 61 6e 67   all these chang
0480: 65 73 20 68 61 70 70 65 6e 20 77 69 74 68 69 6e  es happen within
0490: 20 61 20 73 69 6e 67 6c 65 20 74 72 61 6e 73 61   a single transa
04a0: 63 74 69 6f 6e 2e 0a 49 66 20 73 6f 6d 65 74 68  ction..If someth
04b0: 69 6e 67 20 67 6f 65 73 20 77 72 6f 6e 67 20 69  ing goes wrong i
04c0: 6e 20 74 68 65 20 6d 69 64 64 6c 65 20 6f 66 20  n the middle of 
04d0: 74 68 65 20 63 6f 6d 6d 69 74 2c 20 74 68 65 6e  the commit, then
04e0: 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f 6e   the transaction
04f0: 0a 69 73 20 72 6f 6c 6c 65 64 20 62 61 63 6b 20  .is rolled back 
0500: 61 6e 64 20 74 68 65 20 64 61 74 61 62 61 73 65  and the database
0510: 20 69 73 20 75 6e 63 68 61 6e 67 65 64 2e 0a 3c   is unchanged..<
0520: 2f 70 3e 0a 0a 3c 68 32 3e 56 65 72 69 66 69 63  /p>..<h2>Verific
0530: 61 74 69 6f 6e 20 4f 66 20 44 65 6c 74 61 20 45  ation Of Delta E
0540: 6e 63 6f 64 69 6e 67 73 20 50 72 69 6f 72 20 54  ncodings Prior T
0550: 6f 20 54 72 61 6e 73 61 63 74 69 6f 6e 20 43 6f  o Transaction Co
0560: 6d 6d 69 74 3c 2f 68 32 3e 0a 0a 3c 70 3e 0a 54  mmit</h2>..<p>.T
0570: 68 65 20 63 6f 6e 74 65 6e 74 20 66 69 6c 65 73  he content files
0580: 20 74 68 61 74 20 63 6f 6d 70 72 69 73 65 20 74   that comprise t
0590: 68 65 20 67 6c 6f 62 61 6c 20 73 74 61 74 65 20  he global state 
05a0: 6f 66 20 61 20 66 6f 73 73 69 6c 20 72 65 73 70  of a fossil resp
05b0: 6f 73 69 74 6f 72 79 0a 61 72 65 20 73 74 6f 72  ository.are stor
05c0: 65 64 20 69 6e 20 74 68 65 20 72 65 70 6f 73 69  ed in the reposi
05d0: 74 6f 72 79 20 61 73 20 61 20 74 72 65 65 2e 20  tory as a tree. 
05e0: 20 54 68 65 20 6c 65 61 76 65 73 20 6f 66 20 74   The leaves of t
05f0: 68 65 20 74 72 65 65 20 61 72 65 0a 73 74 6f 72  he tree are.stor
0600: 65 64 20 61 73 20 7a 6c 69 62 2d 63 6f 6d 70 72  ed as zlib-compr
0610: 65 73 73 65 64 20 42 4c 4f 42 73 2e 20 20 49 6e  essed BLOBs.  In
0620: 74 65 72 69 6f 72 20 6e 6f 64 65 73 20 61 72 65  terior nodes are
0630: 20 64 65 6c 74 61 73 20 66 72 6f 6d 20 74 68 65   deltas from the
0640: 69 72 0a 64 65 63 65 6e 64 65 6e 74 73 2e 20 20  ir.decendents.  
0650: 54 68 65 72 65 20 69 73 20 61 20 6c 6f 74 20 6f  There is a lot o
0660: 66 20 65 6e 63 6f 64 69 6e 67 20 67 6f 69 6e 67  f encoding going
0670: 20 6f 6e 20 68 65 72 65 2e 20 20 54 68 65 72 65   on here.  There
0680: 20 69 73 0a 7a 6c 69 62 2d 63 6f 6d 70 72 65 73   is.zlib-compres
0690: 73 69 6f 6e 20 77 68 69 63 68 20 69 73 20 72 65  sion which is re
06a0: 6c 61 74 69 76 65 6c 79 20 77 65 6c 6c 2d 74 65  latively well-te
06b0: 73 74 65 64 20 62 75 74 20 73 74 69 6c 6c 20 6d  sted but still m
06c0: 69 67 68 74 0a 63 61 75 73 65 20 63 6f 72 72 75  ight.cause corru
06d0: 70 74 69 6f 6e 20 69 66 20 75 73 65 64 20 69 6d  ption if used im
06e0: 70 72 6f 70 65 72 6c 79 2e 20 20 41 6e 64 20 74  properly.  And t
06f0: 68 65 72 65 20 69 73 20 74 68 65 20 72 65 6c 61  here is the rela
0700: 74 69 76 65 6c 79 0a 6e 65 77 20 64 65 6c 74 61  tively.new delta
0710: 2d 65 6e 63 6f 64 69 6e 67 20 6d 65 63 68 61 6e  -encoding mechan
0720: 69 73 6d 20 64 65 73 69 67 6e 65 64 20 65 78 70  ism designed exp
0730: 72 65 73 73 6c 79 20 66 6f 72 20 66 6f 73 73 69  ressly for fossi
0740: 6c 2e 20 20 57 65 20 77 61 6e 74 0a 74 6f 20 6d  l.  We want.to m
0750: 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 62 75  ake sure that bu
0760: 67 73 20 69 6e 20 74 68 65 73 65 20 65 6e 63 6f  gs in these enco
0770: 64 69 6e 67 20 6d 65 63 68 61 6e 69 73 6d 73 20  ding mechanisms 
0780: 64 6f 20 6e 6f 74 20 6c 65 61 64 20 74 6f 0a 6c  do not lead to.l
0790: 6f 73 73 20 6f 66 20 64 61 74 61 2e 0a 3c 2f 70  oss of data..</p
07a0: 3e 0a 0a 3c 70 3e 0a 54 6f 20 69 6e 63 72 65 61  >..<p>.To increa
07b0: 73 65 20 6f 75 72 20 63 6f 6e 66 69 64 65 6e 63  se our confidenc
07c0: 65 20 74 68 61 74 20 65 76 65 72 79 74 68 69 6e  e that everythin
07d0: 67 20 69 6e 20 74 68 65 20 72 65 70 6f 73 69 74  g in the reposit
07e0: 6f 72 79 20 69 73 0a 72 65 63 6f 76 65 72 61 62  ory is.recoverab
07f0: 6c 65 2c 20 66 6f 73 73 69 6c 20 6d 61 6b 65 73  le, fossil makes
0800: 20 73 75 72 65 20 69 74 20 63 61 6e 20 65 78 74   sure it can ext
0810: 72 61 63 74 20 61 6e 20 65 78 61 63 74 20 72 65  ract an exact re
0820: 70 6c 69 63 61 74 65 0a 6f 66 20 65 76 65 72 79  plicate.of every
0830: 20 63 6f 6e 74 65 6e 74 20 66 69 6c 65 20 74 68   content file th
0840: 61 74 20 69 74 20 63 68 61 6e 67 65 73 20 6a 75  at it changes ju
0850: 73 74 20 70 72 69 6f 72 20 74 6f 20 74 72 61 6e  st prior to tran
0860: 73 61 63 74 69 6f 6e 0a 63 6f 6d 6d 69 74 2e 20  saction.commit. 
0870: 20 53 6f 20 64 75 72 69 6e 67 20 74 68 65 20 63   So during the c
0880: 6f 75 72 73 65 20 6f 66 20 63 68 65 63 6b 2d 69  ourse of check-i
0890: 6e 2c 20 6d 61 6e 79 20 64 69 66 66 65 72 65 6e  n, many differen
08a0: 74 20 66 69 6c 65 73 0a 69 6e 20 74 68 65 20 72  t files.in the r
08b0: 65 70 6f 73 69 74 6f 72 79 20 6d 69 67 68 74 20  epository might 
08c0: 62 65 20 6d 6f 64 69 66 69 65 64 2e 20 20 53 6f  be modified.  So
08d0: 6d 65 20 66 69 6c 65 73 20 61 72 65 20 73 69 6d  me files are sim
08e0: 70 6c 79 0a 63 6f 6d 70 72 65 73 73 65 64 2e 20  ply.compressed. 
08f0: 20 4f 74 68 65 72 20 66 69 6c 65 73 20 61 72 65   Other files are
0900: 20 64 65 6c 74 61 20 65 6e 63 6f 64 65 64 20 61   delta encoded a
0910: 6e 64 20 74 68 65 6e 20 63 6f 6d 70 72 65 73 73  nd then compress
0920: 65 64 2e 0a 57 68 69 6c 65 20 61 6c 6c 20 74 68  ed..While all th
0930: 69 73 20 69 73 20 67 6f 69 6e 67 20 6f 6e 2c 20  is is going on, 
0940: 66 6f 73 73 69 6c 20 6d 61 6b 65 73 20 61 20 72  fossil makes a r
0950: 65 63 6f 72 64 20 6f 66 20 65 76 65 72 79 20 66  ecord of every f
0960: 69 6c 65 0a 74 68 61 74 20 69 73 20 65 6e 63 6f  ile.that is enco
0970: 64 65 64 20 61 6e 64 20 74 68 65 20 53 48 41 31  ded and the SHA1
0980: 20 68 61 73 68 20 6f 66 20 74 68 65 20 6f 72 69   hash of the ori
0990: 67 69 6e 61 6c 20 63 6f 6e 74 65 6e 74 20 6f 66  ginal content of
09a0: 20 74 68 61 74 0a 66 69 6c 65 2e 20 20 54 68 65   that.file.  The
09b0: 6e 20 6a 75 73 74 20 62 65 66 6f 72 65 20 74 72  n just before tr
09c0: 61 6e 73 61 63 74 69 6f 6e 20 63 6f 6d 6d 69 74  ansaction commit
09d0: 2c 20 66 6f 73 73 69 6c 20 72 65 2d 65 78 74 72  , fossil re-extr
09e0: 61 63 74 73 0a 74 68 65 20 6f 72 69 67 69 6e 61  acts.the origina
09f0: 6c 20 63 6f 6e 74 65 6e 74 20 6f 66 20 61 6c 6c  l content of all
0a00: 20 66 69 6c 65 73 20 74 68 61 74 20 77 65 72 65   files that were
0a10: 20 77 72 69 74 74 65 6e 2c 20 63 6f 6d 70 75 74   written, comput
0a20: 65 73 0a 74 68 65 20 53 48 41 31 20 63 68 65 63  es.the SHA1 chec
0a30: 6b 73 75 6d 20 61 67 61 69 6e 2c 20 61 6e 64 20  ksum again, and 
0a40: 76 65 72 69 66 69 65 73 20 74 68 61 74 20 74 68  verifies that th
0a50: 65 20 63 68 65 63 6b 73 75 6d 73 20 6d 61 74 63  e checksums matc
0a60: 68 2e 0a 49 66 20 61 6e 79 74 68 69 6e 67 20 64  h..If anything d
0a70: 6f 65 73 20 6e 6f 74 20 6d 61 74 63 68 20 75 70  oes not match up
0a80: 2c 20 61 6e 20 65 72 72 6f 72 0a 6d 65 73 73 61  , an error.messa
0a90: 67 65 20 69 73 20 70 72 69 6e 74 65 64 20 61 6e  ge is printed an
0aa0: 64 20 74 68 65 20 74 72 61 6e 73 61 63 74 69 6f  d the transactio
0ab0: 6e 20 72 6f 6c 6c 73 20 62 61 63 6b 2e 0a 3c 2f  n rolls back..</
0ac0: 70 3e 0a 0a 3c 70 3e 0a 53 6f 2c 20 69 6e 20 6f  p>..<p>.So, in o
0ad0: 74 68 65 72 20 77 6f 72 64 73 2c 20 66 6f 73 73  ther words, foss
0ae0: 69 6c 20 61 6c 77 61 79 73 20 63 68 65 63 6b 73  il always checks
0af0: 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 69 74   to make sure it
0b00: 20 63 61 6e 0a 72 65 2d 65 78 74 72 61 63 74 20   can.re-extract 
0b10: 61 20 66 69 6c 65 20 62 65 66 6f 72 65 20 69 74  a file before it
0b20: 20 63 6f 6d 6d 69 74 73 20 61 20 63 68 65 63 6b   commits a check
0b30: 2d 69 6e 20 6f 66 20 74 68 61 74 20 66 69 6c 65  -in of that file
0b40: 2e 0a 48 65 6e 63 65 20 62 75 67 73 20 69 6e 20  ..Hence bugs in 
0b50: 66 6f 73 73 69 6c 20 61 72 65 20 75 6e 6c 69 6b  fossil are unlik
0b60: 65 6c 79 20 74 6f 20 63 6f 72 72 75 70 74 20 74  ely to corrupt t
0b70: 68 65 20 72 65 70 6f 73 69 74 6f 72 79 20 69 6e  he repository in
0b80: 0a 61 20 77 61 79 20 74 68 61 74 20 70 72 65 76  .a way that prev
0b90: 65 6e 74 73 20 75 73 20 66 72 6f 6d 20 65 78 74  ents us from ext
0ba0: 72 61 63 74 69 6e 67 20 68 69 73 74 6f 72 69 63  racting historic
0bb0: 61 6c 20 76 65 72 73 69 6f 6e 73 20 6f 66 20 0a  al versions of .
0bc0: 66 69 6c 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 68 32  files..</p>..<h2
0bd0: 3e 43 68 65 63 6b 73 75 6d 20 4f 76 65 72 20 41  >Checksum Over A
0be0: 6c 6c 20 46 69 6c 65 73 20 49 6e 20 41 20 42 61  ll Files In A Ba
0bf0: 73 65 6c 69 6e 65 3c 2f 68 32 3e 0a 0a 3c 70 3e  seline</h2>..<p>
0c00: 0a 4d 61 6e 69 66 65 73 74 20 66 69 6c 65 73 20  .Manifest files 
0c10: 74 68 61 74 20 64 65 66 69 6e 65 20 61 20 62 61  that define a ba
0c20: 73 65 6c 69 6e 65 20 68 61 76 65 20 74 77 6f 20  seline have two 
0c30: 66 69 65 6c 64 73 20 28 74 68 65 0a 52 2d 6c 69  fields (the.R-li
0c40: 6e 65 20 61 6e 64 20 5a 2d 6c 69 6e 65 29 20 74  ne and Z-line) t
0c50: 68 61 74 20 72 65 63 6f 72 64 20 4d 44 35 20 68  hat record MD5 h
0c60: 61 73 68 73 20 6f 66 20 74 68 65 20 6d 61 6e 69  ashs of the mani
0c70: 66 65 73 74 20 69 74 73 65 6c 66 0a 61 6e 64 20  fest itself.and 
0c80: 6f 66 20 61 6c 6c 20 6f 74 68 65 72 20 66 69 6c  of all other fil
0c90: 65 73 20 69 6e 20 74 68 65 20 6d 61 6e 69 66 65  es in the manife
0ca0: 73 74 2e 20 20 50 72 69 6f 72 20 74 6f 20 61 6e  st.  Prior to an
0cb0: 79 20 63 68 65 63 6b 2d 69 6e 0a 63 6f 6d 6d 69  y check-in.commi
0cc0: 74 2c 20 74 68 65 73 65 20 63 68 65 63 6b 73 75  t, these checksu
0cd0: 6d 73 20 61 72 65 20 76 65 72 69 66 69 65 64 20  ms are verified 
0ce0: 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 74  to ensure that t
0cf0: 68 65 20 62 61 73 65 6c 69 6e 65 0a 63 68 65 63  he baseline.chec
0d00: 6b 65 64 20 69 6e 20 61 67 72 65 65 73 20 65 78  ked in agrees ex
0d10: 61 63 74 6c 79 20 77 69 74 68 20 77 68 61 74 20  actly with what 
0d20: 69 73 20 6f 6e 20 64 69 73 6b 2e 20 20 53 69 6d  is on disk.  Sim
0d30: 69 6c 61 72 6c 79 2c 0a 74 68 65 20 72 65 70 6f  ilarly,.the repo
0d40: 73 69 74 6f 72 79 20 63 68 65 63 6b 73 75 6d 20  sitory checksum 
0d50: 69 73 20 76 65 72 69 66 69 65 64 20 61 66 74 65  is verified afte
0d60: 72 20 61 20 63 68 65 63 6b 6f 75 74 20 74 6f 20  r a checkout to 
0d70: 6d 61 6b 65 0a 73 75 72 65 20 74 68 61 74 20 74  make.sure that t
0d80: 68 65 20 65 6e 74 69 72 65 20 72 65 70 6f 73 69  he entire reposi
0d90: 74 6f 72 79 20 77 61 73 20 63 68 65 63 6b 65 64  tory was checked
0da0: 20 6f 75 74 20 63 6f 72 72 65 63 74 6c 79 2e 0a   out correctly..
0db0: 4e 6f 74 65 20 74 68 61 74 20 74 68 65 73 65 20  Note that these 
0dc0: 61 64 64 65 64 20 63 68 65 63 6b 73 20 75 73 65  added checks use
0dd0: 20 61 20 64 69 66 66 65 72 65 6e 74 20 68 61 73   a different has
0de0: 68 20 28 4d 44 35 20 69 6e 73 74 65 61 64 0a 6f  h (MD5 instead.o
0df0: 66 20 53 48 41 31 29 20 69 6e 20 6f 72 64 65 72  f SHA1) in order
0e00: 20 74 6f 20 61 76 6f 69 64 20 63 6f 6d 6d 6f 6e   to avoid common
0e10: 2d 6d 6f 64 65 20 66 61 69 6c 75 72 65 73 20 69  -mode failures i
0e20: 6e 20 74 68 65 20 68 61 73 68 0a 61 6c 67 6f 72  n the hash.algor
0e30: 69 74 68 6d 20 69 6d 70 6c 65 6d 65 6e 74 61 74  ithm implementat
0e40: 69 6f 6e 2e 0a 3c 2f 70 3e 0a                    ion..</p>.