chiark / gitweb /
devscripts (2.10.69+squeeze4) stable-security; urgency=high
[devscripts.git] / scripts / uscan.1
1 .TH USCAN 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*-
2 .SH NAME
3 uscan \- scan/watch upstream sources for new releases of software
4 .SH SYNOPSIS
5 \fBuscan\fR [\fIoptions\fR] [\fIpath-to-debian-source-packages\fR ...]
6 .SH DESCRIPTION
7 \fBuscan\fR scans the given directories (or the current directory if
8 none are specified) and all of their subdirectories for packages
9 containing a control file \fIdebian/watch\fR.  Parameters are then
10 read from those control files and upstream ftp or http sites are
11 inspected for newly available updates (as compared with the upstream
12 version number retrieved from the \fIdebian/changelog\fR file in the
13 same directory).  The newest updates are retrieved (as determined by
14 their version numbers) and if specified in the watchfile, a program
15 may then be executed on the newly downloaded source.
16 .PP
17 The traditional \fIdebian/watch\fR files can still be used, but the
18 current format offers both simpler and more flexible services.  We do
19 not describe the old format here; for their documentation, see the
20 source code for \fRuscan\fR.
21
22 .SH FORMAT of debian/watch files
23
24 The following demonstrates the type of entries which can appear in a
25 \fIdebian/watch\fR file.  Obviously, not all of these would appear in
26 one such file; usually, one would have one line for the current
27 package.
28
29 .PP
30 .nf
31 # format version number, currently 3; this line is compulsory!
32 version=3
33
34 # Line continuations are performed with \\
35
36 # This is the format for an FTP site:
37 # Full-site-with-pattern  [Version  [Action]]
38 ftp://ftp.tex.ac.uk/tex-archive/web/c_cpp/cweb/cweb-(.*)\\.tar\\.gz \\
39   debian  uupdate
40
41 # This is the format for an FTP site with regex special characters in
42 # the filename part
43 ftp://ftp.worldforge.org/pub/worldforge/libs/Atlas-C++/transitional/Atlas-C\\+\\+-(.*)\\.tar\\.gz
44
45 # This is the format for an FTP site with directory pattern matching
46 ftp://ftp.nessus.org/pub/nessus/nessus-([\\d\\.]+)/src/nessus-core-([\\d\\.]+)\\.tar\\.gz
47
48 # This can be used if you want to override the PASV setting
49 # for a specific site
50 # opts=pasv ftp://.../...
51
52 # This is one format for an HTTP site, which is the same
53 # as the FTP format.  uscan starts by downloading the homepage,
54 # obtained by removing the last component of the URL; in this case,
55 # http://www.cpan.org/modules/by-module/Text/
56 http://www.cpan.org/modules/by-module/Text/Text-CSV_XS-(.*)\\.tar\\.gz
57
58 # This is a variant HTTP format which allows direct specification of
59 # the homepage:
60 # Homepage  Pattern  [Version  [Action]]
61 http://www.dataway.ch/~lukasl/amph/amph.html \\
62   files/amphetamine-([\\d\\.]*).tar.bz2
63
64 # This one shows that recursive directory scanning works, in either of
65 # two forms, as long as the website can handle requests of the form
66 # http://site/inter/mediate/dir/
67 http://tmrc.mit.edu/mirror/twisted/Twisted/(\\d\\.\\d)/ \\
68   Twisted-([\\d\\.]*)\\.tar\\.bz2
69 http://tmrc.mit.edu/mirror/twisted/Twisted/(\\d\\.\\d)/Twisted-([\\d\\.]*)\\.tar\\.bz2
70
71 # qa.debian.org runs a redirector which allows a simpler form of URL
72 # for SourceForge based projects. The format below will automatically
73 # be rewritten to use the redirector.
74 http://sf.net/audacity/audacity-src-(.+)\\.tar\\.gz
75
76 # githubredir.debian.net is a redirector for GitHub projects
77 # It can be used as following:
78 http://githubredir.debian.net/github/<user>/<project> (.*).tar.gz
79
80 # This is the format for a site which has funny version numbers;
81 # the parenthesised groups will be joined with dots to make a
82 # sanitised version number
83 http://www.site.com/pub/foobar/foobar_v(\\d+)_(\\d+)\\.tar\\.gz
84
85 # This is another way of handling site with funny version numbers,
86 # this time using mangling.  (Note that multiple groups will be
87 # concatenated before mangling is performed, and that mangling will
88 # only be performed on the basename version number, not any path
89 # version numbers.)
90 opts="uversionmangle=s/^/0.0./" \\
91   ftp://ftp.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-(.*)\\.tar\\.gz
92
93 # Similarly, the upstream part of the Debian version number can be
94 # mangled:
95 opts=dversionmangle=s/\\.dfsg\\.\\d+$// \\
96   http://some.site.org/some/path/foobar-(.*)\\.tar\\.gz
97
98 # The filename is found by taking the last component of the URL and
99 # removing everything after any '?'.  If this would not make a usable
100 # filename, use filenamemangle.  For example,
101 # <A href="http://foo.bar.org/download/?path=&download=foo-0.1.1.tar.gz">
102 # could be handled as:
103 # opts=filenamemangle=s/.*=(.*)/$1/ \\
104 #     http://foo.bar.org/download/\\?path=&download=foo-(.*)\\.tar\\.gz
105
106 # <A href="http://foo.bar.org/download/?path=&download_version=0.1.1">
107 # could be handled as:
108 # opts=filenamemangle=s/.*=(.*)/foo-$1\\.tar\\.gz/ \\
109 #    http://foo.bar.org/download/\\?path=&download_version=(.*)
110
111 # The option downloadurlmangle can be used to mangle the URL of the file
112 # to download.  This can only be used with http:// URLs.  This may be
113 # necessary if the link given on the webpage needs to be transformed in
114 # some way into one which will work automatically, for example:
115 # opts=downloadurlmangle=s/prdownload/download/ \\
116 #   http://developer.berlios.de/project/showfiles.php?group_id=2051 \\
117 #   http://prdownload.berlios.de/softdevice/vdr-softdevice-(.*).tgz
118
119 .fi
120 .PP
121 Comment lines may be introduced with a `#' character.  Continuation
122 lines may be indicated by terminating a line with a backslash
123 character.
124 .PP
125 The first (non-comment) line of the file must begin `version=3'.  This
126 allows for future extensions without having to change the name of the
127 file.
128 .PP
129 There are two possibilities for the syntax of an HTTP watchfile line,
130 and only one for an FTP line.  We begin with the common (and simpler)
131 format.  We describe the optional opts=... first field below, and
132 ignore it in what follows.
133 .PP
134 The first field gives the full pattern of URLs being searched for.  In
135 the case of an FTP site, the directory listing for the requested
136 directory will be requested and this will be scanned for files
137 matching the basename (everything after the trailing `/').  In the
138 case of an HTTP site, the URL obtained by stripping everything after
139 the trailing slash will be downloaded and searched for hrefs (links of
140 the form <a href=...>) to either the full URL pattern given, or to the
141 absolute part (everything without the http://host.name/ part), or to
142 the basename (just the part after the final `/').  Everything up to
143 the final slash is taken as a verbatim URL, as long as there are no
144 parentheses (`(' and ')') in this part of the URL: if it does, the
145 directory name will be matched in the same way as the final component
146 of the URL as described below.  (Note that regex metacharacters such
147 as `+' are regarded literally unless they are in a path component
148 containing parentheses; see the Atlas-C++ example above.  Also, the
149 parentheses must match within each path component.)
150 .PP
151 The pattern (after the final slash) is a Perl regexp (see
152 \fBperlre\fR(1) for details of these).  You need to make the pattern
153 so tight that it matches only the upstream software you are interested
154 in and nothing else.  Also, the pattern will be anchored at the
155 beginning and at the end, so it must match the full filename.  (Note
156 that for HTTP URLs, the href may include the absolute path or full
157 site and path and still be accepted.)  The pattern must contain at
158 least one Perl group as explained in the next paragraph.
159 .PP
160 Having got a list of `files' matching the pattern, their version
161 numbers are extracted by treating the part matching the Perl regexp
162 groups, demarcated by `(...)', joining them with `.' as a separator,
163 and using the result as the version number of the file.  The version
164 number will then be mangled if required by the uversionmangle option
165 described below.  Finally, the file versions are then compared to find
166 the one with the greatest version number, as determined by \fBdpkg
167 \-\-compare-versions\fR.  Note that if you need Perl groups which are
168 not to be used in the version number, either use `(?:...)' or use the
169 uversionmangle option to clean up the mess!
170 .PP
171 The current (upstream) version can be specified as the second
172 parameter in the watchfile line.  If this is \fIdebian\fR or absent,
173 then the current Debian version (as determined by
174 \fIdebian/changelog\fR) is used to determine the current upstream
175 version.  The current upstream version may also be specified by the
176 command-line option \fB\-\-upstream-version\fR, which specifies the
177 upstream version number of the currently installed package (i.e., the
178 Debian version number without epoch and Debian revision).  The
179 upstream version number will then be mangled using the dversionmangle
180 option if one is specified, as described below.  If the newest version
181 available is newer than the current version, then it is downloaded
182 into the parent directory, unless the \fB\-\-report\fR or
183 \fR\-\-report-status\fR option has been used.  Once the file has been
184 downloaded, then a symlink to the file is made from
185 \fI<package>_<version>.orig.tar.gz\fR if the file has a \fI.tar.gz\fR
186 or a \fI.tgz\fR suffix and from \fI<package>_<version>.orig.tar.bz2\fR
187 if the file has a \fI.tar.bz2\fR or a \fI.tbz\fR or \fI.tbz2\fR
188 suffix.
189 .PP
190 Finally, if a third parameter (an action) is given in the watchfile
191 line, this is taken as the name of a command, and the command
192 .nf
193     \fIcommand \fB\-\-upstream-version\fI version filename\fR
194 .fi
195 is executed, using either the original file or the symlink name.  A
196 common such command would be \fBuupdate\fR(1).  (Note that the calling
197 syntax was slightly different when using watchfiles without a
198 `version=...' line; there the command executed was `command filename
199 version'.)  If the command is \fBuupdate\fR, then the
200 \fB\-\-no\-symlink\fR option is given to \fBuupdate\fR as a first
201 option, since any requested symlinking will already be done by
202 \fBuscan\fR.
203 .PP
204 The alternative version of the watchfile syntax for HTTP URLs is as
205 follows.  The first field is a homepage which should be downloaded and
206 then searched for hrefs matching the pattern given in the second
207 field.  (Again, this pattern will be anchored at the beginning and the
208 end, so it must match the whole href.  If you want to match just the
209 basename of the href, you can use a pattern like
210 ".*/name-(.*)\\.tar\\.gz" if you know that there is a full URL, or
211 better still: "(?:.*/)?name-(.*)\\.tar\\.gz" if there may or may not
212 be.  Note the use of (?:...) to avoid making a backreference.)  If any
213 of the hrefs in the homepage which match the (anchored) pattern are
214 relative URLs, they will be taken as being relative to the base URL of
215 the homepage (i.e., with everything after the trailing slash removed),
216 or relative to the base URL specified in the homepage itself with a
217 <base href="..."> tag.  The third and fourth fields are the version
218 number and action fields as before.
219 .SH "PER-SITE OPTIONS"
220 A watchfile line may be prefixed with `opts=\fIoptions\fR', where
221 \fIoptions\fR is a comma-separated list of options.  The whole
222 \fIoptions\fR string may be enclosed in double quotes, which is
223 necessary if \fIoptions\fR contains any spaces.  The recognised
224 options are as follows:
225 .TP
226 \fBactive\fR and \fBpassive\fR (or \fBpasv\fR)
227 If used on an FTP line, these override the choice of whether to use
228 PASV mode or not, and force the use of the specified mode for this
229 site.
230 .TP
231 \fBuversionmangle=\fIrules\fR
232 This is used to mangle the upstream version number as matched by the
233 ftp://... or http:// rules as follows.  First, the \fIrules\fR string
234 is split into multiple rules at every `;'.  Then the upstream version
235 number is mangled by applying \fIrule\fR to the version, in a similar
236 way to executing the Perl command:
237 .nf
238     $version =~ \fIrule\fR;
239 .fi
240 for each rule.  Thus, suitable rules might be `s/^/0./' to prepend
241 `0.' to the version number and `s/_/./g' to change underscores into
242 periods.  Note that the \fIrules\fR string may not contain commas;
243 this should not be a problem.
244
245 \fIrule\fR may only use the 's', 'tr' and 'y' operations.  When the 's'
246 operation is used, only the 'g', 'i' and 'x' flags are available and
247 \fIrule\fR may not contain any expressions which have the potential to
248 execute code (i.e. the (?{}) and (??{}) constructs are not supported).
249 .TP
250 \fBdversionmangle=\fIrules\fR
251 This is used to mangle the Debian version number of the currently
252 installed package in the same way as the \fBuversionmangle\fR option.
253 Thus, a suitable rule might be `s/\\.dfsg\\.\\d+$//' to remove a
254 `.dfsg.1' suffix from the Debian version number, or to handle `.pre6'
255 type version numbers.  Again, the \fIrules\fR string may not contain
256 commas; this should not be a problem.
257 .TP
258 \fBversionmangle=\fIrules\fR
259 This is a syntactic shorthand for
260 \fBuversionmangle=\fIrules\fB,dversionmangle=\fIrules\fB, applying the
261 same rules to both the upstream and Debian version numbers.
262 .TP
263 \fBfilenamemangle=\fIrules\fR
264 This is used to mangle the filename with which the downloaded file
265 will be saved, and is parsed in the same way as the
266 \fBuversionmangle\fR option.  Examples of its use are given in the
267 examples section above.
268 .TP
269 \fBdownloadurlmangle=\fIrules\fR
270 This is used to mangle the URL to be used for the download.  The URL
271 is first computed based on the homepage downloaded and the pattern
272 matched, then the version number is determined from this URL.
273 Finally, any rules given by this option are applied before the actual
274 download attempt is made. An example of its use is given in the
275 examples section above.
276 .SH "Directory name checking"
277 Similarly to several other scripts in the \fBdevscripts\fR package,
278 \fBuscan\fR explores the requested directory trees looking for
279 \fIdebian/changelog\fR and \fIdebian/watch\fR files.  As a safeguard
280 against stray files causing potential problems, and in order to
281 promote efficiency, it will examine the name of the parent directory
282 once it finds the \fIdebian/changelog\fR file, and check that the
283 directory name corresponds to the package name.  It will only attempt
284 to download newer versions of the package and then perform any
285 requested action if the directory name matches the package name.
286 Precisely how it does this is controlled by two configuration file
287 variables DEVSCRIPTS_CHECK_DIRNAME_LEVEL and
288 DEVSCRIPTS_CHECK_DIRNAME_REGEX, and their corresponding command-line
289 options \fB\-\-check-dirname-level\fR and
290 \fB\-\-check-dirname-regex\fR.
291 .PP
292 DEVSCRIPTS_CHECK_DIRNAME_LEVEL can take the following values:
293 .TP
294 .B 0
295 Never check the directory name.
296 .TP
297 .B 1
298 Only check the directory name if we have had to change directory in
299 our search for \fIdebian/changelog\fR, that is, the directory
300 containing \fIdebian/changelog\fR is not the directory from which
301 \fBuscan\fR was invoked.  This is the default behaviour.
302 .TP
303 .B 2
304 Always check the directory name.
305 .PP
306 The directory name is checked by testing whether the current directory
307 name (as determined by \fBpwd\fR(1)) matches the regex given by the
308 configuration file option DEVSCRIPTS_CHECK_DIRNAME_REGEX or by the
309 command line option \fB\-\-check-dirname-regex\fR \fIregex\fR.  Here
310 \fIregex\fR is a Perl regex (see \fBperlre\fR(3perl)), which will be
311 anchored at the beginning and the end.  If \fIregex\fR contains a '/',
312 then it must match the full directory path.  If not, then it must
313 match the full directory name.  If \fIregex\fR contains the string
314 \'PACKAGE', this will be replaced by the source package name, as
315 determined from the changelog.  The default value for the regex is:
316 \'PACKAGE(-.+)?', thus matching directory names such as PACKAGE and
317 PACKAGE-version.
318 .SH EXAMPLE
319 This script will perform a fully automatic upstream update.
320
321 .nf
322 #!/bin/sh \-e
323 # called with '\-\-upstream-version' <version> <file>
324 uupdate "$@"
325 package=`dpkg\-parsechangelog | sed \-n 's/^Source: //p'`
326 cd ../$package-$2
327 debuild
328 .fi
329
330 Note that we don't call \fBdupload\fR or \fBdput\fR automatically, as
331 the maintainer should perform sanity checks on the software before
332 uploading it to Debian.
333 .SH OPTIONS
334 .TP
335 .B \-\-report, \-\-no\-download
336 Only report about available newer versions but do not download anything.
337 .TP
338 .B \-\-report\-status
339 Report on the status of all packages, even those which are up-to-date,
340 but do not download anything.
341 .TP
342 .B \-\-download
343 Report and download.  (This is the default behaviour.)
344 .TP
345 .B \-\-destdir
346 Path of directory to which to download.
347 .TP
348 .B \-\-force-download
349 Download upstream even if up to date (will not overwrite local files, however)
350 .TP
351 .B \-\-pasv
352 Force PASV mode for FTP connections.
353 .TP
354 .B \-\-no\-pasv
355 Do not use PASV mode for FTP connections.
356 .TP
357 \fB\-\-timeout\fR \fIN\fR
358 Set timeout to N seconds (default 20 seconds).
359 .TP
360 .B \-\-symlink
361 Make orig.tar.gz symlinks to any downloaded files if their extensions
362 are \fI.tar.gz\fR or \fI.tgz\fR, and similarly for to orig.tar.bz2 for
363 the suffixes \fI.tar.gz\fR, \fI.tbz\fR and \fI.tbz2\fR.  (This is the
364 default behaviour.)
365 .TP
366 .B \-\-rename
367 Instead of symlinking, rename the downloaded files to their Debian
368 orig.tar.gz names if their extensions are \fI.tar.gz\fR or \fI.tgz\fR,
369 and similarly for tar.bz2 files.
370 .TP
371 .B \-\-repack
372 After having downloaded an lzma tar, xz tar, bzip tar or zip archive,
373 repack it to a gzip tar archive, which is still currently required as a
374 member of a Debian source package. Does nothing if the downloaded
375 archive is not an lzma tar archive, xz tar archive, bzip tar archive or
376 a zip archive (i.e. it doesn't match a .tlz, .tar.lzma, .txz, .tar.xz
377 \^.tbz, .tbz2, .tar.bz2 or .zip extension). The unzip package must be
378 installed in order to repack .zip archives, the lzma package must be
379 installed to repack lzma tar archives, and the xz-utils package must be
380 installed to repack xz tar archives.
381 .TP
382 .B \-\-no\-symlink
383 Don't make these symlinks and don't rename the files.
384 .TP
385 .B \-\-dehs
386 Use an XML format for output, as required by the DEHS system.
387 .TP
388 .B \-\-no-dehs
389 Use the traditional uscan output format.  (This is the default behaviour.)
390 .TP
391 \fB\-\-package\fR \fIpackage\fR
392 Specify the name of the package to check for rather than examining
393 \fIdebian/changelog\fR; this requires the \fB\-\-upstream-version\fR
394 (unless a version is specified in the watchfile)
395 and \fB\-\-watchfile\fR options as well.  Furthermore, no directory
396 scanning will be done and nothing will be downloaded.  This option is
397 probably most useful in conjunction with the DEHS system (and
398 \fB\-\-dehs\fR).
399 .TP
400 \fB\-\-upstream-version\fR \fIupstream-version\fR
401 Specify the current upstream version rather than examine the watchfile
402 or changelog to determine it.  This is ignored if a directory scan is
403 being performed and more than one watchfile is found.
404 .TP
405 \fB\-\-watchfile\fR \fIwatchfile\fR
406 Specify the watchfile rather than perform a directory scan to
407 determine it.  If this option is used without \fB\-\-package\fR, then
408 \fBuscan\fR must be called from within the Debian package source tree
409 (so that \fIdebian/changelog\fR can be found simply by stepping up
410 through the tree).
411 .TP
412 \fB\-\-download\-version\fR \fIversion\fR
413 Specify the version which the upstream release must match in order to be
414 considered, rather than using the release with the highest version.
415 .TP
416 \fB\-\-download\-current\-version\fR
417 Download the currently packaged version
418 .TP
419 .B \-\-verbose
420 Give verbose output.
421 .TP
422 .B \-\-no\-verbose
423 Don't give verbose output.  (This is the default behaviour.)
424 .TP
425 .B \-\-debug
426 Dump the downloaded web pages to stdout for debugging your watch file.
427 .TP
428 \fB\-\-check-dirname-level\fR \fIN\fR
429 See the above section "Directory name checking" for an explanation of
430 this option.
431 .TP
432 \fB\-\-check-dirname-regex\fR \fIregex\fR
433 See the above section "Directory name checking" for an explanation of
434 this option.
435 .TP
436 \fB\-\-user-agent\fR, \fB\-\-useragent\fR
437 Override the default user agent header.
438 .TP
439 \fB\-\-no-conf\fR, \fB\-\-noconf\fR
440 Do not read any configuration files.  This can only be used as the
441 first option given on the command-line.
442 .TP
443 .B \-\-help
444 Give brief usage information.
445 .TP
446 .B \-\-version
447 Display version information.
448 .SH "CONFIGURATION VARIABLES"
449 The two configuration files \fI/etc/devscripts.conf\fR and
450 \fI~/.devscripts\fR are sourced by a shell in that order to set
451 configuration variables.  These may be overridden by command line
452 options.  Environment variable settings are ignored for this purpose.
453 If the first command line option given is \fB\-\-noconf\fR, then these
454 files will not be read.  The currently recognised variables are:
455 .TP
456 .B USCAN_DOWNLOAD
457 If this is set to \fIno\fR, then newer upstream files will not be
458 downloaded; this is equivalent to the \fB\-\-report\fR or
459 \fB\-\-no\-download\fR options.
460 .TP
461 .B USCAN_PASV
462 If this is set to \fIyes\fR or \fIno\fR, this will force FTP
463 connections to use PASV mode or not to, respectively.  If this is set
464 to \fIdefault\fR, then Net::FTP(3) make the choice (primarily based on
465 the FTP_PASSIVE environment variable).
466 .TP
467 .B USCAN_TIMEOUT
468 If set to a number \fIN\fR, then set the timeout to \fIN\fR seconds. 
469 This is equivalent to the \fB\-\-timeout\fR option.
470 .TP
471 .B USCAN_SYMLINK
472 If this is set to \fIno\fR, then a pkg_version.orig.tar.{gz|bz2}
473 symlink will not be made (equivalent to the \fB\-\-no\-symlink\fR
474 option).  If it is set to \fIyes\fR or \fIsymlink\fR, then the
475 symlinks will be made.  If it is set to \fIrename\fR, then the files
476 are renamed (equivalent to the \fB\-\-rename\fR option).
477 .TP
478 .B USCAN_DEHS_OUTPUT
479 If this is set to \fIyes\fR, then DEHS-style output will be used.
480 This is equivalent to the \fB\-\-dehs\fR option.
481 .TP
482 .B USCAN_VERBOSE
483 If this is set to \fIyes\fR, then verbose output will be given.  This
484 is equivalent to the \fB\-\-verbose\fR option.
485 .TP
486 .B USCAN_USER_AGENT
487 If set, the specified user agent string will be used in place of the
488 default.  This is equivalent to the \fB\-\-user-agent\fR option.
489 .TP
490 .B USCAN_DESTDIR
491 If set, the downloaded files will be placed in this directory.  This is 
492 equivalent to the \fB\-\-destdir\fR option.
493 .TP
494 .B USCAN_REPACK
495 If this is set to \fIyes\fR, then after having downloaded a bzip tar,
496 lzma tar, xz tar, or zip archive, \fBuscan\fR will repack it to a gzip tar.
497 This is equivalent to the \fB\-\-repack\fR option.
498 .SH "EXIT STATUS"
499 The exit status gives some indication of whether a newer version was
500 found or not; one is advised to read the output to determine exactly
501 what happened and whether there were any warnings to be noted.
502 .TP
503 0
504 Either \fB\-\-help\fR or \fB\-\-version\fR was used, or for some
505 watchfile which was examined, a newer upstream version was located.
506 .TP
507 1
508 No newer upstream versions were located for any of the watchfiles
509 examined.
510 .SH "HISTORY AND UPGRADING"
511 This section briefly describes the backwards-incompatible watchfile
512 features which have been added in each watchfile version, and the
513 first version of the \fBdevscripts\fR package which understood them.
514 .TP
515 .I Pre-version 2
516 The watchfile syntax was significantly different in those days.  Don't
517 use it.  If you are upgrading from a pre-version 2 watchfile, you are
518 advised to read this manpage and to start from scratch.
519 .TP
520 .I Version 2
521 devscripts version 2.6.90: The first incarnation of the current style
522 of watchfiles.
523 .TP
524 .I Version 3
525 devscripts version 2.8.12: Introduced the following: correct handling
526 of regex special characters in the path part, directory/path pattern
527 matching, version number in several parts, version number mangling.
528 Later versions have also introduced URL mangling.
529
530 If you are upgrading from version 2, the key incompatibility is if you
531 have multiple groups in the pattern part; whereas only the first one
532 would be used in version 2, they will all be used in version 3.  To
533 avoid this behaviour, change the non-version-number groups to be
534 (?:...) instead of a plain (...) group.
535 .SH "SEE ALSO"
536 .BR dpkg (1),
537 .BR perlre (1),
538 .BR uupdate (1)
539 and
540 .BR devscripts.conf (5).
541 .SH AUTHOR
542 The original version of \fBuscan\fR was written by Christoph Lameter
543 <clameter@debian.org>.  Significant improvements, changes and bugfixes
544 were made by Julian Gilbey <jdg@debian.org>.  HTTP support was added
545 by Piotr Roszatycki <dexter@debian.org>.  The program was rewritten
546 in Perl by Julian Gilbey.