File: README

package info (click to toggle)
cvsutils 0.0.20020311-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 328 kB
  • ctags: 42
  • sloc: perl: 735; sh: 354; python: 291; makefile: 90
file content (144 lines) | stat: -rw-r--r-- 5,310 bytes parent folder | download
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
                               CVSU - CVS Utilities

PLEASE NOTE, THAT ALTHOUGH THIS SOFTWARE WORKS FOR ITS AUTHOR, IT MAY OR
MAY NOT WORK FOR YOU. PLEASE BE CAREFUL.  SOME OF THE INCLUDED FILES MAY
REMOVE RESULTS OF YOUR WORK.  PLEASE MAKE SURE THAT YOU UNDERSTAND HOW
THEY WORK BEFORE USING THEM.

CVSU is licensed under the terms of the GNU Public License, version 2.
See file COPYING and http://www.gnu.org/copyleft/gpl.html for details.

The homepage of CVSU is http://www.red-bean.com/cvsutils/

The original author of CVSU is
 Tom Tromey <tromey@cygnus.com>

Currently CVSU is maintained by
 Pavel Roskin <proski@gnu.org>


				Introduction

The idea of CVS Utilities is to facilitate working with the files in the
working directory of a developer using CVS (Concurrent Versions System)

From the point of view of CVS, working directories have low value,
since they can easily be recreated using the "cvs checkout" command.
Also the "cvs update" command will show the status of the files, i.e.
whether they have been modified, added or removed.

CVS by its design is a client-server system that does most of its work
on the server side.  CVS provides only a few (if any) means for managing
the working directory without communicating with the server.

There are, however, several reasons why such means are necessary.
- There is enough information on the client side to create fast tools
  for sorting and purging the working directory without contacting the
  CVS server.
- Checking out a big module over a slow line can take too much time.
  Working directories are valuable if it takes hours to check them out.
- There should be some support for disconnected operations.
- CVS poses certain unnecessary restrictions on read-only users, e.g.
  "cvs add" command doesn't work for them, although this command is
  essential for "cvs diff" showing new files.

Following scripts are included:


				cvsu

Offline "cvs update" simulator.

It lists the files found in the current directory (or in the directories
which you specify).  Following is taken into account:

- Attributes of the file.
- Information about the file in CVS/Entries

Timestamp of the file is compared to the timestamp stored in CVS/Entries.

Run "cvsu --help" to see supported command line options.  The options
can be abbreviated.  This functionality is provided by Perl, and may
vary from one machine to another.


				cvsco

When you want to remove the working directory and check it out anew,
use cvsco instead.

Essentially, cvsco removes results of compilation and discards local
changes.  It deletes all the files except the listed unmodified ones and
updates everything which seems to be missing.  Note that the existing
unmodified files are not updated - cvsco only reloads missing and
modified files.  It's a good idea to run "cvs update" after cvsco.


				cvsdiscard

The easiest way to discard local changes.

cvsdiscard discards local changes but keeps results of compilation.  It
works like "cvsco", but it only deletes files which are likely to cause
merge conflicts.


				cvspurge

cvspurge leaves all files known to CVS, but removes the rest.  Unlike
cvsco, it doesn't remove local changes.  It is useful to test local
changes in the otherwise clean source tree.


				cvstrim

cvstrim removes files and directories unknown to CVS.

Unlike cvspurge, files listed in .cvsignore are not removed.  The idea
is to remove the files that are not produced by the normal build process
- backups and files copied temporarily to the working directory. 
cvstrim relies on .cvsignore files being correct.  Note that the backups
of modified files are removed.


				cvschroot

cvschroot makes it possible to change CVS/Root in all subdirectories to
the given value.

The only argument accepted is the new CVSROOT value.  Old-style
CVS/Repository files that contain the full path to the repository are
updated to reflect the change.  New-style CVS/Repository don't need to
be changed.  If the environment variable CVSROOT is defined, it
overrides the contents of CVS/Root.  In other words, it is treated as
the _old_ CVS root.


				cvsdo

cvsdo simulates some of the CVS commands (currently add, remove and diff)
without any access to the CVS server.

Using "cvsdo add" and "cvsdo remove" allows you to create diffs with
"cvs diff -N", in which all removed and added files will appear in the
diff correctly, as is you had used "cvs add" and "cvs remove"
respectively.

"cvsdo diff" tries to locate the backup copies of the modified files. If
they can be found, they are compared with the current version using
"diff".  Only those backup copies are used that have the modification
date equal to the date listed in CVS/Entries for the modified file.

"cvsdo diff" patches the diff output to make it easier to read and safer
to use with patch.

An exception is made for files named "ChangeLog" - in this case "diff"
will try to omit as much context as possible, so that the patch can be
applied even if other changes have been made to the ChangeLog.

Also the added files are handled properly a bit better by "cvsdo diff"
than by "cvs diff".  The header of the "diff" output is patched in such
way that at least GNU patch will create a new file when the resulting
patch is applied and remove that file when the patch is reverted.