home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume28 / bcs-2.0 / part17 < prev    next >
Encoding:
Text File  |  1994-03-29  |  50.2 KB  |  756 lines

  1. Newsgroups: comp.sources.unix
  2. From: ejb@ERA.COM (Jay Berkenbilt)
  3. Subject: v28i018: bcs-2.0 - A Baseline Configuration System, Part17/25
  4. References: <1.764985670.1461@gw.home.vix.com>
  5. Sender: unix-sources-moderator@gw.home.vix.com
  6. Approved: vixie@gw.home.vix.com
  7.  
  8. Submitted-By: ejb@ERA.COM (Jay Berkenbilt)
  9. Posting-Number: Volume 28, Issue 18
  10. Archive-Name: bcs-2.0/part17
  11.  
  12. #!/bin/sh
  13. # this is bcs.17 (part 17 of bcs-2.0)
  14. # do not concatenate these parts, unpack them in order with /bin/sh
  15. # file bcs-2.0/doc/bcs.PS continued
  16. #
  17. if test ! -r _shar_seq_.tmp; then
  18.     echo 'Please unpack part 1 first!'
  19.     exit 1
  20. fi
  21. (read Scheck
  22.  if test "$Scheck" != 17; then
  23.     echo Please unpack part "$Scheck" next!
  24.     exit 1
  25.  else
  26.     exit 0
  27.  fi
  28. ) < _shar_seq_.tmp || exit 1
  29. if test ! -f _shar_wnt_.tmp; then
  30.     echo 'x - still skipping bcs-2.0/doc/bcs.PS'
  31. else
  32. echo 'x - continuing file bcs-2.0/doc/bcs.PS'
  33. sed 's/^X//' << 'SHAR_EOF' >> 'bcs-2.0/doc/bcs.PS' &&
  34. (b)q(ecause)0 445 y(user)k(`)p Fi(A)p Fm(')g(already)g(has)h(a)f(lo)q(c)o(k.)
  35. 32 b(In)20 b(this)g(situation,)h(user)e(`)p Fi(B)p Fm(')f(con)o(tacts)h(user)
  36. g(`)p Fi(A)p Fm(')g(to)f(discuss)j(the)e(nature)g(of)0 508
  37. y(their)e(c)o(hanges.)25 b(If)17 b(user)g(`)p Fi(B)p Fm(')e(needs)j(to)e(mak)
  38. o(e)g(c)o(hanges)h(that)f(can)h(easily)h(b)q(e)f(p)q(erformed)g(b)o(y)g(user)
  39. g(`)p Fi(A)p Fm(',)f(it)h(ma)o(y)0 570 y(b)q(e)h(b)q(est)g(for)f(`)p
  40. Fi(A)p Fm(')g(to)g(mak)o(e)g(the)g(the)h(c)o(hanges)g(rather)f(than)g(ha)o
  41. (ving)h(`)p Fi(B)p Fm(')f(get)g(in)o(v)o(olv)o(ed.)28 b(\(An)17
  42. b(example)i(w)o(ould)0 632 y(b)q(e)e(correcting)g(a)f(t)o(yp)q(ographical)h
  43. (error)f(in)i(a)e(commen)o(t,)g(reordering)h(include)i(directiv)o(es,)f
  44. (etc.\))24 b(If)16 b(`)p Fi(B)p Fm(')g(really)0 694 y(needs)f(to)e(c)o(hange)
  45. h(`)p Fi(a.c)p Fm(')f(at)g(the)h(same)g(time)g(as)g(`)p Fi(A)p
  46. Fm(',)f(then)h(`)p Fi(B)p Fm(')f(will)i(use)g(BCS)f(to)f(c)o(hec)o(k)h(out)g
  47. (`)p Fi(a.c)p Fm(')f(in)i(his)f(or)g(her)0 757 y(o)o(wn)i(staging)f(area)h
  48. (without)g(a)g(lo)q(c)o(k,)g(man)o(ually)h(giv)o(e)g(him)f(or)g(herself)h
  49. (write)f(p)q(ermission,)i(and)e(c)o(hec)o(k)g(in)h(an)o(y)0
  50. 819 y(c)o(hanges)12 b(made)h(in)g(the)g(new)g(branc)o(h)f(`)p
  51. Fi(1.4.2)p Fm('.)18 b(If)13 b(a)f(user)h(`)p Fi(C)p Fm(')e(w)o(ere)h(to)g
  52. (come)h(along,)f(`)p Fi(C)p Fm(')g(w)o(ould)h(ha)o(v)o(e)f(to)g(con)o(tact)0
  53. 881 y(b)q(oth)17 b(`)p Fi(A)p Fm(')f(and)h(`)p Fi(B)p Fm('.)23
  54. b(W)l(e)17 b(will)h(ignore)f(this)g(case)g(for)f(no)o(w)g(and)h(assume)g
  55. (that)f(w)o(e)g(only)i(ha)o(v)o(e)e(t)o(w)o(o)f(branc)o(hes)i(of)0
  56. 943 y(`)p Fi(a.c)p Fm('.)62 1081 y(No)o(w)c(supp)q(ose)i(that)d(`)p
  57. Fi(B)p Fm(')h(\014nishes)i(making)f(c)o(hanges)f(and)h(determines)h(that)e
  58. (those)g(c)o(hanges)h(are)f(stable)h(and)0 1143 y(ready)f(to)g(b)q(e)i(put)e
  59. (bac)o(k)h(in)o(to)f(the)h(baseline.)21 b(A)o(t)13 b(this)h(p)q(oin)o(t,)g(`)
  60. p Fi(B)p Fm(')e(will)j(w)o(an)o(t)e(to)g(c)o(hec)o(k)g(in)i(his)f(or)f(her)h
  61. (c)o(hanges)f(as)0 1205 y(revision)j(`)p Fi(1.5)p Fm('.)i(`)p
  62. Fi(A)p Fm(')13 b(m)o(ust)h(therefore)g(release)h(the)g(lo)q(c)o(k)g(on)f(`)p
  63. Fi(1.4)p Fm('.)19 b(When)14 b(`)p Fi(B)p Fm(')g(creates)g(`)p
  64. Fi(1.5)p Fm(')f(and)i(up)q(dates)g(the)0 1268 y(baseline,)i(`)p
  65. Fi(A)p Fm(')d(should)j(obtain)e(a)g(lo)q(c)o(k)h(on)g(revision)g(`)p
  66. Fi(1.5)p Fm(')e(and)i(merge)f(the)h(c)o(hanges)f(from)g(`)p
  67. Fi(1.4.1.x)p Fm(')e(to)i(`)p Fi(1.5)p Fm(')0 1330 y(in)o(to)h(his)g(or)f(her)
  68. h(w)o(orking)f(v)o(ersion.)623 1313 y Ff(1)663 1330 y Fm(This)h(new)g(merged)
  69. f(\014le)i(no)o(w)e(b)q(egins)i(a)e(new)h(branc)o(h)f(of)h(`)p
  70. Fi(1.5)p Fm('.)j(User)d(`)p Fi(A)p Fm(')0 1392 y(can)f(con)o(tin)o(ue)h
  71. (making)g(c)o(hanges)f(from)f(here.)20 b(The)c(`)p Fi(1.4.1)p
  72. Fm(')e(branc)o(h)h(is)h(no)o(w)e(defunct.)62 1530 y(Note)19
  73. b(that)f(if)i(`)p Fi(A)p Fm(')e(\014nishes)i(\014rst,)g(`)p
  74. Fi(A)p Fm(')e(can)h(simply)h(notify)f(`)p Fi(B)p Fm(')f(and)i(then)f(up)q
  75. (date)g(the)h(baseline.)33 b(`)p Fi(B)p Fm(')18 b(can)0 1592
  76. y(then)e(acquire)g(a)f(lo)q(c)o(k)h(on)f(revision)i(`)p Fi(1.5)p
  77. Fm(',)d(merge)h(in)h(his)g(c)o(hanges,)f(and)h(con)o(tin)o(ue)g(editing.)22
  78. b(BCS)15 b(v)o(ersion)h(2.0)0 1654 y(w)o(arns)f(during)h Fi(update_baseline)d
  79. Fm(if)j(an)o(y)f(lo)q(c)o(ks)h(exist)g(on)g(the)f(\014le)i(b)q(eing)f(up)q
  80. (dated.)22 b(This)16 b(should)g(alert)g(the)0 1716 y(user)h(doing)h(the)f(up)
  81. q(date)g(that)f(it)h(ma)o(y)g(b)q(e)g(necessary)g(to)g(w)o(arn)f(other)g
  82. (users)h(that)f(there)i(are)e(c)o(hanges)h(to)f(b)q(e)0 1779
  83. y(merged.)j(Giv)o(en)14 b(this,)f(ho)o(w)g(do)g(w)o(e)g(enforce)g(that)f(`)p
  84. Fi(B)p Fm(')h(b)q(e)g(noti\014ed)h(when)g(`)p Fi(A)p Fm(')e(is)i(ready)f(to)f
  85. (up)q(date)i(c)o(hanges?)20 b(`)p Fi(A)p Fm(')0 1841 y(migh)o(t)12
  86. b(not)g(ev)o(en)h(remem)o(b)q(er)g(that)f(there)g(are)g(an)o(y)h(other)f
  87. (activ)o(e)g(branc)o(hes)h(of)f(revision)i(`)p Fi(1.4)p Fm('.)j(One)d(p)q
  88. (ossibilit)o(y)0 1903 y(w)o(ould)h(b)q(e)h(for)e(BCS)h(to)f(send)i(mail)f(to)
  89. f(the)h(users)g(who)g(ha)o(v)o(e)f(branc)o(hes)i(lo)q(c)o(k)o(ed.)k(Another)
  90. 15 b(w)o(ould)g(b)q(e)h(for)e(BCS)0 1965 y(to)k(w)o(arn)f(that)h(this)h
  91. (situation)f(exists)h(and)g(require)g(con\014rmation)f(from)g(the)g(user)h(b)
  92. q(efore)f(con)o(tin)o(uing)i(with)0 2028 y(the)15 b(up)q(date.)21
  93. b(An)o(y)15 b(commen)o(ts)g(on)g(this)g(can)h(b)q(e)g(directed)g(to)e(the)i
  94. (author.)0 2240 y Fg(9.1.1.4)30 b(Implications)62 2377 y Fm(The)15
  95. b(ab)q(o)o(v)o(e)f(situation)h(is)h(quite)f(complex,)g(but)g(the)g(author)f
  96. (asserts)f(that)h(the)h(complexit)o(y)g(of)g(p)q(erforming)0
  97. 2439 y(the)i(ab)q(o)o(v)o(e)g(op)q(erations)g(is)g(less)h(than)f(it)g(w)o
  98. (ould)g(b)q(e)h(if)g(merges)e(w)o(ere)h(further)g(dela)o(y)o(ed.)26
  99. b(The)17 b(ab)q(o)o(v)o(e)g(scenario)p 0 2489 600 2 v 21 2527
  100. a Ff(1)62 2544 y Fm(The)d Fi(rcsmerge)f Fm(program)g(is)i(go)q(o)q(d)e(for)h
  101. (this)g(purp)q(ose)h(if)f(the)g(merges)g(are)g(simple.)21 b(If)14
  102. b(they)g(are)g(more)f(com-)62 2606 y(plex,)g(the)f Fi(emerge)f
  103. Fm(facilit)o(y)h(that)f(comes)h(with)g(GNU)f(Emacs)g(v)o(ersion)h(19)f(can)h
  104. (greatly)f(simplify)j(p)q(erforming)62 2668 y(suc)o(h)i(merges.)p
  105. eop
  106. %%Page: 36 38
  107. 36 37 bop 0 -58 a Fm(36)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
  108. (ersion)h(2.0)0 183 y(essen)o(tially)k(describ)q(es)h(incremen)o(tal)f
  109. (merging.)31 b(With)19 b(this)h(scenario,)f(all)h(merges)f(are)f(p)q
  110. (erformed)i(as)e(so)q(on)0 246 y(as)e(p)q(ossible)i(rather)e(than)g(as)h
  111. (late)f(as)g(p)q(ossible.)26 b(The)16 b(ab)q(o)o(v)o(e)g(discipli)q(ne)j
  112. (should)f(also)e(reduce)i(the)e(frequency)0 308 y(with)21 b(whic)o(h)h(p)q
  113. (eople)g(mak)o(e)e(gratuitous)g(c)o(hanges)h(to)f(\014les)i(in)g(the)e
  114. (baseline)j(when)e(those)g(c)o(hanges)f(can)h(b)q(e)0 370 y(dela)o(y)o(ed.)g
  115. (F)l(or)14 b(example,)i(it)f(w)o(ould)h(b)q(e)g(appropriate)f(to)f(go)h
  116. (through)g(the)g(ab)q(o)o(v)o(e)g(hassle)g(if)h(something)f(simple)0
  117. 432 y(lik)o(e)i(c)o(hanging)e(includes)j(o)q(ccurs)e(or)f(if)h(t)o(w)o(o)e
  118. (non-con\015icting)j(functionalities)h(implemen)o(ted)f(in)f(the)g(same)f
  119. (\014le)0 495 y(b)q(oth)e(need)h(to)e(b)q(e)h(c)o(hanged.)20
  120. b(It)13 b(w)o(ould)g(not,)g(ho)o(w)o(ev)o(er,)f(b)q(e)h(a)g(go)q(o)q(d)g
  121. (idea)g(to)f(go)h(through)f(the)h(ab)q(o)o(v)o(e)f(if)i(one)f(user)0
  122. 557 y(w)o(an)o(ted)i(to)g(reinden)o(t)h(a)g(\014le)g(that)f(another)g(user)h
  123. (w)o(as)e(w)o(orking)i(on.)k(In)d(this)f(case,)f(the)g(reinden)o(tation)i
  124. (should)0 619 y(b)q(e)h(p)q(erformed)f(separately)g(when)h(no)f(other)g
  125. (branc)o(hes)g(exist)h(or)f(should)h(b)q(e)g(p)q(erformed)f(b)o(y)g(the)g
  126. (single)i(user)0 681 y(who)12 b(has)h(a)f(lo)q(c)o(k)h(on)f(the)h(\014le.)20
  127. b(In)13 b(an)o(y)f(case,)h(suc)o(h)g(c)o(hanges)g(should)g(alw)o(a)o(ys)f(b)q
  128. (e)h(isolated)g(via)g(the)g(con\014guration)0 744 y(managemen)o(t)k(system)g
  129. (from)f(other)h(c)o(hanges)h(that)e(are)h(made)h(at)f(the)g(same)g(time)h(\()
  130. p Fh(i.e.)p Fm(,)f(c)o(hec)o(k)h(the)f(\014le)i(out,)0 806
  131. y(reinden)o(t,)d(and)f(c)o(hec)o(k)h(in\).)0 1030 y Fl(9.2)33
  132. b(Supp)r(ort)16 b(for)f(a)g(Multi-platform)j(En)n(vironmen)n(t)62
  133. 1167 y Fm(Although)g(supp)q(orting)f(a)g(m)o(ulti-platform)g(dev)o(elopmen)o
  134. (t)h(en)o(vironmen)o(t)f(is)h(b)q(est)f(done)g(outside)h(the)f(con-)0
  135. 1229 y(\014guration)f(managemen)o(t)f(system,)h(there)g(are)g(certain)h
  136. (instances)g(in)g(whic)o(h)f(the)h(use)f(of)g(BCS)g(can)h(help)g(ease)0
  137. 1292 y(the)d(pro)q(cess)g(of)g(p)q(orting)g(a)f(system)h(to)f(a)h(new)g(arc)o
  138. (hitecture.)20 b(This)14 b(section)h(describ)q(es)g(an)f(example)h(of)e(ho)o
  139. (w)h(to)0 1354 y(approac)o(h)g(this)h(problem)f(with)h(BCS.)f(F)l(or)g(an)g
  140. (example)h(of)f(ho)o(w)f(to)h(approac)o(h)g(this)g(problem)h(with)g(mak)o
  141. (e\014les,)0 1416 y(see)g(the)h(sample)g(baseline)h(included)g(with)f(the)f
  142. (BCS)h(distribution)g(in)g(`)p Fi(unsupported/sample-baseline)o
  143. Fm('.)62 1553 y(Supp)q(ose)e(a)f(fairly)h(stable)f(system)g(exists)h(on)f(a)f
  144. (single)j(platform.)k(The)13 b(mak)o(e\014les)h(\(or)e(whatev)o(er)g(is)i
  145. (used)g(to)0 1615 y(build)e(the)f(system\))f(and)g(the)h(system)f(sources)g
  146. (are)g(not)g(set)g(up)h(to)f(supp)q(ort)h(easy)f(builds)i(on)f(m)o(ultiple)h
  147. (platforms.)0 1678 y(Assume)17 b(that)f(all)i(the)f(\014les)h(required)g(to)f
  148. (build)h(and)g(run)f(the)g(system)f(are)h(con)o(trolled)h(in)f(a)g(v)o
  149. (ersion)g(con)o(trol)0 1740 y(system)12 b(that)g(is)i(supp)q(orted)f(b)o(y)g
  150. (BCS.)f(In)i(this)f(situation,)g(a)g(p)q(ort)f(can)h(b)q(e)h(done)f(simply)h
  151. (b)o(y)f(making)g(the)g(stable)0 1802 y(source)f(tree)f(in)o(to)h(the)g(BCS)g
  152. (baseline.)20 b(A)12 b(staging)f(area)g(can)h(then)g(b)q(e)h(set)e(up)h(in)h
  153. (whic)o(h)f(to)f(build)j(the)e(system)f(on)0 1864 y(another)k(platform.)k
  154. (Unless)d(the)f(build)i(pro)q(cedure)f(is)f(in)o(tegrated)g(with)g(BCS,)g(it)
  155. g(will)i(b)q(e)e(necessary)g(to)g(stage)0 1927 y(all)e(directories)h(in)f
  156. (this)g(staging)f(area)g(that)g(will)i(con)o(tain)f(ob)s(ject)e(\014les)j(or)
  157. e(other)g(arc)o(hitecture-dep)q(enden)o(t)i(\014les.)0 1989
  158. y(The)e(sample)g(baseline)i(included)h(with)d(the)g(BCS)g(distribution)h
  159. (includes)h(mak)o(e\014les)f(that)e(handle)i(these)f(details)0
  160. 2051 y(automatically)l(.)31 b(Once)20 b(the)e(necessary)h(directories)h(ha)o
  161. (v)o(e)e(b)q(een)i(staged,)f(the)g(staging)f(area)g(has)g(essen)o(tially)0
  162. 2114 y(the)f(same)g(structure)h(as)e(the)i(baseline)h(except)f(that)e(the)i
  163. (source)f(\014les)h(and)g(`)p Fi(RCS)p Fm(')e(or)h(`)p Fi(SCCS)p
  164. Fm(')f(directories)i(are)0 2176 y(sym)o(b)q(olic)g(links.)27
  165. b(A)o(t)17 b(this)g(p)q(oin)o(t,)h(BCS)g(commands)e(can)i(b)q(e)f(used)h(to)f
  166. (c)o(hec)o(k)g(out)g(\014les,)h(mak)o(e)f(c)o(hanges,)g(and)0
  167. 2238 y(test)c(the)h(results)g(b)q(efore)h(merging)f(the)g(patc)o(hed)g(co)q
  168. (de)g(in)o(to)g(the)g(stable)g(baseline.)21 b(It)14 b(w)o(ould)g(ev)o(en)h(b)
  169. q(e)f(p)q(ossible)0 2300 y(to)e(use)i(the)f(staging)f(area)h(to)f(build)j(on)
  170. e(the)g(original)h(platform)e(to)h(mak)o(e)f(sure)h(that)f(the)h(c)o(hanges)g
  171. (didn't)h(break)0 2363 y(the)f(previous)h(system.)19 b(Once)14
  172. b(the)f(p)q(ort)g(had)g(b)q(een)i(completed)f(and)f(tested,)g(the)h(baseline)
  173. g(could)h(b)q(e)e(up)q(dated,)0 2425 y(and)i(the)h(p)q(ort)f(w)o(ould)g(b)q
  174. (e)h(complete.)p eop
  175. %%Page: 37 39
  176. 37 38 bop 0 -58 a Fm(Chapter)15 b(10:)k(P)o(ossible)d(F)l(uture)g(Enhancemen)
  177. o(ts)1041 b(37)0 183 y Fj(10)41 b(P)n(ossible)14 b(F)-7 b(uture)15
  178. b(Enhancemen)n(ts)62 358 y Fm(This)23 b(section)f(describ)q(es)h(a)f(few)f
  179. (ideas)h(for)g(future)f(expansion)i(of)e(BCS.)h(These)g(features,)g(if)g
  180. (they)g(are)0 420 y(implemen)o(ted,)g(will)f(not)e(b)q(e)h(part)f(of)g(2.0,)h
  181. (but)f(will)i(probably)f(still)h(b)q(e)f(part)f(of)g(ma)s(jor)f(v)o(ersion)i
  182. (2.)33 b(These)0 482 y(c)o(hanges)16 b(could)g(b)q(e)h(made)e(without)h
  183. (fundamen)o(tal)g(c)o(hange)g(to)f(the)h(w)o(a)o(y)e(BCS)i(w)o(orks)f(and)h
  184. (without)f(radically)0 544 y(c)o(hanging)h(the)f(seman)o(tics)g(of)g
  185. (existing)h(commands.)0 756 y Fl(10.1)32 b(Hierarc)n(hical)17
  186. b(Staging)f(Areas)62 893 y Fm(In)e(BCS)g(v)o(ersion)g(2.0,)f(the)g
  187. (baseline/staging)i(area)e(structure)g(is)h(t)o(w)o(o-tiered:)19
  188. b(the)13 b(baseline)j(is)e(the)f(author-)0 956 y(itativ)o(e)j(cop)o(y)f(of)g
  189. (the)g(con)o(trolled)h(\014les,)g(and)g(the)f(staging)g(areas)g(are)g(all)h
  190. (equal)g(and)g(all)g(inherit)h(directly)g(from)0 1018 y(the)g(baseline.)25
  191. b(Certain)16 b(assumptions)h(are)f(made)h(ab)q(out)f(the)g(baseline)j
  192. (including)g(that)d(the)g(`)p Fi(RCS)p Fm(')f(or)h(`)p Fi(SCCS)p
  193. Fm(')0 1080 y(directories)g(are)f(actually)h(directories)g(and)g(that)e(the)h
  194. (baseline)i(is)f(self-con)o(tained.)62 1217 y(There)h(are)f(man)o(y)g
  195. (instances)i(in)f(whic)o(h)h(it)e(w)o(ould)h(b)q(e)h(useful)f(to)f(ha)o(v)o
  196. (e)g(a)h(hierarc)o(hical)h(system)e(of)g(staging)0 1279 y(areas.)i(In)12
  197. b(this)f(paradigm,)h(there)f(w)o(ould)h(still)g(b)q(e)g(a)f(single,)i
  198. (authoritativ)o(e)e(baseline.)20 b(Staging)11 b(areas,)g(ho)o(w)o(ev)o(er,)0
  199. 1342 y(could)19 b(either)f(inherit)h(directly)g(from)d(the)i(baseline,)i(or)d
  200. (they)g(could)i(inherit)g(from)d(other)i(staging)f(areas.)26
  201. b(A)0 1404 y(command)21 b(\(p)q(erhaps)g(called)i Fi(promote)p
  202. Fm(\))d(could)i(b)q(e)g(added)g(to)e(BCS)h(that)g(w)o(ould)g(b)q(e)h(similar)
  203. g(to)f Fi(update_)0 1466 y(baseline)d Fm(except)h(that)f(it)h(w)o(ould)g
  204. (promote)f(a)h(\014le)h(up)f(one)g(lev)o(el)h(in)g(the)f(staging)f(area)g
  205. (hierarc)o(h)o(y)l(.)32 b(If)19 b(one)0 1528 y(staging)g(area)g(inherits)i
  206. (from)d(another,)i(the)f(inheritance)j(could)e(b)q(e)g(set)f(up)h(using)g(a)g
  207. (con\014guration)f(\014le)i(at)0 1591 y(the)f(top-lev)o(el)h(of)f(the)g
  208. (staging)f(area)g(in)i(m)o(uc)o(h)f(the)g(same)g(w)o(a)o(y)f(the)h(`)p
  209. Fi(.baseline_path)p Fm(')d(\014le)k(is)f(used)h(no)o(w.)0 1653
  210. y(BCS)c(could)h(do)f(some)f(amoun)o(t)g(of)g(lo)q(op)i(detection)f(and)g(v)m
  211. (alidation)i(to)d(mak)o(e)g(sure)h(that)f(the)h(giv)o(en)g(staging)0
  212. 1715 y(area)d(ev)o(en)o(tually)h(p)q(oin)o(ts)f(bac)o(k)g(to)g(the)g
  213. (baseline.)22 b(There)14 b(could)h(b)q(e)g(sev)o(eral)f(p)q(ossible)i
  214. (applications)g(for)e(suc)o(h)g(a)0 1777 y(setup.)20 b(Some)15
  215. b(are)g(considered)i(here.)0 1973 y Fg(10.1.1)29 b(In)n(tegration)15
  216. b(of)g(Changes)g(in)g(Tw)n(o)g(Staging)g(Areas)62 2110 y Fm(In)i(the)f
  217. (curren)o(t)g(BCS)h(paradigm,)e(eac)o(h)i(staging)e(area)h(is)h(generally)g
  218. (main)o(tained)g(b)o(y)f(a)g(single)h(dev)o(elop)q(er.)0 2172
  219. y(Changes)j(are)f(made)h(and)h(tested)e(in)i(this)g(staging)e(area.)34
  220. b(Once)21 b(they)f(are)f(stable,)j(the)e(\014les)g(are)g(up)q(dated)0
  221. 2234 y(directly)15 b(in)o(to)e(the)g(baseline.)21 b(One)14
  222. b(can)g(easily)g(imagine)g(situations)g(in)g(whic)o(h)g(a)f(ma)s(jor)f(piece)
  223. j(of)e(functionalit)o(y)0 2296 y(in)i(a)g(system)f(is)h(b)q(eing)h(c)o
  224. (hanged,)f(and)g(more)f(than)g(one)h(dev)o(elop)q(er)h(w)o(orks)e(on)g
  225. (di\013eren)o(t)i(parts)e(of)h(the)f(c)o(hange.)0 2359 y(Although)20
  226. b(eac)o(h)g(dev)o(elop)q(er)h(will)g(generally)g(b)q(e)g(able)f(to)f(do)h
  227. (some)f(testing)h(in)g(his)h(or)e(her)h(priv)m(ate)g(staging)0
  228. 2421 y(area,)e(a)g(separate)g(staging)g(area)g(ma)o(y)f(b)q(e)i(needed)h(to)e
  229. (do)g(some)g(in)o(tegration)g(testing)h(b)q(efore)f(imp)q(osing)i(the)0
  230. 2483 y(c)o(hanges)f(on)h(the)g(baseline.)34 b(In)20 b(the)g(curren)o(t)f(BCS)
  231. h(implemen)o(tation,)h(this)f(can)g(b)q(e)g(done,)h(but)e(it)h(requires)0
  232. 2545 y(man)o(ually)15 b(c)o(hec)o(king)f(out)f(the)h(correct)g(v)o(ersions)g
  233. (of)f(\014les)i(in)f(the)g(new)g(staging)f(area.)19 b(In)14
  234. b(a)g(BCS)g(that)f(supp)q(orts)0 2608 y(hierarc)o(hical)i(staging)e(areas,)g
  235. (eac)o(h)h(dev)o(elop)q(er)h(w)o(ould)e(merely)i(reparen)o(t)e(his)h(or)f
  236. (her)h(staging)f(area,)g(run)h Fi(sync_)0 2670 y(staging)p
  237. Fm(,)h(and)i(then)g(promote)e(\014les)j(that)e(are)g(ready)g(for)g(in)o
  238. (tegration.)24 b(In)o(tegration)16 b(could)h(b)q(e)g(done)g(in)h(this)p
  239. eop
  240. %%Page: 38 40
  241. 38 39 bop 0 -58 a Fm(38)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
  242. (ersion)h(2.0)0 183 y(sp)q(ecial)j(staging)f(area,)f(and)h(then,)g(when)g(c)o
  243. (hanges)g(are)f(tested,)h(in)o(tegrated,)g(and)g(sho)o(wn)f(to)g(b)q(e)i
  244. (stable,)f(the)0 246 y(baseline)f(could)f(b)q(e)g(up)q(dated.)62
  245. 387 y(Suc)o(h)23 b(in)o(tegration)g(staging)f(areas)f(could)j(b)q(e)f
  246. (created)f(on)g(the)h(\015y)f(for)g(particular)h(purp)q(oses,)h(or)e(they)0
  247. 449 y(could)d(b)q(e)g(in)f(place)h(for)f(the)g(duration)g(of)g(a)f(dev)o
  248. (elopmen)o(t)i(e\013ort.)28 b(One)19 b(can)f(imagine)h(situations)f(in)h
  249. (whic)o(h)0 512 y(all)d(dev)o(elop)q(ers)h(of)e(all)h(lev)o(els)h(w)o(ould)f
  250. (ha)o(v)o(e)f(access)h(to)f(up)q(date)h(the)f(staging)g(area)g(that)g(is)h
  251. (the)f(paren)o(t)g(of)g(their)0 574 y(individual)f(staging)d(areas,)f(but)h
  252. (that)f(only)i(more)e(exp)q(erienced)j(dev)o(elop)q(ers)g(or)d(baseline)i
  253. (administrators)f(could)0 636 y(up)q(date)19 b(the)f(baseline.)30
  254. b(This)18 b(w)o(a)o(y)l(,)g(users)g(w)o(ould)g(b)q(e)h(free)f(to)f(promote)g
  255. (c)o(hanges)h(for)g(thorough)f(in)o(tegration)0 699 y(testing)e(without)g(in)
  256. o(terv)o(en)o(tion,)h(but)f(could)h(still)h(b)q(e)f(denied)h(write)e(access)g
  257. (to)g(the)g(baseline.)0 948 y Fg(10.1.2)29 b(Main)n(tenance)16
  258. b(of)f(Multiple)g(Revisions)h(of)f(Soft)n(w)n(are)62 1090 y
  259. Fm(If)d(BCS)g(had)g(the)f(abilit)o(y)i(to)e(ha)o(v)o(e)g(one)h(staging)f
  260. (area)g(inherit)i(from)e(another,)h(then)g(it)g(w)o(ould)g(automatically)0
  261. 1152 y(ha)o(v)o(e)18 b(the)h(abilit)o(y)g(to)f(supp)q(ort)h(baselines)h
  262. (whose)e(`)p Fi(RCS)p Fm(')g(or)g(`)p Fi(SCCS)p Fm(')f(directories)i(are)f
  263. (sym)o(b)q(olic)i(links.)31 b(If)19 b(the)0 1214 y(additional)f(feature)e(of)
  264. g(supp)q(orting)h(default)g(revisions)g(for)f(a)g(staging)f(area)h(w)o(ere)g
  265. (supp)q(orted,)h(then)g(a)f(single)0 1277 y(set)k(of)g(v)o(ersion)g(con)o
  266. (trol)g(logs)g(could)i(underlie,)h(sa)o(y)l(,)e(a)e(main)o(tenance)i(or)f
  267. (bug-\014x)h(area)f(for)f(v)o(ersion)i(1)e(of)h(a)0 1339 y(system)f(and)g(a)g
  268. (dev)o(elopmen)o(t)h(area)f(for)g(v)o(ersion)g(2.)32 b(All)21
  269. b(users)e(who)g(are)g(w)o(orking)g(main)o(taining)i(v)o(ersion)e(1)0
  270. 1401 y(could)d(inherit)g(from)e(a)g(sp)q(ecial)j(staging)d(area)g(that)g(has)
  271. h(v)o(ersion)g(1)f(as)g(its)h(default,)g(and)g(all)h(users)f(w)o(orking)f(on)
  272. 0 1463 y(new)j(dev)o(elopmen)o(t)h(could)g(inherit)g(from)e(the)h(baseline)i
  273. (directly)f(or)e(from)g(another)h(staging)f(area)h(set)f(up)i(for)0
  274. 1526 y(v)o(ersion)f(2)f(dev)o(elopmen)o(t.)24 b(Exactly)17
  275. b(ho)o(w)f(this)h(w)o(ould)g(w)o(ork)e(is)i(not)g(y)o(et)f(kno)o(wn,)g(but)h
  276. (it)f(w)o(ould)h(probably)g(b)q(e)0 1588 y(based)e(on)g(ha)o(ving)g(BCS)g
  277. (automatically)g(sp)q(ecify)i(a)d(revision)i(when)f(c)o(hec)o(king)h(\014les)
  278. g(in)g(or)e(out)g(based)h(on)g(some)0 1650 y(information)g(in)h(a)f(p)q
  279. (er-staging-area)g(con\014guration)h(\014le.)0 1917 y Fl(10.2)32
  280. b(Secure)16 b(Baseline)62 2058 y Fm(Dep)q(ending)g(on)d(the)h(size)g(of)f(a)g
  281. (pro)s(ject)g(and)h(on)f(other)h(constrain)o(ts,)f(it)g(is)h(sometimes)g
  282. (desirable)h(to)e(restrict)0 2120 y(who)18 b(has)h(what)f(access)h(to)f(the)h
  283. (baseline.)32 b(One)19 b(could)h(divide)h(securit)o(y)e(lev)o(els)h(of)e(the)
  284. h(baseline)h(in)o(to)f(these)0 2183 y(categories:)37 2324 y
  285. Fk(\017)30 b Fm(All)18 b(users)f(ha)o(v)o(e)f(write-access)i(to)e(the)h
  286. (baseline)i(directories.)25 b(No)17 b(restrictions)g(are)g(put)g(up)q(on)g
  287. (who)g(can)90 2387 y(c)o(hec)o(k)e(\014les)i(in)f(or)e(out,)h(up)q(date)h
  288. (the)f(baseline,)h(or)f(register)g(new)h(\014les.)37 2466 y
  289. Fk(\017)30 b Fm(Only)15 b(authorized)f(users)g(can)f(c)o(hec)o(k)h(\014les)h
  290. (in,)f(register)g(\014les,)g(or)f(up)q(date)h(the)g(baseline,)h(but)f(an)o(y)
  291. f(user)h(can)90 2528 y(c)o(hec)o(k)h(\014les)i(out.)37 2608
  292. y Fk(\017)30 b Fm(Only)16 b(authorized)f(users)f(can)h(p)q(erform)f(an)o(y)g
  293. (op)q(erations)h(that)f(require)h(mo)q(di\014cation)h(of)e(the)g(baseline)i
  294. (or)90 2670 y(history)f(logs.)p eop
  295. %%Page: 39 41
  296. 39 40 bop 0 -58 a Fm(Chapter)15 b(10:)k(P)o(ossible)d(F)l(uture)g(Enhancemen)
  297. o(ts)1041 b(39)62 183 y(The)20 b(\014rst)e(and)i(third)f(of)g(the)g(ab)q(o)o
  298. (v)o(e)g(conditions)i(can)e(b)q(e)h(ac)o(hiev)o(ed)g(with)f(\014le)h
  299. (protections)g(alone.)32 b(The)0 246 y(second)19 b(con\014guration)g(is)h
  300. (di\016cult)g(to)e(ac)o(hiev)o(e)h(this)h(w)o(a)o(y)d(b)q(ecause)j
  301. (con\014guration)f(managemen)o(t)f(pac)o(k)m(ages)0 308 y(suc)o(h)e(as)g(R)o
  302. (CS)g(and)g(SCCS)f(require)i(the)f(user)g(to)f(ha)o(v)o(e)g(write)h(access)g
  303. (to)f(the)h(baseline)i(in)e(order)g(to)f(lo)q(c)o(k)h(\014les.)0
  304. 370 y(T)l(o)i(comp)q(ensate)h(for)f(this,)i(BCS)f(could)h(op)q(erate)e(in)h
  305. (secure)h(mo)q(de.)30 b(In)19 b(secure)h(mo)q(de,)f(the)g Fi(bcs)f
  306. Fm(command)0 432 y(could)h(b)q(e)f(installed)h Fh(setuid)p
  307. Fm(.)28 b(It)17 b(could)i(e\013ectiv)o(ely)g(b)q(ecome)f(a)f(user)h(with)g
  308. (write-access)g(to)f(the)g(baseline)j(for)0 495 y(the)15 b(lo)q(c)o(king)h
  309. (op)q(eration.)k(This)15 b(w)o(a)o(y)l(,)e(access)i(to)f(the)h(baseline)i
  310. (could)e(b)q(e)h(restricted)f(to)f(all)i(but)e(a)h(small)g(group)0
  311. 557 y(of)k(users)g(without)g(losing)h(the)g(abilit)o(y)g(for)f(individual)j
  312. (users)d(to)g(c)o(hec)o(k)h(\014les)g(out)f(as)f(needed.)34
  313. b(This)20 b(w)o(ould)0 619 y(also)15 b(prev)o(en)o(t)g(unauthorized)i(users)e
  314. (from)g(op)q(erating)g(on)g(baseline)i(\014les)g(with)e(the)h(underlying)h
  315. (con\014guration)0 681 y(managemen)o(t)d(commands)h(directly)l(.)62
  316. 818 y(Whether)j(or)g(not)g(a)f(baseline)j(w)o(ould)e(op)q(erate)g(in)h
  317. (secure)g(mo)q(de)f(could)h(b)q(e)g(con)o(trolled)g(b)o(y)f(a)f(\015ag)h(in)h
  318. (the)0 881 y(`)p Fi(.baseline_conf)p Fm(')c(\014le.)30 b(The)18
  319. b(securit)o(y)g(men)o(tioned)h(ab)q(o)o(v)o(e)f(assumes)f(that)h(the)g
  320. (underlying)i(\014le)f(system)e(is)0 943 y(secure)f(and)f(that)g(setuid)h(op)
  321. q(eration)f(of)g(b)q(cs)h(commands)f(is)g(p)q(ermitted.)62
  322. 1080 y(A)o(t)j(presen)o(t,)h(there)f(seems)h(to)f(b)q(e)h(m)o(uc)o(h)f(less)h
  323. (demand)g(for)f(this)h(t)o(yp)q(e)f(of)g(secure)h(op)q(eration)g(than)f
  324. (there)0 1142 y(is)e(for)g(hierarc)o(hical)i(staging)d(areas,)g(esp)q
  325. (ecially)k(since)e(m)o(uc)o(h)f(of)g(this)g(functionalit)o(y)h(could)g(b)q(e)
  326. g(ac)o(hiev)o(ed)g(that)0 1204 y(w)o(a)o(y)d(as)h(w)o(ell.)p
  327. eop
  328. %%Page: 40 42
  329. 40 41 bop 0 -58 a Fm(40)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
  330. (ersion)h(2.0)p eop
  331. %%Page: 41 43
  332. 41 42 bop 0 -58 a Fm(Chapter)15 b(11:)k(Ac)o(kno)o(wledgmen)o(ts)1295
  333. b(41)0 183 y Fj(11)41 b(Ac)n(kno)n(wledgmen)n(ts)62 370 y Fm(So)16
  334. b(man)o(y)f(p)q(eople)i(ha)o(v)o(e)e(supp)q(orted)h(m)o(y)f(dev)o(elopmen)o
  335. (t)h(of)f(BCS)h(that)f(there)g(it)h(w)o(ould)g(b)q(e)g(di\016cult)h(to)e
  336. (list)0 432 y(all)h(of)e(them)h(here)h(b)o(y)f(name.)20 b(I'd)15
  337. b(lik)o(e)h(to)e(thank)h(all)h(the)f(p)q(eople)i(at)d(Engineering)i(Researc)o
  338. (h)g(Asso)q(ciates)f(who)0 495 y(serv)o(ed)f(as)g(m)o(y)g(alpha)h(testers)f
  339. (and)g(who)g(supp)q(orted)h(me)f(in)h(dev)o(eloping)h(this)f(soft)o(w)o(are)d
  340. (on)j(m)o(y)e(o)o(wn)h(time)h(and)0 557 y(distributing)20 b(it)f(under)g(the)
  341. g(terms)f(of)g(the)g(General)h(Public)h(License)h(and/or)c(the)i(Artistic)g
  342. (License.)32 b(I)18 b(am)0 619 y(also)d(appreciativ)o(e)g(to)f(the)h(b)q(eta)
  343. f(testers)g(out)h(in)g(netland)h(who)e(ha)o(v)o(e)g(o\013ered)h(man)o(y)g
  344. (helpful)h(suggestions)f(and)0 681 y(exp)q(osed)h(the)f(soft)o(w)o(are)f(to)g
  345. (v)m(aluable)j(testing.)k(I)15 b(also)g(thank)g(m)o(y)g(wife,)h(Lisa)g
  346. (\(also)e(a)h(BCS)h(alpha)g(tester\),)e(for)0 744 y(allo)o(wing)g(me)f(to)f
  347. (sp)q(end)i(sev)o(eral)f(consecutiv)o(e)h(w)o(eek)o(ends)f(w)o(orking)g(on)g
  348. (BCS.)f(I)i(couldn't)f(ha)o(v)o(e)g(completed)h(this)0 806
  349. y(pro)s(ject)g(without)i(her)f(supp)q(ort.)p eop
  350. %%Page: 42 44
  351. 42 43 bop 0 -58 a Fm(42)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
  352. (ersion)h(2.0)p eop
  353. %%Page: 43 45
  354. 43 44 bop 0 -58 a Fm(App)q(endix)17 b(A:)e(In)o(ternals)1461
  355. b(43)0 183 y Fj(App)r(endix)13 b(A)41 b(In)n(ternals)62 360
  356. y Fm(This)15 b(section)g(partially)g(do)q(cumen)o(ts)g(the)f(in)o(ternals)h
  357. (of)f(BCS.)g(Information)g(co)o(v)o(ered)g(includes)j(algorithms)0
  358. 423 y(and)e(data)g(structures)g(used,)g(design)h(in)o(ten)o(t,)f(etc.)0
  359. 637 y Fl(A.1)33 b(Ov)n(erview)62 774 y Fm(BCS)20 b(exists)g(to)f(manipulate)i
  360. (p)q(eople's)g(source)f(co)q(de.)34 b(It)19 b(therefore)h(m)o(ust)f(b)q(e)h
  361. (extremely)g(conserv)m(ativ)o(e)0 837 y(ab)q(out)e(what)f(it)h(do)q(es.)28
  362. b(This)19 b(means)f(that)f(op)q(erations)h(should)h(b)q(e)f(atomic)g(when)g
  363. (p)q(ossible)i(and)e(that)f(there)0 899 y(should)c(alw)o(a)o(ys)f(b)q(e)h
  364. (some)f(reasonable)h(reco)o(v)o(ery)f(from)f(errors)h(and)g(user-initiated)j
  365. (ab)q(orts.)j(BCS)12 b(should)i(nev)o(er)0 961 y(delete)j(\014les)g
  366. (haphazardly)l(.)23 b(Deleting)17 b(sym)o(b)q(olic)g(links)h(in)e(the)g
  367. (staging)g(area)f(that)h(don't)f(p)q(oin)o(t)i(an)o(ywhere)e(or)0
  368. 1023 y(don't)c(ha)o(v)o(e)f(corresp)q(onding)i(\014les)g(or)f(links)h(in)g
  369. (the)f(baseline)i(is)e(acceptable)i(as)d(is)i(deleting)g(\014les)g(when)g
  370. (unstaging)0 1086 y(directories)k(pro)o(vided)g(that)f(the)g(necessary)g(c)o
  371. (hec)o(ks)h(ha)o(v)o(e)f(b)q(een)h(made.)62 1223 y(BCS)e(should)h(b)q(e)f
  372. (e\016cien)o(t)h(and)f(should)h(a)o(v)o(oid)e(doing)i(m)o(ultiple)g(accesses)
  373. f(to)f(the)h(\014le)h(system)e(for)g(the)h(same)0 1285 y(\014le.)26
  374. b(This)17 b(means)g(that)f(an)h(in)o(v)o(o)q(cation)g(of)f(a)h(BCS)g(command)
  375. g(will)h(t)o(ypically)g(result)f(in)h(a)f(large)f(amoun)o(t)g(of)0
  376. 1347 y(information)f(b)q(eing)i(cac)o(hed.)62 1484 y(BCS)d(is)h(based)f(on)g
  377. (top)f(of)h(con\014guration)g(managemen)o(t)f(pac)o(k)m(ages.)19
  378. b(R)o(CS)14 b(is)h(the)f(recommended)g(pac)o(k)m(age,)0 1546
  379. y(but)21 b(BCS)g(is)g(implemen)o(ted)i(in)f(a)e(w)o(a)o(y)g(that)g(mak)o(es)g
  380. (it)i(easy)e(to)g(plug)i(in)g(other)e(pac)o(k)m(ages)h(as)g(w)o(ell.)37
  381. b(This)0 1609 y(do)q(cumen)o(t)16 b(explains)g(ho)o(w)f(BCS)g(in)o(terfaces)h
  382. (with)f(its)h(underlying)h(con\014guration)e(managemen)o(t)g(pac)o(k)m(ages.)
  383. 62 1746 y(BCS)20 b(implemen)o(ts)h(a)e(baseline)j(and)d(m)o(ultiple)j
  384. (staging)d(areas.)33 b(With)20 b(the)f(exception)i(of)e(prin)o(ting)i(help)0
  385. 1808 y(messages)16 b(and)g(v)o(ersion)h(information,)f(all)i(BCS)e(op)q
  386. (erations)h(require)g(the)f(baseline)i(and)f(staging)f(area)g(to)f(b)q(e)0
  387. 1870 y(iden)o(ti\014ed)e(in)e(the)g(en)o(vironmen)o(t)g(or)f(on)h(the)f
  388. (command)h(line.)20 b(A)10 b(con\014guration)h(\014le)h(m)o(ust)e(exist)h(at)
  389. f(the)h(top-lev)o(el)0 1932 y(of)18 b(eac)o(h)h(baseline)h(directory)l(.)30
  390. b(This)19 b(con\014guration)g(\014le)h(m)o(ust)e(sp)q(ecify)h(what)f(the)h
  391. (baseline's)h(con\014guration)0 1995 y(managemen)o(t)14 b(pac)o(k)m(age)i
  392. (is,)f(etc.)0 2209 y Fl(A.2)33 b(Classi\014cation)15 b(of)g(Files)62
  393. 2346 y Fm(The)i(basis)g(of)f(BCS)h(in)o(v)o(olv)o(es)g(b)q(eing)h(able)f(to)f
  394. (distinguish)j(b)q(et)o(w)o(een)e(imp)q(ortan)o(t)f(and)h(unimp)q(ortan)o(t)f
  395. (\014les.)0 2408 y(Ev)o(ery)h(\014le)i(is)g(either)f(imp)q(ortan)o(t)g(or)f
  396. (unimp)q(ortan)o(t.)28 b(Determination)18 b(of)f(the)h(imp)q(ortance)g(of)g
  397. (a)f(\014le)i(is)g(done)0 2471 y(based)d(up)q(on)f(the)h(underlying)h
  398. (con\014guration)e(managemen)o(t)g(system)f(and)i(other)f(constrain)o(ts.)62
  399. 2608 y(A)g(\014le's)g(imp)q(ortance)g(is)g(determined)h(in)g(sev)o(eral)e(w)o
  400. (a)o(ys.)19 b(This)c(discussion)i(of)d(imp)q(ortance)h(applies)h(to)e
  401. (\014les)0 2670 y(in)k(the)f(baseline.)28 b(Files)19 b(in)f(the)f(staging)g
  402. (area)g(that)f(do)h(not)g(ha)o(v)o(e)g(corresp)q(onding)i(\014les)f(in)g(the)
  403. f(baseline)i(are)p eop
  404. %%Page: 44 46
  405. 44 45 bop 0 -58 a Fm(44)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
  406. (ersion)h(2.0)0 183 y(considered)i(unimp)q(ortan)o(t.)25 b(\(The)17
  407. b(exception)h(is)f(in)o(ternal)h(\014les)g(whic)o(h)f(are)g(alw)o(a)o(ys)f
  408. (considered)i(imp)q(ortan)o(t.\))0 246 y(Other)13 b(staging)f(area)f(\014les)
  409. j(inherit)g(their)f(imp)q(ortance)f(from)g(their)h(baseline)h(coun)o
  410. (terparts.)k(The)13 b(only)g(circum-)0 308 y(stance)g(under)g(whic)o(h)h(a)f
  411. (staging)f(area)g(\014le)i(will)h(ha)o(v)o(e)d(a)h(di\013eren)o(t)h(imp)q
  412. (ortance)f(from)f(its)h(baseline)i(coun)o(terpart)0 370 y(is)f(if)f
  413. (instances)h(of)f(\014lenames)h(that)e(are)h(used)h(in)o(ternally)g(b)o(y)f
  414. (the)h(BCS)f(in)h(the)f(baseline)i(app)q(ear)e(in)h(the)f(staging)0
  415. 432 y(area.)22 b(In)17 b(this)f(case,)g(they)h(are)e(unimp)q(ortan)o(t)i(in)g
  416. (the)f(staging)g(area)f(and)h(imp)q(ortan)o(t)g(in)h(the)f(baseline.)25
  417. b(\(This)0 495 y(w)o(ould)18 b(include)j(`)p Fi(.important)p
  418. Fm(',)16 b(`)p Fi(.unimportant)p Fm(',)g(`)p Fi(.auto_stage)p
  419. Fm(',)g(`)p Fi(.no_stage)p Fm(',)g(and)j(`)p Fi(.unimp_nowarn)p
  420. Fm(')0 557 y(at)11 b(an)o(y)h(lev)o(el,)i(and)e(`)p Fi(.baseline_conf)p
  421. Fm(')d(at)j(the)g(top)g(lev)o(el.)20 b(The)12 b(con)o(ten)o(ts)g(of)f
  422. (\014les)i(are)f(ignored)h(b)o(y)f(the)g(utilities)0 619 y(if)i(they)g(are)g
  423. (encoun)o(tered)h(in)f(the)g(staging)g(area.)19 b(There)14
  424. b(is)g(no)g(reason)g(for)f(these)h(\014les)h(to)e(exist)i(in)f(the)g(staging)
  425. 0 681 y(area.\))62 822 y(Ev)o(ery)f(\014le)i(has)e(an)g(imp)q(ortance)h(whic)
  426. o(h)h(can)e(b)q(e)h(o)o(v)o(erridden)g(explicitly)l(.)23 b(By)13
  427. b(default,)h(\014les)g(in)h(the)e(baseline)0 884 y(that)18
  428. b(are)g(neither)h(sym)o(b)q(olic)h(links)g(nor)e(directories)h(\014les)h(are)
  429. e(imp)q(ortan)o(t)g(if)h(they)f(are)g(registered)h(with)g(the)0
  430. 946 y(underlying)24 b(con\014guration)e(managemen)o(t)f(pac)o(k)m(age)h(and)g
  431. (are)f(unimp)q(ortan)o(t)h(otherwise.)40 b(Directories)22 b(are)0
  432. 1009 y(considered)e(imp)q(ortan)o(t)e(b)o(y)g(default.)30 b(Sym)o(b)q(olic)20
  433. b(links)f(to)f(\014les)h(in)g(the)g(baseline)h(inherit)g(their)e(imp)q
  434. (ortance)0 1071 y(from)i(the)h(\014les)h(they)e(are)h(ultimately)h(link)o(ed)
  435. g(to.)36 b(Sym)o(b)q(olic)22 b(links)g(to)f(\014les)g(outside)h(of)e(the)h
  436. (baseline)h(are)0 1133 y(unimp)q(ortan)o(t)c(b)o(y)f(default.)28
  437. b(A)18 b(\014le)g(or)f(directory)h(can)g(b)q(e)g(made)g(explicitly)i(unimp)q
  438. (ortan)o(t)e(b)o(y)g(app)q(earing)g(in)0 1195 y(the)f(`)p Fi(.unimportant)p
  439. Fm(')d(\014le)k(or)f(made)g(explicitly)i(imp)q(ortan)o(t)e(b)o(y)g(app)q
  440. (earing)h(in)f(the)g(`)p Fi(.important)p Fm(')e(\014le)j(in)g(its)0
  441. 1258 y(con)o(taining)g(directory)l(.)25 b(If)17 b(a)g(\014le)h(app)q(ears)f
  442. (in)h(b)q(oth)f(a)f(`)p Fi(.important)p Fm(')f(\014le)j(and)f(a)g(`)p
  443. Fi(.unimportant)p Fm(')d(\014le,)k(it)f(is)0 1320 y(considered)f(imp)q(ortan)
  444. o(t.)j(A)14 b(`)p Fi(.important)p Fm(')e(\014le)k(con)o(taining)f(only)g(`)p
  445. Fi(*)p Fm(')e(means)h(all)h(\014les)h(are)e(imp)q(ortan)o(t)g(in)h(that)0
  446. 1382 y(directory)l(.)20 b(The)14 b(`)p Fi(.important)p Fm(')e(\014le)j
  447. (cannot)f(con)o(tain)g(regular)g(expressions)h(in)g(general;)f(`)p
  448. Fi(*)p Fm(')f(is)i(a)f(sp)q(ecial)h(case.)0 1637 y Fl(A.3)33
  449. b(Cac)n(hing)15 b(File)i(System)e(Information)62 1777 y Fm(When)g(analyzing)h
  450. (p)q(erformance)f(of)f(BCS,)g(it)h(b)q(ecame)g(eviden)o(t)h(that)e(the)g
  451. (most)g(exp)q(ensiv)o(e)i(op)q(erations)f(b)o(y)0 1839 y(far)j(w)o(ere)g
  452. (calls)i(to)e(the)g Fi(lstat)g Fm(system)g(call.)31 b(This)19
  453. b(call)h(is)f(used)g(to)f(obtain)h(sp)q(eci\014c)h(information)f(ab)q(out)f
  454. (a)0 1902 y(named)d(\014le)g(from)e(the)i(\014le)g(system.)k(Since)d(BCS)e
  455. (requires)i(frequen)o(t)e(access)g(to)g(the)g(la)o(y)o(out)g(of)g(the)g
  456. (\014le)h(system)0 1964 y(and)h(in)o(to)g(sp)q(eci\014c)i(information)e(ab)q
  457. (out)g(\014les,)h(this)g(information)f(is)g(cac)o(hed.)23 b(The)17
  458. b(cac)o(he)f(is)h(implemen)o(ted)g(as)0 2026 y(a)e(tree)g(that)g(has)g(the)g
  459. (same)g(shap)q(e)h(as)f(the)g(\014le)i(system.)i(When)d(\014les)g(are)f(remo)
  460. o(v)o(ed,)g(they)g(are)g(remo)o(v)o(ed)g(from)0 2088 y(the)h(cac)o(he)h(as)f
  461. (w)o(ell.)24 b(Since)18 b(the)e(cac)o(he)h(is)f(structured)h(to)e(b)q(e)i
  462. (parallel)h(to)e(the)g(\014le)h(system,)f(the)g(c)o(hance)h(of)f(an)0
  463. 2151 y(inconsistency)h(app)q(earing)f(in)g(the)f(cac)o(he)h(is)g(v)o(ery)e
  464. (lo)o(w.)0 2405 y Fl(A.4)33 b(The)15 b(File)h(Information)g(T)-6
  465. b(able)62 2545 y Fm(All)21 b(information)f(needed)g(ab)q(out)g(\014les)g
  466. (encoun)o(tered)g(in)h(an)e(in)o(v)o(o)q(cation)h(of)f(BCS)h(is)g(cac)o(hed)g
  467. (in)g(a)g(table)0 2608 y(whic)o(h)h(will)h(b)q(e)g(referred)e(to)g(as)g(the)h
  468. Fh(\014le)g(information)g(table)p Fm(.)36 b(The)21 b(\014le)g(information)g
  469. (table)g(consists)f(of)g(a)0 2670 y(n)o(um)o(b)q(er)c(of)e(\014le)j
  470. (information)e(structures)g(whic)o(h)h(are)f(stored)f(in)i(the)g(\014le)g
  471. (system)f(cac)o(he)g(describ)q(ed)i(ab)q(o)o(v)o(e.)p eop
  472. %%Page: 45 47
  473. 45 46 bop 0 -58 a Fm(App)q(endix)17 b(A:)e(In)o(ternals)1461
  474. b(45)62 183 y(A)15 b(\014le)h(information)f(structure)g(con)o(tains)f(all)i
  475. (the)f(information)g(needed)h(ab)q(out)f(a)f(\014le)i(for)e(determining)j
  476. (its)0 246 y(imp)q(ortance)f(and)f(its)h(eligibili)q(t)o(y)h(for)e(b)q(eing)h
  477. (staged.)k(Some)15 b(information)g(ab)q(out)g(whether)h(the)f(\014le)h(is)g
  478. (eligible)0 308 y(to)i(b)q(e)g(unstaged)h(is)f(stored)g(as)g(w)o(ell.)30
  479. b(See)19 b(the)f(de\014nition)i(of)e Fi(bcs_file_info_rec)e
  480. Fm(in)j(`)p Fi(file_info.h)p Fm(')d(for)0 370 y(the)f(sp)q(eci\014c)i
  481. (\014elds.)62 507 y(T)l(o)f(explicitly)i(p)q(opulate)f(the)f(table,)g(the)g
  482. Fi(bcs_examine_dir)d Fm(routine)k(is)f(called)h(with)f(a)g(directory)g(name)0
  483. 569 y(and)k(a)g(recursiv)o(e)h(\015ag.)35 b(If)21 b(the)f(recursiv)o(e)h
  484. (\015ag)f(is)h(set,)g(the)f(directory)h(is)f(inserted)i(recursiv)o(ely)l(.)36
  485. b(F)l(or)20 b(eac)o(h)0 632 y(directory)l(,)d(all)g(the)g(\014les)g(in)g(the)
  486. g(directory)f(are)g(c)o(hec)o(k)o(ed)h(and)g(inserted)g(in)g(the)g(table.)24
  487. b(If)16 b(the)h(directory)f(is)h(in)0 694 y(the)g(staging)g(area,)g(the)h
  488. (directory's)f(baseline)i(coun)o(terpart)d(is)i(searc)o(hed)g(to)q(o.)25
  489. b Fh(Precious)18 b(directories)j Fm(\(those)0 756 y(used)14
  490. b(in)o(ternally)h(b)o(y)f(con\014guration)g(managemen)o(t)f(pac)o(k)m(ages\))
  491. g(are)g(omitted)h(from)f(the)g(list)i(of)e(directories)i(and)0
  492. 818 y(are)c(not)h(searc)o(hed)f(recursiv)o(ely)l(.)21 b(A)11
  493. b(p)q(oin)o(ter)h(to)f(a)h(callbac)o(k)g(function)h(is)f(passed)g(to)f(this)h
  494. (routine.)19 b(If)12 b(the)f(p)q(oin)o(ter)0 881 y(is)k(non-)p
  495. Fi(NULL)p Fm(,)e(the)h(function)h(is)g(called)h(with)e(passed)g(in)h(data,)f
  496. (the)g(global)g(b)q(cs)h(state)e(ob)s(ject,)h(and)g(the)g(curren)o(t)0
  497. 943 y(\014le)j(information)e(structure)h(for)f(item)h(found)g(b)o(y)f
  498. Fi(bcs_examine_dir)p Fm(.)20 b(The)15 b Fi(bcs_examine_dir)f
  499. Fm(function)i(is)0 1005 y(organized)i(in)g(suc)o(h)f(a)g(w)o(a)o(y)f(that)h
  500. (the)g(callbac)o(k)i(is)e(called)i(on)e(\014le)h(information)g(structures)f
  501. (in)h(sorted)f(order.)0 1067 y(This)e(w)o(a)o(y)l(,)f(commands)h(suc)o(h)g
  502. (as)f Fi(classify_files)f Fm(or)h Fi(id_staged)g Fm(can)h(call)h
  503. Fi(bcs_examine_dir)c Fm(once)k(with)0 1130 y(a)f(callbac)o(k)h(function)g
  504. (and)g(a)o(v)o(oid)e(m)o(ultiple)k(lo)q(okups)d(or)g(long)h(dela)o(ys)f(b)q
  505. (efore)h(the)f(user)g(sees)h(an)o(y)f(results.)62 1267 y(An)g(individual)i
  506. (\014le)f(can)e(b)q(e)h(lo)q(ok)o(ed)g(up)g(in)g(the)f(table)h(b)o(y)f(name)h
  507. (with)f(the)h Fi(bcs_get_file_info)d Fm(routine.)0 1329 y(If)f(a)g(\014le's)h
  508. (information)f(is)g(found)h(in)g(the)f(table,)h(it)f(is)h(returned.)19
  509. b(Otherwise,)12 b(a)f(new)g(\014le)h(information)f(structure)0
  510. 1391 y(is)17 b(allo)q(cated)h(and)f(inserted)h(in)o(to)f(the)g(table.)26
  511. b(Individual)19 b(\014elds)g(of)d(the)h(\014le)h(information)f(structure)g
  512. (are)f(not)0 1453 y(computed)g(un)o(til)g(they)f(are)g(needed.)0
  513. 1667 y Fl(A.5)33 b(Debugging)62 1804 y Fm(If)17 b(BCS)g(w)o(as)f(compiled)j
  514. (with)e(debugging)h(enabled,)g(the)f(en)o(vironmen)o(t)g(v)m(ariable)i
  515. Fi(DEBUG_BCS)c Fm(is)i(c)o(hec)o(k)o(ed)0 1866 y(when)f(the)g(utilities)h
  516. (initialize)q(.)23 b(The)16 b(v)m(alue)h(of)e(this)h(v)m(ariable)h(can)e(b)q
  517. (e)i(o)o(v)o(erridden)f(with)g(the)f Fi(--debug)g Fm(option)0
  518. 1928 y(on)f(the)g(commandline.)22 b(If)14 b(no)g(debugging)h(information)g
  519. (is)g(requested,)f(none)h(will)h(b)q(e)e(prin)o(ted.)21 b(This)15
  520. b(v)m(ariable)0 1990 y(consists)f(of)e(a)h(colon-separated)h(list)g(of)f(lo)o
  521. (w)o(er-case)g(k)o(eyw)o(ords)f(sp)q(ecifying)k(what)c(kind)j(of)e
  522. (information)g(should)0 2053 y(b)q(e)j(displa)o(y)o(ed.)21
  523. b(V)l(alid)c(k)o(eyw)o(ords)d(are)0 2199 y Fi(logic)120 b Fm(Prin)o(t)15
  524. b(information)h(ab)q(out)f(ma)s(jor)e(decisions)k(and)f(wh)o(y)f(they)g(are)g
  525. (b)q(eing)h(made;)0 2281 y Fi(trace)120 b Fm(Prin)o(t)15 b(information)h(ab)q
  526. (out)f(function)h(calls)g(and)f(returns;)0 2363 y Fi(verbose)72
  527. b Fm(Prin)o(t)15 b(v)o(erb)q(ose)g(messages)g(at)g(certain)g(times;)0
  528. 2444 y Fi(path)144 b Fm(Prin)o(t)15 b(message)g(sp)q(eci\014c)i(to)e
  529. (pathname)g(pro)q(cessing;)0 2526 y Fi(all)168 b Fm(All)16
  530. b(debugging)h(is)e(turned)h(on;)0 2608 y Fi(none)144 b Fm(T)l(urn)22
  531. b(o\013)g(debugging)g(information.)39 b(This)22 b(k)o(eyw)o(ord)f(is)h
  532. (ignored)g(if)g(accompanied)h(b)o(y)e(other)240 2670 y(options.)f(An)o(y)15
  533. b(k)o(eyw)o(ord)g(other)f(than)i(one)f(men)o(tioned)h(ab)q(o)o(v)o(e)f(will)h
  534. (serv)o(e)f(this)h(purp)q(ose.)p eop
  535. %%Page: 46 48
  536. 46 47 bop 0 -58 a Fm(46)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
  537. (ersion)h(2.0)62 183 y(Note)d(that)e(information)i(prin)o(ted)h(b)o(y)e
  538. (these)h(debug)g(\015ags)f(are)h(only)g(as)f(complete)h(as)g(w)o(as)e
  539. (necessary)i(during)0 246 y(the)19 b(dev)o(elopmen)o(t.)31
  540. b(F)l(or)19 b(example,)h(turning)f(on)g Fi(trace)f Fm(do)q(es)h(not)g(trace)f
  541. (all)i(function)f(calls)h(and)f(do)q(es)g(not)0 308 y(alw)o(a)o(ys)d(prin)o
  542. (t)i(all)g(the)f(information)g(that)f(w)o(ould)h(b)q(e)h(useful)g(when)g(a)e
  543. (function)i(is)g(en)o(tered)f(or)g(exited.)26 b(Ev)o(en)0 370
  544. y(so,)14 b(running)j(BCS)e(with)h Fi(--debug)e(all)h Fm(will)i(pro)q(duce)f
  545. (a)e(considerable)j(v)o(olume)f(of)f(output.)0 634 y Fl(A.6)33
  546. b(Con\014guration)16 b(Managemen)n(t)e(P)n(ac)n(k)l(age)h(In)n(terface)62
  547. 775 y Fm(BCS)i(implemen)o(ts)h(generic)f(supp)q(ort)g(for)f(underlying)i
  548. (con\014guration)f(managemen)o(t)e(pac)o(k)m(ages.)24 b(In)17
  549. b(order)0 837 y(for)e(BCS)g(to)g(pro)o(vide)h(a)f(fron)o(t)g(end)h(to)f(v)m
  550. (arious)g(con\014guration)h(managemen)o(t)f(pac)o(k)m(ages,)g(it)g(needs)i
  551. (to)d(kno)o(w)h(a)0 900 y(sp)q(eci\014c)i(set)e(of)g(things)g(ab)q(out)g(eac)
  552. o(h)h(underlying)h(pac)o(k)m(age.)j(Sp)q(eci\014cally)l(,)e(it)d(needs)h(to)f
  553. (kno)o(w)g(the)g(follo)o(wing:)37 1041 y Fk(\017)30 b Fm(The)15
  554. b(name)h(of)e(the)i(pac)o(k)m(age;)37 1120 y Fk(\017)30 b Fm(The)12
  555. b(list)h(of)f(commands)f(that)h(are)f(needed)i(for)f(c)o(hec)o(kin)h(and)f(c)
  556. o(hec)o(k)o(out)g(op)q(erations)g(and)g(whic)o(h)h(op)q(eration)90
  557. 1182 y(they)i(p)q(erform;)37 1261 y Fk(\017)30 b Fm(What)11
  558. b(\014les)i(are)f(for)g(in)o(ternal)g(use)h(b)o(y)f(the)g(con\014guration)g
  559. (managemen)o(t)f(system)h(\(referred)g(to)f(as)h Fh(precious)90
  560. 1324 y Fm(\014les)k(since)h(they)e(m)o(ust)f(alw)o(a)o(ys)h(exist\);)37
  561. 1403 y Fk(\017)30 b Fm(Ho)o(w)15 b(to)f(tell)i(whether)g(a)f(\014le)h(has)f
  562. (a)g(log;)37 1482 y Fk(\017)30 b Fm(Ho)o(w)15 b(to)f(tell)i(whether)g(a)f
  563. (\014le)h(is)g(up-to-date;)37 1561 y Fk(\017)30 b Fm(Ho)o(w)15
  564. b(to)f(up)q(date)i(the)f(baseline)i(cop)o(y)e(of)g(a)g(\014le;)37
  565. 1640 y Fk(\017)30 b Fm(Ho)o(w)15 b(to)f(register)h(a)g(new)h(\014le)g(with)f
  566. (the)h(system.)62 1798 y(Adding)22 b(supp)q(ort)f(for)f(a)h(new)g
  567. (con\014guration)g(managemen)o(t)f(system)h(is)g(a)g(matter)e(of)i(writing)g
  568. (co)q(de)h(to)0 1861 y(implemen)o(t)f(the)f(ab)q(o)o(v)o(e)f(functions.)35
  569. b(See)20 b(`)p Fi(cm.h)p Fm(')e(for)i(de\014nitions)h(of)e(the)h(appropriate)
  570. g(structures.)33 b(If)20 b(y)o(ou)0 1923 y(wish)d(to)f(add)g(supp)q(ort)h
  571. (for)e(a)h(new)h(con\014guration)f(managemen)o(t)g(pac)o(k)m(age,)g(lo)q(ok)h
  572. (at)e(the)i(implemen)o(tation)g(of)0 1985 y(R)o(CS)j(and)h(SCCS)f(supp)q
  573. (ort.)35 b(T)l(o)20 b(implemen)o(t)i(supp)q(ort)e(for)g(a)g(new)g
  574. (con\014guration)h(managemen)o(t)e(pac)o(k)m(age,)0 2047 y(a)h(source)g(and)g
  575. (header)h(\014le)g(to)e(implemen)o(t)i(the)g(ab)q(o)o(v)o(e)e(functionalit)o
  576. (y)j(m)o(ust)d(b)q(e)i(added.)35 b(This)21 b(\014le)g(\014lls)g(in)0
  577. 2110 y(the)e(\014elds)h(of)f(a)f(structure)h(whic)o(h)h(is)f(returned)h(b)o
  578. (y)e(the)h(one)g(externally)h(callable)h(routine)f(in)f(the)g(\014le:)29
  579. b(the)0 2172 y(register)16 b(routine.)21 b(A)16 b(protot)o(yp)q(e)f(for)g
  580. (this)h(routine)g(should)g(b)q(e)h(added)f(to)f(`)p Fi(cm.h)p
  581. Fm(')f(and)i(a)f(call)i(to)e(it)h(should)g(b)q(e)0 2234 y(placed)h(in)g(`)p
  582. Fi(init.c)p Fm('.)j(In)d(addition,)g(of)e(course,)h(the)g(mak)o(e\014le)h
  583. (will)g(need)g(to)f(b)q(e)g(mo)q(di\014ed)i(so)d(that)g(the)h(\014le)h(is)0
  584. 2296 y(compiled)g(and)f(link)o(ed)h(in)g(to)e(the)g(system.)21
  585. b(No)15 b(other)g(c)o(hanges)h(should)h(b)q(e)f(required)h(for)e(implemen)o
  586. (tation)h(of)0 2359 y(a)i(new)g(con\014guration)h(managemen)o(t)e(pac)o(k)m
  587. (age.)29 b(It)19 b(is)g(p)q(ossible)h(that)d(other)h(c)o(hanges)g(ma)o(y)g(b)
  588. q(e)h(made)f(if)h(the)0 2421 y(con\014guration)d(managemen)o(t)g(pac)o(k)m
  589. (age)g(has)g(some)f(needs)i(that)f(are)g(not)f(handled)j(b)o(y)e(the)g
  590. (curren)o(t)g(in)o(terface.)0 2483 y(If)i(this)f(is)h(the)f(case,)h(extreme)f
  591. (care)g(should)i(b)q(e)e(made)h(to)e(a)o(v)o(oid)h(putting)h(an)o(y)f(pac)o
  592. (k)m(age-sp)q(eci\014c)i(kno)o(wledge)0 2545 y(in)o(to)f(the)h(co)q(de.)30
  593. b(Supp)q(ort)19 b(for)f(a)g(con\014guration)h(managemen)o(t)e(pac)o(k)m(age)i
  594. (should)g(b)q(e)g(implemen)o(ted)i(so)d(that)0 2608 y(BCS)f(will)h(still)g
  595. (compile)h(and)d(run)h(without)g(that)f(con\014guration)h(managemen)o(t)f
  596. (pac)o(k)m(age)g(presen)o(t.)25 b(Lo)q(ok)17 b(at)0 2670 y(supp)q(ort)e(for)g
  597. (R)o(CS)g(and)h(SCCS)f(for)g(one)g(w)o(a)o(y)f(to)h(do)g(this.)p
  598. eop
  599. %%Page: 47 49
  600. 47 48 bop 0 -58 a Fm(App)q(endix)17 b(A:)e(In)o(ternals)1461
  601. b(47)62 183 y(F)l(or)20 b(c)o(hec)o(kin)i(and)f(c)o(hec)o(k)o(out)f(of)h
  602. (\014les,)h(the)f Fi(bcs)f Fm(command)h(itself)g(is)h(used.)37
  603. b(It)20 b(tak)o(es)g(as)g(argumen)o(ts)g(a)0 246 y(command)j(with)g(argumen)o
  604. (ts.)41 b(It)23 b(determines)g(what)f(kind)i(of)e(op)q(eration)h(the)g(giv)o
  605. (en)g(command)f(is)i(with)0 308 y(resp)q(ect)18 b(to)f(the)h(underlying)i
  606. (con\014guration)e(managemen)o(t)f(pac)o(k)m(age)h(so)f(it)h(can)g(kno)o(w)f
  607. (whether)h(it)g(needs)h(to)0 370 y(stage)14 b(\014les)h(or)f(not.)19
  608. b(Once)d(it)e(mak)o(es)g(sure)h(that)e(the)i(necessary)g(prerequisites)g(ha)o
  609. (v)o(e)f(b)q(een)i(met)e(and)h(that)f(this)0 432 y(\014le)k(is)g(eligible)i
  610. (for)d(the)g(sp)q(eci\014ed)j(op)q(eration,)d(it)h(will)h(in)o(v)o(ok)o(e)e
  611. (the)g(underlying)i(con\014guration)f(managemen)o(t)0 495 y(pac)o(k)m(age's)d
  612. (command)g(as)g(passed)g(in)h(on)f(the)h(commandline.)62 634
  613. y(When)e(classifying)h(\014les,)g(BCS)f(m)o(ust)f(b)q(e)h(able)h(to)e
  614. (determine)i(whether)e(a)h(\014le)g(has)g(a)f(history)h(log)g(since)h(this)0
  615. 696 y(determines)f(the)g(default)g(imp)q(ortance)g(of)f(\014les.)20
  616. b(When)14 b(sync)o(hronizing)h(and)e(staging,)g(BCS)h(m)o(ust)f(kno)o(w)g
  617. (what)0 759 y(\014les)19 b(or)f(directories)i(m)o(ust)e(exist)h(in)g(the)g
  618. (staging)f(area)g(for)g(the)g(shared)h(history)f(log)h(supp)q(ort)g(to)e(w)o
  619. (ork.)29 b(In)0 821 y(the)16 b(case)h(of)f(R)o(CS)g(or)g(SCCS,)g(this)h(is)g
  620. (the)f(R)o(CS)h(or)e(SCCS)i(directory)l(.)24 b(It)16 b(is)h(conceiv)m(able)i
  621. (that)c(other)h(\014les)h(or)0 883 y(directories)f(could)g(b)q(e)f(needed)h
  622. (for)e(other)g(con\014guration)h(managemen)o(t)f(pac)o(k)m(ages.)20
  623. b(BCS)15 b(tries)g(to)f(b)q(e)h(general)0 945 y(ab)q(out)k(this,)h(but)g(it)f
  624. (is)h(p)q(ossible)h(this)e(this)h(functionalit)o(y)g(w)o(ould)g(require)g(mo)
  625. q(di\014cation)g(for)f(con\014guration)0 1008 y(managemen)o(t)c(pac)o(k)m
  626. (ages)h(that)f(don't)g(w)o(ork)f(basically)k(lik)o(e)f(R)o(CS.)e(These)h(sp)q
  627. (ecial)i(\014les)e(or)g(directories,)g(whic)o(h)0 1070 y(w)o(e)j(refer)f(to)h
  628. (as)f Fh(precious)p Fm(,)j(are)d(alw)o(a)o(ys)g(imp)q(ortan)o(t)h(and)g
  629. (unstageable.)31 b(This)20 b(cannot)f(b)q(e)g(o)o(v)o(erridden)h(with)0
  630. 1132 y(`)p Fi(.auto_stage)p Fm(')13 b(or)i(`)p Fi(.unimportant)p
  631. Fm(')d(\014les.)62 1272 y(When)f(unstaging)g(\014les,)i(BCS)e(w)o(arns)f(if)h
  632. (a)g(\014le)g(has)g(not)f(b)q(een)i(up)q(dated)g(in)g(the)f(baseline.)20
  633. b(The)11 b(con\014guration)0 1334 y(managemen)o(t)j(pac)o(k)m(age)i(supp)q
  634. (ort)f(m)o(ust)g(include)i(a)e(function)h(to)f(tell)h(this)f(for)g(this)h
  635. (purp)q(ose.)62 1474 y(The)21 b(list)f(of)g(supp)q(orted)h(con\014guration)f
  636. (managemen)o(t)f(pac)o(k)m(ages)h(is)h(determined)g(at)e(compile-time.)37
  637. b(A)0 1536 y(con\014guration)16 b(managemen)o(t)g(pac)o(k)m(age)g(b)q(ecomes)
  638. h(supp)q(orted)f(b)o(y)g(BCS)h(b)o(y)f(b)q(eing)h(registered.)23
  639. b(T)l(o)16 b(register)g(a)0 1598 y(con\014guration)d(managemen)o(t)g(pac)o(k)
  640. m(age,)g(a)g(structure)g(con)o(taining)h(function)h(p)q(oin)o(ters)e(and)h
  641. (other)f(information)0 1660 y(m)o(ust)j(b)q(e)h(passed)g(to)e(the)i(register)
  642. f(function.)25 b(BCS)17 b(enforces)f(that)g(a)g(sp)q(eci\014c)i(baseline)h
  643. (\(p)q(ossibly)e(including)0 1723 y(m)o(ultiple)e(top-lev)o(el)e
  644. (directories\))h(only)f(uses)g(one)g(con\014guration)f(managemen)o(t)g(pac)o
  645. (k)m(age.)19 b(When)13 b(the)g(baseline)0 1785 y(con\014guration)g(\014les)h
  646. (are)f(read)g(at)g(startup,)f(BCS)i(activ)m(ates)f(the)h(information)f(ab)q
  647. (out)g(a)g(sp)q(eci\014c)i(con\014guration)0 1847 y(managemen)o(t)i(pac)o(k)m
  648. (age)g(b)o(y)g(name.)27 b(If)18 b(that)f(con\014guration)g(managemen)o(t)g
  649. (pac)o(k)m(age)g(w)o(as)g(registered,)h(ev)o(ery-)0 1910 y(thing)i(is)g
  650. (\014ne,)h(and)e(BCS)h(can)g(pro)q(ceed)g(without)f(kno)o(wing)h(an)o(y)f(of)
  651. g(the)h(details)g(ab)q(out)f(the)h(con\014guration)0 1972 y(managemen)o(t)14
  652. b(pac)o(k)m(age.)0 2219 y Fl(A.7)33 b(Staging)15 b(and)h(Sync)n(hronization)
  653. 62 2359 y Fm(The)k(staging)f(and)h(sync)o(hronization)g(op)q(erations)g(are)f
  654. (tigh)o(tly)g(in)o(tegrated.)33 b(They)19 b(are)g(de\014ned)i(here)f(in)0
  655. 2421 y(terms)12 b(of)g(eac)o(h)h(other.)19 b(Sync)o(hronization)14
  656. b(of)e(the)h(staging)f(area)g(is)h(the)g(pro)q(cess)g(of)f(assuring)h(that)f
  657. (the)h(con)o(ten)o(ts)0 2483 y(of)f(the)g(staging)f(area)h(are)g(consisten)o
  658. (t)g(with)g(those)g(of)f(the)i(baseline.)20 b(The)12 b(staging)g(area)f
  659. (should)j(alw)o(a)o(ys)d(con)o(tain)0 2545 y(all)k(imp)q(ortan)o(t)e
  660. (baseline)j(\014les)f(either)g(directly)g(or)e(in)i(the)f(form)f(of)h(sym)o
  661. (b)q(olic)h(links.)21 b(The)14 b(only)g(sym)o(b)q(olic)i(links)0
  662. 2608 y(that)h(are)g(allo)o(w)o(ed)h(to)f(app)q(ear)g(in)i(the)e(staging)h
  663. (area)e(are)i(links)h(to)d(their)i(o)o(wn)f(baseline)j(coun)o(terparts,)d
  664. (links)0 2670 y(whose)c(baseline)i(coun)o(terparts)e(are)g(also)h(links)g
  665. (that)f(p)q(oin)o(t)h(to)f(the)g(same)g(place,)i(and)e(links)i(that)e(p)q
  666. (oin)o(t)h(within)p eop
  667. %%Page: 48 50
  668. 48 49 bop 0 -58 a Fm(48)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
  669. (ersion)h(2.0)0 183 y(the)g(staging)f(area)g(to)f(unimp)q(ortan)o(t)i
  670. (\014les.)22 b(The)15 b(reason)h(for)e(allo)o(wing)j(the)e(last)h(case)f(is)h
  671. (that)f(suc)o(h)h(links)h(ma)o(y)0 246 y(b)q(e)e(mak)o(e\014le)f(targets.)k
  672. (\(F)l(or)c(example,)g(if)h(a)e(mak)o(e\014le)i(causes)f(the)g(creation)h(of)
  673. e(an)h(executable)i(\014le)f(along)f(with)0 308 y(sev)o(eral)k(links)g(to)f
  674. (it,)h(those)f(links)i(will)g(only)f(ha)o(v)o(e)f(baseline)i(coun)o(terparts)
  675. d(if)i(the)g(target)e(has)h(b)q(een)h(built)h(in)0 370 y(the)e(baseline.)26
  676. b(Ev)o(en)17 b(if)g(they)g(do)f(ha)o(v)o(e)h(baseline)h(coun)o(terparts,)e
  677. (they)h(will)h(not)e(b)q(e)i(imp)q(ortan)o(t.)24 b(Ev)o(en)16
  678. b(so,)h(it)0 432 y(w)o(ould)f(b)q(e)f(undesirable)j(for)c Fi(sync_staging)g
  679. Fm(to)g(remo)o(v)o(e)h(those)g(links.\))62 571 y(The)c(follo)o(wing)g(steps)g
  680. (are)f(p)q(erformed)h(b)o(y)f(the)h Fi(sync_staging)e Fm(command.)18
  681. b(All)12 b(steps)e(are)h(done)g(recursiv)o(ely)0 633 y(if)16
  682. b(requested.)37 772 y Fk(\017)30 b Fm(V)l(erify)12 b(that)f(all)h
  683. (directories)g(requested)g(are)e(in)j(the)e(staging)g(area.)18
  684. b(Stop)11 b(if)g(an)o(y)g(of)g(them)g(are)g(not)g(suitable.)37
  685. 848 y Fk(\017)30 b Fm(Examine)16 b(requested)f(directories')h(baseline)h
  686. (coun)o(terparts.)37 924 y Fk(\017)30 b Fm(F)l(or)17 b(eac)o(h)h(imp)q(ortan)
  687. o(t)g(\014le)g(in)h(the)f(baseline)i(that)d(is)h(not)g(mark)o(ed)f(\(in)o
  688. (ternally\))i(as)e Fi(no_mirror)p Fm(,)1811 908 y Ff(1)1846
  689. 924 y Fm(mak)o(e)90 986 y(sure)e(the)h(corresp)q(onding)g(\014le)g(exists)g
  690. (in)g(the)f(staging)g(area.)115 1063 y Fk(\000)30 b Fm(If)15
  691. b(the)h(\014le)g(in)g(the)f(baseline)i(is)f(a)f(\014le)h(and)f(the)h(\014le)g
  692. (in)g(the)f(staging)g(area)g(is)g(a)g(\014le,)h(do)f(nothing.)115
  693. 1139 y Fk(\000)30 b Fm(If)16 b(the)f(\014le)i(in)f(the)g(baseline)h(is)f(a)f
  694. (\014le)i(and)f(the)f(\014le)i(in)f(the)g(staging)f(area)g(do)q(esn't)g
  695. (exist)h(or)f(is)h(a)g(link)180 1201 y(to)h(other)g(than)g(its)h(baseline)h
  696. (coun)o(terpart,)e(mak)o(e)g(it)h(a)f(link)i(to)e(its)h(baseline)h(coun)o
  697. (terpart.)26 b(If)18 b(the)180 1263 y(\014le)e(has)f(autostage)f(status,)g
  698. (stage)g(the)i(\014le.)115 1340 y Fk(\000)30 b Fm(If)21 b(the)f(\014le)i(in)f
  699. (the)g(baseline)h(is)f(prohibited)h(from)d(b)q(eing)j(staged)e(and)h(the)f
  700. (\014le)i(is)f(staged)f(in)h(the)180 1402 y(staging)15 b(area,)f(prin)o(t)i
  701. (a)e(w)o(arning)i(to)e(that)h(e\013ect.)20 b Fh(Do)15 b(not)g(remo)o(v)o(e)f
  702. (the)h(\014le)i(in)f(the)f(staging)g(area.)115 1478 y Fk(\000)30
  703. b Fm(If)19 b(the)g(\014le)h(in)g(the)f(baseline)i(is)f(a)e(link)j(and)e(the)g
  704. (\014le)h(within)g(the)f(staging)g(area)f(is)i(a)e(\014le,)j(prin)o(t)e(a)180
  705. 1540 y(w)o(arning)c(to)g(that)f(e\013ect.)21 b Fh(Do)14 b(not)h(remo)o(v)o(e)
  706. g(the)g(\014le)h(in)g(the)f(staging)g(area.)115 1617 y Fk(\000)30
  707. b Fm(If)14 b(the)g(\014le)g(in)h(the)e(baseline)j(is)e(a)f(link)i(and)f(the)g
  708. (\014le)g(in)h(the)f(staging)f(area)g(is)h(a)f(link)i(or)e(do)q(es)h(not)g
  709. (exist)217 1693 y Fk(\017)30 b Fm(If)17 b(the)g(baseline)h(\014le)g(is)f(a)f
  710. (link)i(to)e(outside)h(the)g(baseline,)h(mak)o(e)f(the)f(staging)h(area)f
  711. (\014le)h(a)g(link)270 1755 y(to)e(the)g(baseline)i(\014le.)217
  712. 1831 y Fk(\017)30 b Fm(If)15 b(the)f(baseline)i(\014le)f(is)g(a)f(link)i(to)e
  713. (within)h(the)g(baseline,)h(mak)o(e)d(the)i(staging)f(area)f(\014le)j(a)e
  714. (link)i(to)270 1894 y(the)f(corresp)q(onding)h(\014le)h(in)f(the)f(staging)g
  715. (area.)217 1970 y Fk(\017)30 b Fm(If)13 b(the)g(\014le)g(is)h(a)e(dangling)i
  716. (link,)g(remo)o(v)o(e)e(the)h(staging)f(area)g(link)i(if)f(one)g(exists.)20
  717. b(\(Dangling)13 b(links)270 2032 y(without)i(baseline)i(coun)o(terparts)e
  718. (are)f(also)i(remo)o(v)o(ed,)e(but)h(not)g(in)h(this)g(step.\))37
  719. 2108 y Fk(\017)30 b Fm(Re-examine)15 b(the)e(staging)f(area)g(directories)i
  720. (to)f(tak)o(e)f(in)o(to)h(accoun)o(t)f(the)h(new)g(\014les)h(that)e(could)i
  721. (ha)o(v)o(e)f(b)q(een)90 2171 y(created.)37 2247 y Fk(\017)30
  722. b Fm(F)l(or)12 b(eac)o(h)h(link)h(in)f(the)g(staging)f(area)g(that)f(is)i
  723. (unimp)q(ortan)o(t,)g(do)g(nothing)g(if)g(it)g(p)q(oin)o(ts)g(to)e(an)i
  724. (unimp)q(ortan)o(t)90 2309 y(\014le)21 b(within)g(the)f(staging)g(area.)34
  725. b(Otherwise,)22 b(remo)o(v)o(e)d(it.)34 b(The)21 b(reasoning)f(here)g(is)h
  726. (that,)f(in)h(general,)90 2372 y(unimp)q(ortan)o(t)14 b(links)i(should)g(b)q
  727. (e)f(remo)o(v)o(ed.)k(This)c(w)o(a)o(y)l(,)e(if)i(an)f(in)o(ternal)h(link)h
  728. (is)f(remo)o(v)o(ed)f(in)h(the)g(baseline,)90 2434 y Fi(sync_staging)c
  729. Fm(will)j(cause)f(it)f(to)g(b)q(e)h(remo)o(v)o(ed)f(in)i(the)e(staging)g
  730. (area)g(as)g(w)o(ell)i(if)e(it)h(w)o(as)f(originally)i(created)90
  731. 2496 y(b)o(y)g Fi(sync_staging)p Fm(.)k(The)d(exception)h(w)o(ould)f(b)q(e)g
  732. (in)o(ternal)g(links)h(that)e(w)o(ere)h(created)f(man)o(ually)h(to)f(other)90
  733. 2558 y(unimp)q(ortan)o(t)h(\014les.)21 b Fi(sync_staging)14
  734. b Fm(should)i(lea)o(v)o(e)f(these)h(alone.)p 0 2614 600 2 v
  735. 21 2652 a Ff(1)62 2668 y Fm(Only)h(in)o(ternal)f(\014les)g(are)f(mark)o(ed)f
  736. (this)i(w)o(a)o(y)l(.)p eop
  737. %%Page: 49 51
  738. 49 50 bop 0 -58 a Fm(App)q(endix)17 b(A:)e(In)o(ternals)1461
  739. b(49)62 183 y(F)l(or)17 b(full)h(details,)g(read)f(the)g(source.)25
  740. b(The)17 b(heart)g(of)f(the)h(algorithms)g(are)g(implemen)o(ted)h(in)g(`)p
  741. Fi(staging.c)p Fm(')0 246 y(in)e(the)f(routine)h Fi(bcsi_sync_staging_dir)c
  742. Fm(and)k Fi(sync_file)p Fm(.)62 384 y(Staging)f(a)f(\014le)h(or)f(directory)h
  743. (is)g(simply)g(replacing)h(a)e(sym)o(b)q(olic)i(link)g(in)f(the)g(staging)f
  744. (area)g(with)g(an)h(actual)0 446 y(\014le)20 b(or)f(directory)l(.)33
  745. b(In)20 b(order)f(for)g(a)g(\014le)i(to)d(b)q(e)i(a)f(candidate)i(for)d(b)q
  746. (eing)j(staged,)f(it)f(m)o(ust)g(b)q(e)h(a)f(link)i(to)e(its)0
  747. 508 y(baseline)g(coun)o(terpart)e(\(whic)o(h)i(m)o(ust)e(exist\))h(and)g(m)o
  748. (ust)f(not)g(b)q(e)h(explicitly)j(forbidden)e(from)e(b)q(eing)i(staged.)0
  749. SHAR_EOF
  750. true || echo 'restore of bcs-2.0/doc/bcs.PS failed'
  751. fi
  752. echo 'End of bcs-2.0 part 17'
  753. echo 'File bcs-2.0/doc/bcs.PS is continued in part 18'
  754. echo 18 > _shar_seq_.tmp
  755. exit 0
  756.