File: prcs.1

package info (click to toggle)
prcs 1.3.3-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 4,128 kB
  • ctags: 3,354
  • sloc: cpp: 17,486; ansic: 8,132; sh: 4,710; perl: 2,729; lisp: 1,816; tcl: 1,142; lex: 354; makefile: 225; pascal: 85
file content (234 lines) | stat: -rw-r--r-- 7,972 bytes parent folder | download | duplicates (2)
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
234
.ds p \&\s-1PRCS\s0
.if n .ds - \%--
.if t .ds - \(em
.if !\n(.g \{\
.	if !\w|\*(lq| \{\
.		ds lq ``
.		if \w'\(lq' .ds lq "\(lq
.	\}
.	if !\w|\*(rq| \{\
.		ds rq ''
.		if \w'\(rq' .ds rq "\(rq
.	\}
.\}
.de PE
.sp \\n()Pu
.ne 2
.nf
.IP
..
.de EP
.fi
.PP
.sp \\n()Pu
..
.TH PRCS 1
.SH NAME
prcs \- Invoke the Project Revision Control System
.SH SYNOPSIS
.B prcs
.I subcommand
[
.IR option ".\|.\|.
] [
.IR operand .\|.\|.
]
.SH DESCRIPTION
The Project Revision Control System,
\*p,
is the front end to a
set of tools that (like CVS) provide a way to deal with sets of files
and directories as an entity, preserving coherent versions of the entire
set.  The command
.B prcs
executes the various functions (subcommands) of the the system.
.PP
Abstractly,
\*p
presents you ("the user") with the abstraction
of named \fIprojects\fP that have multiple \fI(project) versions\fR,
each of which is a set of files, arranged into a directory subtree.  A
project is the collection of all project versions of that project.  Each
project version contains one distinguished file, called the
\fI(project) version descriptor\fP, in the top directory of the subtree,
which contains a description of the files included in that particular
version.  For a project named \fIP\fP, this file has the name
\fIP.prj\fP (and so is also called a ".prj file").

.SS Functions Provided
The subcommands provided allow you to perform the following actions:
.IP \(bu
Create a copy of the directory tree (or a part of it) for a given
project version.  The files in such a copy are called \fIworking
files\fP and the root directory for these working files is called a
\fIworking directory\fP.  This process is called \fIchecking-out\fP the
version (or the working files).  You may select a project version to
check out by its version number. Modifying the working files has no
effect on the project version they came from.
.IP \(bu
Create a new project version (and a new project, for the first version)
from working files, or from some mix of working files and the files in a
another project version.  This is called \fIchecking-in\fP the version
(or the working files).  Before any check-in, \*p checks to see if
there have been other modifications to files in this project and warns
you of conflicts and discrepancies.
.IP \(bu
Search for differences between a project version and working files or
between the files in two versions of a project.
.IP \(bu
Insert changes that occurred between two project versions into working
files.
This process is called \fImerging\fP because its purpose is to combine
changes you have made to a set of working files with changes that others
have made in the meantime.
It changes only the working files, because in general they will need
editting to reconcile places where the two sets of changes conflict.
The resulting merged files are marked with distinctive lines
indicating places where the two sets of changes that are being combined
differ from each other.
One typically edits the merged files
to reconcile the differences, and then checks in a new version.
.IP \(bu
Print out information about the versions of a project contained in the
repository.
.PP
In addition, you may add and subtract the files contained in a new
project version, or move files from one subdirectory to another by
editing the working copy of the .prj file before checking in the
new version.
.PP
\*p
keeps all checked-in project versions in a \fIprojects
repository\fP.  At any given
time, you fix a prevailing repository by setting the environment
variable PRCS_REPOSITORY (which defaults to $HOME/PRCS),
and do not explicitly mention it in any
commands.
.PP
Each checked-in version has a \fIversion name\fP of the form
\fIM.N\fP. Here, \fIM\fP, the \fImajor version name\fP, is an
alphanumeric label\*-either a numeral or a label beginning with a
letter and consisting of letters, digits, and the characters
.PE
    # % ^ - _ + = : , .
.EP
\*-and \fIN\fP, the \fIminor version name\fP, is a non-negative
numeral.  \*p assigns minor version names automatically in sequence.
Major version names are up to the user; by default, they also are numerals.
.PP
\*p uses the approach found in CVS (Concurrent Version System):
unlike version control systems such as RCS and SCCS,
\*p
locks projects
in the
repository only while it is actually running
(in order to make operations on projects
atomic).
One simply checks in new versions as desired; the system will
warn you if others have made parallel changes to the major version of
the project you are working on that may have to be merged with changes
you have made.
.PP
Where
\*p
differs from CVS (and, indeed, other source-code control
systems of the author's acquaintance) is in its attempt to provide a
particularly simple model to the user.  A project is a collection of
files, period.  Although the current implementation of
\*p
actually uses RCS in its implementations, none of the details of RCS are
of any consequence to the user.

.SS Basic Use
For a complete description of the subcommands, options, files, and
environment variables of
\*p,
see the TexInfo pages provided with the release.
Here is a brief overview of typical, simple use of the system, which
may suffice for many users.
.PP
The simplest possible use of prcs is just to use it to keep a
single thread of project versions, thus allowing you to ``roll back'' at
any time, and allowing multiple people to do maintenance on a single
system simultaneously.
.PP
To start things off with a new project, P1, type
.PE
% prcs checkout P1
.EP
in the working directory where you are developing your project.  (If you
haven't yet established a repository,
\*p will create one.)
The effect of this command is to create a
working version descriptor file by the name P1.prj with an empty list
of files.  The version descriptor contains, among other things, a list
of the
names of all files in a particular version of the project (called the
\fIFiles list\fP).
.PP
If
the project was already underway before you created a \*p project
for it, you will probably want to start off by adding the names of your existing
files to this list to bring them under version control. To do so, type
.PE
% prcs populate P1
.EP
or, if there is only one .prj file, simply
.PE
% prcs populate
.EP
Edit the file P1.prj (with your favorite text editor) as needed
to remove any files you don't want to
control (like .o files, back-up files, and executables).  You can
also specify the list of files in the population on the command
line.  The files in any directories in this list will be included
recursively:
.PE
% prcs populate P1 file1 file2
.EP
Whenever you want to checkpoint your project, type
.PE
% prcs checkin P1     # or just prcs checkin
.EP
from the root working directory (the one with P1.prj in it).
This creates (in effect) a new version in the repository containing
copies of the files listed in P1.prj, and updates P1.prj to reflect
the new version's name.  You may specify a new major version name at
checkin time with the
.B -r
option:
.PE
% prcs checkin -rMyVersion P1
.EP
If
someone else has checked in files in the meantime, you will be notified
of discrepancies, which you can handle by typing
.PE
% prcs merge
.EP
from the root working directory and (after it's done), editing the
files.
.PP
Whenever it comes time to begin working on a deposited version of the project,
you can go to a clean directory and check
out the latest version with
.PE
% prcs checkout P1
.EP
or, if you want a major version other than the (numeric) default,
.PE
% prcs checkout -rMyVersion P1
.EP
Now you can make any desired modifications and check in as before.

.SH ENVIRONMENT
.TP
.B PRCS_REPOSITORY
Path to the repository. Defaults to $HOME/PRCS.
.SH IDENTIFICATION
Author: Paul N. Hilfinger and Josh MacDonald
.br
.\" $Format: "Manual Page Revision: $Revision$; Release Date: $ProjectDate$."$
Manual Page Revision: 1.5; Release Date: Sun, 09 May 2004 18:34:01 -0700.
.br
Copyright \(co 1994, 1996