home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume6 / cvs / part2 < prev    next >
Text File  |  1986-11-30  |  21KB  |  906 lines

  1. Subject: v06i041:  CVS, an RCS fonrt-end (cvs), Part2/2
  2. Newsgroups: mod.sources
  3. Approved: rs@mirror.UUCP
  4.  
  5. Submitted by: Dick Grune <seismo!mcvax!vu44!dick>
  6. Mod.sources: Volume 6, Issue 41
  7. Archive-name: cvs/Part2
  8.  
  9. : This is a shar archive.  Extract with sh, not csh.
  10. : This archive ends with exit, so do not worry about trailing junk.
  11. : --------------------------- cut here --------------------------
  12. PATH=/bin:/usr/bin
  13. echo Extracting \B\E\.\a\u\x
  14. sed 's/^X//' > \B\E\.\a\u\x << '+ END-OF-FILE '\B\E\.\a\u\x
  15. X#    This file is part of the Concurrent Versions System CVS.
  16. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  17. X#    $Header: BE.aux,v 1.9 86/06/22 18:08:57 dick Exp $
  18. X
  19. X#
  20. X#        B u i l d   E n t r y
  21. X#    Script, to be included.
  22. X#
  23. X#    Assumes set:
  24. X#        $CVSLIB
  25. X#        $Name
  26. X#        $Options
  27. X#        $Rcs
  28. X#        $Repository
  29. X#        $User
  30. X#
  31. X#    Builds an entry for a new file and sets up $User,[pt] by
  32. X#    interrogating the user.
  33. X#
  34. X#    Sets OK to no and calls continue, if necessary.
  35. X#
  36. X
  37. X# there may be an old file with the same name in the attic!
  38. X# this is an awkward place to test, but other places are equally awkward
  39. Xif    # it is in the attic already
  40. X    [ -r $Repository/Attic/$User,v ]
  41. Xthen
  42. X    echo $Name: there is an old file $User already \
  43. X                        in $Repository/Attic >&2
  44. X    OK=no
  45. X    continue
  46. Xfi
  47. X
  48. X# isn't the name too long?
  49. Xif    # both $User and $User,x can be linked made by linking
  50. X    ln $User $User, >/dev/null 2>/dev/null \
  51. X&&
  52. X    ln $User $User,x >/dev/null 2>/dev/null
  53. Xthen
  54. X    rm $User, $User,x
  55. Xelse
  56. X    rm -f $User,
  57. X    echo $Name: filename $User is too long >&2
  58. X    OK=no
  59. X    continue
  60. Xfi
  61. X
  62. X# store the options
  63. Xecho "$Options" >$User,p
  64. X
  65. X# get a description file by imitating a call of rcs -i
  66. Xecho "RCS file: $Rcs"
  67. Xecho "enter description, terminated with ^D or '.':"
  68. Xecho "NOTE: This is NOT the log message!"
  69. Xcp /dev/null $User,t
  70. Xwhile    # the user still provides text
  71. X    echo -n ">> "
  72. X    read TXT
  73. Xdo    # add it to $User,t, except if it is a single dot
  74. X    if    # it is the terminating dot
  75. X        [ "$TXT" = "." ]
  76. X    then
  77. X        break
  78. X    fi
  79. X    echo "$TXT" >>$User,t
  80. Xdone
  81. Xecho done
  82. X
  83. X# create the entry (at the end, since the user may have interrupted)
  84. X$CVSLIB/RG.aux $User 0 "Initial $User"
  85. + END-OF-FILE BE.aux
  86. chmod 'u=rwx,g=rx,o=rx' \B\E\.\a\u\x
  87. set `sum \B\E\.\a\u\x`
  88. sum=$1
  89. case $sum in
  90. 16090)    :;;
  91. *)    echo 'Bad sum in '\B\E\.\a\u\x >&2
  92. esac
  93. echo Extracting \C\A\.\a\u\x
  94. sed 's/^X//' > \C\A\.\a\u\x << '+ END-OF-FILE '\C\A\.\a\u\x
  95. X#    This file is part of the Concurrent Versions System CVS.
  96. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  97. X#    $Header: CA.aux,v 1.4 86/06/22 18:09:14 dick Exp $
  98. X
  99. X#
  100. X#        C r e a t e   A d m i n i s t r a t i o n
  101. X#    Script, to be included.
  102. X#
  103. X#    Assumes set:
  104. X#        $InitRecord
  105. X#        $Name
  106. X#        $Repository
  107. X#
  108. X#    Creates a CVS administration directory based on repository
  109. X#    $Repository; the Entries file is prefilled from $InitRecord.
  110. X#
  111. X
  112. X# check the repository
  113. Xif    # there is such a repository
  114. X    [ -d $Repository ]
  115. Xthen    :
  116. Xelse
  117. X    echo $Name: there is no repository $Repository >&2
  118. X    exit 1
  119. Xfi
  120. X
  121. X# check the initial record
  122. Xif    # there is such a file
  123. X    [ -f $InitRecord ]
  124. Xthen    :
  125. Xelse
  126. X    echo $Name: there is no file $InitRecord >&2
  127. X    exit 1
  128. Xfi
  129. X
  130. X# install CVS.adm directory
  131. Xif    # there is already a directory CVS.adm
  132. X    [ -d CVS.adm ]
  133. Xthen
  134. X    echo $Name: there is a version here already >&2
  135. X    exit 1
  136. Xfi
  137. X
  138. Xif    # we can create the administration directory
  139. X    mkdir CVS.adm
  140. Xthen    :
  141. Xelse
  142. X    echo $Name: cannot make administration directory ./CVS.adm >&2
  143. X    exit 1
  144. Xfi
  145. X
  146. X# set up the administration
  147. Xecho $Repository >CVS.adm/Repository
  148. Xcat $InitRecord >CVS.adm/Entries    # use > to make Entries writeable
  149. + END-OF-FILE CA.aux
  150. chmod 'u=rw,g=r,o=r' \C\A\.\a\u\x
  151. set `sum \C\A\.\a\u\x`
  152. sum=$1
  153. case $sum in
  154. 18085)    :;;
  155. *)    echo 'Bad sum in '\C\A\.\a\u\x >&2
  156. esac
  157. echo Extracting \C\I\.\a\u\x
  158. sed 's/^X//' > \C\I\.\a\u\x << '+ END-OF-FILE '\C\I\.\a\u\x
  159. X#    This file is part of the Concurrent Versions System CVS.
  160. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  161. X#    $Header: CI.aux,v 1.6 86/06/22 18:09:32 dick Exp $
  162. X
  163. X#
  164. X#        C h e c k   I n
  165. X#    Script, to be included
  166. X#
  167. X#    Assumes set:
  168. X#        $ACT
  169. X#        $CVSLIB
  170. X#        $Message
  171. X#        $Name
  172. X#        $RCSBIN
  173. X#        $Repository
  174. X#        $Revision    (to be set to -rN if needed; empty otherwise)
  175. X#        $User
  176. X#
  177. X#    Does a very careful check-in of the file $User, and tries not
  178. X#    to spoil its modification time (to avoid useless recompilations)
  179. X#
  180. X#    Sets OK to no, if necessary.
  181. X#
  182. X
  183. Xecho Checking in $User\; log: "$Message"
  184. XRcs=$Repository/$User,v
  185. X
  186. X# offer copy to RCS, in an attempt not to spoil the modification time of $User
  187. XTmp=,,$User
  188. X$ACT mv $User $Tmp
  189. X$ACT cp $Tmp $User
  190. X
  191. Xif    # check in $Rcs
  192. X    $ACT $RCSBIN/ci $Revision -m"$Message" $Rcs 2>&1
  193. Xthen    # the file $User will now be gone; get a new copy,
  194. X    # with a possibly updated $Header
  195. X    $ACT $RCSBIN/co -q $Rcs
  196. X    $ACT chmod +w $User
  197. X    # but maybe the old $User may still serve
  198. X    if    # there were no funny modifications
  199. X        $ACT cmp -s $User $Tmp
  200. X    then    # $User is preferable, because of 'make'
  201. X        $ACT mv $Tmp $User
  202. X    else    # $Tmp is not of use any more
  203. X        $ACT rm $Tmp
  204. X    fi
  205. X    # get new version number and time stamp
  206. X    . $CVSLIB/VT.aux    # sets $VN_User, $VN_Rcs, $TS_User, $TS_Rcs
  207. X    # and register $User
  208. X    $ACT $CVSLIB/RG.aux $User $VN_Rcs "$TS_User"
  209. Xelse    # something is very wrong
  210. X    # restore the old $User
  211. X    $ACT mv $Tmp $User
  212. X    echo $Name: could not check in $User >&2
  213. X    OK=no
  214. X    if    # unlock $Rcs
  215. X        $ACT $RCSBIN/rcs -u $Rcs
  216. X    then    :
  217. X    else
  218. X        echo $Name: could not UNlock $Rcs >&2
  219. X    fi
  220. Xfi
  221. + END-OF-FILE CI.aux
  222. chmod 'u=rw,g=r,o=r' \C\I\.\a\u\x
  223. set `sum \C\I\.\a\u\x`
  224. sum=$1
  225. case $sum in
  226. 11171)    :;;
  227. *)    echo 'Bad sum in '\C\I\.\a\u\x >&2
  228. esac
  229. echo Extracting \C\S\.\a\u\x
  230. sed 's/^X//' > \C\S\.\a\u\x << '+ END-OF-FILE '\C\S\.\a\u\x
  231. X#    This file is part of the Concurrent Versions System CVS.
  232. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  233. X#    $Header: CS.aux,v 1.16 86/06/22 18:10:11 dick Exp $
  234. X
  235. X#
  236. X#        C o l l e c t   S e t s
  237. X#    Script, to be included.
  238. X#
  239. X#    Assumes set:
  240. X#        $@
  241. X#        $CVSLIB
  242. X#        $Name
  243. X#        $User
  244. X#        $VN_Rcs
  245. X#        $VN_User
  246. X#        $TS_Rcs
  247. X#        $TS_User
  248. X#
  249. X#    Collects the interesting file names from the administration and
  250. X#    the repository in a number of shell variables:
  251. X#                            solved by:
  252. X#        CLIST    conflict-ridden            (user)
  253. X#        GLIST    modified, needs merging        (--/UV)
  254. X#        MLIST    modified, needs checking in    (CM/--)
  255. X#        OLIST    needs checking out        (--/UV)
  256. X#        ALIST    to be added            (CM/--)
  257. X#        RLIST    to be removed            (CM/--)
  258. X#        WLIST    remove entry            (--/UV)
  259. X#
  260. X#    It sets OK to no if something is wrong.
  261. X#
  262. X
  263. Xfor User in $@
  264. Xdo
  265. X    Rcs=$Repository/$User,v
  266. X    . $CVSLIB/VT.aux    # sets $VN_User, $VN_Rcs, $TS_User, $TS_Rcs
  267. X    
  268. X    # what entry is this?
  269. X    case $VN_User in
  270. X    "")
  271. X        # no entry available, $TS_Rcs is invalid
  272. X        
  273. X        # how is the RCS file?
  274. X        case $VN_Rcs in
  275. X        "")
  276. X            # there is no RCS file either
  277. X            
  278. X            # how is the user file?
  279. X            case "$TS_User" in
  280. X            "")
  281. X                # there is no user file
  282. X                echo $Name: nothing known about $User >&2
  283. X                OK=no
  284. X                ;;
  285. X            *)
  286. X                # there is a user file
  287. X                echo $Name: use AE to create entry \
  288. X                                for $User >&2
  289. X                OK=no
  290. X                ;;
  291. X            esac
  292. X            ;;
  293. X        *)
  294. X            # there is an RCS file
  295. X            
  296. X            # how is the user file?
  297. X            case "$TS_User" in
  298. X            "")
  299. X                # there is no user file
  300. X                OLIST="$OLIST $User"
  301. X                ;;
  302. X            *)
  303. X                # there is a user file
  304. X                echo $Name: move away $User\; \
  305. X                            it is in the way >&2
  306. X                CLIST="$CLIST $User"
  307. X                OK=no
  308. X                ;;
  309. X            esac
  310. X            ;;
  311. X        esac
  312. X        ;;
  313. X    
  314. X    0)
  315. X        # an entry for a new-born file, $TS_Rcs is dummy
  316. X        
  317. X        # how is the user file?
  318. X        case "$TS_User" in
  319. X        "")
  320. X            # there is no user file, but there should be one
  321. X            
  322. X            echo $Name: warning: \
  323. X                    new-born $User has disappeared >&2
  324. X            WLIST="$WLIST $User"
  325. X            ;;
  326. X        *)
  327. X            # there is a user file
  328. X            
  329. X            # how is the RCS file?
  330. X            case $VN_Rcs in
  331. X            "")
  332. X                # there is no RCS file
  333. X                
  334. X                ALIST="$ALIST $User"
  335. X                ;;
  336. X            *)
  337. X                # there is an RCS file
  338. X                
  339. X                echo $Name: conflict: $User created \
  340. X                    independently by second party >&2
  341. X                CLIST="$CLIST $User"
  342. X                OK=no
  343. X                ;;
  344. X            esac
  345. X            ;;
  346. X        esac
  347. X        ;;
  348. X
  349. X    -*)
  350. X        # an entry for a removed file, $TS_Rcs is valid
  351. X        
  352. X        # how is the user file?
  353. X        case "$TS_User" in
  354. X        "")
  355. X            # there is no user file (as it should be)
  356. X            
  357. X            # how is the RCS file?
  358. X            case -$VN_Rcs in
  359. X            -)
  360. X                # there is no RCS file
  361. X            
  362. X                # this is all-right, however; it has been
  363. X                # removed independently by second party
  364. X                WLIST="$WLIST $User"
  365. X                ;;
  366. X            $VN_User)
  367. X                # the RCS file is the same version as
  368. X                # the user file
  369. X                
  370. X                # and that's OK
  371. X                RLIST="$RLIST $User"
  372. X                ;;
  373. X            *)
  374. X                # the RCS file is a newer version than
  375. X                # the user file
  376. X                
  377. X                # and this is definitely not OK
  378. X                echo $Name: conflict: removed $User was \
  379. X                        modified by second party >&2
  380. X                CLIST="$CLIST $User"
  381. X                OK=no
  382. X                ;;
  383. X            esac
  384. X            ;;
  385. X        *)
  386. X            # user file shouldn't be there
  387. X            echo $Name: $User should be removed \
  388. X                        and is still there >&2
  389. X            OK=no
  390. X            ;;
  391. X        esac
  392. X        ;;
  393. X    
  394. X    *)
  395. X        # a normal entry, $TS_Rcs is valid
  396. X        
  397. X        # how is the RCS file?
  398. X        case $VN_Rcs in
  399. X        "")
  400. X            # there is no RCS file
  401. X            
  402. X            # how is the user file?
  403. X            case "$TS_User" in
  404. X            "")
  405. X                # there is no user file
  406. X                echo $Name: warning: $User is not \
  407. X                        \(no longer\) pertinent >&2
  408. X                WLIST="$WLIST $User"
  409. X                ;;
  410. X            "$TS_Rcs")
  411. X                # the user file is still unmodified
  412. X                echo $Name: $User is no longer \
  413. X                            in the repository >&2
  414. X                WLIST="$WLIST $User"
  415. X                ;;
  416. X            *)
  417. X                # the user file has been modified
  418. X                echo $Name: conflict: $User is modified but \
  419. X                    no longer in the repository >&2
  420. X                CLIST="$CLIST $User"
  421. X                OK=no
  422. X                ;;
  423. X            esac
  424. X            ;;
  425. X        $VN_User)
  426. X            # the RCS file is the same version as the user file
  427. X            
  428. X            # how is the user file?
  429. X            case "$TS_User" in
  430. X            "")
  431. X                # there is no user file
  432. X                echo $Name: warning: $User was lost >&2
  433. X                OLIST="$OLIST $User"
  434. X                ;;
  435. X            "$TS_Rcs")
  436. X                # the user file is still unmodified
  437. X                # nothing special at all!
  438. X                ;;
  439. X            *)
  440. X                # the user file has been modified
  441. X                # but do we believe it? This is complicated:
  442. X                . $CVSLIB/ND.aux # sets MLIST, if necessary
  443. X                ;;
  444. X            esac
  445. X            ;;
  446. X        *)
  447. X            # the RCS file is a newer version than the user file
  448. X            
  449. X            # how is the user file?
  450. X            case "$TS_User" in
  451. X            "")
  452. X                # there is no user file
  453. X                echo $Name: warning: $User was lost >&2
  454. X                OLIST="$OLIST $User"
  455. X                ;;
  456. X            "$TS_Rcs")
  457. X                # the user file is still unmodified
  458. X                OLIST="$OLIST $User"
  459. X                ;;
  460. X            *)
  461. X                # the user file has been modified
  462. X                GLIST="$GLIST $User"
  463. X                ;;
  464. X            esac
  465. X            ;;
  466. X        esac
  467. X        ;;
  468. X    esac
  469. Xdone
  470. + END-OF-FILE CS.aux
  471. chmod 'u=rwx,g=rx,o=rx' \C\S\.\a\u\x
  472. set `sum \C\S\.\a\u\x`
  473. sum=$1
  474. case $sum in
  475. 57537)    :;;
  476. *)    echo 'Bad sum in '\C\S\.\a\u\x >&2
  477. esac
  478. echo Extracting \E\F\.\a\u\x
  479. sed 's/^X//' > \E\F\.\a\u\x << '+ END-OF-FILE '\E\F\.\a\u\x
  480. X#!/bin/sh
  481. X#    This file is part of the Concurrent Versions System CVS.
  482. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  483. X#    $Header: EF.aux,v 1.1 86/06/15 18:01:03 dick Exp $
  484. X
  485. X#
  486. X#        E n t r i e s   f i l e   t o   F i l e s   f i l e
  487. X#    Creates a file CVS.adm/Files containing the names that comprise
  488. X#    the project, from CVS.adm/Entries.
  489. X#
  490. X
  491. X<CVS.adm/Entries sed '
  492. X    /^-/d
  493. X    s/.* \(.*\)|/\1/
  494. X' |
  495. Xsort >CVS.adm/Files
  496. + END-OF-FILE EF.aux
  497. chmod 'u=rwx,g=rx,o=rx' \E\F\.\a\u\x
  498. set `sum \E\F\.\a\u\x`
  499. sum=$1
  500. case $sum in
  501. 15654)    :;;
  502. *)    echo 'Bad sum in '\E\F\.\a\u\x >&2
  503. esac
  504. echo Extracting \F\N\.\a\u\x
  505. sed 's/^X//' > \F\N\.\a\u\x << '+ END-OF-FILE '\F\N\.\a\u\x
  506. X#!/bin/sh
  507. X#    This file is part of the Concurrent Versions System CVS.
  508. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  509. X#    $Header: FN.aux,v 1.17 86/06/13 17:59:18 dick Exp $
  510. X
  511. X#
  512. X#        F i n d  N a m e s
  513. X#    Writes all the pertinent file names, both from the administration
  514. X#    and from the repository $1 to standard output, sorted.
  515. X#
  516. X
  517. X(
  518. X    (cd $1; ls *,v) | grep -v '\*' | sed 's/,v$//'
  519. X    (<CVS.adm/Entries sed 's/.* \(.*\)|/\1/')
  520. X) |
  521. Xsort -u
  522. + END-OF-FILE FN.aux
  523. chmod 'u=rwx,g=rx,o=rx' \F\N\.\a\u\x
  524. set `sum \F\N\.\a\u\x`
  525. sum=$1
  526. case $sum in
  527. 38797)    :;;
  528. *)    echo 'Bad sum in '\F\N\.\a\u\x >&2
  529. esac
  530. echo Extracting \L\R\.\a\u\x
  531. sed 's/^X//' > \L\R\.\a\u\x << '+ END-OF-FILE '\L\R\.\a\u\x
  532. X#    This file is part of the Concurrent Versions System CVS.
  533. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  534. X#    $Header: LR.aux,v 1.6 86/06/22 18:11:55 dick Exp $
  535. X
  536. X#
  537. X#        L o c a t e   R C S   F i l e
  538. X#    Script, to be included.
  539. X#
  540. X#    Assumes set:
  541. X#        $Repository
  542. X#        $User
  543. X#
  544. X#    Called when the RCS file sought may be in the attic $Repository/Attic.
  545. X#    Sets $Rcs to $Repository/Attic/$User,v if appropriate and to
  546. X#    $Repository/$User,v otherwise.
  547. X#
  548. X
  549. XRcs=$Repository/$User,v
  550. XOld=$Repository/Attic/$User,v
  551. Xif    # it is in the repository
  552. X    [ -r $Rcs ]
  553. Xthen    :
  554. Xelif    # it is in the attic
  555. X    [ -r $Old ]
  556. Xthen
  557. X    Rcs=$Old
  558. Xelse    # it is treated as if it were in the repository
  559. X    :
  560. Xfi
  561. + END-OF-FILE LR.aux
  562. chmod 'u=rw,g=r,o=r' \L\R\.\a\u\x
  563. set `sum \L\R\.\a\u\x`
  564. sum=$1
  565. case $sum in
  566. 55946)    :;;
  567. *)    echo 'Bad sum in '\L\R\.\a\u\x >&2
  568. esac
  569. echo Extracting \N\D\.\a\u\x
  570. sed 's/^X//' > \N\D\.\a\u\x << '+ END-OF-FILE '\N\D\.\a\u\x
  571. X#    This file is part of the Concurrent Versions System CVS.
  572. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  573. X#    $Header: ND.aux,v 1.13 86/06/22 18:12:57 dick Exp $
  574. X
  575. X#
  576. X#        N o   D i f f e r e n c e
  577. X#    Script, to be included.
  578. X#
  579. X#    Assumes set:
  580. X#        $ACT
  581. X#        $CVSLIB
  582. X#        $Name
  583. X#        $RCSBIN
  584. X#        $Rcs
  585. X#        $TS_User
  586. X#        $User
  587. X#        $VN_Rcs
  588. X#        $VN_User
  589. X#
  590. X#    The user file looks modified judging from its time stamp; however
  591. X#    it needn't be.  ND.aux finds out whether it is or not.
  592. X#    If it is, it adds its name to the $MLIST.
  593. X#    If it is not, it updates the administration.
  594. X#    It may set OK to 'no'.
  595. X#
  596. X
  597. XTmp=,,$User
  598. Xif    # we can retrieve a provisional copy of $Rcs
  599. X    $RCSBIN/co -p -q -r$VN_User $Rcs >$Tmp
  600. Xthen    # test for differences
  601. X    if    # they are equal
  602. X        cmp -s $User $Tmp
  603. X    then    # there were no real user differences:
  604. X        # update reference time stamp
  605. X        TS_Rcs="$TS_User"
  606. X        $ACT $CVSLIB/RG.aux $User $VN_Rcs "$TS_User"
  607. X    else    # its name belongs in the MLIST
  608. X        MLIST="$MLIST $User"
  609. X    fi
  610. X    
  611. X    rm -f $Tmp
  612. X    
  613. Xelse    # something very wrong
  614. X    echo $Name: could not check out revision $VN_User of $User >&2
  615. X    rm $Tmp
  616. X    OK=no
  617. Xfi
  618. X
  619. + END-OF-FILE ND.aux
  620. chmod 'u=rwx,g=rx,o=rx' \N\D\.\a\u\x
  621. set `sum \N\D\.\a\u\x`
  622. sum=$1
  623. case $sum in
  624. 42347)    :;;
  625. *)    echo 'Bad sum in '\N\D\.\a\u\x >&2
  626. esac
  627. echo Extracting \N\R\.\a\u\x
  628. sed 's/^X//' > \N\R\.\a\u\x << '+ END-OF-FILE '\N\R\.\a\u\x
  629. X#    This file is part of the Concurrent Versions System CVS.
  630. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  631. X#    $Header: NR.aux,v 1.9 86/06/22 18:13:16 dick Exp $
  632. X
  633. X#
  634. X#        N a m e   o f   R e p o s i t o r y
  635. X#    Script, to be included.
  636. X#
  637. X#    Assumes set:
  638. X#        $Name
  639. X#        $Repository
  640. X#
  641. X#    Determines the name of the RCS repository and sets $Repository
  642. X#    accordingly.
  643. X#
  644. X
  645. Xif    # there is no administration directory
  646. X    [ ! -d CVS.adm ]
  647. Xthen
  648. X    echo $Name: there is no version here\; do CV first >&2
  649. X    exit 1
  650. Xfi
  651. X
  652. X# compatibility patch                        P A T C H
  653. Xif    # this is an old administration
  654. X    [ ! -r CVS.adm/Repository -a -r CVS.adm/RCSDIR ]
  655. Xthen    # update the name of the repository file
  656. X    mv CVS.adm/RCSDIR CVS.adm/Repository
  657. Xfi
  658. X
  659. Xif    # the necessary files are there
  660. X    [ -r CVS.adm/Repository -a -r CVS.adm/Entries ]
  661. Xthen    # read the name of the RCS repository from the file
  662. X    Repository=`cat CVS.adm/Repository`
  663. Xelse    # no good
  664. X    echo $Name: \*PANIC\* administration files missing >&2
  665. X    exit 1
  666. Xfi
  667. X
  668. Xif    # the promised repository isn't there
  669. X    [ ! -d $Repository ]
  670. Xthen
  671. X    echo $Name: there is no repository $Repository >&2
  672. X    exit 1
  673. Xfi
  674. X
  675. Xexport Repository
  676. + END-OF-FILE NR.aux
  677. chmod 'u=rwx,g=rx,o=rx' \N\R\.\a\u\x
  678. set `sum \N\R\.\a\u\x`
  679. sum=$1
  680. case $sum in
  681. 43511)    :;;
  682. *)    echo 'Bad sum in '\N\R\.\a\u\x >&2
  683. esac
  684. echo Extracting \O\P\.\a\u\x
  685. sed 's/^X//' > \O\P\.\a\u\x << '+ END-OF-FILE '\O\P\.\a\u\x
  686. X#    This file is part of the Concurrent Versions System CVS.
  687. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  688. X#    $Header: OP.aux,v 1.4 86/05/18 12:00:44 dick Exp $
  689. X
  690. X#
  691. X#        O p t i o n s
  692. X#    Script, to be included.
  693. X#
  694. X#    Collects options from $@ and puts them in $Options
  695. X#
  696. X
  697. XGO_ON=true
  698. Xwhile    # there may still be an option
  699. X    $GO_ON
  700. Xdo
  701. X    case $1 in
  702. X    -*)
  703. X        Options="$Options $1"
  704. X        shift
  705. X        ;;
  706. X    *)
  707. X        GO_ON=false
  708. X        ;;
  709. X    esac
  710. Xdone
  711. + END-OF-FILE OP.aux
  712. chmod 'u=rw,g=r,o=r' \O\P\.\a\u\x
  713. set `sum \O\P\.\a\u\x`
  714. sum=$1
  715. case $sum in
  716. 38435)    :;;
  717. *)    echo 'Bad sum in '\O\P\.\a\u\x >&2
  718. esac
  719. echo Extracting \R\G\.\a\u\x
  720. sed 's/^X//' > \R\G\.\a\u\x << '+ END-OF-FILE '\R\G\.\a\u\x
  721. X#!/bin/sh
  722. X#    This file is part of the Concurrent Versions System CVS.
  723. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  724. X#    $Header: RG.aux,v 1.11 86/06/09 14:37:57 dick Exp $
  725. X
  726. X#
  727. X#        R e g i s t e r
  728. X#    Enters file $1 into the administration with version number $2
  729. X#    and time stamp $3.  Removes the old entry first, if necessary.
  730. X#
  731. X#    Assumes set:
  732. X#        $CVSLIB
  733. X#
  734. X
  735. X$CVSLIB/SC.aux $1            # scratch the entry
  736. Xecho "$2|$3|" >>CVS.adm/Entries        # and append a new one
  737. + END-OF-FILE RG.aux
  738. chmod 'u=rwx,g=rx,o=rx' \R\G\.\a\u\x
  739. set `sum \R\G\.\a\u\x`
  740. sum=$1
  741. case $sum in
  742. 13059)    :;;
  743. *)    echo 'Bad sum in '\R\G\.\a\u\x >&2
  744. esac
  745. echo Extracting \S\C\.\a\u\x
  746. sed 's/^X//' > \S\C\.\a\u\x << '+ END-OF-FILE '\S\C\.\a\u\x
  747. X#!/bin/sh
  748. X#    This file is part of the Concurrent Versions System CVS.
  749. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  750. X#    $Header: SC.aux,v 1.8 86/05/18 12:01:59 dick Exp $
  751. X
  752. X#
  753. X#        S c r a t c h
  754. X#    Scratches file $1 from the administration
  755. X#
  756. X
  757. Xmv CVS.adm/Entries CVS.adm/Entries.Backup
  758. Xfgrep -v " $1|" CVS.adm/Entries.Backup >CVS.adm/Entries
  759. + END-OF-FILE SC.aux
  760. chmod 'u=rwx,g=rx,o=rx' \S\C\.\a\u\x
  761. set `sum \S\C\.\a\u\x`
  762. sum=$1
  763. case $sum in
  764. 30030)    :;;
  765. *)    echo 'Bad sum in '\S\C\.\a\u\x >&2
  766. esac
  767. echo Extracting \S\L\.\a\u\x
  768. sed 's/^X//' > \S\L\.\a\u\x << '+ END-OF-FILE '\S\L\.\a\u\x
  769. X#    This file is part of the Concurrent Versions System CVS.
  770. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  771. X#    $Header: SL.aux,v 1.2 86/06/22 18:14:12 dick Exp $
  772. X
  773. X#
  774. X#        S e t   L o c k
  775. X#    Script, to be included.
  776. X#
  777. X#    Assumes set:
  778. X#        $LCK        name of lock
  779. X#        $LDR        name of directory to be locked
  780. X#        $Name
  781. X#
  782. X#    Persistently tries to make the directory $LCK, which serves as
  783. X#    a lock.
  784. X#
  785. X
  786. Xuntil    # we can enter the critical section
  787. X    trap '' 1 2 3 15        # play deaf
  788. X    mkdir $LCK >/dev/null 2>/dev/null
  789. Xdo
  790. X    # we missed it this cycle
  791. X    echo $Name: `date`: waiting for access to $LDR
  792. X    
  793. X    # sleep with both ears open
  794. X    trap 'exit 1' 1 2 3 15
  795. X    sleep 60
  796. Xdone
  797. + END-OF-FILE SL.aux
  798. chmod 'u=rw,g=r,o=r' \S\L\.\a\u\x
  799. set `sum \S\L\.\a\u\x`
  800. sum=$1
  801. case $sum in
  802. 01189)    :;;
  803. *)    echo 'Bad sum in '\S\L\.\a\u\x >&2
  804. esac
  805. echo Extracting \V\N\.\a\u\x
  806. sed 's/^X//' > \V\N\.\a\u\x << '+ END-OF-FILE '\V\N\.\a\u\x
  807. X#!/bin/sh
  808. X#    This file is part of the Concurrent Versions System CVS.
  809. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  810. X#    $Header: VN.aux,v 1.8 86/06/09 14:38:22 dick Exp $
  811. X
  812. X#
  813. X#        V e r s i o n   N u m b e r
  814. X#    Writes the version number of the most recent revision of $1
  815. X#    to standard output.
  816. X#    This is sloppy, but the only way to do it, short of analysing
  817. X#    the *,v file itself.
  818. X#
  819. X#    Assumes set:
  820. X#        $RCSBIN
  821. X#
  822. X
  823. X(    #    The following stupid construction is necessary, since the
  824. X    #    shell sometimes generates a NL when a pipe breaks, as it
  825. X    #    does here, where sed stops after a few lines.  Letting
  826. X    #    sed process all the rest is also a shame.
  827. X    #
  828. X$RCSBIN/rlog $1 |
  829. Xsed -n '
  830. X    /^head:/{
  831. X        s/.* //p
  832. X        q
  833. X    }
  834. X'
  835. X) 2>/dev/null
  836. + END-OF-FILE VN.aux
  837. chmod 'u=rwx,g=rx,o=rx' \V\N\.\a\u\x
  838. set `sum \V\N\.\a\u\x`
  839. sum=$1
  840. case $sum in
  841. 46756)    :;;
  842. *)    echo 'Bad sum in '\V\N\.\a\u\x >&2
  843. esac
  844. echo Extracting \V\T\.\a\u\x
  845. sed 's/^X//' > \V\T\.\a\u\x << '+ END-OF-FILE '\V\T\.\a\u\x
  846. X#    This file is part of the Concurrent Versions System CVS.
  847. X#    Written by Dick Grune, Vrije Universiteit, Amsterdam.
  848. X#    $Header: VT.aux,v 1.16 86/06/09 10:03:15 dick Exp $
  849. X
  850. X#
  851. X#        V e r s i o n   &   T i m e   S t a m p
  852. X#    Script, to be included.
  853. X#
  854. X#    Assumes set:
  855. X#        $CVSLIB
  856. X#        $Rcs
  857. X#        $User
  858. X#
  859. X#    Sets the following shell variables:
  860. X#    VN_User        version # of the RCS file the user file derives from
  861. X#            may also be:
  862. X#                empty:        no entry for user file
  863. X#                0:        user file is new
  864. X#                -$VN_User:    user file is to be removed
  865. X#    VN_Rcs        version # of active RCS file
  866. X#                is empty for absent RCS file
  867. X#    TS_User        present time stamp of the user file
  868. X#                is empty for absent user file
  869. X#    TS_Rcs        time stamp of the lastest check-out of the RCS file.
  870. X#
  871. X#    The syntax of an entry is
  872. X#        <version-number>|<time-stamp>|
  873. X#    and since the time stamp is obtained through ls, it includes
  874. X#    the file name.
  875. X#
  876. X
  877. XVN_Rcs=`$CVSLIB/VN.aux $Rcs`
  878. X
  879. Xif    # the user file exists
  880. X    [ -r $User ]
  881. Xthen    #get its time stamp
  882. X    TS_User=`ls -ld $User`
  883. Xelse    # yield null
  884. X    TS_User=
  885. Xfi
  886. X
  887. XENTRY=`fgrep " $User|" CVS.adm/Entries`
  888. Xif    # the entry is non-empty
  889. X    [ "$ENTRY" != "" ]
  890. Xthen    # dissect it
  891. X    VN_User=`expr "$ENTRY" : '\(.*\)|.' `
  892. X    TS_Rcs=`expr "$ENTRY" : '.*|\(.*\)|' `
  893. Xelse    # yield nulls
  894. X    VN_User=
  895. X    TS_Rcs=
  896. Xfi
  897. + END-OF-FILE VT.aux
  898. chmod 'u=rwx,g=rx,o=rx' \V\T\.\a\u\x
  899. set `sum \V\T\.\a\u\x`
  900. sum=$1
  901. case $sum in
  902. 60984)    :;;
  903. *)    echo 'Bad sum in '\V\T\.\a\u\x >&2
  904. esac
  905. exit 0
  906.