home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sources.unix
- From: ejb@ERA.COM (Jay Berkenbilt)
- Subject: v28i018: bcs-2.0 - A Baseline Configuration System, Part17/25
- References: <1.764985670.1461@gw.home.vix.com>
- Sender: unix-sources-moderator@gw.home.vix.com
- Approved: vixie@gw.home.vix.com
-
- Submitted-By: ejb@ERA.COM (Jay Berkenbilt)
- Posting-Number: Volume 28, Issue 18
- Archive-Name: bcs-2.0/part17
-
- #!/bin/sh
- # this is bcs.17 (part 17 of bcs-2.0)
- # do not concatenate these parts, unpack them in order with /bin/sh
- # file bcs-2.0/doc/bcs.PS continued
- #
- if test ! -r _shar_seq_.tmp; then
- echo 'Please unpack part 1 first!'
- exit 1
- fi
- (read Scheck
- if test "$Scheck" != 17; then
- echo Please unpack part "$Scheck" next!
- exit 1
- else
- exit 0
- fi
- ) < _shar_seq_.tmp || exit 1
- if test ! -f _shar_wnt_.tmp; then
- echo 'x - still skipping bcs-2.0/doc/bcs.PS'
- else
- echo 'x - continuing file bcs-2.0/doc/bcs.PS'
- sed 's/^X//' << 'SHAR_EOF' >> 'bcs-2.0/doc/bcs.PS' &&
- (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.)
- 32 b(In)20 b(this)g(situation,)h(user)e(`)p Fi(B)p Fm(')f(con)o(tacts)h(user)
- g(`)p Fi(A)p Fm(')g(to)f(discuss)j(the)e(nature)g(of)0 508
- y(their)e(c)o(hanges.)25 b(If)17 b(user)g(`)p Fi(B)p Fm(')e(needs)j(to)e(mak)
- 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)
- 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
- 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
- (ving)h(`)p Fi(B)p Fm(')f(get)g(in)o(v)o(olv)o(ed.)28 b(\(An)17
- b(example)i(w)o(ould)0 632 y(b)q(e)e(correcting)g(a)f(t)o(yp)q(ographical)h
- (error)f(in)i(a)e(commen)o(t,)g(reordering)h(include)i(directiv)o(es,)f
- (etc.\))24 b(If)16 b(`)p Fi(B)p Fm(')g(really)0 694 y(needs)f(to)e(c)o(hange)
- h(`)p Fi(a.c)p Fm(')f(at)g(the)h(same)g(time)g(as)g(`)p Fi(A)p
- 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
- (`)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
- (without)g(a)g(lo)q(c)o(k,)g(man)o(ually)h(giv)o(e)g(him)f(or)g(herself)h
- (write)f(p)q(ermission,)i(and)e(c)o(hec)o(k)g(in)h(an)o(y)0
- 819 y(c)o(hanges)12 b(made)h(in)g(the)g(new)g(branc)o(h)f(`)p
- 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
- (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
- 881 y(b)q(oth)17 b(`)p Fi(A)p Fm(')f(and)h(`)p Fi(B)p Fm('.)23
- b(W)l(e)17 b(will)h(ignore)f(this)g(case)g(for)f(no)o(w)g(and)h(assume)g
- (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
- 943 y(`)p Fi(a.c)p Fm('.)62 1081 y(No)o(w)c(supp)q(ose)i(that)d(`)p
- Fi(B)p Fm(')h(\014nishes)i(making)f(c)o(hanges)f(and)h(determines)h(that)e
- (those)g(c)o(hanges)h(are)f(stable)h(and)0 1143 y(ready)f(to)g(b)q(e)i(put)e
- (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(`)
- 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
- (c)o(hanges)f(as)0 1205 y(revision)j(`)p Fi(1.5)p Fm('.)i(`)p
- 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
- Fi(1.4)p Fm('.)19 b(When)14 b(`)p Fi(B)p Fm(')g(creates)g(`)p
- Fi(1.5)p Fm(')f(and)i(up)q(dates)g(the)0 1268 y(baseline,)i(`)p
- Fi(A)p Fm(')d(should)j(obtain)e(a)g(lo)q(c)o(k)h(on)g(revision)g(`)p
- Fi(1.5)p Fm(')e(and)i(merge)f(the)h(c)o(hanges)f(from)g(`)p
- 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)
- h(w)o(orking)f(v)o(ersion.)623 1313 y Ff(1)663 1330 y Fm(This)h(new)g(merged)
- f(\014le)i(no)o(w)e(b)q(egins)i(a)e(new)h(branc)o(h)f(of)h(`)p
- Fi(1.5)p Fm('.)j(User)d(`)p Fi(A)p Fm(')0 1392 y(can)f(con)o(tin)o(ue)h
- (making)g(c)o(hanges)f(from)f(here.)20 b(The)c(`)p Fi(1.4.1)p
- Fm(')e(branc)o(h)h(is)h(no)o(w)e(defunct.)62 1530 y(Note)19
- b(that)f(if)i(`)p Fi(A)p Fm(')e(\014nishes)i(\014rst,)g(`)p
- Fi(A)p Fm(')e(can)h(simply)h(notify)f(`)p Fi(B)p Fm(')f(and)i(then)f(up)q
- (date)g(the)h(baseline.)33 b(`)p Fi(B)p Fm(')18 b(can)0 1592
- y(then)e(acquire)g(a)f(lo)q(c)o(k)h(on)f(revision)i(`)p Fi(1.5)p
- Fm(',)d(merge)h(in)h(his)g(c)o(hanges,)f(and)h(con)o(tin)o(ue)g(editing.)22
- b(BCS)15 b(v)o(ersion)h(2.0)0 1654 y(w)o(arns)f(during)h Fi(update_baseline)d
- 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
- (dated.)22 b(This)16 b(should)g(alert)g(the)0 1716 y(user)h(doing)h(the)f(up)
- 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
- (users)h(that)f(there)i(are)e(c)o(hanges)h(to)f(b)q(e)0 1779
- 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
- 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
- (up)q(date)i(c)o(hanges?)20 b(`)p Fi(A)p Fm(')0 1841 y(migh)o(t)12
- 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
- (activ)o(e)g(branc)o(hes)h(of)f(revision)i(`)p Fi(1.4)p Fm('.)j(One)d(p)q
- (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)
- 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)
- 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
- (situation)f(exists)h(and)g(require)g(con\014rmation)f(from)g(the)g(user)h(b)
- q(efore)f(con)o(tin)o(uing)i(with)0 2028 y(the)15 b(up)q(date.)21
- 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
- (author.)0 2240 y Fg(9.1.1.4)30 b(Implications)62 2377 y Fm(The)15
- b(ab)q(o)o(v)o(e)f(situation)h(is)h(quite)f(complex,)g(but)g(the)g(author)f
- (asserts)f(that)h(the)h(complexit)o(y)g(of)g(p)q(erforming)0
- 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
- (ould)g(b)q(e)h(if)g(merges)e(w)o(ere)h(further)g(dela)o(y)o(ed.)26
- b(The)17 b(ab)q(o)o(v)o(e)g(scenario)p 0 2489 600 2 v 21 2527
- 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
- (this)g(purp)q(ose)h(if)f(the)g(merges)g(are)g(simple.)21 b(If)14
- b(they)g(are)g(more)f(com-)62 2606 y(plex,)g(the)f Fi(emerge)f
- Fm(facilit)o(y)h(that)f(comes)h(with)g(GNU)f(Emacs)g(v)o(ersion)h(19)f(can)h
- (greatly)f(simplify)j(p)q(erforming)62 2668 y(suc)o(h)i(merges.)p
- eop
- %%Page: 36 38
- 36 37 bop 0 -58 a Fm(36)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
- (ersion)h(2.0)0 183 y(essen)o(tially)k(describ)q(es)h(incremen)o(tal)f
- (merging.)31 b(With)19 b(this)h(scenario,)f(all)h(merges)f(are)f(p)q
- (erformed)i(as)e(so)q(on)0 246 y(as)e(p)q(ossible)i(rather)e(than)g(as)h
- (late)f(as)g(p)q(ossible.)26 b(The)16 b(ab)q(o)o(v)o(e)g(discipli)q(ne)j
- (should)f(also)e(reduce)i(the)e(frequency)0 308 y(with)21 b(whic)o(h)h(p)q
- (eople)g(mak)o(e)e(gratuitous)g(c)o(hanges)h(to)f(\014les)i(in)g(the)e
- (baseline)j(when)e(those)g(c)o(hanges)f(can)h(b)q(e)0 370 y(dela)o(y)o(ed.)g
- (F)l(or)14 b(example,)i(it)f(w)o(ould)h(b)q(e)g(appropriate)f(to)f(go)h
- (through)g(the)g(ab)q(o)o(v)o(e)g(hassle)g(if)h(something)f(simple)0
- 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
- (non-con\015icting)j(functionalities)h(implemen)o(ted)f(in)f(the)g(same)f
- (\014le)0 495 y(b)q(oth)e(need)h(to)e(b)q(e)h(c)o(hanged.)20
- 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
- (idea)g(to)f(go)h(through)f(the)h(ab)q(o)o(v)o(e)f(if)i(one)f(user)0
- 557 y(w)o(an)o(ted)i(to)g(reinden)o(t)h(a)g(\014le)g(that)f(another)g(user)h
- (w)o(as)e(w)o(orking)i(on.)k(In)d(this)f(case,)f(the)g(reinden)o(tation)i
- (should)0 619 y(b)q(e)h(p)q(erformed)f(separately)g(when)h(no)f(other)g
- (branc)o(hes)g(exist)h(or)f(should)h(b)q(e)g(p)q(erformed)f(b)o(y)g(the)g
- (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
- 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
- (e)h(isolated)g(via)g(the)g(con\014guration)0 744 y(managemen)o(t)k(system)g
- (from)f(other)h(c)o(hanges)h(that)e(are)h(made)h(at)f(the)g(same)g(time)h(\()
- p Fh(i.e.)p Fm(,)f(c)o(hec)o(k)h(the)f(\014le)i(out,)0 806
- y(reinden)o(t,)d(and)f(c)o(hec)o(k)h(in\).)0 1030 y Fl(9.2)33
- b(Supp)r(ort)16 b(for)f(a)g(Multi-platform)j(En)n(vironmen)n(t)62
- 1167 y Fm(Although)g(supp)q(orting)f(a)g(m)o(ulti-platform)g(dev)o(elopmen)o
- (t)h(en)o(vironmen)o(t)f(is)h(b)q(est)f(done)g(outside)h(the)f(con-)0
- 1229 y(\014guration)f(managemen)o(t)f(system,)h(there)g(are)g(certain)h
- (instances)g(in)g(whic)o(h)f(the)h(use)f(of)g(BCS)g(can)h(help)g(ease)0
- 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
- (hitecture.)20 b(This)14 b(section)h(describ)q(es)g(an)f(example)h(of)e(ho)o
- (w)h(to)0 1354 y(approac)o(h)g(this)h(problem)f(with)h(BCS.)f(F)l(or)g(an)g
- (example)h(of)f(ho)o(w)f(to)h(approac)o(h)g(this)g(problem)h(with)g(mak)o
- (e\014les,)0 1416 y(see)g(the)h(sample)g(baseline)h(included)g(with)f(the)f
- (BCS)h(distribution)g(in)g(`)p Fi(unsupported/sample-baseline)o
- Fm('.)62 1553 y(Supp)q(ose)e(a)f(fairly)h(stable)f(system)g(exists)h(on)f(a)f
- (single)j(platform.)k(The)13 b(mak)o(e\014les)h(\(or)e(whatev)o(er)g(is)i
- (used)g(to)0 1615 y(build)e(the)f(system\))f(and)g(the)h(system)f(sources)g
- (are)g(not)g(set)g(up)h(to)f(supp)q(ort)h(easy)f(builds)i(on)f(m)o(ultiple)h
- (platforms.)0 1678 y(Assume)17 b(that)f(all)i(the)f(\014les)h(required)g(to)f
- (build)h(and)g(run)f(the)g(system)f(are)h(con)o(trolled)h(in)f(a)g(v)o
- (ersion)g(con)o(trol)0 1740 y(system)12 b(that)g(is)i(supp)q(orted)f(b)o(y)g
- (BCS.)f(In)i(this)f(situation,)g(a)g(p)q(ort)f(can)h(b)q(e)h(done)f(simply)h
- (b)o(y)f(making)g(the)g(stable)0 1802 y(source)f(tree)f(in)o(to)h(the)g(BCS)g
- (baseline.)20 b(A)12 b(staging)f(area)g(can)h(then)g(b)q(e)h(set)e(up)h(in)h
- (whic)o(h)f(to)f(build)j(the)e(system)f(on)0 1864 y(another)k(platform.)k
- (Unless)d(the)f(build)i(pro)q(cedure)f(is)f(in)o(tegrated)g(with)g(BCS,)g(it)
- g(will)i(b)q(e)e(necessary)g(to)g(stage)0 1927 y(all)e(directories)h(in)f
- (this)g(staging)f(area)g(that)g(will)i(con)o(tain)f(ob)s(ject)e(\014les)j(or)
- e(other)g(arc)o(hitecture-dep)q(enden)o(t)i(\014les.)0 1989
- y(The)e(sample)g(baseline)i(included)h(with)d(the)g(BCS)g(distribution)h
- (includes)h(mak)o(e\014les)f(that)e(handle)i(these)f(details)0
- 2051 y(automatically)l(.)31 b(Once)20 b(the)e(necessary)h(directories)h(ha)o
- (v)o(e)e(b)q(een)i(staged,)f(the)g(staging)f(area)g(has)g(essen)o(tially)0
- 2114 y(the)f(same)g(structure)h(as)e(the)i(baseline)h(except)f(that)e(the)i
- (source)f(\014les)h(and)g(`)p Fi(RCS)p Fm(')e(or)h(`)p Fi(SCCS)p
- Fm(')f(directories)i(are)0 2176 y(sym)o(b)q(olic)g(links.)27
- 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
- (c)o(hec)o(k)g(out)g(\014les,)h(mak)o(e)f(c)o(hanges,)g(and)0
- 2238 y(test)c(the)h(results)g(b)q(efore)h(merging)f(the)g(patc)o(hed)g(co)q
- (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)
- q(e)f(p)q(ossible)0 2300 y(to)e(use)i(the)f(staging)f(area)h(to)f(build)j(on)
- e(the)g(original)h(platform)e(to)h(mak)o(e)f(sure)h(that)f(the)h(c)o(hanges)g
- (didn't)h(break)0 2363 y(the)f(previous)h(system.)19 b(Once)14
- b(the)f(p)q(ort)g(had)g(b)q(een)i(completed)f(and)f(tested,)g(the)h(baseline)
- 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
- (e)h(complete.)p eop
- %%Page: 37 39
- 37 38 bop 0 -58 a Fm(Chapter)15 b(10:)k(P)o(ossible)d(F)l(uture)g(Enhancemen)
- o(ts)1041 b(37)0 183 y Fj(10)41 b(P)n(ossible)14 b(F)-7 b(uture)15
- b(Enhancemen)n(ts)62 358 y Fm(This)23 b(section)f(describ)q(es)h(a)f(few)f
- (ideas)h(for)g(future)f(expansion)i(of)e(BCS.)h(These)g(features,)g(if)g
- (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
- (but)f(will)i(probably)f(still)h(b)q(e)f(part)f(of)g(ma)s(jor)f(v)o(ersion)i
- (2.)33 b(These)0 482 y(c)o(hanges)16 b(could)g(b)q(e)h(made)e(without)h
- (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
- (without)f(radically)0 544 y(c)o(hanging)h(the)f(seman)o(tics)g(of)g
- (existing)h(commands.)0 756 y Fl(10.1)32 b(Hierarc)n(hical)17
- b(Staging)f(Areas)62 893 y Fm(In)e(BCS)g(v)o(ersion)g(2.0,)f(the)g
- (baseline/staging)i(area)e(structure)g(is)h(t)o(w)o(o-tiered:)19
- b(the)13 b(baseline)j(is)e(the)f(author-)0 956 y(itativ)o(e)j(cop)o(y)f(of)g
- (the)g(con)o(trolled)h(\014les,)g(and)g(the)f(staging)g(areas)g(are)g(all)h
- (equal)g(and)g(all)g(inherit)h(directly)g(from)0 1018 y(the)g(baseline.)25
- b(Certain)16 b(assumptions)h(are)f(made)h(ab)q(out)f(the)g(baseline)j
- (including)g(that)d(the)g(`)p Fi(RCS)p Fm(')f(or)h(`)p Fi(SCCS)p
- Fm(')0 1080 y(directories)g(are)f(actually)h(directories)g(and)g(that)e(the)h
- (baseline)i(is)f(self-con)o(tained.)62 1217 y(There)h(are)f(man)o(y)g
- (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
- (e)g(a)h(hierarc)o(hical)h(system)e(of)g(staging)0 1279 y(areas.)i(In)12
- b(this)f(paradigm,)h(there)f(w)o(ould)h(still)g(b)q(e)g(a)f(single,)i
- (authoritativ)o(e)e(baseline.)20 b(Staging)11 b(areas,)g(ho)o(w)o(ev)o(er,)0
- 1342 y(could)19 b(either)f(inherit)h(directly)g(from)d(the)i(baseline,)i(or)d
- (they)g(could)i(inherit)g(from)d(other)i(staging)f(areas.)26
- b(A)0 1404 y(command)21 b(\(p)q(erhaps)g(called)i Fi(promote)p
- 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)
- g(to)f Fi(update_)0 1466 y(baseline)d Fm(except)h(that)f(it)h(w)o(ould)g
- (promote)f(a)h(\014le)h(up)f(one)g(lev)o(el)h(in)g(the)f(staging)f(area)g
- (hierarc)o(h)o(y)l(.)32 b(If)19 b(one)0 1528 y(staging)g(area)g(inherits)i
- (from)d(another,)i(the)f(inheritance)j(could)e(b)q(e)g(set)f(up)h(using)g(a)g
- (con\014guration)f(\014le)i(at)0 1591 y(the)f(top-lev)o(el)h(of)f(the)g
- (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
- Fi(.baseline_path)p Fm(')d(\014le)k(is)f(used)h(no)o(w.)0 1653
- 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
- (alidation)i(to)d(mak)o(e)g(sure)h(that)f(the)h(giv)o(en)g(staging)0
- 1715 y(area)d(ev)o(en)o(tually)h(p)q(oin)o(ts)f(bac)o(k)g(to)g(the)g
- (baseline.)22 b(There)14 b(could)h(b)q(e)g(sev)o(eral)f(p)q(ossible)i
- (applications)g(for)e(suc)o(h)g(a)0 1777 y(setup.)20 b(Some)15
- b(are)g(considered)i(here.)0 1973 y Fg(10.1.1)29 b(In)n(tegration)15
- b(of)g(Changes)g(in)g(Tw)n(o)g(Staging)g(Areas)62 2110 y Fm(In)i(the)f
- (curren)o(t)g(BCS)h(paradigm,)e(eac)o(h)i(staging)e(area)h(is)h(generally)g
- (main)o(tained)g(b)o(y)f(a)g(single)h(dev)o(elop)q(er.)0 2172
- y(Changes)j(are)f(made)h(and)h(tested)e(in)i(this)g(staging)e(area.)34
- b(Once)21 b(they)f(are)f(stable,)j(the)e(\014les)g(are)g(up)q(dated)0
- 2234 y(directly)15 b(in)o(to)e(the)g(baseline.)21 b(One)14
- b(can)g(easily)g(imagine)g(situations)g(in)g(whic)o(h)g(a)f(ma)s(jor)f(piece)
- j(of)e(functionalit)o(y)0 2296 y(in)i(a)g(system)f(is)h(b)q(eing)h(c)o
- (hanged,)f(and)g(more)f(than)g(one)h(dev)o(elop)q(er)h(w)o(orks)e(on)g
- (di\013eren)o(t)i(parts)e(of)h(the)f(c)o(hange.)0 2359 y(Although)20
- 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
- (some)f(testing)h(in)g(his)h(or)e(her)h(priv)m(ate)g(staging)0
- 2421 y(area,)e(a)g(separate)g(staging)g(area)g(ma)o(y)f(b)q(e)i(needed)h(to)e
- (do)g(some)g(in)o(tegration)g(testing)h(b)q(efore)f(imp)q(osing)i(the)0
- 2483 y(c)o(hanges)f(on)h(the)g(baseline.)34 b(In)20 b(the)g(curren)o(t)f(BCS)
- h(implemen)o(tation,)h(this)f(can)g(b)q(e)g(done,)h(but)e(it)h(requires)0
- 2545 y(man)o(ually)15 b(c)o(hec)o(king)f(out)f(the)h(correct)g(v)o(ersions)g
- (of)f(\014les)i(in)f(the)g(new)g(staging)f(area.)19 b(In)14
- b(a)g(BCS)g(that)f(supp)q(orts)0 2608 y(hierarc)o(hical)i(staging)e(areas,)g
- (eac)o(h)h(dev)o(elop)q(er)h(w)o(ould)e(merely)i(reparen)o(t)e(his)h(or)f
- (her)h(staging)f(area,)g(run)h Fi(sync_)0 2670 y(staging)p
- Fm(,)h(and)i(then)g(promote)e(\014les)j(that)e(are)g(ready)g(for)g(in)o
- (tegration.)24 b(In)o(tegration)16 b(could)h(b)q(e)g(done)g(in)h(this)p
- eop
- %%Page: 38 40
- 38 39 bop 0 -58 a Fm(38)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
- (ersion)h(2.0)0 183 y(sp)q(ecial)j(staging)f(area,)f(and)h(then,)g(when)g(c)o
- (hanges)g(are)f(tested,)h(in)o(tegrated,)g(and)g(sho)o(wn)f(to)g(b)q(e)i
- (stable,)f(the)0 246 y(baseline)f(could)f(b)q(e)g(up)q(dated.)62
- 387 y(Suc)o(h)23 b(in)o(tegration)g(staging)f(areas)f(could)j(b)q(e)f
- (created)f(on)g(the)h(\015y)f(for)g(particular)h(purp)q(oses,)h(or)e(they)0
- 449 y(could)d(b)q(e)g(in)f(place)h(for)f(the)g(duration)g(of)g(a)f(dev)o
- (elopmen)o(t)i(e\013ort.)28 b(One)19 b(can)f(imagine)h(situations)f(in)h
- (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
- (ha)o(v)o(e)f(access)h(to)f(up)q(date)h(the)f(staging)g(area)g(that)g(is)h
- (the)f(paren)o(t)g(of)g(their)0 574 y(individual)f(staging)d(areas,)f(but)h
- (that)f(only)i(more)e(exp)q(erienced)j(dev)o(elop)q(ers)g(or)d(baseline)i
- (administrators)f(could)0 636 y(up)q(date)19 b(the)f(baseline.)30
- 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
- (c)o(hanges)h(for)g(thorough)f(in)o(tegration)0 699 y(testing)e(without)g(in)
- o(terv)o(en)o(tion,)h(but)f(could)h(still)h(b)q(e)f(denied)h(write)e(access)g
- (to)g(the)g(baseline.)0 948 y Fg(10.1.2)29 b(Main)n(tenance)16
- b(of)f(Multiple)g(Revisions)h(of)f(Soft)n(w)n(are)62 1090 y
- 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
- (area)g(inherit)i(from)e(another,)h(then)g(it)g(w)o(ould)g(automatically)0
- 1152 y(ha)o(v)o(e)18 b(the)h(abilit)o(y)g(to)f(supp)q(ort)h(baselines)h
- (whose)e(`)p Fi(RCS)p Fm(')g(or)g(`)p Fi(SCCS)p Fm(')f(directories)i(are)f
- (sym)o(b)q(olic)i(links.)31 b(If)19 b(the)0 1214 y(additional)f(feature)e(of)
- g(supp)q(orting)h(default)g(revisions)g(for)f(a)g(staging)f(area)h(w)o(ere)g
- (supp)q(orted,)h(then)g(a)f(single)0 1277 y(set)k(of)g(v)o(ersion)g(con)o
- (trol)g(logs)g(could)i(underlie,)h(sa)o(y)l(,)e(a)e(main)o(tenance)i(or)f
- (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
- (dev)o(elopmen)o(t)h(area)f(for)g(v)o(ersion)g(2.)32 b(All)21
- b(users)e(who)g(are)g(w)o(orking)g(main)o(taining)i(v)o(ersion)e(1)0
- 1401 y(could)d(inherit)g(from)e(a)g(sp)q(ecial)j(staging)d(area)g(that)g(has)
- h(v)o(ersion)g(1)f(as)g(its)h(default,)g(and)g(all)h(users)f(w)o(orking)f(on)
- 0 1463 y(new)j(dev)o(elopmen)o(t)h(could)g(inherit)g(from)e(the)h(baseline)i
- (directly)f(or)e(from)g(another)h(staging)f(area)h(set)f(up)i(for)0
- 1526 y(v)o(ersion)f(2)f(dev)o(elopmen)o(t.)24 b(Exactly)17
- 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
- (it)f(w)o(ould)h(probably)g(b)q(e)0 1588 y(based)e(on)g(ha)o(ving)g(BCS)g
- (automatically)g(sp)q(ecify)i(a)d(revision)i(when)f(c)o(hec)o(king)h(\014les)
- g(in)g(or)e(out)g(based)h(on)g(some)0 1650 y(information)g(in)h(a)f(p)q
- (er-staging-area)g(con\014guration)h(\014le.)0 1917 y Fl(10.2)32
- b(Secure)16 b(Baseline)62 2058 y Fm(Dep)q(ending)g(on)d(the)h(size)g(of)f(a)g
- (pro)s(ject)g(and)h(on)f(other)h(constrain)o(ts,)f(it)g(is)h(sometimes)g
- (desirable)h(to)e(restrict)0 2120 y(who)18 b(has)h(what)f(access)h(to)f(the)h
- (baseline.)32 b(One)19 b(could)h(divide)h(securit)o(y)e(lev)o(els)h(of)e(the)
- h(baseline)h(in)o(to)f(these)0 2183 y(categories:)37 2324 y
- Fk(\017)30 b Fm(All)18 b(users)f(ha)o(v)o(e)f(write-access)i(to)e(the)h
- (baseline)i(directories.)25 b(No)17 b(restrictions)g(are)g(put)g(up)q(on)g
- (who)g(can)90 2387 y(c)o(hec)o(k)e(\014les)i(in)f(or)e(out,)h(up)q(date)h
- (the)f(baseline,)h(or)f(register)g(new)h(\014les.)37 2466 y
- Fk(\017)30 b Fm(Only)15 b(authorized)f(users)g(can)f(c)o(hec)o(k)h(\014les)h
- (in,)f(register)g(\014les,)g(or)f(up)q(date)h(the)g(baseline,)h(but)f(an)o(y)
- f(user)h(can)90 2528 y(c)o(hec)o(k)h(\014les)i(out.)37 2608
- y Fk(\017)30 b Fm(Only)16 b(authorized)f(users)f(can)h(p)q(erform)f(an)o(y)g
- (op)q(erations)h(that)f(require)h(mo)q(di\014cation)h(of)e(the)g(baseline)i
- (or)90 2670 y(history)f(logs.)p eop
- %%Page: 39 41
- 39 40 bop 0 -58 a Fm(Chapter)15 b(10:)k(P)o(ossible)d(F)l(uture)g(Enhancemen)
- 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
- (v)o(e)g(conditions)i(can)e(b)q(e)h(ac)o(hiev)o(ed)g(with)f(\014le)h
- (protections)g(alone.)32 b(The)0 246 y(second)19 b(con\014guration)g(is)h
- (di\016cult)g(to)e(ac)o(hiev)o(e)h(this)h(w)o(a)o(y)d(b)q(ecause)j
- (con\014guration)f(managemen)o(t)f(pac)o(k)m(ages)0 308 y(suc)o(h)e(as)g(R)o
- (CS)g(and)g(SCCS)f(require)i(the)f(user)g(to)f(ha)o(v)o(e)g(write)h(access)g
- (to)f(the)h(baseline)i(in)e(order)g(to)f(lo)q(c)o(k)h(\014les.)0
- 370 y(T)l(o)i(comp)q(ensate)h(for)f(this,)i(BCS)f(could)h(op)q(erate)e(in)h
- (secure)h(mo)q(de.)30 b(In)19 b(secure)h(mo)q(de,)f(the)g Fi(bcs)f
- Fm(command)0 432 y(could)h(b)q(e)f(installed)h Fh(setuid)p
- Fm(.)28 b(It)17 b(could)i(e\013ectiv)o(ely)g(b)q(ecome)f(a)f(user)h(with)g
- (write-access)g(to)f(the)g(baseline)j(for)0 495 y(the)15 b(lo)q(c)o(king)h
- (op)q(eration.)k(This)15 b(w)o(a)o(y)l(,)e(access)i(to)f(the)h(baseline)i
- (could)e(b)q(e)h(restricted)f(to)f(all)i(but)e(a)h(small)g(group)0
- 557 y(of)k(users)g(without)g(losing)h(the)g(abilit)o(y)g(for)f(individual)j
- (users)d(to)g(c)o(hec)o(k)h(\014les)g(out)f(as)f(needed.)34
- b(This)20 b(w)o(ould)0 619 y(also)15 b(prev)o(en)o(t)g(unauthorized)i(users)e
- (from)g(op)q(erating)g(on)g(baseline)i(\014les)g(with)e(the)h(underlying)h
- (con\014guration)0 681 y(managemen)o(t)d(commands)h(directly)l(.)62
- 818 y(Whether)j(or)g(not)g(a)f(baseline)j(w)o(ould)e(op)q(erate)g(in)h
- (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
- (the)0 881 y(`)p Fi(.baseline_conf)p Fm(')c(\014le.)30 b(The)18
- b(securit)o(y)g(men)o(tioned)h(ab)q(o)o(v)o(e)f(assumes)f(that)h(the)g
- (underlying)i(\014le)f(system)e(is)0 943 y(secure)f(and)f(that)g(setuid)h(op)
- q(eration)f(of)g(b)q(cs)h(commands)f(is)g(p)q(ermitted.)62
- 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
- (demand)g(for)f(this)h(t)o(yp)q(e)f(of)g(secure)h(op)q(eration)g(than)f
- (there)0 1142 y(is)e(for)g(hierarc)o(hical)i(staging)d(areas,)g(esp)q
- (ecially)k(since)e(m)o(uc)o(h)f(of)g(this)g(functionalit)o(y)h(could)g(b)q(e)
- g(ac)o(hiev)o(ed)g(that)0 1204 y(w)o(a)o(y)d(as)h(w)o(ell.)p
- eop
- %%Page: 40 42
- 40 41 bop 0 -58 a Fm(40)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
- (ersion)h(2.0)p eop
- %%Page: 41 43
- 41 42 bop 0 -58 a Fm(Chapter)15 b(11:)k(Ac)o(kno)o(wledgmen)o(ts)1295
- b(41)0 183 y Fj(11)41 b(Ac)n(kno)n(wledgmen)n(ts)62 370 y Fm(So)16
- 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
- (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
- (list)0 432 y(all)h(of)e(them)h(here)h(b)o(y)f(name.)20 b(I'd)15
- b(lik)o(e)h(to)e(thank)h(all)h(the)f(p)q(eople)i(at)d(Engineering)i(Researc)o
- (h)g(Asso)q(ciates)f(who)0 495 y(serv)o(ed)f(as)g(m)o(y)g(alpha)h(testers)f
- (and)g(who)g(supp)q(orted)h(me)f(in)h(dev)o(eloping)h(this)f(soft)o(w)o(are)d
- (on)j(m)o(y)e(o)o(wn)h(time)h(and)0 557 y(distributing)20 b(it)f(under)g(the)
- g(terms)f(of)g(the)g(General)h(Public)h(License)h(and/or)c(the)i(Artistic)g
- (License.)32 b(I)18 b(am)0 619 y(also)d(appreciativ)o(e)g(to)f(the)h(b)q(eta)
- f(testers)g(out)h(in)g(netland)h(who)e(ha)o(v)o(e)g(o\013ered)h(man)o(y)g
- (helpful)h(suggestions)f(and)0 681 y(exp)q(osed)h(the)f(soft)o(w)o(are)f(to)g
- (v)m(aluable)j(testing.)k(I)15 b(also)g(thank)g(m)o(y)g(wife,)h(Lisa)g
- (\(also)e(a)h(BCS)h(alpha)g(tester\),)e(for)0 744 y(allo)o(wing)g(me)f(to)f
- (sp)q(end)i(sev)o(eral)f(consecutiv)o(e)h(w)o(eek)o(ends)f(w)o(orking)g(on)g
- (BCS.)f(I)i(couldn't)f(ha)o(v)o(e)g(completed)h(this)0 806
- y(pro)s(ject)g(without)i(her)f(supp)q(ort.)p eop
- %%Page: 42 44
- 42 43 bop 0 -58 a Fm(42)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
- (ersion)h(2.0)p eop
- %%Page: 43 45
- 43 44 bop 0 -58 a Fm(App)q(endix)17 b(A:)e(In)o(ternals)1461
- b(43)0 183 y Fj(App)r(endix)13 b(A)41 b(In)n(ternals)62 360
- y Fm(This)15 b(section)g(partially)g(do)q(cumen)o(ts)g(the)f(in)o(ternals)h
- (of)f(BCS.)g(Information)g(co)o(v)o(ered)g(includes)j(algorithms)0
- 423 y(and)e(data)g(structures)g(used,)g(design)h(in)o(ten)o(t,)f(etc.)0
- 637 y Fl(A.1)33 b(Ov)n(erview)62 774 y Fm(BCS)20 b(exists)g(to)f(manipulate)i
- (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
- (extremely)g(conserv)m(ativ)o(e)0 837 y(ab)q(out)e(what)f(it)h(do)q(es.)28
- b(This)19 b(means)f(that)f(op)q(erations)h(should)h(b)q(e)f(atomic)g(when)g
- (p)q(ossible)i(and)e(that)f(there)0 899 y(should)c(alw)o(a)o(ys)f(b)q(e)h
- (some)f(reasonable)h(reco)o(v)o(ery)f(from)f(errors)h(and)g(user-initiated)j
- (ab)q(orts.)j(BCS)12 b(should)i(nev)o(er)0 961 y(delete)j(\014les)g
- (haphazardly)l(.)23 b(Deleting)17 b(sym)o(b)q(olic)g(links)h(in)e(the)g
- (staging)g(area)f(that)h(don't)f(p)q(oin)o(t)i(an)o(ywhere)e(or)0
- 1023 y(don't)c(ha)o(v)o(e)f(corresp)q(onding)i(\014les)g(or)f(links)h(in)g
- (the)f(baseline)i(is)e(acceptable)i(as)d(is)i(deleting)g(\014les)g(when)g
- (unstaging)0 1086 y(directories)k(pro)o(vided)g(that)f(the)g(necessary)g(c)o
- (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
- (e\016cien)o(t)h(and)f(should)h(a)o(v)o(oid)e(doing)i(m)o(ultiple)g(accesses)
- f(to)f(the)h(\014le)h(system)e(for)g(the)h(same)0 1285 y(\014le.)26
- 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)
- g(will)h(t)o(ypically)g(result)f(in)h(a)f(large)f(amoun)o(t)g(of)0
- 1347 y(information)f(b)q(eing)i(cac)o(hed.)62 1484 y(BCS)d(is)h(based)f(on)g
- (top)f(of)h(con\014guration)g(managemen)o(t)f(pac)o(k)m(ages.)19
- b(R)o(CS)14 b(is)h(the)f(recommended)g(pac)o(k)m(age,)0 1546
- 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
- (it)i(easy)e(to)g(plug)i(in)g(other)e(pac)o(k)m(ages)h(as)g(w)o(ell.)37
- b(This)0 1609 y(do)q(cumen)o(t)16 b(explains)g(ho)o(w)f(BCS)g(in)o(terfaces)h
- (with)f(its)h(underlying)h(con\014guration)e(managemen)o(t)g(pac)o(k)m(ages.)
- 62 1746 y(BCS)20 b(implemen)o(ts)h(a)e(baseline)j(and)d(m)o(ultiple)j
- (staging)d(areas.)33 b(With)20 b(the)f(exception)i(of)e(prin)o(ting)i(help)0
- 1808 y(messages)16 b(and)g(v)o(ersion)h(information,)f(all)i(BCS)e(op)q
- (erations)h(require)g(the)f(baseline)i(and)f(staging)f(area)g(to)f(b)q(e)0
- 1870 y(iden)o(ti\014ed)e(in)e(the)g(en)o(vironmen)o(t)g(or)f(on)h(the)f
- (command)h(line.)20 b(A)10 b(con\014guration)h(\014le)h(m)o(ust)e(exist)h(at)
- f(the)h(top-lev)o(el)0 1932 y(of)18 b(eac)o(h)h(baseline)h(directory)l(.)30
- b(This)19 b(con\014guration)g(\014le)h(m)o(ust)e(sp)q(ecify)h(what)f(the)h
- (baseline's)h(con\014guration)0 1995 y(managemen)o(t)14 b(pac)o(k)m(age)i
- (is,)f(etc.)0 2209 y Fl(A.2)33 b(Classi\014cation)15 b(of)g(Files)62
- 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
- (distinguish)j(b)q(et)o(w)o(een)e(imp)q(ortan)o(t)f(and)h(unimp)q(ortan)o(t)f
- (\014les.)0 2408 y(Ev)o(ery)h(\014le)i(is)g(either)f(imp)q(ortan)o(t)g(or)f
- (unimp)q(ortan)o(t.)28 b(Determination)18 b(of)f(the)h(imp)q(ortance)g(of)g
- (a)f(\014le)i(is)g(done)0 2471 y(based)d(up)q(on)f(the)h(underlying)h
- (con\014guration)e(managemen)o(t)g(system)f(and)i(other)f(constrain)o(ts.)62
- 2608 y(A)g(\014le's)g(imp)q(ortance)g(is)g(determined)h(in)g(sev)o(eral)e(w)o
- (a)o(ys.)19 b(This)c(discussion)i(of)d(imp)q(ortance)h(applies)h(to)e
- (\014les)0 2670 y(in)k(the)f(baseline.)28 b(Files)19 b(in)f(the)f(staging)g
- (area)g(that)f(do)h(not)g(ha)o(v)o(e)g(corresp)q(onding)i(\014les)f(in)g(the)
- f(baseline)i(are)p eop
- %%Page: 44 46
- 44 45 bop 0 -58 a Fm(44)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
- (ersion)h(2.0)0 183 y(considered)i(unimp)q(ortan)o(t.)25 b(\(The)17
- b(exception)h(is)f(in)o(ternal)h(\014les)g(whic)o(h)f(are)g(alw)o(a)o(ys)f
- (considered)i(imp)q(ortan)o(t.\))0 246 y(Other)13 b(staging)f(area)f(\014les)
- j(inherit)g(their)f(imp)q(ortance)f(from)g(their)h(baseline)h(coun)o
- (terparts.)k(The)13 b(only)g(circum-)0 308 y(stance)g(under)g(whic)o(h)h(a)f
- (staging)f(area)g(\014le)i(will)h(ha)o(v)o(e)d(a)h(di\013eren)o(t)h(imp)q
- (ortance)f(from)f(its)h(baseline)i(coun)o(terpart)0 370 y(is)f(if)f
- (instances)h(of)f(\014lenames)h(that)e(are)h(used)h(in)o(ternally)g(b)o(y)f
- (the)h(BCS)f(in)h(the)f(baseline)i(app)q(ear)e(in)h(the)f(staging)0
- 432 y(area.)22 b(In)17 b(this)f(case,)g(they)h(are)e(unimp)q(ortan)o(t)i(in)g
- (the)f(staging)g(area)f(and)h(imp)q(ortan)o(t)g(in)h(the)f(baseline.)25
- b(\(This)0 495 y(w)o(ould)18 b(include)j(`)p Fi(.important)p
- Fm(',)16 b(`)p Fi(.unimportant)p Fm(',)g(`)p Fi(.auto_stage)p
- Fm(',)g(`)p Fi(.no_stage)p Fm(',)g(and)j(`)p Fi(.unimp_nowarn)p
- Fm(')0 557 y(at)11 b(an)o(y)h(lev)o(el,)i(and)e(`)p Fi(.baseline_conf)p
- Fm(')d(at)j(the)g(top)g(lev)o(el.)20 b(The)12 b(con)o(ten)o(ts)g(of)f
- (\014les)i(are)f(ignored)h(b)o(y)f(the)g(utilities)0 619 y(if)i(they)g(are)g
- (encoun)o(tered)h(in)f(the)g(staging)g(area.)19 b(There)14
- b(is)g(no)g(reason)g(for)f(these)h(\014les)h(to)e(exist)i(in)f(the)g(staging)
- 0 681 y(area.\))62 822 y(Ev)o(ery)f(\014le)i(has)e(an)g(imp)q(ortance)h(whic)
- o(h)h(can)e(b)q(e)h(o)o(v)o(erridden)g(explicitly)l(.)23 b(By)13
- b(default,)h(\014les)g(in)h(the)e(baseline)0 884 y(that)18
- b(are)g(neither)h(sym)o(b)q(olic)h(links)g(nor)e(directories)h(\014les)h(are)
- e(imp)q(ortan)o(t)g(if)h(they)f(are)g(registered)h(with)g(the)0
- 946 y(underlying)24 b(con\014guration)e(managemen)o(t)f(pac)o(k)m(age)h(and)g
- (are)f(unimp)q(ortan)o(t)h(otherwise.)40 b(Directories)22 b(are)0
- 1009 y(considered)e(imp)q(ortan)o(t)e(b)o(y)g(default.)30 b(Sym)o(b)q(olic)20
- b(links)f(to)f(\014les)h(in)g(the)g(baseline)h(inherit)g(their)e(imp)q
- (ortance)0 1071 y(from)i(the)h(\014les)h(they)e(are)h(ultimately)h(link)o(ed)
- g(to.)36 b(Sym)o(b)q(olic)22 b(links)g(to)f(\014les)g(outside)h(of)e(the)h
- (baseline)h(are)0 1133 y(unimp)q(ortan)o(t)c(b)o(y)f(default.)28
- b(A)18 b(\014le)g(or)f(directory)h(can)g(b)q(e)g(made)g(explicitly)i(unimp)q
- (ortan)o(t)e(b)o(y)g(app)q(earing)g(in)0 1195 y(the)f(`)p Fi(.unimportant)p
- Fm(')d(\014le)k(or)f(made)g(explicitly)i(imp)q(ortan)o(t)e(b)o(y)g(app)q
- (earing)h(in)f(the)g(`)p Fi(.important)p Fm(')e(\014le)j(in)g(its)0
- 1258 y(con)o(taining)g(directory)l(.)25 b(If)17 b(a)g(\014le)h(app)q(ears)f
- (in)h(b)q(oth)f(a)f(`)p Fi(.important)p Fm(')f(\014le)j(and)f(a)g(`)p
- Fi(.unimportant)p Fm(')d(\014le,)k(it)f(is)0 1320 y(considered)f(imp)q(ortan)
- o(t.)j(A)14 b(`)p Fi(.important)p Fm(')e(\014le)k(con)o(taining)f(only)g(`)p
- Fi(*)p Fm(')e(means)h(all)h(\014les)h(are)e(imp)q(ortan)o(t)g(in)h(that)0
- 1382 y(directory)l(.)20 b(The)14 b(`)p Fi(.important)p Fm(')e(\014le)j
- (cannot)f(con)o(tain)g(regular)g(expressions)h(in)g(general;)f(`)p
- Fi(*)p Fm(')f(is)i(a)f(sp)q(ecial)h(case.)0 1637 y Fl(A.3)33
- b(Cac)n(hing)15 b(File)i(System)e(Information)62 1777 y Fm(When)g(analyzing)h
- (p)q(erformance)f(of)f(BCS,)g(it)h(b)q(ecame)g(eviden)o(t)h(that)e(the)g
- (most)g(exp)q(ensiv)o(e)i(op)q(erations)f(b)o(y)0 1839 y(far)j(w)o(ere)g
- (calls)i(to)e(the)g Fi(lstat)g Fm(system)g(call.)31 b(This)19
- b(call)h(is)f(used)g(to)f(obtain)h(sp)q(eci\014c)h(information)f(ab)q(out)f
- (a)0 1902 y(named)d(\014le)g(from)e(the)i(\014le)g(system.)k(Since)d(BCS)e
- (requires)i(frequen)o(t)e(access)g(to)g(the)g(la)o(y)o(out)g(of)g(the)g
- (\014le)h(system)0 1964 y(and)h(in)o(to)g(sp)q(eci\014c)i(information)e(ab)q
- (out)g(\014les,)h(this)g(information)f(is)g(cac)o(hed.)23 b(The)17
- 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
- (same)g(shap)q(e)h(as)f(the)g(\014le)i(system.)i(When)d(\014les)g(are)f(remo)
- 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
- (w)o(ell.)24 b(Since)18 b(the)e(cac)o(he)h(is)f(structured)h(to)e(b)q(e)i
- (parallel)h(to)e(the)g(\014le)h(system,)f(the)g(c)o(hance)h(of)f(an)0
- 2151 y(inconsistency)h(app)q(earing)f(in)g(the)f(cac)o(he)h(is)g(v)o(ery)e
- (lo)o(w.)0 2405 y Fl(A.4)33 b(The)15 b(File)h(Information)g(T)-6
- b(able)62 2545 y Fm(All)21 b(information)f(needed)g(ab)q(out)g(\014les)g
- (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
- (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
- Fh(\014le)g(information)g(table)p Fm(.)36 b(The)21 b(\014le)g(information)g
- (table)g(consists)f(of)g(a)0 2670 y(n)o(um)o(b)q(er)c(of)e(\014le)j
- (information)e(structures)g(whic)o(h)h(are)f(stored)f(in)i(the)g(\014le)g
- (system)f(cac)o(he)g(describ)q(ed)i(ab)q(o)o(v)o(e.)p eop
- %%Page: 45 47
- 45 46 bop 0 -58 a Fm(App)q(endix)17 b(A:)e(In)o(ternals)1461
- b(45)62 183 y(A)15 b(\014le)h(information)f(structure)g(con)o(tains)f(all)i
- (the)f(information)g(needed)h(ab)q(out)f(a)f(\014le)i(for)e(determining)j
- (its)0 246 y(imp)q(ortance)f(and)f(its)h(eligibili)q(t)o(y)h(for)e(b)q(eing)h
- (staged.)k(Some)15 b(information)g(ab)q(out)g(whether)h(the)f(\014le)h(is)g
- (eligible)0 308 y(to)i(b)q(e)g(unstaged)h(is)f(stored)g(as)g(w)o(ell.)30
- b(See)19 b(the)f(de\014nition)i(of)e Fi(bcs_file_info_rec)e
- Fm(in)j(`)p Fi(file_info.h)p Fm(')d(for)0 370 y(the)f(sp)q(eci\014c)i
- (\014elds.)62 507 y(T)l(o)f(explicitly)i(p)q(opulate)f(the)f(table,)g(the)g
- Fi(bcs_examine_dir)d Fm(routine)k(is)f(called)h(with)f(a)g(directory)g(name)0
- 569 y(and)k(a)g(recursiv)o(e)h(\015ag.)35 b(If)21 b(the)f(recursiv)o(e)h
- (\015ag)f(is)h(set,)g(the)f(directory)h(is)f(inserted)i(recursiv)o(ely)l(.)36
- b(F)l(or)20 b(eac)o(h)0 632 y(directory)l(,)d(all)g(the)g(\014les)g(in)g(the)
- g(directory)f(are)g(c)o(hec)o(k)o(ed)h(and)g(inserted)g(in)g(the)g(table.)24
- b(If)16 b(the)h(directory)f(is)h(in)0 694 y(the)g(staging)g(area,)g(the)h
- (directory's)f(baseline)i(coun)o(terpart)d(is)i(searc)o(hed)g(to)q(o.)25
- b Fh(Precious)18 b(directories)j Fm(\(those)0 756 y(used)14
- b(in)o(ternally)h(b)o(y)f(con\014guration)g(managemen)o(t)f(pac)o(k)m(ages\))
- g(are)g(omitted)h(from)f(the)g(list)i(of)e(directories)i(and)0
- 818 y(are)c(not)h(searc)o(hed)f(recursiv)o(ely)l(.)21 b(A)11
- 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
- (routine.)19 b(If)12 b(the)f(p)q(oin)o(ter)0 881 y(is)k(non-)p
- Fi(NULL)p Fm(,)e(the)h(function)h(is)g(called)h(with)e(passed)g(in)h(data,)f
- (the)g(global)g(b)q(cs)h(state)e(ob)s(ject,)h(and)g(the)g(curren)o(t)0
- 943 y(\014le)j(information)e(structure)h(for)f(item)h(found)g(b)o(y)f
- Fi(bcs_examine_dir)p Fm(.)20 b(The)15 b Fi(bcs_examine_dir)f
- 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
- (the)g(callbac)o(k)i(is)e(called)i(on)e(\014le)h(information)g(structures)f
- (in)h(sorted)f(order.)0 1067 y(This)e(w)o(a)o(y)l(,)f(commands)h(suc)o(h)g
- (as)f Fi(classify_files)f Fm(or)h Fi(id_staged)g Fm(can)h(call)h
- Fi(bcs_examine_dir)c Fm(once)k(with)0 1130 y(a)f(callbac)o(k)h(function)g
- (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
- (efore)h(the)f(user)g(sees)h(an)o(y)f(results.)62 1267 y(An)g(individual)i
- (\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
- (with)f(the)h Fi(bcs_get_file_info)d Fm(routine.)0 1329 y(If)f(a)g(\014le's)h
- (information)f(is)g(found)h(in)g(the)f(table,)h(it)f(is)h(returned.)19
- b(Otherwise,)12 b(a)f(new)g(\014le)h(information)f(structure)0
- 1391 y(is)17 b(allo)q(cated)h(and)f(inserted)h(in)o(to)f(the)g(table.)26
- b(Individual)19 b(\014elds)g(of)d(the)h(\014le)h(information)f(structure)g
- (are)f(not)0 1453 y(computed)g(un)o(til)g(they)f(are)g(needed.)0
- 1667 y Fl(A.5)33 b(Debugging)62 1804 y Fm(If)17 b(BCS)g(w)o(as)f(compiled)j
- (with)e(debugging)h(enabled,)g(the)f(en)o(vironmen)o(t)g(v)m(ariable)i
- Fi(DEBUG_BCS)c Fm(is)i(c)o(hec)o(k)o(ed)0 1866 y(when)f(the)g(utilities)h
- (initialize)q(.)23 b(The)16 b(v)m(alue)h(of)e(this)h(v)m(ariable)h(can)e(b)q
- (e)i(o)o(v)o(erridden)f(with)g(the)f Fi(--debug)g Fm(option)0
- 1928 y(on)f(the)g(commandline.)22 b(If)14 b(no)g(debugging)h(information)g
- (is)g(requested,)f(none)h(will)h(b)q(e)e(prin)o(ted.)21 b(This)15
- b(v)m(ariable)0 1990 y(consists)f(of)e(a)h(colon-separated)h(list)g(of)f(lo)o
- (w)o(er-case)g(k)o(eyw)o(ords)f(sp)q(ecifying)k(what)c(kind)j(of)e
- (information)g(should)0 2053 y(b)q(e)j(displa)o(y)o(ed.)21
- b(V)l(alid)c(k)o(eyw)o(ords)d(are)0 2199 y Fi(logic)120 b Fm(Prin)o(t)15
- b(information)h(ab)q(out)f(ma)s(jor)e(decisions)k(and)f(wh)o(y)f(they)g(are)g
- (b)q(eing)h(made;)0 2281 y Fi(trace)120 b Fm(Prin)o(t)15 b(information)h(ab)q
- (out)f(function)h(calls)g(and)f(returns;)0 2363 y Fi(verbose)72
- b Fm(Prin)o(t)15 b(v)o(erb)q(ose)g(messages)g(at)g(certain)g(times;)0
- 2444 y Fi(path)144 b Fm(Prin)o(t)15 b(message)g(sp)q(eci\014c)i(to)e
- (pathname)g(pro)q(cessing;)0 2526 y Fi(all)168 b Fm(All)16
- b(debugging)h(is)e(turned)h(on;)0 2608 y Fi(none)144 b Fm(T)l(urn)22
- b(o\013)g(debugging)g(information.)39 b(This)22 b(k)o(eyw)o(ord)f(is)h
- (ignored)g(if)g(accompanied)h(b)o(y)e(other)240 2670 y(options.)f(An)o(y)15
- 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
- (serv)o(e)f(this)h(purp)q(ose.)p eop
- %%Page: 46 48
- 46 47 bop 0 -58 a Fm(46)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
- (ersion)h(2.0)62 183 y(Note)d(that)e(information)i(prin)o(ted)h(b)o(y)e
- (these)h(debug)g(\015ags)f(are)h(only)g(as)f(complete)h(as)g(w)o(as)e
- (necessary)i(during)0 246 y(the)19 b(dev)o(elopmen)o(t.)31
- b(F)l(or)19 b(example,)h(turning)f(on)g Fi(trace)f Fm(do)q(es)h(not)g(trace)f
- (all)i(function)f(calls)h(and)f(do)q(es)g(not)0 308 y(alw)o(a)o(ys)d(prin)o
- (t)i(all)g(the)f(information)g(that)f(w)o(ould)h(b)q(e)h(useful)g(when)g(a)e
- (function)i(is)g(en)o(tered)f(or)g(exited.)26 b(Ev)o(en)0 370
- y(so,)14 b(running)j(BCS)e(with)h Fi(--debug)e(all)h Fm(will)i(pro)q(duce)f
- (a)e(considerable)j(v)o(olume)f(of)f(output.)0 634 y Fl(A.6)33
- b(Con\014guration)16 b(Managemen)n(t)e(P)n(ac)n(k)l(age)h(In)n(terface)62
- 775 y Fm(BCS)i(implemen)o(ts)h(generic)f(supp)q(ort)g(for)f(underlying)i
- (con\014guration)f(managemen)o(t)e(pac)o(k)m(ages.)24 b(In)17
- 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
- (arious)g(con\014guration)h(managemen)o(t)f(pac)o(k)m(ages,)g(it)g(needs)i
- (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)
- o(h)h(underlying)h(pac)o(k)m(age.)j(Sp)q(eci\014cally)l(,)e(it)d(needs)h(to)f
- (kno)o(w)g(the)g(follo)o(wing:)37 1041 y Fk(\017)30 b Fm(The)15
- b(name)h(of)e(the)i(pac)o(k)m(age;)37 1120 y Fk(\017)30 b Fm(The)12
- b(list)h(of)f(commands)f(that)h(are)f(needed)i(for)f(c)o(hec)o(kin)h(and)f(c)
- o(hec)o(k)o(out)g(op)q(erations)g(and)g(whic)o(h)h(op)q(eration)90
- 1182 y(they)i(p)q(erform;)37 1261 y Fk(\017)30 b Fm(What)11
- b(\014les)i(are)f(for)g(in)o(ternal)g(use)h(b)o(y)f(the)g(con\014guration)g
- (managemen)o(t)f(system)h(\(referred)g(to)f(as)h Fh(precious)90
- 1324 y Fm(\014les)k(since)h(they)e(m)o(ust)f(alw)o(a)o(ys)h(exist\);)37
- 1403 y Fk(\017)30 b Fm(Ho)o(w)15 b(to)f(tell)i(whether)g(a)f(\014le)h(has)f
- (a)g(log;)37 1482 y Fk(\017)30 b Fm(Ho)o(w)15 b(to)f(tell)i(whether)g(a)f
- (\014le)h(is)g(up-to-date;)37 1561 y Fk(\017)30 b Fm(Ho)o(w)15
- b(to)f(up)q(date)i(the)f(baseline)i(cop)o(y)e(of)g(a)g(\014le;)37
- 1640 y Fk(\017)30 b Fm(Ho)o(w)15 b(to)f(register)h(a)g(new)h(\014le)g(with)f
- (the)h(system.)62 1798 y(Adding)22 b(supp)q(ort)f(for)f(a)h(new)g
- (con\014guration)g(managemen)o(t)f(system)h(is)g(a)g(matter)e(of)i(writing)g
- (co)q(de)h(to)0 1861 y(implemen)o(t)f(the)f(ab)q(o)o(v)o(e)f(functions.)35
- b(See)20 b(`)p Fi(cm.h)p Fm(')e(for)i(de\014nitions)h(of)e(the)h(appropriate)
- g(structures.)33 b(If)20 b(y)o(ou)0 1923 y(wish)d(to)f(add)g(supp)q(ort)h
- (for)e(a)h(new)h(con\014guration)f(managemen)o(t)g(pac)o(k)m(age,)g(lo)q(ok)h
- (at)e(the)i(implemen)o(tation)g(of)0 1985 y(R)o(CS)j(and)h(SCCS)f(supp)q
- (ort.)35 b(T)l(o)20 b(implemen)o(t)i(supp)q(ort)e(for)g(a)g(new)g
- (con\014guration)h(managemen)o(t)e(pac)o(k)m(age,)0 2047 y(a)h(source)g(and)g
- (header)h(\014le)g(to)e(implemen)o(t)i(the)g(ab)q(o)o(v)o(e)e(functionalit)o
- (y)j(m)o(ust)d(b)q(e)i(added.)35 b(This)21 b(\014le)g(\014lls)g(in)0
- 2110 y(the)e(\014elds)h(of)f(a)f(structure)h(whic)o(h)h(is)f(returned)h(b)o
- (y)e(the)h(one)g(externally)h(callable)h(routine)f(in)f(the)g(\014le:)29
- b(the)0 2172 y(register)16 b(routine.)21 b(A)16 b(protot)o(yp)q(e)f(for)g
- (this)h(routine)g(should)g(b)q(e)h(added)f(to)f(`)p Fi(cm.h)p
- 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
- Fi(init.c)p Fm('.)j(In)d(addition,)g(of)e(course,)h(the)g(mak)o(e\014le)h
- (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
- 2296 y(compiled)g(and)f(link)o(ed)h(in)g(to)e(the)g(system.)21
- b(No)15 b(other)g(c)o(hanges)h(should)h(b)q(e)f(required)h(for)e(implemen)o
- (tation)h(of)0 2359 y(a)i(new)g(con\014guration)h(managemen)o(t)e(pac)o(k)m
- (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)
- q(e)h(made)f(if)h(the)0 2421 y(con\014guration)d(managemen)o(t)g(pac)o(k)m
- (age)g(has)g(some)f(needs)i(that)f(are)g(not)f(handled)j(b)o(y)e(the)g
- (curren)o(t)g(in)o(terface.)0 2483 y(If)i(this)f(is)h(the)f(case,)h(extreme)f
- (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
- (k)m(age-sp)q(eci\014c)i(kno)o(wledge)0 2545 y(in)o(to)f(the)h(co)q(de.)30
- b(Supp)q(ort)19 b(for)f(a)g(con\014guration)h(managemen)o(t)e(pac)o(k)m(age)i
- (should)g(b)q(e)g(implemen)o(ted)i(so)d(that)0 2608 y(BCS)f(will)h(still)g
- (compile)h(and)d(run)h(without)g(that)f(con\014guration)h(managemen)o(t)f
- (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
- (R)o(CS)g(and)h(SCCS)f(for)g(one)g(w)o(a)o(y)f(to)h(do)g(this.)p
- eop
- %%Page: 47 49
- 47 48 bop 0 -58 a Fm(App)q(endix)17 b(A:)e(In)o(ternals)1461
- 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
- (\014les,)h(the)f Fi(bcs)f Fm(command)h(itself)g(is)h(used.)37
- b(It)20 b(tak)o(es)g(as)g(argumen)o(ts)g(a)0 246 y(command)j(with)g(argumen)o
- (ts.)41 b(It)23 b(determines)g(what)f(kind)i(of)e(op)q(eration)h(the)g(giv)o
- (en)g(command)f(is)i(with)0 308 y(resp)q(ect)18 b(to)f(the)h(underlying)i
- (con\014guration)e(managemen)o(t)f(pac)o(k)m(age)h(so)f(it)h(can)g(kno)o(w)f
- (whether)h(it)g(needs)h(to)0 370 y(stage)14 b(\014les)h(or)f(not.)19
- b(Once)d(it)e(mak)o(es)g(sure)h(that)e(the)i(necessary)g(prerequisites)g(ha)o
- (v)o(e)f(b)q(een)i(met)e(and)h(that)f(this)0 432 y(\014le)k(is)g(eligible)i
- (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
- (the)g(underlying)i(con\014guration)f(managemen)o(t)0 495 y(pac)o(k)m(age's)d
- (command)g(as)g(passed)g(in)h(on)f(the)h(commandline.)62 634
- y(When)e(classifying)h(\014les,)g(BCS)f(m)o(ust)f(b)q(e)h(able)h(to)e
- (determine)i(whether)e(a)h(\014le)g(has)g(a)f(history)h(log)g(since)h(this)0
- 696 y(determines)f(the)g(default)g(imp)q(ortance)g(of)f(\014les.)20
- b(When)14 b(sync)o(hronizing)h(and)e(staging,)g(BCS)h(m)o(ust)f(kno)o(w)g
- (what)0 759 y(\014les)19 b(or)f(directories)i(m)o(ust)e(exist)h(in)g(the)g
- (staging)f(area)g(for)g(the)g(shared)h(history)f(log)h(supp)q(ort)g(to)e(w)o
- (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
- (the)f(R)o(CS)h(or)e(SCCS)i(directory)l(.)24 b(It)16 b(is)h(conceiv)m(able)i
- (that)c(other)h(\014les)h(or)0 883 y(directories)f(could)g(b)q(e)f(needed)h
- (for)e(other)g(con\014guration)h(managemen)o(t)f(pac)o(k)m(ages.)20
- 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
- (is)h(p)q(ossible)h(this)e(this)h(functionalit)o(y)g(w)o(ould)g(require)g(mo)
- q(di\014cation)g(for)f(con\014guration)0 1008 y(managemen)o(t)c(pac)o(k)m
- (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
- (ecial)i(\014les)e(or)g(directories,)g(whic)o(h)0 1070 y(w)o(e)j(refer)f(to)h
- (as)f Fh(precious)p Fm(,)j(are)d(alw)o(a)o(ys)g(imp)q(ortan)o(t)h(and)g
- (unstageable.)31 b(This)20 b(cannot)f(b)q(e)g(o)o(v)o(erridden)h(with)0
- 1132 y(`)p Fi(.auto_stage)p Fm(')13 b(or)i(`)p Fi(.unimportant)p
- Fm(')d(\014les.)62 1272 y(When)f(unstaging)g(\014les,)i(BCS)e(w)o(arns)f(if)h
- (a)g(\014le)g(has)g(not)f(b)q(een)i(up)q(dated)g(in)g(the)f(baseline.)20
- b(The)11 b(con\014guration)0 1334 y(managemen)o(t)j(pac)o(k)m(age)i(supp)q
- (ort)f(m)o(ust)g(include)i(a)e(function)h(to)f(tell)h(this)f(for)g(this)h
- (purp)q(ose.)62 1474 y(The)21 b(list)f(of)g(supp)q(orted)h(con\014guration)f
- (managemen)o(t)f(pac)o(k)m(ages)h(is)h(determined)g(at)e(compile-time.)37
- b(A)0 1536 y(con\014guration)16 b(managemen)o(t)g(pac)o(k)m(age)g(b)q(ecomes)
- h(supp)q(orted)f(b)o(y)g(BCS)h(b)o(y)f(b)q(eing)h(registered.)23
- b(T)l(o)16 b(register)g(a)0 1598 y(con\014guration)d(managemen)o(t)g(pac)o(k)
- m(age,)g(a)g(structure)g(con)o(taining)h(function)h(p)q(oin)o(ters)e(and)h
- (other)f(information)0 1660 y(m)o(ust)j(b)q(e)h(passed)g(to)e(the)i(register)
- f(function.)25 b(BCS)17 b(enforces)f(that)g(a)g(sp)q(eci\014c)i(baseline)h
- (\(p)q(ossibly)e(including)0 1723 y(m)o(ultiple)e(top-lev)o(el)e
- (directories\))h(only)f(uses)g(one)g(con\014guration)f(managemen)o(t)g(pac)o
- (k)m(age.)19 b(When)13 b(the)g(baseline)0 1785 y(con\014guration)g(\014les)h
- (are)f(read)g(at)g(startup,)f(BCS)i(activ)m(ates)f(the)h(information)f(ab)q
- (out)g(a)g(sp)q(eci\014c)i(con\014guration)0 1847 y(managemen)o(t)i(pac)o(k)m
- (age)g(b)o(y)g(name.)27 b(If)18 b(that)f(con\014guration)g(managemen)o(t)g
- (pac)o(k)m(age)g(w)o(as)g(registered,)h(ev)o(ery-)0 1910 y(thing)i(is)g
- (\014ne,)h(and)e(BCS)h(can)g(pro)q(ceed)g(without)f(kno)o(wing)h(an)o(y)f(of)
- g(the)h(details)g(ab)q(out)f(the)h(con\014guration)0 1972 y(managemen)o(t)14
- b(pac)o(k)m(age.)0 2219 y Fl(A.7)33 b(Staging)15 b(and)h(Sync)n(hronization)
- 62 2359 y Fm(The)k(staging)f(and)h(sync)o(hronization)g(op)q(erations)g(are)f
- (tigh)o(tly)g(in)o(tegrated.)33 b(They)19 b(are)g(de\014ned)i(here)f(in)0
- 2421 y(terms)12 b(of)g(eac)o(h)h(other.)19 b(Sync)o(hronization)14
- b(of)e(the)h(staging)f(area)g(is)h(the)g(pro)q(cess)g(of)f(assuring)h(that)f
- (the)h(con)o(ten)o(ts)0 2483 y(of)f(the)g(staging)f(area)h(are)g(consisten)o
- (t)g(with)g(those)g(of)f(the)i(baseline.)20 b(The)12 b(staging)g(area)f
- (should)j(alw)o(a)o(ys)d(con)o(tain)0 2545 y(all)k(imp)q(ortan)o(t)e
- (baseline)j(\014les)f(either)g(directly)g(or)e(in)i(the)f(form)f(of)h(sym)o
- (b)q(olic)h(links.)21 b(The)14 b(only)g(sym)o(b)q(olic)i(links)0
- 2608 y(that)h(are)g(allo)o(w)o(ed)h(to)f(app)q(ear)g(in)i(the)e(staging)h
- (area)e(are)i(links)h(to)d(their)i(o)o(wn)f(baseline)j(coun)o(terparts,)d
- (links)0 2670 y(whose)c(baseline)i(coun)o(terparts)e(are)g(also)h(links)g
- (that)f(p)q(oin)o(t)h(to)f(the)g(same)g(place,)i(and)e(links)i(that)e(p)q
- (oin)o(t)h(within)p eop
- %%Page: 48 50
- 48 49 bop 0 -58 a Fm(48)1066 b(Baseline)17 b(Con\014guration)e(System)g(v)o
- (ersion)h(2.0)0 183 y(the)g(staging)f(area)g(to)f(unimp)q(ortan)o(t)i
- (\014les.)22 b(The)15 b(reason)h(for)e(allo)o(wing)j(the)e(last)h(case)f(is)h
- (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
- (\(F)l(or)c(example,)g(if)h(a)e(mak)o(e\014le)i(causes)f(the)g(creation)h(of)
- e(an)h(executable)i(\014le)f(along)f(with)0 308 y(sev)o(eral)k(links)g(to)f
- (it,)h(those)f(links)i(will)g(only)f(ha)o(v)o(e)f(baseline)i(coun)o(terparts)
- d(if)i(the)g(target)e(has)h(b)q(een)h(built)h(in)0 370 y(the)e(baseline.)26
- b(Ev)o(en)17 b(if)g(they)g(do)f(ha)o(v)o(e)h(baseline)h(coun)o(terparts,)e
- (they)h(will)h(not)e(b)q(e)i(imp)q(ortan)o(t.)24 b(Ev)o(en)16
- b(so,)h(it)0 432 y(w)o(ould)f(b)q(e)f(undesirable)j(for)c Fi(sync_staging)g
- Fm(to)g(remo)o(v)o(e)h(those)g(links.\))62 571 y(The)c(follo)o(wing)g(steps)g
- (are)f(p)q(erformed)h(b)o(y)f(the)h Fi(sync_staging)e Fm(command.)18
- b(All)12 b(steps)e(are)h(done)g(recursiv)o(ely)0 633 y(if)16
- b(requested.)37 772 y Fk(\017)30 b Fm(V)l(erify)12 b(that)f(all)h
- (directories)g(requested)g(are)e(in)j(the)e(staging)g(area.)18
- b(Stop)11 b(if)g(an)o(y)g(of)g(them)g(are)g(not)g(suitable.)37
- 848 y Fk(\017)30 b Fm(Examine)16 b(requested)f(directories')h(baseline)h
- (coun)o(terparts.)37 924 y Fk(\017)30 b Fm(F)l(or)17 b(eac)o(h)h(imp)q(ortan)
- o(t)g(\014le)g(in)h(the)f(baseline)i(that)d(is)h(not)g(mark)o(ed)f(\(in)o
- (ternally\))i(as)e Fi(no_mirror)p Fm(,)1811 908 y Ff(1)1846
- 924 y Fm(mak)o(e)90 986 y(sure)e(the)h(corresp)q(onding)g(\014le)g(exists)g
- (in)g(the)f(staging)g(area.)115 1063 y Fk(\000)30 b Fm(If)15
- b(the)h(\014le)g(in)g(the)f(baseline)i(is)f(a)f(\014le)h(and)f(the)h(\014le)g
- (in)g(the)f(staging)g(area)g(is)g(a)g(\014le,)h(do)f(nothing.)115
- 1139 y Fk(\000)30 b Fm(If)16 b(the)f(\014le)i(in)f(the)g(baseline)h(is)f(a)f
- (\014le)i(and)f(the)f(\014le)i(in)f(the)g(staging)f(area)g(do)q(esn't)g
- (exist)h(or)f(is)h(a)g(link)180 1201 y(to)h(other)g(than)g(its)h(baseline)h
- (coun)o(terpart,)e(mak)o(e)g(it)h(a)f(link)i(to)e(its)h(baseline)h(coun)o
- (terpart.)26 b(If)18 b(the)180 1263 y(\014le)e(has)f(autostage)f(status,)g
- (stage)g(the)i(\014le.)115 1340 y Fk(\000)30 b Fm(If)21 b(the)f(\014le)i(in)f
- (the)g(baseline)h(is)f(prohibited)h(from)d(b)q(eing)j(staged)e(and)h(the)f
- (\014le)i(is)f(staged)f(in)h(the)180 1402 y(staging)15 b(area,)f(prin)o(t)i
- (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
- (the)h(\014le)i(in)f(the)f(staging)g(area.)115 1478 y Fk(\000)30
- 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
- (\014le)h(within)g(the)f(staging)g(area)f(is)i(a)e(\014le,)j(prin)o(t)e(a)180
- 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)
- g(the)g(\014le)h(in)g(the)f(staging)g(area.)115 1617 y Fk(\000)30
- 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
- (\014le)g(in)h(the)f(staging)f(area)g(is)h(a)f(link)i(or)e(do)q(es)h(not)g
- (exist)217 1693 y Fk(\017)30 b Fm(If)17 b(the)g(baseline)h(\014le)g(is)f(a)f
- (link)i(to)e(outside)h(the)g(baseline,)h(mak)o(e)f(the)f(staging)h(area)f
- (\014le)h(a)g(link)270 1755 y(to)e(the)g(baseline)i(\014le.)217
- 1831 y Fk(\017)30 b Fm(If)15 b(the)f(baseline)i(\014le)f(is)g(a)f(link)i(to)e
- (within)h(the)g(baseline,)h(mak)o(e)d(the)i(staging)f(area)f(\014le)j(a)e
- (link)i(to)270 1894 y(the)f(corresp)q(onding)h(\014le)h(in)f(the)f(staging)g
- (area.)217 1970 y Fk(\017)30 b Fm(If)13 b(the)g(\014le)g(is)h(a)e(dangling)i
- (link,)g(remo)o(v)o(e)e(the)h(staging)f(area)g(link)i(if)f(one)g(exists.)20
- b(\(Dangling)13 b(links)270 2032 y(without)i(baseline)i(coun)o(terparts)e
- (are)f(also)i(remo)o(v)o(ed,)e(but)h(not)g(in)h(this)g(step.\))37
- 2108 y Fk(\017)30 b Fm(Re-examine)15 b(the)e(staging)f(area)g(directories)i
- (to)f(tak)o(e)f(in)o(to)h(accoun)o(t)f(the)h(new)g(\014les)h(that)e(could)i
- (ha)o(v)o(e)f(b)q(een)90 2171 y(created.)37 2247 y Fk(\017)30
- 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
- (unimp)q(ortan)o(t,)g(do)g(nothing)g(if)g(it)g(p)q(oin)o(ts)g(to)e(an)i
- (unimp)q(ortan)o(t)90 2309 y(\014le)21 b(within)g(the)f(staging)g(area.)34
- b(Otherwise,)22 b(remo)o(v)o(e)d(it.)34 b(The)21 b(reasoning)f(here)g(is)h
- (that,)f(in)h(general,)90 2372 y(unimp)q(ortan)o(t)14 b(links)i(should)g(b)q
- (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
- (is)f(remo)o(v)o(ed)f(in)h(the)g(baseline,)90 2434 y Fi(sync_staging)c
- 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
- (area)g(as)g(w)o(ell)i(if)e(it)h(w)o(as)f(originally)i(created)90
- 2496 y(b)o(y)g Fi(sync_staging)p Fm(.)k(The)d(exception)h(w)o(ould)f(b)q(e)g
- (in)o(ternal)g(links)h(that)e(w)o(ere)h(created)f(man)o(ually)h(to)f(other)90
- 2558 y(unimp)q(ortan)o(t)h(\014les.)21 b Fi(sync_staging)14
- b Fm(should)i(lea)o(v)o(e)f(these)h(alone.)p 0 2614 600 2 v
- 21 2652 a Ff(1)62 2668 y Fm(Only)h(in)o(ternal)f(\014les)g(are)f(mark)o(ed)f
- (this)i(w)o(a)o(y)l(.)p eop
- %%Page: 49 51
- 49 50 bop 0 -58 a Fm(App)q(endix)17 b(A:)e(In)o(ternals)1461
- b(49)62 183 y(F)l(or)17 b(full)h(details,)g(read)f(the)g(source.)25
- b(The)17 b(heart)g(of)f(the)h(algorithms)g(are)g(implemen)o(ted)h(in)g(`)p
- Fi(staging.c)p Fm(')0 246 y(in)e(the)f(routine)h Fi(bcsi_sync_staging_dir)c
- Fm(and)k Fi(sync_file)p Fm(.)62 384 y(Staging)f(a)f(\014le)h(or)f(directory)h
- (is)g(simply)g(replacing)h(a)e(sym)o(b)q(olic)i(link)g(in)f(the)g(staging)f
- (area)g(with)g(an)h(actual)0 446 y(\014le)20 b(or)f(directory)l(.)33
- 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
- (eing)j(staged,)f(it)f(m)o(ust)g(b)q(e)h(a)f(link)i(to)e(its)0
- 508 y(baseline)g(coun)o(terpart)e(\(whic)o(h)i(m)o(ust)e(exist\))h(and)g(m)o
- (ust)f(not)g(b)q(e)h(explicitly)j(forbidden)e(from)e(b)q(eing)i(staged.)0
- SHAR_EOF
- true || echo 'restore of bcs-2.0/doc/bcs.PS failed'
- fi
- echo 'End of bcs-2.0 part 17'
- echo 'File bcs-2.0/doc/bcs.PS is continued in part 18'
- echo 18 > _shar_seq_.tmp
- exit 0
-