Mercurial > emacs
annotate lib-src/rcs-checkin @ 31318:29ea4dc8a310
*** empty log message ***
| author | Eli Zaretskii <eliz@gnu.org> |
|---|---|
| date | Fri, 01 Sep 2000 13:50:50 +0000 |
| parents | da322c027bf0 |
| children | c8fb06423da0 |
| rev | line source |
|---|---|
|
12507
da322c027bf0
Replace `#!/bin/sh' with `#! /bin/sh', for benefit of systems
Paul Eggert <eggert@twinsun.com>
parents:
9611
diff
changeset
|
1 #! /bin/sh |
| 2273 | 2 |
|
2275
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
3 # This script accepts any number of file arguments and checks them into RCS. |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
4 # |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
5 # Arguments which are detectably either RCS masters (with names ending in ,v) |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
6 # or Emacs version files (with names of the form foo.~<number>~) are ignored. |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
7 # For each file foo, the script looks for Emacs version files related to it. |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
8 # These files are checked in as deltas, oldest first, so that the contents of |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
9 # the file itself becomes the latest revision in the master. |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
10 # |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
11 # The first line of each file is used as its description text. The file itself |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
12 # is not deleted, as under VC with vc-keep-workfiles at its default of t, but |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
13 # all the version files are. |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
14 # |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
15 # If an argument file is already version-controlled under RCS, any version |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
16 # files are added to the list of deltas and deleted, and then the workfile |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
17 # is checked in again as the latest version. This is probably not quite |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
18 # what was wanted, and is the main reason VC doesn't simply call this to |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
19 # do checkins. |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
20 # |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
21 # This script is intended to be used to convert files with an old-Emacs-style |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
22 # version history for use with VC (the Emacs 19 version-control interface), |
|
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
23 # which likes to use RCS as its back end. It was written by Paul Eggert |
|
2689
dcbc46826515
*** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2275
diff
changeset
|
24 # and revised/documented for use with VC by Eric S. Raymond, Mar 19 1993. |
|
2275
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
25 |
| 2273 | 26 case $# in |
| 27 0) | |
| 28 echo "rcs-checkin: usage: rcs-checkin file ..." | |
| 29 echo "rcs-checkin: function: checks file.~*~ and file into a new RCS file" | |
| 30 echo "rcs-checkin: function: uses the file's first line for the description" | |
| 31 esac | |
| 32 | |
| 33 # expr pattern to extract owner from ls -l output | |
| 34 ls_owner_pattern='[^ ][^ ]* *[^ ][^ ]* *\([^ ][^ ]*\)' | |
| 35 | |
| 36 for file | |
| 37 do | |
| 38 # Make it easier to say `rcs-checkin *' | |
| 39 # by ignoring file names that already contain `~', or end in `,v'. | |
| 40 case $file in | |
| 41 *~* | *,v) continue | |
| 42 esac | |
| 43 # Ignore non-files too. | |
| 44 test -f "$file" || continue | |
| 45 | |
|
4343
aa19e3673b9f
Don't check whether file is readable until we have decided not to ignore it.
Paul Eggert <eggert@twinsun.com>
parents:
2689
diff
changeset
|
46 # Check that file is readable. |
|
9611
9e5812a795da
Use test -r instead of < to check readability, to avoid syntax error.
David J. MacKenzie <djm@gnu.org>
parents:
4343
diff
changeset
|
47 test -r "$file" || exit |
|
4343
aa19e3673b9f
Don't check whether file is readable until we have decided not to ignore it.
Paul Eggert <eggert@twinsun.com>
parents:
2689
diff
changeset
|
48 |
| 2273 | 49 # If the RCS file does not already exist, |
| 50 # initialize it with a description from $file's first line. | |
| 51 rlog -R "$file" >/dev/null 2>&1 || | |
| 52 rcs -i -q -t-"`sed 1q $file`" "$file" || exit | |
| 53 | |
| 54 # Get list of old files. | |
| 55 oldfiles=` | |
| 56 ls $file.~[0-9]*~ 2>/dev/null | | |
| 57 sort -t~ -n +1 | |
| 58 ` | |
| 59 | |
| 60 # Check that they are properly sorted by date. | |
| 61 case $oldfiles in | |
| 62 ?*) | |
| 63 oldfiles_by_date=`ls -rt $file $oldfiles` | |
| 64 test " $oldfiles | |
| 65 $file" = " $oldfiles_by_date" || { | |
| 66 echo >&2 "rcs-checkin: skipping $file, because its mod times are out of order. | |
| 67 | |
| 68 Sorted by mod time: | |
| 69 $oldfiles_by_date | |
| 70 | |
| 71 Sorted by name: | |
| 72 $oldfiles | |
| 73 $file" | |
| 74 continue | |
| 75 } | |
| 76 esac | |
| 77 | |
| 78 echo >&2 rcs-checkin: checking in: $oldfiles $file | |
| 79 | |
| 80 # Save $file as $file.~-~ temporarily. | |
| 81 mv "$file" "$file.~-~" || exit | |
| 82 | |
| 83 # Rename each old file to $file, and check it in. | |
| 84 for oldfile in $oldfiles | |
| 85 do | |
| 86 mv "$oldfile" "$file" || exit | |
| 87 ls_l=`ls -l "$file"` || exit | |
| 88 owner=-w`expr " $ls_l" : " $ls_owner_pattern"` || owner= | |
|
2275
c70f9af7c66a
Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
2273
diff
changeset
|
89 echo "Formerly ${oldfile}" | ci -d -l -q $owner "$file" || exit |
| 2273 | 90 done |
| 91 | |
| 92 # Bring $file back from $file.~-~, and check it in. | |
| 93 mv "$file.~-~" "$file" || exit | |
| 94 ls_l=`ls -l "$file"` || exit | |
| 95 owner=-w`expr " $ls_l" : " $ls_owner_pattern"` || owner= | |
| 96 ci -d -q -u $owner -m"entered into RCS" "$file" || exit | |
| 97 done | |
| 98 |
