annotate lib-src/rcs-checkin @ 3025:facf3239ba30

[xemacs-hg @ 2005-10-25 11:16:19 by ben] rename new->new_, convert 'foo to `foo' EmacsFrame.c, ExternalClient.c, ExternalShell.c, chartab.c, cmdloop.c, compiler.h, console.c, database.c, device-msw.c, device-x.c, device.c, doc.c, dragdrop.c, eval.c, event-msw.c, event-stream.c, events.c, extents.c, file-coding.c, fns.c, frame-tty.c, frame.c, gpmevent.c, gutter.c, hash.c, imgproc.c, indent.c, keymap.c, lisp-union.h, macros.c, malloc.c, marker.c, menubar-x.c, menubar.c, mule-charset.c, number.c, process.c, profile.h, ralloc.c, redisplay.c, select-common.h, select.c, syntax.c, sysfile.h, sysproc.h, systime.h, syswindows.h, toolbar.c, tooltalk.c, tparam.c, unexaix.c, unexalpha.c, unexconvex.c, unexec.c, unexhp9k800.c, unexmips.c, unicode.c, window.c: new -> new_. 'foo -> `foo'. lwlib-internal.h: redo assert macros to follow lisp.h and not trigger warnings. lwlib.c, xlwtabs.c: new -> new_.
author ben
date Tue, 25 Oct 2005 11:16:49 +0000
parents 3ecd8885ac67
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 #! /bin/sh
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 # This script accepts any number of file arguments and checks them into RCS.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4 #
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 # Arguments which are detectably either RCS masters (with names ending in ,v)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 # or Emacs version files (with names of the form foo.~<number>~) are ignored.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7 # For each file foo, the script looks for Emacs version files related to it.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 # These files are checked in as deltas, oldest first, so that the contents of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9 # the file itself becomes the latest revision in the master.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 #
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 # The first line of each file is used as its description text. The file itself
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 # is not deleted, as under VC with vc-keep-workfiles at its default of t, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 # all the version files are.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14 #
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 # If an argument file is already version-controlled under RCS, any version
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 # files are added to the list of deltas and deleted, and then the workfile
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 # is checked in again as the latest version. This is probably not quite
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 # what was wanted, and is the main reason VC doesn't simply call this to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19 # do checkins.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 #
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 # This script is intended to be used to convert files with an old-Emacs-style
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 # version history for use with VC (the Emacs 19 version-control interface),
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 # which likes to use RCS as its back end. It was written by Paul Eggert
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 # and revised/documented for use with VC by Eric S. Raymond, Mar 19 1993.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 case $# in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 echo "rcs-checkin: usage: rcs-checkin file ..."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 echo "rcs-checkin: function: checks file.~*~ and file into a new RCS file"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 echo "rcs-checkin: function: uses the file's first line for the description"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 esac
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 # expr pattern to extract owner from ls -l output
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 ls_owner_pattern='[^ ][^ ]* *[^ ][^ ]* *\([^ ][^ ]*\)'
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 for file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 # Make it easier to say `rcs-checkin *'
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 # by ignoring file names that already contain `~', or end in `,v'.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 case $file in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 *~* | *,v) continue
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 esac
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 # Ignore non-files too.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 test -f "$file" || continue
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 # Check that file is readable.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 test -r "$file" || exit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 # If the RCS file does not already exist,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 # initialize it with a description from $file's first line.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 rlog -R "$file" >/dev/null 2>&1 ||
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 rcs -i -q -t-"`sed 1q $file`" "$file" || exit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 # Get list of old files.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 oldfiles=`
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 ls $file.~[0-9]*~ 2>/dev/null |
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 sort -t~ -n +1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58 `
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 # Check that they are properly sorted by date.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 case $oldfiles in
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 ?*)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 oldfiles_by_date=`ls -rt $file $oldfiles`
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64 test " $oldfiles
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 $file" = " $oldfiles_by_date" || {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 echo >&2 "rcs-checkin: skipping $file, because its mod times are out of order.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 Sorted by mod time:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 $oldfiles_by_date
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 Sorted by name:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 $oldfiles
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 $file"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 continue
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 }
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76 esac
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 echo >&2 rcs-checkin: checking in: $oldfiles $file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 # Save $file as $file.~-~ temporarily.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 mv "$file" "$file.~-~" || exit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
83 # Rename each old file to $file, and check it in.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
84 for oldfile in $oldfiles
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
85 do
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
86 mv "$oldfile" "$file" || exit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87 ls_l=`ls -l "$file"` || exit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 owner=-w`expr " $ls_l" : " $ls_owner_pattern"` || owner=
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 echo "Formerly ${oldfile}" | ci -d -l -q $owner "$file" || exit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 done
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 # Bring $file back from $file.~-~, and check it in.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 mv "$file.~-~" "$file" || exit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 ls_l=`ls -l "$file"` || exit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 owner=-w`expr " $ls_l" : " $ls_owner_pattern"` || owner=
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 ci -d -q -u $owner -m"entered into RCS" "$file" || exit
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97 done
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98