1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
|
:
#
# Copyright (c) 1992, Brian Berliner
#
# You may distribute under the terms of the GNU General Public License as
# specified in the README file that comes with the CVS 1.3 kit.
#
# @(#)cvsinit 1.1 92/03/31
#
# This script should be run once to help you setup your site for CVS.
# Make sure that the CVSROOT variable is set
if [ "x$CVSROOT" = x ]; then
echo "The CVSROOT environment variable is not set."
echo ""
echo "You should choose a location for your source repository"
echo "that can be shared by many developers. It also helps to"
echo "place the source repository on a file system that has"
echo "plenty of free space."
echo ""
echo "Please enter the full path for your CVSROOT source repository:"
read CVSROOT
remind_cvsroot=yes
else
echo "Using $CVSROOT as the source repository."
remind_cvsroot=no
fi
echo ""
# Now, create the $CVSROOT if it is not already there
if [ ! -d $CVSROOT ]; then
echo "Hmmm... $CVSROOT does not exist; trying to make it..."
path=
for comp in `echo $CVSROOT | sed -e 's,/, ,g'`; do
path=$path/$comp
if [ ! -d $path ]; then
mkdir $path
fi
done
else
echo "Good... $CVSROOT already exists."
fi
# Next, check for $CVSROOT/CVSROOT
if [ ! -d $CVSROOT/CVSROOT ]; then
if [ -d $CVSROOT/CVSROOT.adm ]; then
echo "You have the old $CVSROOT/CVSROOT.adm directory."
echo "I will rename it to $CVSROOT/CVSROOT for you..."
mv $CVSROOT/CVSROOT.adm $CVSROOT/CVSROOT
else
echo "Making the $CVSROOT/CVSROOT directory..."
mkdir $CVSROOT/CVSROOT
fi
else
echo "Wow!... so does $CVSROOT/CVSROOT."
fi
echo ""
if [ ! -d $CVSROOT/CVSROOT ]; then
echo "You still don't have a $CVSROOT/CVSROOT directory."
echo "I give up."
exit 1
fi
# Create the special *info files within $CVSROOT/CVSROOT
# Trump up a simple modules file, if one doesn't exist
if [ -f $CVSROOT/CVSROOT/modules,v ]; then
if [ ! -f $CVSROOT/CVSROOT/modules ]; then
echo "You have a $CVSROOT/CVSROOT/modules,v file,"
echo "But no $CVSROOT/CVSROOT/modules file. This is OK."
echo "I'll checkout a fresh copy..."
(cd $CVSROOT/CVSROOT; co -q modules)
echo ""
fi
else
if [ -f $CVSROOT/CVSROOT/modules ]; then
echo "You have a $CVSROOT/CVSROOT/modules file,"
echo "But no $CVSROOT/CVSROOT/modules,v file."
echo "I'll create one for you, but otherwise leave it alone..."
else
echo "The $CVSROOT/CVSROOT/modules file does not exist."
echo "Making a simple one for you..."
cat > $CVSROOT/CVSROOT/modules <<"HERE"
#
# The CVS modules file
#
# Three different line formats are valid:
# key -a aliases...
# key [options] directory
# key [options] directory files...
#
# Where "options" are composed of:
# -i prog Run "prog" on "cvs commit" from top-level of module.
# -o prog Run "prog" on "cvs checkout" of module.
# -t prog Run "prog" on "cvs rtag" of module.
# -u prog Run "prog" on "cvs update" of module.
# -d dir Place module in directory "dir" instead of module name.
# -l Top-level directory only -- do not recurse.
#
# And "directory" is a path to a directory relative to $CVSROOT.
#
# The "-a" option specifies an alias. An alias is interpreted as if
# everything on the right of the "-a" had been typed on the command line.
#
# You can encode a module within a module by using the special '&'
# character to interpose another module into the current module. This
# can be useful for creating a module that consists of many directories
# spread out over the entire source repository.
#
# Convenient aliases
world -a .
# CVSROOT support; run mkmodules whenever anything changes.
CVSROOT -i mkmodules CVSROOT
modules -i mkmodules CVSROOT modules
loginfo -i mkmodules CVSROOT loginfo
commitinfo -i mkmodules CVSROOT commitinfo
rcsinfo -i mkmodules CVSROOT rcsinfo
editinfo -i mkmodules CVSROOT editinfo
# Add other modules here...
HERE
fi
(cd $CVSROOT/CVSROOT; ci -q -u -t/dev/null -m'initial checkin of modules' modules)
echo ""
fi
# check to see if there are any references to the old CVSROOT.adm directory
if grep CVSROOT.adm $CVSROOT/CVSROOT/modules >/dev/null 2>&1; then
echo "Warning: your $CVSROOT/CVSROOT/modules file still"
echo " contains references to the old CVSROOT.adm directory"
echo " You should really change these to the new CVSROOT directory"
echo ""
fi
# loginfo, like modules, is special-cased
if [ -f $CVSROOT/CVSROOT/loginfo,v ]; then
if [ ! -f $CVSROOT/CVSROOT/loginfo ]; then
echo "You have a $CVSROOT/CVSROOT/loginfo,v file,"
echo "But no $CVSROOT/CVSROOT/loginfo file. This is OK."
echo "I'll checkout a fresh copy..."
(cd $CVSROOT/CVSROOT; co -q loginfo)
echo ""
fi
else
if [ -f $CVSROOT/CVSROOT/loginfo ]; then
echo "You have a $CVSROOT/CVSROOT/loginfo file,"
echo "But no $CVSROOT/CVSROOT/loginfo,v file."
echo "I'll create one for you, but otherwise leave it alone..."
else
echo "The $CVSROOT/CVSROOT/loginfo file does not exist."
echo "Making a simple one for you..."
# try to find perl; use fancy log script if we can
for perlpath in `echo $PATH | sed -e 's/:/ /g'` x; do
if [ -f $perlpath/perl ]; then
echo "#!$perlpath/perl" > $CVSROOT/CVSROOT/log.pl
cat contrib/log.pl >> $CVSROOT/CVSROOT/log.pl
chmod 755 $CVSROOT/CVSROOT/log.pl
cp examples/loginfo $CVSROOT/CVSROOT/loginfo
break
fi
done
if [ $perlpath = x ]; then
# we did not find perl anywhere, so make a simple loginfo file
cat > $CVSROOT/CVSROOT/loginfo <<"HERE"
#
# The "loginfo" file is used to control where "cvs commit" log information
# is sent. The first entry on a line is a regular expression which is tested
# against the directory that the change is being made to, relative to the
# $CVSROOT. If a match is found, then the remainder of the line is a filter
# program that should expect log information on its standard input.
#
# The filter program may use one and only one % modifier (ala printf). If
# %s is specified in the filter program, a brief title is included (enclosed
# in single quotes) showing the modified file names.
#
# If the repository name does not match any of the regular expressions in this
# file, the "DEFAULT" line is used, if it is specified.
#
# If the name ALL appears as a regular expression it is always used
# in addition to the first matching regex or DEFAULT.
#
DEFAULT (echo ""; echo $USER; date; cat) >> $CVSROOT/CVSROOT/commitlog
HERE
fi
fi
(cd $CVSROOT/CVSROOT; ci -q -u -t/dev/null -m'initial checkin of loginfo' loginfo)
echo ""
fi
# The remaining files are generated from the examples files.
for info in commitinfo rcsinfo editinfo; do
if [ -f $CVSROOT/CVSROOT/${info},v ]; then
if [ ! -f $CVSROOT/CVSROOT/$info ]; then
echo "You have a $CVSROOT/CVSROOT/${info},v file,"
echo "But no $CVSROOT/CVSROOT/$info file. This is OK."
echo "I'll checkout a fresh copy..."
(cd $CVSROOT/CVSROOT; co -q $info)
echo ""
fi
else
if [ -f $CVSROOT/CVSROOT/$info ]; then
echo "You have a $CVSROOT/CVSROOT/$info file,"
echo "But no $CVSROOT/CVSROOT/${info},v file."
echo "I'll create one for you, but otherwise leave it alone..."
else
echo "The $CVSROOT/CVSROOT/$info file does not exist."
echo "Making a simple one for you..."
sed -e 's/^\([^#]\)/#\1/' examples/$info > $CVSROOT/CVSROOT/$info
fi
(cd $CVSROOT/CVSROOT; ci -q -u -t/dev/null -m"initial checkin of $info" $info)
echo ""
fi
done
# Turn on history logging by default
if [ ! -f $CVSROOT/CVSROOT/history ]; then
echo "Enabling CVS history logging..."
touch $CVSROOT/CVSROOT/history
echo ""
fi
# finish up by running mkmodules
echo "All done! Running 'mkmodules' as my final step..."
mkmodules $CVSROOT/CVSROOT
# and, if necessary, remind them about setting CVSROOT
if [ $remind_cvsroot = yes ]; then
echo "Remember to set the CVSROOT environment variable in your login script"
fi
exit 0
|