annotate lib-src/rcs-checkin @ 87097:781256628613

Merge from gnus--devo--0 Revision: emacs@sv.gnu.org/emacs--devo--0--patch-941
author Miles Bader <miles@gnu.org>
date Thu, 06 Dec 2007 00:21:00 +0000
parents 1f2482de3237
children 5714ff101fd9 f55f9811f5d7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
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.
36226
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
4
64769
6358e3c6075c Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64083
diff changeset
5 # Copyright (C) 1993, 1994, 1995, 2001, 2002, 2003, 2004,
75348
3d45362f1d38 Add 2007 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 68647
diff changeset
6 # 2005, 2006, 2007 Free Software Foundation, Inc.
2275
c70f9af7c66a Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2273
diff changeset
7 #
36226
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
8 # This file is part of GNU Emacs.
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
9 #
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
10 # GNU Emacs is free software; you can redistribute it and/or modify
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
11 # it under the terms of the GNU General Public License as published by
78257
1f2482de3237 Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents: 75348
diff changeset
12 # the Free Software Foundation; either version 3, or (at your option)
36226
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
13 # any later version.
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
14 #
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
15 # GNU Emacs is distributed in the hope that it will be useful,
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
18 # GNU General Public License for more details.
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
19 #
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
20 # You should have received a copy of the GNU General Public License
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
21 # along with GNU Emacs; see the file COPYING. If not, write to the
64083
23a17af379b1 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
22 # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
23a17af379b1 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 52401
diff changeset
23 # Boston, MA 02110-1301, USA.
36226
c8fb06423da0 Add copyright notice.
Gerd Moellmann <gerd@gnu.org>
parents: 12507
diff changeset
24
2275
c70f9af7c66a Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2273
diff changeset
25 # 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
26 # 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
27 # 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
28 # 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
29 # 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
30 #
c70f9af7c66a Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2273
diff changeset
31 # 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
32 # 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
33 # 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
34 #
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 43223
diff changeset
35 # If an argument file is already version-controlled under RCS, any version
2275
c70f9af7c66a Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2273
diff changeset
36 # 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
37 # 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
38 # 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
39 # do checkins.
c70f9af7c66a Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2273
diff changeset
40 #
c70f9af7c66a Added documentation, made the change comment for old versions more
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2273
diff changeset
41 # 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
42 # 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
43 # 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
44 # 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
45
2273
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
46 case $# in
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
47 0)
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
48 echo "rcs-checkin: usage: rcs-checkin file ..."
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
49 echo "rcs-checkin: function: checks file.~*~ and file into a new RCS file"
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
50 echo "rcs-checkin: function: uses the file's first line for the description"
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51 esac
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
52
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 # expr pattern to extract owner from ls -l output
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
54 ls_owner_pattern='[^ ][^ ]* *[^ ][^ ]* *\([^ ][^ ]*\)'
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
55
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
56 for file
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
57 do
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
58 # Make it easier to say `rcs-checkin *'
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
59 # by ignoring file names that already contain `~', or end in `,v'.
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
60 case $file in
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
61 *~* | *,v) continue
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62 esac
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63 # Ignore non-files too.
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
64 test -f "$file" || continue
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65
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
66 # 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
67 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
68
2273
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
69 # If the RCS file does not already exist,
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70 # initialize it with a description from $file's first line.
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
71 rlog -R "$file" >/dev/null 2>&1 ||
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72 rcs -i -q -t-"`sed 1q $file`" "$file" || exit
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
73
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
74 # Get list of old files.
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
75 oldfiles=`
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
76 ls $file.~[0-9]*~ 2>/dev/null |
43221
fadb49348c98 Use `sort -k 2', not `sort +1', as POSIX 1003.1-2001
Paul Eggert <eggert@twinsun.com>
parents: 36226
diff changeset
77 sort -t~ -n -k 2
2273
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
78 `
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
79
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
80 # Check that they are properly sorted by date.
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
81 case $oldfiles in
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
82 ?*)
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
83 oldfiles_by_date=`ls -rt $file $oldfiles`
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
84 test " $oldfiles
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
85 $file" = " $oldfiles_by_date" || {
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
86 echo >&2 "rcs-checkin: skipping $file, because its mod times are out of order.
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
87
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
88 Sorted by mod time:
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
89 $oldfiles_by_date
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
90
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
91 Sorted by name:
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
92 $oldfiles
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
93 $file"
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
94 continue
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
95 }
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
96 esac
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
97
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
98 echo >&2 rcs-checkin: checking in: $oldfiles $file
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
99
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
100 # Save $file as $file.~-~ temporarily.
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
101 mv "$file" "$file.~-~" || exit
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
102
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
103 # Rename each old file to $file, and check it in.
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
104 for oldfile in $oldfiles
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
105 do
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
106 mv "$oldfile" "$file" || exit
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
107 ls_l=`ls -l "$file"` || exit
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
108 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
109 echo "Formerly ${oldfile}" | ci -d -l -q $owner "$file" || exit
2273
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
110 done
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
111
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
112 # Bring $file back from $file.~-~, and check it in.
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
113 mv "$file.~-~" "$file" || exit
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
114 ls_l=`ls -l "$file"` || exit
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
115 owner=-w`expr " $ls_l" : " $ls_owner_pattern"` || owner=
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
116 ci -d -q -u $owner -m"entered into RCS" "$file" || exit
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
117 done
576b71164157 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
118
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 49600
diff changeset
119 # arch-tag: 89c86949-ef04-4380-838b-bc1444dcb074