]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/nonworking/unison/unison-2.9.1/debian.patch
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / nonworking / unison / unison-2.9.1 / debian.patch
1 --- unison-2.9.1.orig/uitext.ml
2 +++ unison-2.9.1/uitext.ml
3 @@ -297,7 +297,9 @@
4                       (ProceedImmediately, List.rev_append prev ril)));
5                   (["q"],
6                    ("exit " ^ Uutil.myName ^ " without propagating any changes"),
7 -                  fun () -> raise Sys.Break);
8 +                  (fun () ->
9 +                    newLine();
10 +                    raise Sys.Break));
11                   (["/"],
12                    ("skip"),
13                    (fun () ->
14 --- unison-2.9.1.orig/debian/unison.dirs
15 +++ unison-2.9.1/debian/unison.dirs
16 @@ -0,0 +1 @@
17 +usr/bin
18 --- unison-2.9.1.orig/debian/README.Debian
19 +++ unison-2.9.1/debian/README.Debian
20 @@ -0,0 +1,19 @@
21 +Documentation for Unison is in the manual, which is available
22 +in HTML, PostScript and text formats in /usr/share/doc/unison.
23 +The same documentation can also be accessed over the command
24 +line, and you can list the available topics by executing
25 +'unison -doc topics'. Of particular interest for new users
26 +is the tutorial at 'unison -doc tutorial'.
27 +
28 +The most common usage of this package is to use ssh to connect
29 +to the remote host via to synchronise files. The 'Install'
30 +section of the manual details how to set up ssh with a key
31 +file and authentication agent to avoid repeatedly entering
32 +passwords or pass-phrases. Assuming your key file remains
33 +private, this is a more secure authentication method than
34 +passwords.
35 +
36 +The GTK+ interface for Unison is now available separately in
37 +the unison-gtk package.
38 +
39 + -- Robert McQueen <robot101@debian.org>  Wed, 29 Aug 2001 21:18:29 +0100
40 --- unison-2.9.1.orig/debian/unison.doc-base
41 +++ unison-2.9.1/debian/unison.doc-base
42 @@ -0,0 +1,20 @@
43 +Document: unison-manual
44 +Title: Unison Installation and Usage Manual
45 +Author: Benjamin Pierce <bcpierce@cis.upenn.edu>
46 +Abstract: Unison is a file-synchronization tool for Unix and
47 + Windows. It allows two replicas of a collection of files and
48 + directories to be stored on different hosts (or different
49 + disks on the same host), modified separately, and then brought
50 + up to date by propagating the changes in each replica to the
51 + other. This manual describes how to install and use Unison.
52 +Section: Apps/Tools
53 +
54 +Format: postscript
55 +Files: /usr/share/doc/unison/unison-manual.ps.gz
56 +
57 +Format: text
58 +Files: /usr/share/doc/unison/unison-manual.text.gz
59 +
60 +Format: HTML
61 +Index: /usr/share/doc/unison/unison-manual.html
62 +Files: /usr/share/doc/unison/unison-manual.html
63 --- unison-2.9.1.orig/debian/changelog
64 +++ unison-2.9.1/debian/changelog
65 @@ -0,0 +1,103 @@
66 +unison (2.9.1-1) unstable; urgency=medium
67 +
68 +  * New upstream version.                              (closes: #142748)
69 +  * Medium urgency to make woody release. Rationale:
70 +     - upstream versions of unison are rarely, if ever, broken, and if 
71 +       they are, are fixed within days. this release has had a week or
72 +       two to sweat it out.
73 +     - the previous version had problems on windows. seeing as
74 +       cross-platform compatibility is a major feature of unison, this 
75 +       could cause long-term aggrivation for people hoping to sync their
76 +       woody box with their windows box.
77 +     - unison's protocol is version specific, and if I waited until sid 
78 +       released to upload this new version, I'd have to provide an old
79 +       version in sid sooner than I'd have liked.
80 +     - it'd really annoy me if the version in woody wasn't the latest 
81 +       when it released. =)
82 +
83 + -- Robert McQueen <robot101@debian.org>  Wed, 24 Apr 2002 19:05:08 +0100
84 +
85 +unison (2.8.1-2) unstable; urgency=low
86 +
87 +  * Moved to main.
88 +
89 + -- Robert McQueen <robot101@debian.org>  Sat, 30 Mar 2002 04:13:46 +0000
90 +
91 +unison (2.8.1-1) unstable; urgency=low
92 +
93 +  * New upstream version.                              (closes: #138576)
94 +  * Added menu entry for unison-gtk.                   (closes: #133039)
95 +  * Changed 'lablgtk, libgtk1.2-dev' build dep to 'liblablgtk-ocaml-dev'.
96 +  * Updated manpage for new/removed options.
97 +
98 + -- Robert McQueen <robot101@debian.org>  Fri, 29 Mar 2002 19:22:33 +0000
99 +
100 +unison (2.7.7-1) unstable; urgency=medium
101 +
102 +  * New upstream version. Fixes bugs in connecting and the client
103 +     startup sequence.
104 +
105 + -- Robert McQueen <robot101@debian.org>  Sun, 23 Sep 2001 19:27:27 +0100
106 +
107 +unison (2.7.1-2) unstable; urgency=low
108 +
109 +  * Added libgtk1.2-dev build dep, but this is really a bug in lablgtk.
110 +  * Optimised debian/rules to only call shell once to set a variable, and
111 +     use that instead of an elaborate (and fallible) if construct.
112 +
113 + -- Robert McQueen <robot101@debian.org>  Thu, 30 Aug 2001 12:57:44 +0100
114 +
115 +unison (2.7.1-1) unstable; urgency=low
116 +
117 +  * New upstream version.                              (closes: #106983)
118 +  * Moved package to non-US/main - it recommends ssh.  (closes: #109406)
119 +  * Added the GTK interface version in a seperate unison-gtk package.
120 +                                                       (closes: #105911)
121 +  * Added symlinks from unison-gtk's documentation and manpage to
122 +     unison's.
123 +  * Amended the manpage to detail the unison-gtk binary and changed
124 +     command line options.
125 +  * Install 'NEWS' file as upstream changelog, which it is, and remove
126 +     some extraneous docs.
127 +
128 + -- Robert McQueen <robot101@debian.org>  Thu, 30 Aug 2001 01:21:14 +0100
129 +
130 +unison (2.6.11-2) unstable; urgency=low
131 +
132 +  * Added newline before descriptions are returned.    (closes: #86621)
133 +  * Fixed gratuitous debhelperism - version 3 is not required.
134 +                                                       (closes: #97563)
135 +
136 + -- Robert McQueen <robot101@debian.org>  Tue, 15 May 2001 20:36:43 +0100
137 +
138 +unison (2.6.11-1) unstable; urgency=low
139 +
140 +  * New upstream version.
141 +
142 + -- Robert McQueen <robot101@debian.org>  Mon, 30 Apr 2001 19:06:03 +0100
143 +
144 +unison (2.6.1-2) unstable; urgency=low
145 +
146 +  * Fixed to take account of no native (ocamlopt) compiler on some archs.
147 +  * Minor debian/rules cleanups.
148 +
149 + -- Robert McQueen <robot101@debian.org>  Thu, 28 Dec 2000 18:23:55 +0000
150 +
151 +unison (2.6.1-1) unstable; urgency=low
152 +
153 +  * Package adopted by new Debian maintainer. (closes: #75968)
154 +  * New upstream version. (closes: #65601)
155 +
156 + -- Robert McQueen <robot101@debian.org>  Fri, 10 Nov 2000 23:12:02 +0000
157 +
158 +unison (1.180-2) unstable; urgency=low
159 +
160 +  * Changed the architecture field from all to any.
161 +
162 + -- Sven LUTHER <luther@debian.org>  Mon, 10 Jan 2000 19:50:16 +0100
163 +
164 +unison (1.180-1) unstable; urgency=low
165 +
166 +  * Initial release.
167 +
168 + -- Sven LUTHER <luther@debian.org>  Tue, 21 Dec 1999 12:15:49 +0100
169 --- unison-2.9.1.orig/debian/unison-gtk.dirs
170 +++ unison-2.9.1/debian/unison-gtk.dirs
171 @@ -0,0 +1,3 @@
172 +usr/bin
173 +usr/share/doc
174 +usr/share/man/man1
175 --- unison-2.9.1.orig/debian/copyright
176 +++ unison-2.9.1/debian/copyright
177 @@ -0,0 +1,22 @@
178 +Unison was packaged for Debian
179 +by Robert McQueen <robot101@debian.org>
180 +on Fri, 10 Nov 2000 23:12:02 +0000.
181 +
182 +It was downloaded from:
183 + http://www.cis.upenn.edu/~bcpierce/unison/download/stable/
184 +
185 +Benjamin Pierce <bcpierce@cis.upenn.edu> is the Unison project
186 +leader.
187 +
188 +This program is free software; you can redistribute it and/or
189 +modify it under the terms of the GNU General Public License as
190 +published by the Free Software Foundation; either version 2 of
191 +the License, or (at your option) any later version.
192 +
193 +This program is distributed in the hope that it will be useful,
194 +but WITHOUT ANY WARRANTY; without even the implied warranty of
195 +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
196 +GNU General Public License for more details.
197 +
198 +On Debian systems, the complete text of the GNU General Public
199 +License can be found in /usr/share/common-licenses/GPL file.
200 --- unison-2.9.1.orig/debian/unison.docs
201 +++ unison-2.9.1/debian/unison.docs
202 @@ -0,0 +1,5 @@
203 +BUGS.txt
204 +TODO.txt
205 +unison-manual.txt
206 +debian/unison-manual.html
207 +debian/unison-manual.ps
208 --- unison-2.9.1.orig/debian/unison.1
209 +++ unison-2.9.1/debian/unison.1
210 @@ -0,0 +1,219 @@
211 +.\"                                      Hey, EMACS: -*- nroff -*-
212 +.\" First parameter, NAME, should be all caps
213 +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
214 +.\" other parameters are allowed: see man(7), man(1)
215 +.TH UNISON 1 "September 23, 2001"
216 +.\" Please adjust this date whenever revising the manpage.
217 +.\"
218 +.\" Some roff macros, for reference:
219 +.\" .nh        disable hyphenation
220 +.\" .hy        enable hyphenation
221 +.\" .ad l      left justify
222 +.\" .ad b      justify to both left and right margins
223 +.\" .nf        disable filling
224 +.\" .fi        enable filling
225 +.\" .br        insert line break
226 +.\" .sp <n>    insert n+1 empty lines
227 +.\" for manpage-specific macros, see man(7)
228 +.SH NAME
229 +unison \- a file-synchronization tool for Unix and Windows
230 +.SH SYNOPSIS
231 +.B unison
232 +.RI [ options ]
233 +.br
234 +.B unison
235 +root1 root2
236 +.RI [ options ]
237 +.br
238 +.B unison
239 +profilename
240 +.RI [ options ]
241 +.br
242 +.B unison-gtk
243 +.RI [ options ]
244 +.SH DESCRIPTION
245 +This manual page briefly documents Unison, and was written for the
246 +Debian GNU/Linux distribution because the original program does not
247 +have a manual page. For a full description, please refer to the
248 +inbuilt documentation or the manuals in /usr/share/doc/unison/. The
249 +unison-gtk binary has similar command-line options, but allows the user
250 +to select and create profiles and configure options from within the
251 +program.
252 +.PP
253 +Unison is a file-synchronization tool for Unix and Windows. It allows
254 +two replicas of a collection of files and directories to be stored on
255 +different hosts (or different disks on the same host), modified
256 +separately, and then brought up to date by propagating the changes in
257 +each replica to the other.
258 +.PP
259 +Unison offers several advantages over various synchronization methods
260 +such as CVS, Coda, rsync, Intellisync, etc. Unison can run on and
261 +synchronize between Windows and many UNIX platforms. Unison requires
262 +no root privileges, system access or kernel changes to function. Unison
263 +can synchronize changes to files and directories in both directions,
264 +on the same machine, or across a network using ssh or a direct
265 +socket connection.
266 +.PP
267 +Transfers are optimised using a version of the rsync protocol, making
268 +it ideal for slower links. Unison has a clear and precise specification,
269 +and is resilient to failure due to its careful handling of the replicas
270 +and its private structures.
271 +.SH OPTIONS
272 +All Unison options are long, starting with one dash (`-') only.
273 +A summary of options is included here. For a complete description,
274 +see the inbuilt documentation or the manuals in /usr/share/doc/unison/.
275 +.TP
276 +.B \-addprefsto
277 +specify a file to add new preferences to in interactive mode
278 +.TP
279 +.B \-addversionno
280 +add version number to name of unison executable on server
281 +.TP
282 +.B \-auto
283 +automatically accept default actions
284 +.TP
285 +.B \-backup xxx
286 +add a regexp to the backup list
287 +.TP
288 +.B \-backups
289 +keep backup copies of files (deprecated: use 'backup')
290 +.TP
291 +.B \-batch
292 +batch mode: ask no questions at all
293 +.TP
294 +.B \-contactquietly
295 +suppress the 'contacting server' message during startup
296 +.TP
297 +.B \-debug xxx
298 +debug module xxx ('all' -> everything, 'verbose' -> more)
299 +.TP
300 +.B \-doc xxx
301 +show documentation ('-doc topics' lists topics)
302 +.TP
303 +.B \-dumbtty
304 +do not try to change terminal settings in text UI
305 +.TP
306 +.B \-editor xxx
307 +command for displaying the output of the -merge program
308 +.TP
309 +.B \-fastcheck
310 +do fast (and slightly unsafe) update detection on windows
311 +.TP
312 +.B \-follow xxx
313 +add a regexp to the follow list
314 +.TP
315 +.B \-force xxx
316 +force changes from this replica to the other
317 +.TP
318 +.B \-group
319 +synchronize group
320 +.TP
321 +.B \-height n
322 +height (in lines) of main window in graphical interface
323 +.TP
324 +.B \-ignore xxx
325 +add a regexp to the ignore list
326 +.TP
327 +.B \-ignorecase
328 +ignore upper/lowercase spelling of filenames
329 +.TP
330 +.B \-ignorenot xxx
331 +add a regexp to the ignorenot list
332 +.TP
333 +.B \-killserver
334 +kill server when done (even when using sockets)
335 +.TP
336 +.B \-log
337 +record actions in file specified by logfile preference
338 +.TP
339 +.B \-logfile xxx
340 +log file name
341 +.TP
342 +.B \-maxbackups n
343 +number of backed up versions of a file to keep
344 +.TP
345 +.B \-merge xxx
346 +command for merging conflicting files
347 +.TP
348 +.B \-merge2 xxx
349 +command for merging files (when no common version exists)
350 +.TP
351 +.B \-numericids
352 +don't map uid/gid values by user/group names
353 +.TP
354 +.B \-owner
355 +synchronize owner
356 +.TP
357 +.B \-path xxx
358 +path to synchronize
359 +.TP
360 +.B \-perms n
361 +part of the permissions which is synchronized
362 +.TP
363 +.B \-prefer xxx
364 +choose this replica's version in case of conflict
365 +.TP
366 +.B \-root xxx
367 +root of a replica
368 +.TP
369 +.B \-rootalias xxx
370 +register alias for canonical root names
371 +.TP
372 +.B \-rshargs xxx
373 +other arguments (if any) for remote shell command
374 +.TP
375 +.B \-rshcmd xxx
376 +path to the rsh executable
377 +.TP
378 +.B \-servercmd xxx
379 +name of unison executable on remote server
380 +.TP
381 +.B \-silent
382 +print nothing (except error messages)
383 +.TP
384 +.B \-socket xxx
385 +act as a server on a socket
386 +.TP
387 +.B \-sortbysize
388 +list changed files by size, not name
389 +.TP
390 +.B \-sortfirst xxx
391 +add a regexp to the sortfirst list
392 +.TP
393 +.B \-sortlast xxx
394 +add a regexp to the sortlast list
395 +.TP
396 +.B \-sortnewfirst
397 +list new before changed files
398 +.TP
399 +.B \-sshcmd xxx
400 +path to the ssh executable
401 +.TP
402 +.B \-statusdepth n
403 +status display depth for local files
404 +.TP
405 +.B \-terse
406 +suppress status messages
407 +.TP
408 +.B \-testserver
409 +exit immediately after the connection to the server
410 +.TP
411 +.B \-times
412 +synchronize modification times
413 +.TP
414 +.B \-ui xxx
415 +select user interface ('text' or 'graphic')
416 +.TP
417 +.B \-version
418 +print version and exit
419 +.PP
420 +Some preferences are just boolean flags. Others take numeric or string
421 +arguments, indicated in the preferences list by n or xxx. Most of the
422 +string preferences can be given several times; the arguments are
423 +accumulated into a list internally.
424 +.SH SEE ALSO
425 +The program is documented fully in the in-built documentation and the
426 +manual, available as HTML, PostScript and text in /usr/share/doc/unison/.
427 +.SH AUTHOR
428 +This manual page was written by Robert McQueen <robot101@debian.org>,
429 +for the Debian GNU/Linux system (but may be used by others).
430 --- unison-2.9.1.orig/debian/control
431 +++ unison-2.9.1/debian/control
432 @@ -0,0 +1,37 @@
433 +Source: unison
434 +Section: net
435 +Priority: optional
436 +Maintainer: Robert McQueen <robot101@debian.org>
437 +Build-Depends: debhelper, ocaml (>= 3.00-1), liblablgtk-ocaml-dev
438 +Standards-Version: 3.5.6
439 +
440 +Package: unison
441 +Architecture: any
442 +Depends: ${shlibs:Depends}
443 +Recommends: ssh
444 +Description: A file-synchronization tool for Unix and Windows
445 + Unison is a file-synchronization tool for Unix and Windows, written
446 + in OCaml. It allows two replicas of a collection of files and
447 + directories to be stored on different hosts (or different disks
448 + on the same host), modified separately, and then brought up to
449 + date by propagating the changes in each replica to the other.
450 + .
451 + Unison offers several advantages over various synchronization methods
452 + such as CVS, Coda, rsync, Intellisync, etc. Unison can run on and
453 + synchronize between Windows and many UNIX platforms. Unison requires
454 + no root privileges, system access or kernel changes to function. Unison
455 + can synchronize changes to files and directories in both directions,
456 + on the same machine, or across a network using ssh or a direct
457 + socket connection.
458 + .
459 + Transfers are optimised using a version of the rsync protocol, 
460 + making it ideal for slower links. Unison has a clear and precise 
461 + specification, and is resilient to failure due to its careful 
462 + handling of the replicas and its private structures.
463 +
464 +Package: unison-gtk
465 +Architecture: any
466 +Depends: ${shlibs:Depends}, unison (= ${Source-Version})
467 +Description: A file-synchronization tool for Unix and Windows - GTK interface
468 + This package adds the optional GTK interface to the file synchronization
469 + tool 'unison'.
470 --- unison-2.9.1.orig/debian/rules
471 +++ unison-2.9.1/debian/rules
472 @@ -0,0 +1,76 @@
473 +#!/usr/bin/make -f
474 +
475 +# export DH_VERBOSE=1
476 +export DH_COMPAT=2
477 +
478 +# set $(NATIVE) to true if this arch has an optimising compiler
479 +NATIVE := $(shell test -x /usr/bin/ocamlopt && echo true || echo false)
480 +
481 +build: build-stamp
482 +build-stamp:
483 +       dh_testdir
484 +#      if we have the optimising compiler, build natively with debugging because
485 +#      we can strip it later. if we don't, disable debugging because stripping
486 +#      the non-native binaries removes the bytecode and leaves you with the
487 +#      interpreter, and a somewhat useless binary... =)
488 +       $(MAKE) UISTYLE=gtk NATIVE=$(NATIVE) DEBUGGING=$(NATIVE)
489 +       mv unison unison-gtk
490 +       $(MAKE) UISTYLE=text NATIVE=$(NATIVE) DEBUGGING=$(NATIVE)
491 +       $(CURDIR)/unison -doc all > $(CURDIR)/unison-manual.txt
492 +       touch build-stamp
493 +
494 +clean:
495 +       dh_testdir
496 +       dh_testroot
497 +       rm -f build-stamp configure-stamp
498 +       rm -f unison-manual.txt unison-gtk
499 +       -$(MAKE) clean
500 +       dh_clean
501 +
502 +install: build
503 +       dh_testdir
504 +       dh_testroot
505 +       dh_clean -k
506 +       dh_installdirs
507 +       install -o root -g root -m 755 unison $(CURDIR)/debian/unison/usr/bin
508 +       install -o root -g root -m 755 unison-gtk $(CURDIR)/debian/unison-gtk/usr/bin
509 +       ln -s unison $(CURDIR)/debian/unison-gtk/usr/share/doc/unison-gtk
510 +       ln -s unison.1.gz $(CURDIR)/debian/unison-gtk/usr/share/man/man1/unison-gtk.1.gz
511 +
512 +binary-indep: build install
513 +
514 +binary-arch: build install
515 +#      dh_testversion
516 +       dh_testdir
517 +       dh_testroot
518 +#      dh_installdebconf
519 +       dh_installdocs
520 +#      dh_installexamples
521 +       dh_installmenu
522 +#      dh_installemacsen
523 +#      dh_installpam
524 +#      dh_installinit
525 +#      dh_installcron
526 +       dh_installman debian/unison.1
527 +#      dh_installinfo
528 +#      dh_undocumented
529 +       dh_installchangelogs NEWS
530 +#      dh_link
531 +#      only strip it if it's native or it breaks
532 +       set -e;                                 \
533 +       if [ -x "/usr/bin/ocamlopt" ]; then     \
534 +               dh_strip;                       \
535 +       fi
536 +       dh_compress
537 +       dh_fixperms
538 +#      dh_suidregister
539 +#      dh_makeshlibs
540 +       dh_installdeb
541 +#      dh_perl
542 +       dh_shlibdeps
543 +       dh_gencontrol
544 +       dh_md5sums
545 +       dh_builddeb
546 +
547 +binary: binary-indep binary-arch
548 +.PHONY: build clean binary-indep binary-arch binary install configure
549 --- unison-2.9.1.orig/debian/unison-manual.html
550 +++ unison-2.9.1/debian/unison-manual.html
551 @@ -0,0 +1,4136 @@
552 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
553 +            "http://www.w3.org/TR/REC-html40/loose.dtd">
554 +<HTML>
555 +<HEAD><TITLE></TITLE>
556 +<META http-equiv="Content-Type" content="text/html; charset= ISO-8859-1">
557 +</HEAD>
558 +<BODY BGCOLOR=silver TEXT=black>
559 +<!--HTMLHEAD-->
560 +<!--ENDHTML-->
561 +<!--CUT DEF section 1 -->
562 +<BR>
563 +<BR>
564 +
565 +<DIV ALIGN=center>
566 + <FONT SIZE=6>Unison File Synchronizer<BR></FONT><A HREF="http://www.cis.upenn.edu/~bcpierce/unison"><FONT SIZE=4>http://www.cis.upenn.edu/</FONT><FONT SIZE=4>~</FONT><FONT SIZE=4>bcpierce/unison</FONT></A><FONT SIZE=4><BR><BR></FONT><FONT SIZE=5>Version
567 + 2.9.1<BR><BR></FONT><FONT SIZE=6>User Manual and Reference
568 + </FONT></DIV>
569 +<BR>
570 +<!--TOC section Contents-->
571 +
572 +<H2>Contents</H2>
573 + <BLOCKQUOTE>
574 + <A HREF="#intro"><FONT SIZE=4><B>Preface</B></FONT></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#people">People</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#copying">Copying</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#bugs">Reporting Bugs</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#contrib">How You Can Help</A><BR><A HREF="#install"><FONT SIZE=4><B>Installation</B></FONT></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#download">Downloading Unison</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#afterinstall">Running Unison</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#upgrading">Upgrading</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#ports">Contributed Ports</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#building">Building Unison from Scratch</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#build-unix">Unix</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#build-win">Windows</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#build-opts">Installation Options</A><BR><A HREF="#tutorial"><FONT SIZE=4><B>Tutorial</B></FONT></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#prelim">Preliminaries</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#local">Local Usage</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#remote">Remote Usage</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#rshmeth">Remote Shell Method</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#socketmeth">Socket Method</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#usingit">Using Unison for All Your Files</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#further">Going Further</A><BR><A HREF="#basics"><FONT SIZE=4><B>Basic Concepts</B></FONT></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#roots">Roots</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#paths">Paths</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#updates">What is an Update?</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#conflicts">What is a Conflict?</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#recon">Reconciliation</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#failures">Invariants</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#caveats">Caveats and Shortcomings</A><BR><A HREF="#reference"><FONT SIZE=4><B>Reference</B></FONT></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#running">Running Unison</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#unisondir">The <TT>.unison</TT> Directory</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#archives">Archive Files</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#prefs">Preferences</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#profile">Profiles</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#profileegs">Sample Profiles</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#minimalprofile">A Minimal Profile</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#basicprofile">A Basic Profile</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="#powerprofile">A Power-User Profile</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#backups">Keeping Backups</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#merge">Merging Conflicting Versions</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#ui">The User Interface</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#exit">Exit code</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#pathspec">Path specification</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#ignore">Ignoring Paths</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#symlinks">Symbolic Links</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#perms">Permissions</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#crossplatform">Cross-Platform Synchronization</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#speed">Slow Links</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#fastcheck">Fast Update Detection</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#click">Click-starting Unison</A><BR><A HREF="#advice"><FONT SIZE=4><B>Advice</B></FONT></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#faq">Frequently Asked Questions</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#problems">Common Problems</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#tips">Tricks and Tips</A><BR><A HREF="#ssh"><FONT SIZE=4><B>Installing Ssh</B></FONT></A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#ssh-unix">Unix</A><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<FONT SIZE=4><FONT FACE=symbol>·</FONT></FONT><A HREF="#ssh-win">Windows</A><BR><A HREF="#news"><FONT SIZE=4><B>Changes in Version 2.9.1</B></FONT></A><BR>
575 + </BLOCKQUOTE>
576 + Unison is a file-synchronization tool for Unix and Windows.
577 +It allows two replicas of a collection of files and directories to be
578 +stored on different hosts (or different disks on the same host),
579 +modified separately, and then brought up to date by propagating the
580 +changes in each replica to the other.<BR>
581 +<BR>
582 +Unison 
583 +shares a number of features with tools such as configuration
584 +management packages (<A HREF="http://www.cyclic.com/">CVS</A>,
585 +<A HREF="http://www.XCF.Berkeley.EDU/~jmacd/prcs.html">PRCS</A>,
586 +etc.),
587 +distributed filesystems 
588 +(<A HREF="http://www.coda.cs.cmu.edu/">Coda</A>, 
589 +etc.),
590 +uni-directional mirroring utilities 
591 +(<A HREF="http://samba.anu.edu.au/rsync/">rsync</A>, 
592 +etc.),
593 +and other synchronizers 
594 +(<A HREF="http://www.pumatech.com">Intellisync</A>, 
595 +<A HREF="http://www.merl.com/reports/TR99-14/">Reconcile</A>,
596 +etc). 
597 +However, there are several points where it differs:
598 +<UL>
599 +<LI>
600 +Unison runs on both Windows (95, 98, NT, and 2k) and Unix (Solaris,
601 + Linux, etc.) systems. Moreover, Unison works <EM>across</EM>
602 + platforms, allowing you to synchronize a Windows laptop with a
603 + Unix server, for example.
604 +
605 +<LI>Unlike a distributed filesystem, Unison is a user-level program:
606 + there is no need to hack (or own!) the kernel, or to have
607 + superuser privileges on either host.
608 +
609 +<LI>Unlike simple mirroring or backup utilities, Unison can deal
610 + with updates to both replicas of a distributed directory structure.
611 + Updates that do not conflict are propagated automatically.
612 + Conflicting updates are detected and displayed.
613 +
614 +<LI>Unison works between any pair of machines connected to the
615 + internet, communicating over either a direct socket link or
616 + tunneling over an <TT>rsh</TT> or an encrypted <TT>ssh</TT> connection.
617 + It is careful with network bandwidth, and runs well over slow links
618 + such as PPP connections. Transfers of small updates to large files are
619 + optimized using a compression protocol similar to rsync.
620 +
621 +<LI>Unison has a clear and precise specification, described
622 +below. 
623 +<LI>Unison is resilient to failure. It is careful to leave the
624 + replicas and its own private structures in a sensible state at all
625 + times, even in case of abnormal termination or communication
626 + failures.
627 +
628 +<LI>Unison is free; full source code is available under the GNU
629 +Public License.
630 +</UL>There is a moderated, very-low-volume
631 +<A HREF="http://groups.yahoo.com/group/unison-announce">announcement list</A>
632 +for new Unison releases; the archives of this list are available at the
633 +above link. There is also a moderated (but higher volume)
634 +<A HREF="http://groups.yahoo.com/group/unison-users">discussion list</A> for
635 +Unison users.<BR>
636 +<BR>
637 +<hr><!--TOC section <A NAME="intro"></A>Preface-->
638 +
639 +<H2><A NAME="intro"></A>Preface</H2><!--TOC subsection <A NAME="people"></A>People-->
640 +
641 +<H3><A NAME="people"></A>People</H3><UL>
642 +<LI>
643 +<A HREF="http://www.cis.upenn.edu/~bcpierce">Benjamin Pierce</A>
644 + is the Unison project leader. Zhe Yang is a full-time postdoc on the
645 + project. 
646 +
647 +<LI>The current version of Unison was designed and implemented by
648 + <A HREF="http://www.cis.upenn.edu/~tjim">Trevor Jim</A>, 
649 + Benjamin Pierce,
650 +and
651 + Jérôme Vouillon, 
652 +with
653 + Sylvain Gommier and
654 + Matthieu Goulay.
655 +
656 +<LI>Our implementation of the rsync protocol was built by
657 + Norman Ramsey and Sylvain Gommier. It is is based on
658 + Andrew Tridgell's thesis work and inspired by his rsync utility.
659 +
660 +<LI>The mirroring and merging functionality was implemented by
661 + Sylvain Roy.
662 +
663 +<LI>Jacques Garrigue contributed the original Gtk version of the user
664 + interface. 
665 +
666 +<LI>Sundar Balasubramaniam helped build a prototype implementation of
667 +an earlier synchronizer in Java. Insik Shin and
668 +<A HREF="http://www.cis.upenn.edu/~lee">Insup Lee</A> contributed design
669 +ideas to this implementation. Cedric Fournet contributed to an even
670 +earlier prototype.
671 +</UL><!--TOC subsection <A NAME="copying"></A>Copying-->
672 +
673 +<H3><A NAME="copying"></A>Copying</H3>Unison is free software. You are free to change and redistribute it
674 +under the terms of the GNU General Public License. Please see the
675 +file COPYING in the Unison distribution for more information.<BR>
676 +<BR>
677 +<!--TOC subsection <A NAME="bugs"></A>Reporting Bugs-->
678 +
679 +<H3><A NAME="bugs"></A>Reporting Bugs</H3>If Unison is not working the way you expect, here are some steps to
680 +follow: <BR>
681 +<BR>
682 +<UL>
683 +<LI>
684 +First, try running Unison with the <TT>-debug all</TT> command line option.
685 +This will cause Unison to generate a detailed trace of what it's
686 +doing, which may make it clearer where the problem is occurring.
687 +
688 +<LI>Second, send mail to <A HREF="mailto:unison-help@cis.upenn.edu"><TT>unison-help@cis.upenn.edu</TT></A> describing the problem and we'll try to
689 +fix it. Make sure to include the version of Unison you are using (<TT>unison -version</TT>), the kind of machine(s) you are running it on, a
690 +record of what gets printed when the <TT>-debug all</TT> option is included,
691 +and as much information as you can about what went wrong.
692 +
693 +<LI>If you think the problem you're having might have been encountered
694 +by others (e.g., if it seems like a configuration problem, not a real
695 +bug), then you may be able to get some help from the Unison users'
696 +mailing list, <A HREF="mailto:unison-users@groups.yahoo.com"><TT>unison-users@groups.yahoo.com</TT></A>.
697 +</UL><!--TOC subsection <A NAME="contrib"></A>How You Can Help-->
698 +
699 +<H3><A NAME="contrib"></A>How You Can Help</H3>Unison is a part-time project for its developers: we work on it
700 +because we enjoy making something that is useful for us and for the
701 +community, but we all have other jobs to do. If you like Unison and
702 +want to help improve it, your contributions would be very welcome.
703 +For more details on how the code is organized, etc., see the file <TT>CONTRIB</TT> in the source distribution. <BR>
704 +<BR>
705 +If you don't feel like hacking, you can help us by simply letting us
706 +know how you like Unison. Even a short note like ``I'm using it;
707 +works fine'' or ``I looked at it but it's not quite what I want
708 +because...'' will give us valuable information.<BR>
709 +<BR>
710 +<hr><!--TOC section <A NAME="install"></A>Installation-->
711 +
712 +<H2><A NAME="install"></A>Installation</H2>Unison is designed to be easy to install. The following sequence of
713 +steps should get you a fully working installation in a few minutes. (If
714 +you run into trouble, you may find the suggestions in
715 +the <A HREF="#advice">Advice</A> section helpful.)<BR>
716 +<BR>
717 +Unison can be used with either of two user interfaces: 
718 +<OL>
719 +<LI>
720
721 +a simple textual interface, suitable for dumb terminals (and
722 +running from scripts), and 
723 +
724 +<LI>a more sophisticated grapical interface, based on Gtk.
725 +</OL>You will need to install a copy of Unison on every machine that you
726 +want to synchronize. However, you only need the version with a
727 +graphical user interface (if you want a GUI at all) on the machine
728 +where you're actually going to display the interface (the <EM>client</EM>
729 +machine). Other machines that you synchronize with can get along just
730 +fine with the textual version.<BR>
731 +<BR>
732 +<!--TOC subsection <A NAME="download"></A>Downloading Unison-->
733 +
734 +<H3><A NAME="download"></A>Downloading Unison</H3>If a pre-built binary of Unison is available for the client machine's
735 +architecture, just download it and put it somewhere in your search
736 +path (if you're going to invoke it from the command line) or on your
737 +desktop (if you'll be click-starting it).<BR>
738 +<BR>
739 +The executable file for the graphical version (with a name including
740 +<CODE>gtkui</CODE>) actually provides <EM>both</EM> interfaces: the graphical one
741 +appears by default, while the textual interface can be selected by including
742 +<CODE>-ui text</CODE> on the command line. The <CODE>textui</CODE> executable
743 +provides just the textual interface.<BR>
744 +<BR>
745 +If you don't see a pre-built executable for your architecture, you'll
746 +need to build it yourself. See the <A HREF="#building">Building Unison</A> section.
747 +(There are also a small number of ``contributed ports'' to other
748 +architectures that are not maintained by us. See
749 +the <A HREF="#ports">Contributed Ports</A> section to check what's available.)<BR>
750 +<BR>
751 +Check to make sure that what you have downloaded is really executable.
752 +Either click-start it, or type <FONT SIZE=4><TT>unison -version</TT></FONT> at the command
753 +line. <BR>
754 +<BR>
755 +Unison can be used in several different modes: with
756 +different directories on a single machine, with a
757 +remote machine over a direct socket connection, with a remote machine
758 +using <CODE>rsh</CODE> (on Unix systems), or with a remote Unix system (from either
759 +a Unix or a Windows client) using ssh
760 +for authentication and secure transfer. If you intend to use the last option, you may need to install ssh; see the <A HREF="#ssh">Installing Ssh</A> section.<BR>
761 +<BR>
762 +<!--TOC subsection <A NAME="afterinstall"></A>Running Unison-->
763 +
764 +<H3><A NAME="afterinstall"></A>Running Unison</H3> Once you've got Unison installed on at least one system, read 
765 +the <A HREF="#tutorial">Tutorial</A> section of the user manual (or type <FONT SIZE=4><TT>unison -doc
766 + tutorial</TT></FONT>) for instructions on how to get started.<BR>
767 +<BR>
768 +<!--TOC subsection <A NAME="upgrading"></A>Upgrading-->
769 +
770 +<H3><A NAME="upgrading"></A>Upgrading</H3>Upgrading to a new version of Unison should be as simple as throwing
771 +away the old binary and installing the new one.<BR>
772 +<BR>
773 +Before upgrading, it is a good idea to use the <EM>old</EM> version to
774 +make sure all your replicas are completely synchronized. A new
775 +version of Unison will sometimes introduce a different format for the
776 +archive files used to remember information about the previous state of
777 +the replicas. In this case, the old archive will be ignored (not
778 +deleted --- if you roll back to the previous version of Unison, you will
779 +find the old archives intact), which means that any differences
780 +between the replicas will show up as conflicts and need to be resolved
781 +manually. <BR>
782 +<BR>
783 +<!--TOC subsection <A NAME="ports"></A>Contributed Ports-->
784 +
785 +<H3><A NAME="ports"></A>Contributed Ports</H3>A few people have offered to maintain pre-built executables, easy
786 +installation scripts, etc., for particular architectures. They are not
787 +maintained by us and are not guaranteed to work, be kept up to date with
788 +our latest releases, etc., but you may find them useful. Here's what's
789 +available at the moment:<BR>
790 +<BR>
791 +<UL>
792 +<LI>
793 +<A HREF="mailto:dpelleg+unison@cs.cmu.edu">Dan Pelleg</A> has ported
794 +unison to FreeBSD. This means that any FreeBSD 
795 +user with an up-to-date ``ports'' collection can install unison by doing:
796 +<CODE>cd /usr/ports/net/unison; make &amp;&amp; make install</CODE>.
797 +(Make sure your ``ports'' collection is fully up to date before doing
798 +this, to ensure that you get the most recent Unison version that has been
799 +compiled for FreeBSD.)<BR>
800 +<BR>
801 +FreeBSD binaries can also be obtained directly from 
802 +<BLOCKQUOTE>
803 +<A HREF="http://www.freebsd.org/cgi/ports.cgi?query=unison&amp;stype=all">http://www.freebsd.org/cgi/ports.cgi?query=unison&amp;stype=all</A>.
804 +</BLOCKQUOTE>
805 +<LI>Andrew Pitts has built binaries for some versions of Unison for the
806 +Linux-PPC platform. They can be found in
807 +<A HREF="ftp://ftp.cl.cam.ac.uk/papers/amp12/unison/">ftp://ftp.cl.cam.ac.uk/papers/amp12/unison/</A>. <BR>
808 +<BR>
809 +
810 +<LI><A HREF="mailto:robot101@debian.org">Robert McQueen</A> maintains
811 +a Debian package for Unison. The homepage is located at
812 +<BLOCKQUOTE>
813 +<A HREF="http://packages.debian.org/testing/non-us/unison.html">http://packages.debian.org/testing/non-us/unison.html</A>.
814 +</BLOCKQUOTE>
815 +<LI><A HREF="mailto:crisco+unison@bic.mni.mcgill.ca">Chris Cocosco</A>
816 +provides binaries for Unison under SGI IRIX (6.5). They can be found in
817 +<BLOCKQUOTE>
818 +<A HREF="www.bic.mni.mcgill.ca/users/crisco/unison.irix/">www.bic.mni.mcgill.ca/users/crisco/unison.irix/</A>. 
819 +</BLOCKQUOTE>
820 +</UL><!--TOC subsection <A NAME="building"></A>Building Unison from Scratch-->
821 +
822 +<H3><A NAME="building"></A>Building Unison from Scratch</H3>If a pre-built image is not available, you will need to compile it from
823 +scratch; the sources are available from the same place as the binaries.<BR>
824 +<BR>
825 +In principle, Unison should work on any platform to which OCaml has been
826 +ported and on which the <CODE>Unix</CODE> module is fully implemented. In
827 +particular, it has been tested on many flavors of Windows (98, NT, 2000)
828 +and Unix (Solaris, Linux, FreeBSD, MacOS X), and on both 32- and 64-bit
829 +architectures. <BR>
830 +<BR>
831 +Unison does not work (and probably never will) on MacOS versions 8 or 9. <BR>
832 +<BR>
833 +<!--TOC subsubsection <A NAME="build-unix"></A>Unix-->
834 +
835 +<H4><A NAME="build-unix"></A>Unix</H4>You'll need the Objective Caml compiler (version 3.04 or later<A NAME="text1"></A><A HREF="#note1"><SUP><FONT SIZE=2>1</FONT></SUP></A>), which
836 +is available from its official site <A HREF="http://caml.inria.fr">http://caml.inria.fr</A>. Building and
837 +installing OCaml on Unix systems is very straightforward; follow the
838 +instructions in the distribution. You'll probably want to build the
839 +native-code compiler in addition to the bytecode compiler, but this is
840 +not absolutely necessary.<BR>
841 +<BR>
842 +(Quick start: on many systems, the following sequence of commands will
843 +get you a working and installed compiler: first do <TT>make world opt</TT>,
844 +then <TT>su</TT> to root, then do <TT>make install</TT>.)<BR>
845 +<BR>
846 +You'll also need the GNU make utility, standard on many Unix
847 +systems. (Type <FONT SIZE=4><TT>make --version</TT></FONT> to check that you've got the
848 +GNU version.)<BR>
849 +<BR>
850 +Once you've got OCaml installed, grab a copy of the Unison sources,
851 +unzip and untar them, change to the new <FONT SIZE=4><TT>unison</TT></FONT> directory, and
852 +type
853 +<PRE>
854 +            make UISTYLE=text
855 +</PRE>
856 +The result should be an executable file called <FONT SIZE=4><TT>unison</TT></FONT>.<BR>
857 +<BR>
858 +Type <FONT SIZE=4><TT>./unison</TT></FONT> to make sure the program is executable. You
859 +should get back a usage message.<BR>
860 +<BR>
861 +If you want to build a graphical user interface, choose one of the
862 +following:
863 +<UL>
864 +<LI>
865 +Gtk interface:<BR>You will need Gtk (version 1.2 or later, available from 
866 + <A HREF="http://www.gtk.org">http://www.gtk.org</A> and standard
867 + on many Unix installations). 
868
869 + You also need the get LablGtk (version 1.1.3 is known to work). Grab the
870 + developers' tarball from
871 + <BLOCKQUOTE>
872 + <A HREF="http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html">http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html</A>,
873 + </BLOCKQUOTE>
874 + untar it, and follow the instructions to build and install it.<BR>
875 +<BR>
876 + (Quick start: <TT>make configure</TT>, then <TT>make</TT>, then <TT>make
877 + opt</TT>, then <TT>su</TT> and <TT>make install</TT>.)<BR>
878 +<BR>
879 + Now build unison. If your search paths are set up correctly, typing
880 +<PRE>
881 +       make UISTYLE=gtk
882 +</PRE>
883 + should build a <CODE>unison</CODE> executable with a Gtk graphical interface.
884 +</UL>If this step does not work, don't worry: Unison works fine with the
885 +textual interface.<BR>
886 +<BR>
887 +Put the <CODE>unison</CODE> executable somewhere in your search path, either
888 +by adding the Unison directory to your PATH variable or by copying the
889 +executable to some standard directory where executables are stored.<BR>
890 +<BR>
891 +<!--TOC subsubsection <A NAME="build-win"></A>Windows-->
892 +
893 +<H4><A NAME="build-win"></A>Windows</H4>Although the binary distribution should work on any version of Windows,
894 +some people may want to build Unison from scratch on those systems too.<BR>
895 +<BR>
896 +<!--TOC paragraph Bytecode version:-->
897 +
898 +<H5> Bytecode version:</H5> The simpler but slower compilation option to build a Unison executable is to build a bytecode version. You need first install Windows version of the OCaml compiler (version 3.04 or later, available from <A HREF="http://caml.inria.fr">http://caml.inria.fr</A>). Then grab a copy of Unison sources and type 
899 +<PRE>
900 +       make UISTYLE=text NATIVE=false
901 +</PRE>
902 +to compile the bytecode. The result should be an executable file called <CODE>unison.exe</CODE>.<BR>
903 +<BR>
904 +<!--TOC paragraph Native version:-->
905 +
906 +<H5> Native version:</H5> To build a more efficient, native version of Unison on Windows, you can choose between two options. Both options require the OCaml distribution version 3.04 as well as the Cygwin layer, which provides certain GNU tools. The two options differ in the C compiler employed: MS Visual C++ (MSVC) vs. Cygwin GNU C.<BR>
907 +<BR>
908 +The tradeoff?
909 +<UL>
910 +<LI>
911 +Only the MSVC option can produce statically linked Unison executable. 
912 +
913 +<LI>The Cygwin GNU C option requires only free software.
914 +</UL>The files ``INSTALL.win32-msvc'' and ``INSTALL.win32-cygwin-gnuc'' describe
915 +the building procedures for the respective options.<BR>
916 +<BR>
917 +<!--TOC subsubsection <A NAME="build-opts"></A>Installation Options-->
918 +
919 +<H4><A NAME="build-opts"></A>Installation Options</H4>The <CODE>Makefile</CODE> in the distribution includes several switches that
920 +can be used to control how Unison is built. Here are the most useful
921 +ones:
922 +<UL>
923 +<LI>
924 +Building with <CODE>NATIVE=true</CODE> uses the native-code OCaml
925 +compiler, yielding an executable that will run quite a bit faster. We use
926 +this for building distribution versions.
927 +
928 +<LI>Building with <CODE>make DEBUGGING=true</CODE> generates debugging
929 +symbols. 
930 +
931 +<LI>Building with <CODE>make STATIC=true</CODE> generates a (mostly)
932 +statically linked executable. We use this for building distribution
933 +versions, for portability.
934 +</UL>
935 +<hr><!--TOC section <A NAME="tutorial"></A>Tutorial-->
936 +
937 +<H2><A NAME="tutorial"></A>Tutorial</H2><!--TOC subsection <A NAME="prelim"></A>Preliminaries-->
938 +
939 +<H3><A NAME="prelim"></A>Preliminaries</H3>Unison can be used with either of two user interfaces: 
940 +<OL>
941 +<LI>
942
943 +a straightforward textual interface and 
944 +
945 +<LI>a more sophisticated graphical interface
946 +</OL>
947 +The textual interface is more convenient for running from scripts and
948 +works on dumb terminals; the graphical interface is better for most
949 +interactive use. For this tutorial, you can use either.<BR>
950 +<BR>
951 +The command-line arguments to both versions are identical. 
952 +The graphical version can be run directly by clicking on its icon, but
953 +this requires a little set-up (see the <A HREF="#click">Click-starting Unison</A> section).
954 +For this tutorial, we assume that you're starting it from the command
955 +line. <BR>
956 +<BR>
957 +Unison can synchronize files and directories on a single machine, or
958 +between two machines on network. (The same program runs on both
959 +machines; the only difference is which one is responsible for
960 +displaying the user interface.) If you're only interested in a
961 +single-machine setup, then let's call that machine the <EM>client</EM>. If
962 +you're synchronizing two machines, let's call them <EM>client</EM> and
963 +<EM>server</EM>.<BR>
964 +<BR>
965 +<!--TOC subsection <A NAME="local"></A>Local Usage-->
966 +
967 +<H3><A NAME="local"></A>Local Usage</H3>Let's get the client machine set up first, and see how to synchronize
968 +two directories on a single machine.<BR>
969 +<BR>
970 +Follow the instructions in the <A HREF="#install">Installation</A> section to either
971 +download or build an executable version of Unison, and install it
972 +somewhere on your search path. (If you just want to use the textual user
973 +interface, download the appropriate textui binary. If you just want to
974 +the graphical interface---or if you will use both interfaces [the gtkui
975 +binary actually has both compiled in]---then download the gtkui binary.)<BR>
976 +<BR>
977 +Create a small test directory <TT>a.tmp</TT> containing a couple of files
978 +and/or subdirectories, e.g.,
979 +<PRE>
980 +       mkdir a.tmp
981 +       touch a.tmp/a a.tmp/b
982 +       mkdir a.tmp/d
983 +       touch a.tmp/d/f
984 +</PRE>
985 +Copy this directory to b.tmp:
986 +<PRE>
987 +       cp -r a.tmp b.tmp
988 +</PRE>Now try synchronizing <TT>a.tmp</TT> and <TT>b.tmp</TT>. (Since they are
989 +identical, synchronizing them won't propagate any changes, but Unison
990 +will remember the current state of both directories so that it will be
991 +able to tell next time what has changed.) Type:
992 +<PRE>
993 +       unison a.tmp b.tmp
994 +</PRE><BR><EM>Textual Interface:</EM><UL>
995 +<LI>
996
997 +You should see a message notifying you that all the files are actually
998 +equal and then get returned to the command line.
999 +</UL><BR><EM>Graphical Interface:</EM><UL>
1000 +<LI>
1001
1002 +You should get a big empty window with a message at the bottom
1003 +notifying you that all files are identical. Choose the Exit item from
1004 +the File menu to get back to the command line.
1005 +</UL>Next, make some changes in a.tmp and/or b.tmp. For example:
1006 +<PRE>
1007 +        rm a.tmp/a
1008 +        echo "Hello" &gt; a.tmp/b
1009 +        echo "Hello" &gt; b.tmp/b
1010 +        date &gt; b.tmp/c
1011 +        echo "Hi there" &gt; a.tmp/d/h
1012 +        echo "Hello there" &gt; b.tmp/d/h
1013 +</PRE>
1014 +Run Unison again:
1015 +<PRE>
1016 +       unison a.tmp b.tmp
1017 +</PRE>This time, the user interface will display only the files that have
1018 +changed. If a file has been modified in just one
1019 +replica, then it will be displayed with an arrow indicating the
1020 +direction that the change needs to be propagated. For example, 
1021 +<PRE>
1022 +                 &lt;---  new file   c  [f]
1023 +</PRE>
1024 +indicates that the file <TT>c</TT> has been modified only in the second
1025 +replica, and that the default action is therefore to propagate the new
1026 +version to the first replica. To <B>f</B>ollw Unison's recommendation,
1027 +press the ``f'' at the prompt.<BR>
1028 +<BR>
1029 +If both replicas are modified and their contents are different, then
1030 +the changes are in conflict: <TT>&lt;-?-&gt;</TT> is displayed to indicate
1031 +that Unison needs guidance on which replica should override the
1032 +other. 
1033 +<PRE>
1034 +     new file  &lt;-?-&gt;  new file   d/h  []
1035 +</PRE>
1036 +By default, neither version will be propagated and both
1037 +replicas will remain as they are. <BR>
1038 +<BR>
1039 +If both replicas have been modified but their new contents are the same
1040 +(as with the file <TT>b</TT>), then no propagation is necessary and
1041 +nothing is shown. Unison simply notes that the file is up to date.<BR>
1042 +<BR>
1043 +These display conventions are used by both versions of the user
1044 +interface. The only difference lies in the way in which Unison's
1045 +default actions are either accepted or overriden by the user.<BR>
1046 +<BR>
1047 +<BR><EM>Textual Interface:</EM><UL>
1048 +<LI>
1049
1050 +The status of each modified file is displayed, in turn. 
1051 +When the copies of a file in the two replicas are not identical, the
1052 +user interface will ask for instructions as to how to propagate the
1053 +change. If some default action is indicated (by an arrow), you can
1054 +simply press Return to go on to the next changed file. If you want to
1055 +do something different with this file, press ``<CODE>&lt;</CODE>'' or ``<CODE>&gt;</CODE>'' to force
1056 +the change to be propagated from right to left or from left to right,
1057 +or else press ``<CODE>/</CODE>'' to skip this file and leave both replicas alone.
1058 +When it reaches the end of the list of modified files, Unison will ask
1059 +you one more time whether it should proceed with the updates that have
1060 +been selected.<BR>
1061 +<BR>
1062 +When Unison stops to wait for input from the user, pressing ``<CODE>?</CODE>''
1063 +will always give a list of possible responses and their meanings.
1064 +</UL><BR><EM>Graphical Interface:</EM><UL>
1065 +<LI>
1066
1067 +The main window shows all the files that have been modified in either
1068 +<TT>a.tmp</TT> or <TT>b.tmp</TT>. To override a default action (or to select
1069 +an action in the case when there is no default), first select the file, either
1070 +by clicking on its name or by using the up- and down-arrow keys. Then
1071 +press either the left-arrow or ``<CODE>&lt;</CODE>'' key (to cause the version in a.tmp to
1072 +propagate to b.tmp) or the right-arrow or ``<CODE>&gt;</CODE>'' key (which makes the b.tmp
1073 +version override a.tmp).<BR>
1074 +<BR>
1075 +Every keyboard command can also be invoked from the menus at the top
1076 +of the user interface. (Conversely, each menu item is annotated with
1077 +its keyboard equivalent, if it has one.)<BR>
1078 +<BR>
1079 +When you are satisfied with the directions for the propagation of changes
1080 +as shown in the main window, click the ``Go'' button to set them in
1081 +motion. A check sign will be displayed next to each filename
1082 +when the file has been dealt with.
1083 +</UL><!--TOC subsection <A NAME="remote"></A>Remote Usage-->
1084 +
1085 +<H3><A NAME="remote"></A>Remote Usage</H3>Next, we'll get Unison set up to synchronize replicas on two different
1086 +machines.<BR>
1087 +<BR>
1088 +Follow the instructions in the Installation section to download or
1089 +build an executable version of Unison on the server machine, and
1090 +install it somewhere on your search path. (It doesn't matter whether
1091 +you install the textual or graphical version, since the copy of Unison on
1092 +the server doesn't need to display any user interface at all.) <BR>
1093 +<BR>
1094 +It is important that the version of Unison installed on the server
1095 +machine is the same as the version of Unison on the client machine.
1096 +But some flexibility on the version of Unison at the client side can
1097 +be achieved by using the <CODE>-addversionno</CODE> option; see 
1098 +the <A HREF="#prefs">Preferences</A> section.<BR>
1099 +<BR>
1100 +Now there is a decision to be made. Unison provides two methods for
1101 +communicating between the client and the server:
1102 +<UL>
1103 +<LI>
1104 +<EM>Remote shell method</EM>: To use this method, you must have
1105 + some way of invoking remote commands on the server from the client's
1106 + command line, using a facility such as <CODE>ssh</CODE> or <CODE>rsh</CODE>.
1107 + This method is more convenient (since there is no need to manually
1108 + start a ``unison server'' process on the server) and also more
1109 + secure (especially if you use <CODE>ssh</CODE>).<BR>
1110 +<BR>
1111 +
1112 +<LI><EM>Socket method</EM>: This method requires only that you can get
1113 + TCP packets from the client to the server and back. A draconian 
1114 + firewall can prevent this, but otherwise it should work anywhere.
1115 +</UL>Decide which of these you want to try, and continue with
1116 +the <A HREF="#rshmeth">Remote Shell Method</A> section or
1117 +the <A HREF="#socketmeth">Socket Method</A> section, as appropriate.<BR>
1118 +<BR>
1119 +<!--TOC subsection <A NAME="rshmeth"></A>Remote Shell Method-->
1120 +
1121 +<H3><A NAME="rshmeth"></A>Remote Shell Method</H3>The standard remote shell facility on Unix systems is <CODE>rsh</CODE>.
1122 +A drop-in replacement for <CODE>rsh</CODE> is <CODE>ssh</CODE>, which provides the
1123 +same functionality but much better security. (Ssh is available from
1124 +<A HREF="ftp://ftp.cs.hut.fi/pub/ssh/">ftp://ftp.cs.hut.fi/pub/ssh/</A>; up-to-date binaries for some
1125 +architectures can also be found at
1126 +<A HREF="ftp://ftp.faqs.org/ssh/contrib">ftp://ftp.faqs.org/ssh/contrib</A>. See section&nbsp;<A HREF="#ssh-win">A.2</A>
1127 +for installation instructions for the Windows version.) Both <CODE>rsh</CODE> and
1128 +<CODE>ssh</CODE> require some coordination between the client and server
1129 +machines to establish that the client is allowed to invoke commands on
1130 +the server; please refer to the <CODE>rsh</CODE> or <CODE>ssh</CODE> documentation
1131 +for information on how to set this up. The examples in this section
1132 +use <CODE>ssh</CODE>, but you can substitute <CODE>rsh</CODE> for <CODE>ssh</CODE> if
1133 +you wish.<BR>
1134 +<BR>
1135 +First, test that we can invoke Unison on the server from the client.
1136 +Typing
1137 +<PRE>
1138 +        ssh <I>remotehostname</I> unison -version
1139 +</PRE>
1140 +should print the same version information as running
1141 +<PRE>
1142 +        unison -version
1143 +</PRE>
1144 +locally on the client. If remote execution fails, then either
1145 +something is wrong with your ssh setup (e.g., ``permission denied'')
1146 +or else the search path that's being used when executing commands on
1147 +the server doesn't contain the <CODE>unison</CODE> executable (e.g.,
1148 +``command not found'').<BR>
1149 +<BR>
1150 +Create a test directory <TT>a.tmp</TT> in your home directory on the client
1151 +machine. <BR>
1152 +<BR>
1153 +Test that the local unison client can start and connect to the
1154 +remote server. Type
1155 +<PRE>
1156 +          unison -testServer a.tmp ssh://<I>remotehostname</I>/a.tmp
1157 +</PRE>Now cd to your home directory and type:
1158 +<PRE>
1159 +          unison a.tmp ssh://remotehostname/a.tmp
1160 +</PRE>
1161 +The result should be that the entire directory <TT>a.tmp</TT> is propagated
1162 +from the client to your home directory on the server.<BR>
1163 +<BR>
1164 +After finishing the first synchronization, change a few files and try
1165 +synchronizing again. You should see similar results as in the local
1166 +case.<BR>
1167 +<BR>
1168 +If your user name on the server is not the same as on the client, you
1169 +need to specify it on the command line:
1170 +<PRE>
1171 +          unison a.tmp ssh://username@remotehostname/a.tmp
1172 +</PRE><I>Notes:</I>
1173 +<UL>
1174 +<LI>
1175 +If you want to put <CODE>a.tmp</CODE> some place other than your home
1176 +directory on the remote host, you can give an absolute path for it by
1177 +adding an extra slash between <CODE>remotehostname</CODE> and the beginning
1178 +of the path:
1179 +<PRE>
1180 +          unison a.tmp ssh://remotehostname//absolute/path/to/a.tmp
1181 +</PRE>
1182 +<LI>You can give an explicit path for the <CODE>unison</CODE> executable
1183 + on the server by using the command-line option <FONT SIZE=4><TT>-servercmd
1184 + /full/path/name/of/unison</TT></FONT> or adding
1185 + <FONT SIZE=4><TT>servercmd=/full/path/name/of/unison</TT></FONT> to your profile (see
1186 + the <A HREF="#profile">Profile</A> section). Similarly, you can specify a
1187 + explicit path for the <CODE>rsh</CODE> or <CODE>ssh</CODE> program using the
1188 + option <FONT SIZE=4><TT>-rshcmd</TT></FONT> or <FONT SIZE=4><TT>-sshcmd</TT></FONT>.
1189 +</UL><!--TOC subsection <A NAME="socketmeth"></A>Socket Method-->
1190 +
1191 +<H3><A NAME="socketmeth"></A>Socket Method</H3>To run Unison over a socket connection, you must start a Unison
1192 +``daemon'' process on the server. This process runs continuously,
1193 +waiting for connections over a given socket from client machines
1194 +running Unison and processing their requests in turn.<BR>
1195 +<BR>
1196 +<BLOCKQUOTE>
1197 + <B><FONT COLOR=red>Warning:</FONT></B> The socket method is 
1198 + insecure: not only are the texts of your changes transmitted over
1199 + the network in unprotected form, it is also possible for anyone in
1200 + the world to connect to the server process and read out the contents
1201 + of your filesystem! (Of course, to do this they must understand the
1202 + protocol that Unison uses to communicate between client and server,
1203 + but all they need for this is a copy of the Unison sources.)
1204 +</BLOCKQUOTE>To start the daemon, type
1205 +<PRE>
1206 +       unison -socket NNNN
1207 +</PRE>
1208 +on the server machine, where <TT>NNNN</TT> is the socket number that the
1209 +daemon should listen on for connections from clients. (<TT>NNNN</TT> can
1210 +be any large number that is not being used by some other program; if
1211 +<TT>NNNN</TT> is already in use, Unison will exit with an error
1212 +message.) Note that paths specified by the client will be interpreted
1213 +relative to the directory in which you start the server process; this
1214 +behavior is different from the ssh case, where the path is relative to
1215 +your home directory on the server.<BR>
1216 +<BR>
1217 +Create a test directory <TT>a.tmp</TT> in your home directory on the
1218 +client machine. Now type:
1219 +<PRE>
1220 +       unison a.tmp socket://<I>remotehostname</I>:NNNN/a.tmp
1221 +</PRE>
1222 +The result should be that the entire directory <TT>a.tmp</TT> is
1223 +propagated from the client to the server (<TT>a.tmp</TT> will be
1224 +created on the server in the directory that the server was started
1225 +from).
1226 +After finishing the first synchronization, change a few files and try
1227 +synchronizing again. You should see similar results as in the local
1228 +case.<BR>
1229 +<BR>
1230 +<!--TOC subsection <A NAME="usingit"></A>Using Unison for All Your Files-->
1231 +
1232 +<H3><A NAME="usingit"></A>Using Unison for All Your Files</H3>Once you are comfortable with the basic operation of Unison, you may
1233 +find yourself wanting to use it regularly to synchronize your commonly
1234 +used files. There are several possible ways of going about this:<BR>
1235 +<BR>
1236 +<OL>
1237 +<LI>
1238
1239 +Synchronize your whole home directory, using the Ignore facility
1240 +(see the <A HREF="#ignore">Ignore</A> section)
1241 +to avoid synchronizing temporary files and things that only belong on
1242 +one host.
1243 +
1244 +<LI>Create a subdirectory called <TT>shared</TT> (or <TT>current</TT>, or
1245 +whatever) in your home directory on each host, and put all the files
1246 +you want to synchronize into this directory. 
1247 +
1248 +<LI>Create a subdirectory called <TT>shared</TT> (or <TT>current</TT>, or
1249 +whatever) in your home directory on each host, and put <EM>links to</EM>
1250 +all the files you want to synchronize into this directory. Use the
1251 +<TT>follow</TT> preference (see the <A HREF="#symlinks">Symbolic Links</A> section) to make
1252 +sure that all these links are treated transparently by Unison.
1253 +
1254 +<LI>Make your home directory the root of the synchronization, but
1255 +tell Unison to synchronize only some of the files and subdirectories
1256 +within it. This can be accomplished by using the <TT>-path</TT> switch
1257 +on the command line:
1258 +<PRE>
1259 +       unison /home/<I>username</I> ssh://<I>remotehost</I>//home/<I>username</I> -path shared
1260 +</PRE>
1261 +The <TT>-path</TT> option can be used as many times as needed, to 
1262 +synchronize several files or subdirectories:
1263 +<PRE>
1264 +       unison /home/<I>username</I> ssh://<I>remotehost</I>//home/<I>username</I> <CODE>\</CODE>
1265 +          -path shared <CODE>\</CODE>
1266 +          -path pub <CODE>\</CODE>
1267 +          -path .netscape/bookmarks.html
1268 +</PRE>
1269 +These <CODE>-path</CODE> arguments can also be put in your preference file.
1270 +See the <A HREF="#prefs">Preferences</A> section for an example.
1271 +</OL>When you synchronize a large directory structure (e.g. your home
1272 +directory) for the first time, Unison will need to spend a lot of time
1273 +walking over all the files and building its internal data structures.
1274 +You'll probably save time if you start off focusing Unison's attention on
1275 +just a subset of your files, by including the option 
1276 +<TT>-path <I>some/small/subdirectory</I></TT> on the command line. When this is
1277 +working to your satisfaction, take away the <CODE>-path</CODE> option and go
1278 +get lunch while Unison works.<BR>
1279 +<BR>
1280 +If your replicas are large and at least one of them is on a Windows
1281 +system, you may find that Unison's default method for detecting changes
1282 +(which involves scanning the full contents of every file on every
1283 +sync---the only completely safe way to do it under Windows) is too slow.
1284 +In this case, you may be interested in the <TT>fastcheck</TT> preference,
1285 +documented in the <A HREF="#fastcheck">Fast Update Checking</A> section.<BR>
1286 +<BR>
1287 +Most people find that they only need to maintain a profile (or
1288 +profiles) on one of the hosts that they synchronize, since Unison is
1289 +always initiated from this host. (For example, if you're
1290 +synchronizing a laptop with a fileserver, you'll probably always run
1291 +Unison on the laptop.) This is a bit different from the usual
1292 +situation with asymmetric mirroring programs like <CODE>rdist</CODE>, where
1293 +the mirroring operation typically needs to be initiated from the
1294 +machine with the most recent changes. the <A HREF="#profile">Profile</A> section
1295 +covers the syntax of Unison profiles, together with some sample profiles.<BR>
1296 +<BR>
1297 +<!--TOC subsection <A NAME="further"></A>Going Further-->
1298 +
1299 +<H3><A NAME="further"></A>Going Further</H3>On-line documentation for the various features of Unison
1300 +can be obtained either by typing
1301 +<PRE>
1302 +        unison -doc topics
1303 +</PRE>
1304 +at the command line, or by selecting the Help menu in the graphical
1305 +user interface. 
1306 +The on-line information is essentially identical to this manual.
1307 +<BR>
1308 +<BR>
1309 +There are two email lists for users of unison. Visit
1310 +<BLOCKQUOTE>
1311 +<A HREF="http://www.cis.upenn.edu/~bcpierce/unison/download.html">http://www.cis.upenn.edu/~bcpierce/unison/download.html</A>
1312 +</BLOCKQUOTE>
1313 +for more details.<BR>
1314 +<BR>
1315 +<hr><!--TOC section <A NAME="basics"></A>Basic Concepts-->
1316 +
1317 +<H2><A NAME="basics"></A>Basic Concepts</H2>Unison deals in a few straightforward concepts.
1318 +(A more mathematical development of these concepts can be found in
1319 +<A HREF="http://www.cis.upenn.edu/~bcpierce/papers/snc-mobicom.ps.gz">``<EM>What is a File Synchronizer?</EM>''</A> by Sundar Balasubramaniam and
1320 +Benjamin Pierce [MobiCom 1998]. A more up-to-date version can be
1321 +found in a
1322 +<A HREF="http://www.cis.upenn.edu/~bcpierce/papers/snc-tacs-2001Oct.ps">recent set of slides</A>.)<BR>
1323 +<BR>
1324 +<!--TOC subsection <A NAME="roots"></A>Roots-->
1325 +
1326 +<H3><A NAME="roots"></A>Roots</H3>A replica's <EM>root</EM> tells Unison where to find a set of files to be
1327 +synchronized, either on the local machine or on a remote host.
1328 +For example,
1329 +<PRE>
1330 +      <I>relative/path/of/root</I>
1331 +</PRE>
1332 +specifies a local root relative to the directory where Unison is
1333 +started, while
1334 +<PRE>
1335 +      /<I>absolute/path/of/root</I>
1336 +</PRE>
1337 +specifies a root relative to the top of the local filesystem,
1338 +independent of where Unison is running. Remote roots can begin with
1339 +<CODE>ssh://</CODE>,
1340 +<CODE>rsh://</CODE>
1341 +to indicate that the remote server should be started with rsh or ssh:
1342 +<PRE>
1343 +      ssh://<I>remotehost</I>//<I>absolute/path/of/root</I>
1344 +      rsh://<I>user</I>@<I>remotehost</I>/<I>relative/path/of/root</I>
1345 +</PRE>
1346 +If the remote server is already running (in the socket mode), then the syntax
1347 +<PRE>
1348 +      socket://<I>remotehost</I>:<I>portnum</I>//<I>absolute/path/of/root</I>
1349 +      socket://<I>remotehost</I>:<I>portnum</I>/<I>relative/path/of/root</I>
1350 +</PRE>
1351 +is used to specify the hostname and the port that the client Unison should
1352 +use to contact it.<BR>
1353 +<BR>
1354 +The syntax for roots is based on that of URIs (described in RFC 2396).
1355 +The full grammar is: 
1356 +<PRE>
1357 +  <I>replica</I> ::= [<I>protocol</I>:]//[<I>user</I>@][<I>host</I>][:<I>port</I>][/<I>path</I>]
1358 +           |  <I>path</I>
1359 +
1360 +  <I>protocol</I> ::= file
1361 +            |  socket
1362 +            |  ssh
1363 +            |  rsh
1364 +
1365 +  <I>user</I> ::= [-_a-zA-Z0-9]+
1366 +
1367 +  <I>host</I> ::= [-_a-zA-Z0-9.]+
1368 +
1369 +  <I>port</I> ::= [0-9]+
1370 +</PRE>
1371 +When <CODE>path</CODE> is given without any protocol prefix, the protocol is
1372 +assumed to be <CODE>file:</CODE>. Under Windows, it is possible to
1373 +synchronize with a remote directory using the <CODE>file:</CODE> protocol over
1374 +the Windows Network Neighborhood. For example,
1375 +<PRE>
1376 +       unison foo //host/drive/bar
1377 +</PRE>
1378 +synchronizes the local directory <CODE>foo</CODE> with the directory
1379 +<CODE>drive:\bar</CODE> on the machine <CODE>host</CODE>, provided that <CODE>host</CODE>
1380 +is accessible via Network Neighborhood. When the <CODE>file:</CODE> protocol
1381 +is used in this way, there is no need for a Unison server to be running
1382 +on the remote host. (However, running Unison this way is only a good
1383 +idea if the remote host is reached by a very fast network connection,
1384 +since the full contents of every file in the remote replica will have to
1385 +be transferred to the local machine to detect updates.)<BR>
1386 +<BR>
1387 +The names of roots are <EM>canonized</EM> by Unison before it uses them
1388 +to compute the names of the corresponding archive files, so <TT>//saul//home/bcpierce/common</TT> and <TT>//saul.cis.upenn.edu/common</TT>
1389 +will be recognized as the same replica under different names.<BR>
1390 +<BR>
1391 +<!--TOC subsection <A NAME="paths"></A>Paths-->
1392 +
1393 +<H3><A NAME="paths"></A>Paths</H3>A <EM>path</EM> refers to a point <EM>within</EM> a set of files being
1394 +synchronized; it is specified relative to the root of the replica.<BR>
1395 +<BR>
1396 +Formally, a path is just a sequence of names, separated by <CODE>/</CODE>.
1397 +Note that the path separator character is always a forward slash, no
1398 +matter what operating system Unison is running on. Forward slashes
1399 +are converted to backslashes as necessary when paths are converted to
1400 +filenames in the local filesystem on a particular host.
1401 +(For example, suppose that we run Unison on a Windows system, synchronizing
1402 +the local root <CODE>c:\pierce</CODE> with the root
1403 +<CODE>ssh://saul.cis.upenn.edu/home/bcpierce</CODE> on a Unix server. Then
1404 +the path <CODE>current/todo.txt</CODE> refers to the file
1405 +<CODE>c:\pierce\current\todo.txt</CODE> on the client and
1406 +<CODE>/home/bcpierce/current/todo.txt</CODE> on the server.)<BR>
1407 +<BR>
1408 +The empty path (i.e., the empty sequence of names) denotes the whole
1409 +replica. Unison displays the empty path as ``<CODE>[root]</CODE>.''<BR>
1410 +<BR>
1411 +If <CODE>p</CODE> is a path and <CODE>q</CODE> is a path beginning with <CODE>p</CODE>, then
1412 +<CODE>q</CODE> is said to be a <EM>descendant</EM> of <CODE>p</CODE>. (Each path is also a
1413 +descendant of itself.)<BR>
1414 +<BR>
1415 +<!--TOC subsection <A NAME="updates"></A>What is an Update?-->
1416 +
1417 +<H3><A NAME="updates"></A>What is an Update?</H3>The <EM>contents</EM> of a path <CODE>p</CODE> in a particular replica could be a
1418 +file, a directory, a symbolic link, or absent (if <CODE>p</CODE> does not
1419 +refer to anything at all in that replica). More specifically:
1420 +<UL>
1421 +<LI>
1422 +If <CODE>p</CODE> refers to an ordinary file, then the
1423 +contents of <CODE>p</CODE> are the actual contents of this file (a string of bytes)
1424 +plus the current permission bits of the file. 
1425 +
1426 +<LI>If <CODE>p</CODE> refers to a symbolic link, then the contents of <CODE>p</CODE>
1427 +are just the string specifying where the link points.
1428 +
1429 +<LI>If <CODE>p</CODE> refers to a directory, then the
1430 +contents of <CODE>p</CODE> are just the token ``DIRECTORY'' plus the current
1431 +permission bits of the directory. 
1432 +
1433 +<LI>If <CODE>p</CODE> does not refer to anything in this replica, then the
1434 +contents of <CODE>p</CODE> are the token ``ABSENT.''
1435 +</UL>
1436 +Unison keeps a record of the contents of each path after each
1437 +successful synchronization of that path (i.e., it remembers the
1438 +contents at the last moment when they were the same in the two
1439 +replicas). <BR>
1440 +<BR>
1441 +We say that a path is <EM>updated</EM> (in some replica) if its current
1442 +contents are different from its contents the last time it was
1443 +successfully synchronized.<BR>
1444 +<BR>
1445 +(What Unison actually calculates is a slight approximation to this
1446 +definition; see the <A HREF="#caveats">Caveats and Shortcomings</A> section.)<BR>
1447 +<BR>
1448 +<!--TOC subsection <A NAME="conflicts"></A>What is a Conflict?-->
1449 +
1450 +<H3><A NAME="conflicts"></A>What is a Conflict?</H3>A path is said to be <EM>conflicting</EM> if 
1451 +<OL>
1452 +<LI>
1453
1454 +it has been updated in one replica, 
1455 +
1456 +<LI>it or any of its descendants has been updated in the other
1457 + replica, 
1458 +and
1459 +
1460 +<LI>its contents in the two replicas are not identical.
1461 +</OL><!--TOC subsection <A NAME="recon"></A>Reconciliation-->
1462 +
1463 +<H3><A NAME="recon"></A>Reconciliation</H3>Unison operates in several distinct stages:
1464 +<OL>
1465 +<LI>
1466
1467 +On each host, it compares its archive file (which records
1468 +the state of each path in the replica when it was last synchronized)
1469 +with the current contents of the replica, to determine which paths
1470 +have been updated.
1471 +
1472 +<LI>It checks for ``false conflicts'' --- paths that have been
1473 +updated on both replicas, but whose current values are identical.
1474 +These paths are silently marked as synchronized in the archive files
1475 +in both replicas.
1476 +
1477 +<LI>It displays all the updated paths to the user. For updates that
1478 +do not conflict, it suggests a default action (propagating the new
1479 +contents from the updated replica to the other). Conflicting updates
1480 +are just displayed. The user is given an opportunity to examine the
1481 +current state of affairs, change the default actions for
1482 +nonconflicting updates, and choose actions for conflicting updates.
1483 +
1484 +<LI>It performs the selected actions, one at a time. Each action is
1485 +performed by first transferring the new contents to a temporary file
1486 +on the receiving host, then atomically moving them into place.
1487 +
1488 +<LI>It updates its archive files to reflect the new state of the
1489 +replicas. 
1490 +</OL><!--TOC subsection <A NAME="failures"></A>Invariants-->
1491 +
1492 +<H3><A NAME="failures"></A>Invariants</H3>Given the importance and delicacy of the job that it performs, it is
1493 +important to understand both what a synchronizer does under normal
1494 +conditions and what can happen under unusual conditions such as system
1495 +crashes and communication failures. <BR>
1496 +<BR>
1497 +Unison is careful to protect both its internal state and the state of
1498 +the replicas at every point in this process. Specifically, the
1499 +following guarantees are enforced:
1500 +<UL>
1501 +<LI>
1502 +At every moment, each path in each replica has either (1) its <EM>original</EM> contents (i.e., no change at all has been made to this
1503 +path), or (2) its <EM>correct</EM> final contents (i.e., the value that the
1504 +user expected to be propagated from the other replica).
1505 +
1506 +<LI>At every moment, the information stored on disk about Unison's
1507 +private state can be either (1) unchanged, or (2) updated to reflect
1508 +those paths that have been successfully synchronized.
1509 +</UL>
1510 +The upshot is that it is safe to interrupt Unison at any time, either
1511 +manually or accidentally. <BR>
1512 +<BR>
1513 +If an interruption happens while it is propagating updates, then there
1514 +may be some paths for which an update has been propagated but which
1515 +have not been marked as synchronized in Unison's archives. This is no
1516 +problem: the next time Unison runs, it will detect changes to these
1517 +paths in both replicas, notice that the contents are now equal, and
1518 +mark the paths as successfully updated when it writes back its private
1519 +state at the end of this run.<BR>
1520 +<BR>
1521 +If Unison is interrupted, it may sometimes leave temporary working files
1522 +(with suffix <CODE>.tmp</CODE>) in the replicas. It is safe to delete these
1523 +files. Also, if the (deprecated) <CODE>backups</CODE> flag is set, Unison will
1524 +leave around old versions of files, with names like
1525 +<CODE>file.0.unison.bak</CODE>. These can be deleted safely, when they are no
1526 +longer wanted.<BR>
1527 +<BR>
1528 +Unison is not bothered by clock skew between the different hosts on
1529 +which it is running. It only performs comparisons between timestamps
1530 +obtained from the same host, and the only assumption it makes about
1531 +them is that the clock on each system always runs forward.
1532 +<BR>
1533 +<BR>
1534 +If Unison finds that its archive files have been deleted (or that the
1535 +archive format has changed and they cannot be read, or that they don't
1536 +exist because this is the first run of Unison on these particular
1537 +roots), it takes a conservative approach: it behaves as though the
1538 +replicas had both been completely empty at the point of the last
1539 +synchronization. The effect of this is that, on the first run, files
1540 +that exist in only one replica will be propagated to the other, while
1541 +files that exist in both replicas but are unequal will be marked as
1542 +conflicting. <BR>
1543 +<BR>
1544 +Touching a file without changing its contents should never
1545 +affect Unison's behavior. (On Unix, it uses file modtimes for a quick
1546 +first pass to tell which files have definitely <EM>not</EM> changed; then
1547 +for each file that might have changed 
1548 +it computes a fingerprint of the file's contents and compares it
1549 +against the last-synchronized contents.)<BR>
1550 +<BR>
1551 +It is safe to ``brainwash'' Unison by deleting its archive files
1552 +<EM>on both replicas</EM>. The next time it runs, it will assume that
1553 +all the files it sees in the replicas are new. <BR>
1554 +<BR>
1555 +It is safe to modify files while Unison is working. If Unison
1556 +discovers that it has propagated an out-of-date change, or that the
1557 +file it is updating has changed on the target replica, it will signal
1558 +a failure for that file. Run Unison again to propagate the latest
1559 +change.
1560 +<BR>
1561 +<BR>
1562 +Changes to the ignore patterns from the user interface (e.g., using
1563 +the `i' key) are immediately reflected in the current profile.<BR>
1564 +<BR>
1565 +<!--TOC subsection <A NAME="caveats"></A>Caveats and Shortcomings-->
1566 +
1567 +<H3><A NAME="caveats"></A>Caveats and Shortcomings</H3>Here are some things to be careful of when using Unison. A complete
1568 +list of bugs can be found in the file BUGS.txt in the source distribution.<BR>
1569 +<BR>
1570 +<UL>
1571 +<LI>
1572 +In the interests of speed, the update detection algorithm may
1573 + (depending on which OS architecture that you run Unison on)
1574 + actually use an approximation to the definition given in
1575 + the <A HREF="#updates">What is an Update?</A> section. <BR>
1576 +<BR>
1577 + In particular, the Unix
1578 + implementation does not compare the actual contents of files to their
1579 + previous contents, but simply looks at each file's inode number and
1580 + modtime; if neither of these have changed, then it concludes that the
1581 + file has not been changed.<BR>
1582 +<BR>
1583 + Under normal circumstances, this approximation is safe, in the sense
1584 + that it may sometimes detect ``false updates'' will never miss a real
1585 + one. However, it is possible to fool it, for example by using
1586 + <CODE>retouch</CODE> to change a file's modtime back to a time in the past.
1587 + <BR>
1588 +<BR>
1589 +
1590 +<LI>If you synchronize between a single-user filesystem and a shared
1591 +Unix server, you should pay attention to your permission bits: by
1592 +default, Unison will synchronize permissions verbatim, which may leave
1593 +group-writable files on the server that could be written over by a lot of
1594 +people. <BR>
1595 +<BR>
1596 +You can control this by setting your <CODE>umask</CODE> on both computers to
1597 +something like 022, masking out the ``world write'' and ``group write''
1598 +permission bits. <BR>
1599 +<BR>
1600 +
1601 +<LI>The graphical user interface is currently single-threaded. This
1602 +means that if Unison is performing some long-running operation, the
1603 +display will not be repainted until it finishes. We recommend not
1604 +trying to do anything with the user interface while Unison is in the
1605 +middle of detecting changes or propagating files.<BR>
1606 +<BR>
1607 +
1608 +<LI>Unison does not currently understand hard links.
1609 +</UL><hr><!--TOC section <A NAME="reference"></A>Reference-->
1610 +
1611 +<H2><A NAME="reference"></A>Reference</H2>This section covers the features of Unison in detail. <BR>
1612 +<BR>
1613 +<!--TOC subsection <A NAME="running"></A>Running Unison-->
1614 +
1615 +<H3><A NAME="running"></A>Running Unison</H3>There are several ways to start Unison.
1616 +<UL>
1617 +<LI>
1618 +Typing ``<TT>unison </TT><TT><I>profile</I></TT>'' on the command line. Unison
1619 +will look for a file <TT><I>profile</I></TT><TT>.prf</TT> in the <CODE>.unison</CODE>
1620 +directory. If this file does not specify a pair of roots, Unison will
1621 +prompt for them and add them to the information specified by the profile.
1622 +
1623 +<LI>Typing ``<TT>unison </TT><TT><I>profile</I></TT><TT> </TT><TT><I>root1</I></TT><TT> </TT><TT><I>root2</I></TT>'' on the command
1624 +line.
1625 +In this case, Unison will use <TT><I>profile</I></TT>, which should not contain
1626 +any <TT>root</TT> directives.
1627 +
1628 +<LI>Typing ``<TT>unison </TT><TT><I>root1</I></TT><TT> </TT><TT><I>root2</I></TT>'' on the command line. This
1629 +has the same effect as typing ``<TT>unison default </TT><TT><I>root1</I></TT><TT> </TT><TT><I>root2</I></TT>.''
1630 +
1631 +<LI>Typing just ``<TT>unison</TT>'' (or invoking Unison by clicking on
1632 +a desktop icon). In this case, Unison will ask for the profile to use
1633 +for synchronization (or create a new one, if necessary). 
1634 +</UL><!--TOC subsection <A NAME="unisondir"></A>The <TT>.unison</TT> Directory-->
1635 +
1636 +<H3><A NAME="unisondir"></A>The <TT>.unison</TT> Directory</H3>Unison stores a variety of information in a private directory on each
1637 +host. If the environment variable <TT>UNISON</TT> is defined, then its
1638 +value will be used as the name of this directory. If <TT>UNISON</TT> is
1639 +not defined, then the name of the directory depends on which
1640 +operating system you are using. In Unix, the default is to use
1641 +<TT>$HOME/.unison</TT>.
1642 +In Windows, if the environment variable
1643 +<TT>USERPROFILE</TT> is defined, then the directory will be
1644 +<TT>$USERPROFILE</TT><TT>\</TT><TT>.unison</TT>;
1645 +otherwise if <TT>HOME</TT> is defined, it will be
1646 +<TT>$HOME</TT><TT>\</TT><TT>.unison</TT>;
1647 +otherwise, it will be
1648 +<TT>c:</TT><TT>\</TT><TT>.unison</TT>.<BR>
1649 +<BR>
1650 +The archive file for each replica is found in the <TT>.unison</TT>
1651 +directory on that replica's host. Profiles (described below) are
1652 +always taken from the <TT>.unison</TT> directory on the client host.<BR>
1653 +<BR>
1654 +Note that Unison maintains a completely different set of archive files
1655 +for each pair of roots.<BR>
1656 +<BR>
1657 +We do not recommend synchronizing the whole <TT>.unison</TT> directory,
1658 +as this will involve frequent propagation of large archive files. It
1659 +should be safe to do it, though, if you really want to.
1660 +(Synchronizing the profile files in the <TT>.unison</TT> directory is
1661 +definitely OK.) <BR>
1662 +<BR>
1663 +<!--TOC subsection <A NAME="archives"></A>Archive Files-->
1664 +
1665 +<H3><A NAME="archives"></A>Archive Files</H3>The name of the archive file on each replica is calculated from 
1666 +<UL>
1667 +<LI>
1668 +the <EM>canonical names</EM> of all the hosts (short names like
1669 + <CODE>saul</CODE> are converted into full addresses like <CODE>saul.cis.upenn.edu</CODE>), 
1670 +
1671 +<LI>the paths to the replicas on all the hosts (again, relative
1672 + pathnames, symbolic links, etc. are converted into full, absolute paths), and 
1673 +
1674 +<LI>an internal version number that is changed whenever a new Unison
1675 + release changes the format of the information stored in the archive.
1676 +</UL>
1677 +This method should work well for most users. However, it is occasionally
1678 +useful to change the way archive names are generated. Unison provides
1679 +two ways of doing this.<BR>
1680 +<BR>
1681 +The function that finds the canonical hostname of the local host (which
1682 +is used, for example, in calculating the name of the archive file used to
1683 +remember which files have been synchronized) normally uses the
1684 +<CODE>gethostname</CODE> operating system call. However, if the environment
1685 +variable <CODE>UNISONLOCALHOSTNAME</CODE> is set, its value will be used
1686 +instead. This makes it easier to use Unison in situations where a
1687 +machine's name changes frequently (e.g., because it is a laptop and gets
1688 +moved around a lot).<BR>
1689 +<BR>
1690 +A more powerful way of changing archive names is provided by the
1691 +<CODE>rootalias</CODE> preference. The preference file may contain any number of
1692 +lines of the form: 
1693 +<PRE>
1694 +    rootalias = //<I>hostnameA</I>//<I>path-to-replicaA</I> -&gt; //<I>hostnameB</I>//<I>path-to-replicaB</I>
1695 +</PRE>
1696 +When calculating the name of the archive files for a given pair of roots,
1697 +Unison replaces any root that matches the left-hand side of any rootalias
1698 +rule by the corresponding right-hand side.<BR>
1699 +<BR>
1700 +So, if you need to relocate a root on one of the hosts, you can add a
1701 +rule of the form:
1702 +<PRE>
1703 +    rootalias = //<I>new-hostname</I>//<I>new-path</I> -&gt; //<I>old-hostname</I>//<I>old-path</I>
1704 +</PRE><EM>Warning</EM>: The <CODE>rootalias</CODE> option is dangerous and should only
1705 +be used if you are sure you know what you're doing. In particular, it
1706 +should only be used if you are positive that either (1) both the original
1707 +root and the new alias refer to the same set of files, or (2) the files
1708 +have been relocated so that the original name is now invalid and will
1709 +never be used again. (If the original root and the alias refer to
1710 +different sets of files, Unison's update detector could get confused.)
1711 +After introducing a new <CODE>rootalias</CODE>, it is a good idea to run Unison
1712 +a few times interactively (with the <CODE>batch</CODE> flag off, etc.) and
1713 +carefully check that things look reasonable---in particular, that update
1714 +detection is working as expected.<BR>
1715 +<BR>
1716 +<!--TOC subsection <A NAME="prefs"></A>Preferences-->
1717 +
1718 +<H3><A NAME="prefs"></A>Preferences</H3>Many details of Unison's behavior are configurable by user-settable
1719 +``preferences.'' <BR>
1720 +<BR>
1721 +Some preferences are boolean-valued; these are often called <EM>flags</EM>.
1722 +Others take numeric or string arguments, indicated in the preferences
1723 +list by <TT>n</TT> or <TT>xxx</TT>. Most of the string preferences can be
1724 +given several times; the arguments are accumulated into a list
1725 +internally.<BR>
1726 +<BR>
1727 +There are two ways to set the values of preferences: temporarily, by
1728 +providing command-line arguments to a particular run of Unison, or
1729 +permanently, by adding commands to a <EM>profile</EM> in the <TT>.unison</TT>
1730 +directory on the client host. The order of preferences (either on the
1731 +command line or in preference files) is not significant.<BR>
1732 +<BR>
1733 +To set the value of a preference <TT>p</TT> from the command line, add an
1734 +argument <TT>-p</TT> (for a boolean flag) or <TT>-p n</TT> or <TT>-p xxx</TT>
1735 +(for a numeric or string preference) anywhere on the command line. There
1736 +is currently no way to set a boolean flag to <CODE>false</CODE> on the command
1737 +line (all the boolean preferences default to <CODE>false</CODE>, so this is
1738 +only a restriction if you've set one to <CODE>true</CODE> in your profile and want
1739 +to reset it temporarily to <CODE>false</CODE> from the command line).<BR>
1740 +<BR>
1741 +Here are all the preferences supported by Unison. (This list can be
1742 + obtained by typing <TT>unison -help</TT>.)
1743 +<BLOCKQUOTE>
1744 +<PRE>Usage: unison [options]
1745 +    or unison root1 root2 [options]
1746 +    or unison profilename [options]
1747 +
1748 +Options: 
1749 +  -addprefsto xxx     file to add new prefs to
1750 +  -addversionno       add version number to name of unison executable on server
1751 +  -auto               automatically accept default actions
1752 +  -backup xxx         add a regexp to the backup list
1753 +  -backups            keep backup copies of files (deprecated: use 'backup')
1754 +  -batch              batch mode: ask no questions at all
1755 +  -contactquietly      Suppress the 'contacting server' message during startup
1756 +  -debug xxx          debug module xxx ('all' -&gt; everything, 'verbose' -&gt; more)
1757 +  -doc xxx            show documentation ('-doc topics' lists topics)
1758 +  -dumbtty            do not try to change terminal settings in text UI
1759 +  -editor xxx         command for displaying the output of the merge program
1760 +  -fastcheck xxx      do fast update detection (`true', `false', or `default')
1761 +  -follow xxx         add a regexp to the follow list
1762 +  -force xxx          force changes from this replica to the other
1763 +  -group              synchronize group
1764 +  -height n           height (in lines) of main window in graphical interface
1765 +  -ignore xxx         add a regexp to the ignore list
1766 +  -ignorecase         ignore upper/lowercase spelling of filenames
1767 +  -ignorenot xxx      add a regexp to the ignorenot list
1768 +  -key xxx            define a keyboard shortcut for this profile
1769 +  -killserver         kill server when done (even when using sockets)
1770 +  -label xxx          provide a descriptive string label for this profile
1771 +  -log                record actions in file specified by logfile preference
1772 +  -logfile xxx        Log file name
1773 +  -maxbackups n       number of backed up versions of a file
1774 +  -merge xxx          command for merging conflicting files
1775 +  -merge2 xxx         command for merging files (when no common version exists)
1776 +  -numericids         don't map uid/gid values by user/group names
1777 +  -owner              synchronize owner
1778 +  -path xxx           path to synchronize
1779 +  -perms n            part of the permissions which is synchronized
1780 +  -prefer xxx         choose this replica's version for conflicting changes
1781 +  -root xxx           root of a replica
1782 +  -rootalias xxx      Register alias for canonical root names
1783 +  -rshargs xxx        other arguments (if any) for remote shell command
1784 +  -rshcmd xxx         path to the rsh executable
1785 +  -servercmd xxx      name of unison executable on remote server
1786 +  -silent             print nothing (except error messages)
1787 +  -socket xxx         act as a server on a socket
1788 +  -sortbysize         list changed files by size, not name
1789 +  -sortfirst xxx      add a regexp to the sortfirst list
1790 +  -sortlast xxx       add a regexp to the sortlast list
1791 +  -sortnewfirst       list new before changed files
1792 +  -sshcmd xxx         path to the ssh executable
1793 +  -statusdepth n      status display depth for local files
1794 +  -terse              suppress status messages
1795 +  -testserver         exit immediately after the connection to the server
1796 +  -times              synchronize modification times
1797 +  -ui xxx             select user interface ('text' or 'graphic')
1798 +  -version            print version and exit
1799 +  -xferbycopying      optimize transfers using local copies, if possible
1800 +</PRE> 
1801 +</BLOCKQUOTE>
1802 +Here, in more detail, are what they do. Many are discussed in even greater
1803 +detail in other sections of the manual. 
1804 +<DL COMPACT=compact>
1805 +<DT>
1806 +addprefsto <TT>xxx</TT><DD>
1807 +By default, new preferences added by Unison (e.g., new <CODE>ignore</CODE> clauses) will be appended to whatever preference file Unison was told to load at the beginning of the run. Setting the preference <TT>addprefsto </TT><TT><I>filename</I></TT> makes Unison  
1808 + add new preferences to the file named <TT><I>filename</I></TT> instead.<BR>
1809 +<BR>
1810 +
1811 +<DT>addversionno <DD>
1812 +When this flag is set to <TT>true</TT>, Unison will use <TT>unison-</TT><TT><I>currentversionnumber</I></TT> instead of just <CODE>unison</CODE> as the remote server command. This allows multiple binaries for different versions of unison to coexist conveniently on the same server: whichever version is run on the client, the same version will be selected on the server.<BR>
1813 +<BR>
1814 +
1815 +<DT>auto <DD>
1816 +When set to <TT>true</TT>, this flag causes the user interface to skip asking for confirmations except for non-conflicting changes. (More precisely, when the user interface is done setting the propagation direction for one entry and is about to move to the next, it will skip over all non-conflicting entries and go directly to the next conflict.)<BR>
1817 +<BR>
1818 +
1819 +<DT>backup <TT>xxx</TT><DD>
1820 +Including the preference <TT>-backup </TT><TT><I>pathspec</I></TT> causes Unison to make back up for each path that matches <TT><I>pathspec</I></TT>. More precisely, for each path that matches this <TT><I>pathspec</I></TT>, Unison will keep several old versions of a file as a backup whenever a change is propagated. These backup files are left in the directory specified by the environment variable <TT>UNISONBACKUPDIR</TT> (<CODE>.unison/backup/</CODE> by default). The newest backed up copy willhave the same name as the original; older versions will be named with extensions <CODE>.n.unibck</CODE>. The number of versions that are kept is determined by the <CODE>maxbackups</CODE> preference.<BR>
1821 +<BR>
1822 + The syntax of <TT><I>pathspec</I></TT> is described in the <A HREF="#pathspec">Path Specification</A> section.<BR>
1823 +<BR>
1824 +
1825 +<DT>backups <DD>
1826 +When this flag is <TT>true</TT>, Unison will keep the old version of a file as a backup whenever a change is propagated. These backup files are left in the same directory, with extension <CODE>.bak</CODE>. This flag is probably less useful for most users than the        t backup flag.<BR>
1827 +<BR>
1828 +
1829 +<DT>batch <DD>
1830 +When this is set to <TT>true</TT>, the user interface will ask no questions at all. Non-conflicting changes will be propagated; conflicts will be skipped.<BR>
1831 +<BR>
1832 +
1833 +<DT>contactquietly <DD>
1834 +If this flag is set, Unison will skip displaying the `Contacting server' window (which some users find annoying) during startup.<BR>
1835 +<BR>
1836 +
1837 +<DT>debug <TT>xxx</TT><DD>
1838 +This preference is used to make Unison print various sorts of information about what it is doing internally on the standard error stream. It can be used many times, each time with the name of a module for which debugging information should be printed. Possible arguments for <CODE>debug</CODE> can be found by looking for calls to <CODE>Util.debug</CODE> in the sources (using, e.g., <CODE>grep</CODE>). Setting <CODE>-debug all</CODE> causes information from <EM>all</EM> modules to be printed (this mode of usage is the first one to try, if you are trying to understand something that Unison seems to be doing wrong); <CODE>-debug verbose</CODE> turns on some additional debugging output from some modules (e.g., it will show exactly what bytes are being sent across the network).<BR>
1839 +<BR>
1840 +
1841 +<DT>diff <TT>xxx</TT><DD>
1842 +This preference can be used to control the name (and command-line arguments) of the system utility used to generate displays of file differences. The default is `<CODE>diff</CODE>'. The diff program should expect two file names as arguments<BR>
1843 +<BR>
1844 +
1845 +<DT>doc <TT>xxx</TT><DD>
1846 +The command-line argument <TT>-doc </TT><TT><I>secname</I></TT> causes unison to display section <TT><I>secname</I></TT> of the manual on the standard output and then exit. Use <CODE>-doc all</CODE> to display the whole manual, which includes exactly the same information as the printed and HTML manuals, modulo formatting. Use <CODE>-doc topics</CODE> to obtain a list of the names of the various sections that can be printed.<BR>
1847 +<BR>
1848 +
1849 +<DT>dumbtty <DD>
1850 +When set to <CODE>true</CODE>, this flag makes the text mode user interface avoid trying to change any of the terminal settings. (Normally, Unison puts the terminal in `raw mode', so that it can do things like overwriting the current line.) This is useful, for example, when Unison runs in a shell inside of Emacs. <BR>
1851 +<BR>
1852 +When <CODE>dumbtty</CODE> is set, commands to the user interface need to be followed by a carriage return before Unison will execute them. (When it is off, Unison recognizes keystrokes as soon as they are typed.)<BR>
1853 +<BR>
1854 +This preference has no effect on the graphical user interface.<BR>
1855 +<BR>
1856 +
1857 +<DT>editor <TT>xxx</TT><DD>
1858 +This preference is used when unison wants to display the output of the merge program when its return value is not 0. User changes the file as he wants and then save it, unison will take this version for the synchronisation. By default the value is `emacs'.<BR>
1859 +<BR>
1860 +
1861 +<DT>fastcheck <TT>xxx</TT><DD>
1862 +When this preference is set to <CODE>true</CODE>, 
1863 + Unison will use file creation times as `pseudo inode numbers' 
1864 + when scanning replicas for updates, instead of reading the full contents of every file. Under Windows, this may cause Unison to miss propagating an update if the create time, modification time, and length of the file are all unchanged by the update (this is not easy to achieve, but it can be done). However, Unison will never <EM>overwrite</EM> such an update with a change from the other replica, since it always does a safe check for updates just before propagating a change. Thus, it is reasonable to use this switch under Windows most of the time and occasionally run Unison once with <TT>fastcheck</TT> set to 
1865 + <CODE>false</CODE>, if you are worried that Unison may have overlooked an update. The default value of the preference is <CODE>auto</CODE>, which causes Unison to use fast checking on Unix replicas (where it is safe) and slow checking on Windows replicas. For backward compatibility, <CODE>yes</CODE>, <CODE>no</CODE>, and <CODE>default</CODE> can be used in place of <CODE>true</CODE>, <CODE>false</CODE>, and <CODE>auto</CODE>. See the <A HREF="#fastcheck">Fast Checking</A> section for more information.<BR>
1866 +<BR>
1867 +
1868 +<DT>follow <TT>xxx</TT><DD>
1869 +Including the preference <TT>-follow </TT><TT><I>pathspec</I></TT> causes Unison to treat symbolic links matching <TT><I>pathspec</I></TT> as `invisible' and behave as if the object pointed to by the link had appeared literally at this position in the replica. See the <A HREF="#symlinks">Symbolic Links</A> section for more details. The syntax of <TT><I>pathspec&gt;</I></TT> is described in the <A HREF="#pathspec">Path Specification</A> section.<BR>
1870 +<BR>
1871 +
1872 +<DT>force <TT>xxx</TT><DD>
1873 +Including the preference <TT>-force </TT><TT><I>root</I></TT> causes Unison to resolve all differences (even non-conflicting changes) in favor of <TT><I>root</I></TT>. This effectively changes Unison from a synchronizer into a mirroring utility. <BR>
1874 +<BR>
1875 +You can also specify <CODE>-force newer</CODE> (or <CODE>-force older</CODE>) to force Unison to choose the file with the later (earlier) modtime. In this case, the <CODE>-times</CODE> preference must also be enabled.<BR>
1876 +<BR>
1877 +This preference should be used only if you are <EM>sure</EM> you know what you are doing!<BR>
1878 +<BR>
1879 +
1880 +<DT>group <DD>
1881 +When this flag is set to <CODE>true</CODE>, the group attributes of the files are synchronized. Whether the group names or the group identifiers are synchronizeddepends on the preference <TT>numerids</TT>.<BR>
1882 +<BR>
1883 +
1884 +<DT>height <TT>n </TT><DD>
1885 +Used to set the height (in lines) of the main window in the graphical user interface.<BR>
1886 +<BR>
1887 +
1888 +<DT>ignore <TT>xxx</TT><DD>
1889 +Including the preference <TT>-ignore </TT><TT><I>pathspec</I></TT> causes Unison to completely ignore paths that match <TT><I>pathspec</I></TT> (as well as their children). This is useful for avoiding synchronizing temporary files, object files, etc. The syntax of <TT><I>pathspec</I></TT> is described in the <A HREF="#pathspec">Path Specification</A> section, and further details on ignoring paths is found in the <A HREF="#ignore">Ignoring Paths</A> section.<BR>
1890 +<BR>
1891 +
1892 +<DT>ignorecase <DD>
1893 +When set to <TT>true</TT>, this flag causes Unison to use the Windows semantics for capitalization of filenames---i.e., files in the two replicas whose names differ in (upper- and lower-case) `spelling' are treated as the same file. This flag is set automatically when either host is running Windows. In rare circumstances it is also useful to set it manually (e.g. when running Unison on a Unix system with a FAT [Windows] volume mounted).<BR>
1894 +<BR>
1895 +
1896 +<DT>ignorenot <TT>xxx</TT><DD>
1897 +This preference overrides the preference <TT>ignore</TT>. 
1898 + It gives a list of patterns 
1899 + (in the same format as 
1900 + <CODE>ignore</CODE>) for paths that should definitely <EM>not</EM> be ignored, 
1901 + whether or not they happen to match one of the <CODE>ignore</CODE> patterns.
1902 + <BR>
1903 +<BR>
1904 +Note that the semantics of     t ignore and <TT>ignorenot</TT> is a
1905 + little counter-intuitive. When detecting updates, Unison examines
1906 + paths in depth-first order, starting from the roots of the replicas
1907 + and working downwards. Before examining each path, it checks whether
1908 + it matches    t ignore and does not match     t ignorenot; in this case
1909 + it skips this path <EM>and all its descendants</EM>. This means that,
1910 + if some parent of a given path matches an <TT>ignore</TT> pattern, then 
1911 + it will be skipped even if the path itself matches an <TT>ignorenot</TT>
1912 + pattern. In particular, putting <TT>ignore = Path *</TT> in your profile
1913 + and then using        t ignorenot to select particular paths to be 
1914 + synchronized will not work. Instead, you should use the <TT>path</TT>
1915 + preference to choose particular paths to synchronize.<BR>
1916 +<BR>
1917 +
1918 +<DT>key <TT>xxx</TT><DD>
1919 +Used in a profile to define a numeric key (0-9) that can be used in the graphical user interface to switch immediately to this profile.<BR>
1920 +<BR>
1921 +
1922 +<DT>killserver <DD>
1923 +When set to <CODE>true</CODE>, this flag causes Unison to kill the remote server process when the synchronization is finished. This behavior is the default for <CODE>ssh</CODE> connections, so this preference is not normally needed when running over <CODE>ssh</CODE>; it is provided so that socket-mode servers can be killed off after a single run of Unison, rather than waiting to accept future connections. (Some users prefer to start a remote socket server for each run of Unison, rather than leaving one running all the time.)<BR>
1924 +<BR>
1925 +
1926 +<DT>label <TT>xxx</TT><DD>
1927 +Used in a profile to provide a descriptive string documenting its settings. (This is useful for users that switch between several profiles, especially using the `fast switch' feature of the graphical user interface.)<BR>
1928 +<BR>
1929 +
1930 +<DT>log <DD>
1931 +When this flag is set, Unison will log all changes to the filesystems 
1932 + on a file.<BR>
1933 +<BR>
1934 +
1935 +<DT>logfile <TT>xxx</TT><DD>
1936 +By default, logging messages will be appended to the file 
1937 + <CODE>unison.log</CODE> in your HOME directory. Set this preference if 
1938 + you prefer another file.<BR>
1939 +<BR>
1940 +
1941 +<DT>maxbackups <TT>n </TT><DD>
1942 +This preference specifies the number of backup versions that will be kept by unison, for each path that matches the predicate <CODE>backup</CODE>. The default is 2.<BR>
1943 +<BR>
1944 +
1945 +<DT>merge <TT>xxx</TT><DD>
1946 +This preference can be used to run a merge program which will create a new version of the file with the last backup and the both replicas. This new version will be used for the synchronization. See the <A HREF="#merge">Merging Conflicting Versions</A> section for further detail.<BR>
1947 +<BR>
1948 +
1949 +<DT>merge2 <TT>xxx</TT><DD>
1950 +This preference can be used to run a merge program which will create a new version of the file with the last backup and the both replicas. This new version will be used for the synchronization. See the <A HREF="#merge">Merging Conflicting Versions</A> section for further detail.<BR>
1951 +<BR>
1952 +
1953 +<DT>numericids <DD>
1954 +When this flag is set to <CODE>true</CODE>, groups and users are synchronized numerically, rather than by name. <BR>
1955 +<BR>
1956 +The special uid 0 and the special group 0 are never mapped via user/group names even if this preference is not set.<BR>
1957 +<BR>
1958 +
1959 +<DT>owner <DD>
1960 +When this flag is set to <CODE>true</CODE>, the owner attributes of the files are synchronized. Whether the owner names or the owner identifiers are synchronizeddepends on the preference     extttnumerids.<BR>
1961 +<BR>
1962 +
1963 +<DT>path <TT>xxx</TT><DD>
1964 +When no <CODE>path</CODE> preference is given, Unison will simply synchronize the two entire replicas, beginning from the given pair of roots. If one or more <CODE>path</CODE> preferences are given, then Unison will synchronize only these paths and their children. (This is useful for doing a fast synch of just one directory, for example.) Note that <TT>path</TT> preferences are intepreted literally---they are not regular expressions.<BR>
1965 +<BR>
1966 +
1967 +<DT>perms <TT>n </TT><DD>
1968 +The integer value of this preference is a mask indicating which permission bits should be synchronized. It is set by default to 0<I>o</I>1777: all bits but the set-uid and set-gid bits are synchronised (synchronizing theses latter bits can be a security hazard). If you want to synchronize all bits, you can set the value of this preference to -1.<BR>
1969 +<BR>
1970 +
1971 +<DT>prefer <TT>xxx</TT><DD>
1972 +Including the preference <TT>-prefer </TT><TT><I>root</I></TT> causes Unison always to resolve conflicts in favor of <TT><I>root</I></TT>, rather than asking for guidance from the user. (The syntax of <TT><I>root</I></TT> is the same as for the <CODE>root</CODE> preference, plus the special values <CODE>newer</CODE> and <CODE>older</CODE>.) <BR>
1973 +<BR>
1974 +This preference should be used only if you are <EM>sure</EM> you know what you are doing!<BR>
1975 +<BR>
1976 +
1977 +<DT>root <TT>xxx</TT><DD>
1978 +Each use of this preference names the root of one of the replicas for Unison to synchronize. Exactly two roots are needed, so normal modes of usage are either to give two values for <CODE>root</CODE> in the profile, or to give no values in the profile and provide two on the command line. Details of the syntax of roots can be found in the <A HREF="#roots">Roots</A> section.<BR>
1979 +<BR>
1980 +The two roots can be given in either order; Unison will sort them into a canonical order before doing anything else. It also tries to `canonize' the machine names and paths that appear in the roots, so that, if Unison is invoked later with a slightly different name for the same root, it will be able to locate the correct archives.<BR>
1981 +<BR>
1982 +
1983 +<DT>rootalias <TT>xxx</TT><DD>
1984 +When calculating the name of the archive files for a given pair of roots, Unison replaces any roots matching the left-hand side of any rootalias rule by the corresponding right-hand side.<BR>
1985 +<BR>
1986 +
1987 +<DT>rshargs <TT>xxx</TT><DD>
1988 +The string value of this preference will be passed as additional arguments (besides the host name and the name of the Unison executable on the remote system) to the <CODE>ssh</CODE> or <CODE>rsh</CODE> command used to invoke the remote server. (This option is used for passing arguments to both <TT>rsh</TT> or <TT>ssh</TT>---that's why its name is <TT>rshargs</TT> rather than <TT>sshargs</TT>.)<BR>
1989 +<BR>
1990 +
1991 +<DT>rshcmd <TT>xxx</TT><DD>
1992 +This preference can be used to explicitly set the name of the rsh executable (e.g., giving a full path name), if necessary.<BR>
1993 +<BR>
1994 +
1995 +<DT>servercmd <TT>xxx</TT><DD>
1996 +This preference can be used to explicitly set the name of the Unison executable on the remote server (e.g., giving a full path name), if necessary.<BR>
1997 +<BR>
1998 +
1999 +<DT>silent <DD>
2000 +When this preference is set to <TT>true</TT>, the textual user interface will print nothing at all, except in the case of errors. Setting <TT>silent</TT> to true automatically sets the <TT>batch</TT> preference to <TT>true</TT>.<BR>
2001 +<BR>
2002 +
2003 +<DT>sortbysize <DD>
2004 +When this flag is set, the user interface will list changed files by size (smallest first) rather than by name. This is useful, for example, for synchronizing over slow links, since it puts very large files at the end of the list where they will not prevent smaller files from being transferred quickly.<BR>
2005 +<BR>
2006 +This preference (as well as the other sorting flags, but not the sorting preferences that require patterns as arguments) can be set interactively and temporarily using the 'Sort' menu in the graphical user interface.<BR>
2007 +<BR>
2008 +
2009 +<DT>sortfirst <TT>xxx</TT><DD>
2010 +Each argument to <TT>sortfirst</TT> is a pattern <TT><I>pathspec</I></TT>, which describes a set of paths. Files matching any of these patterns will be listed first in the user interface. The syntax of <TT><I>pathspec</I></TT> is described in the <A HREF="#pathspec">Path Specification</A> section.<BR>
2011 +<BR>
2012 +
2013 +<DT>sortlast <TT>xxx</TT><DD>
2014 +Similar to <CODE>sortfirst</CODE>, except that files matching one of these patterns will be listed at the very end.<BR>
2015 +<BR>
2016 +
2017 +<DT>sortnewfirst <DD>
2018 +When this flag is set, the user interface will list newly created files before all others. This is useful, for example, for checking that newly created files are not `junk', i.e., ones that should be ignored or deleted rather than synchronized.<BR>
2019 +<BR>
2020 +
2021 +<DT>sshcmd <TT>xxx</TT><DD>
2022 +This preference can be used to explicitly set the name of the ssh executable (e.g., giving a full path name), if necessary.<BR>
2023 +<BR>
2024 +
2025 +<DT>sshversion <TT>xxx</TT><DD>
2026 +This preference can be used to control which version of ssh should be used to connect to the server. Legal values are 1 and 2, which will cause unison to try to use <CODE>ssh1</CODE> or<CODE>ssh2</CODE> instead of just <CODE>ssh</CODE> to invoke ssh. The default value is empty, which will make unison use whatever version of ssh is installed as the default `ssh' command.<BR>
2027 +<BR>
2028 +
2029 +<DT>statusdepth <TT>n </TT><DD>
2030 +This preference suppresses the display of status messages
2031 + during update detection on the local machine for paths deeper than
2032 + the specified cutoff.
2033 + (Displaying too many local status messages can slow down update
2034 + detection somewhat.)<BR>
2035 +<BR>
2036 +
2037 +<DT>terse <DD>
2038 +When this preference is set to <TT>true</TT>, the user interface will not print status messages.<BR>
2039 +<BR>
2040 +
2041 +<DT>testserver <DD>
2042 +Setting this flag on the command line causes Unison to attempt to connect to the remote server and, if successful, print a message and immediately exit. Useful for debugging installation problems. Should not be set in preference files.<BR>
2043 +<BR>
2044 +
2045 +<DT>times <DD>
2046 +When this flag is set to <CODE>true</CODE>, file modification times (but not directory modtimes) are propagated.<BR>
2047 +<BR>
2048 +
2049 +<DT>ui <TT>xxx</TT><DD>
2050 +This preference selects either the graphical or the textual user interface. Legal values are <CODE>graphic</CODE> or <CODE>text</CODE>. <BR>
2051 +<BR>
2052 +If the Unison executable was compiled with only a textual interface, this option has no effect. (The pre-compiled binaries are all compiled with both interfaces available.)<BR>
2053 +<BR>
2054 +
2055 +<DT>version <DD>
2056 +Print the current version number and exit. (This option only makes sense on the command line.)<BR>
2057 +<BR>
2058 +
2059 +<DT>xferbycopying <DD>
2060 +When this preference is set, Unison will try to avoid transferring file contents across the network by recognizing when a file with the required contents already exists in the target replica. This usually allows file moves to be propagated very quickly. The default value is     exttttrue. </DL>
2061 + <!--TOC subsection <A NAME="profile"></A>Profiles-->
2062 +
2063 +<H3><A NAME="profile"></A>Profiles</H3>A <EM>profile</EM> is a text file that specifies permanent settings for
2064 +roots, paths, ignore patterns, and other preferences, so that they do
2065 +not need to be typed at the command line every time Unison is run.
2066 +Profiles should reside in the <CODE>.unison</CODE> directory on the client
2067 +machine. If Unison is started with just one argument <TT><I>name</I></TT> on
2068 +the command line, it looks for a profile called <TT><I>name</I></TT><TT>.prf</TT> in
2069 +the <CODE>.unison</CODE> directory. If it is started with no arguments, it
2070 +scans the <CODE>.unison</CODE> directory for files whose names end in
2071 +<CODE>.prf</CODE> and offers a menu (provided that the Unison executable is compiled with the graphical user interface). If a file named <CODE>default.prf</CODE> is
2072 +found, its settings will be offered as the default choices.<BR>
2073 +<BR>
2074 +To set the value of a preference <TT>p</TT> permanently, add to the
2075 +appropriate profile a line of the form
2076 +<PRE>
2077 +        p = true
2078 +</PRE>
2079 +for a boolean flag or
2080 +<PRE>
2081 +        p = &lt;value&gt;
2082 +</PRE>
2083 +for a preference of any other type. <BR>
2084 +<BR>
2085 +Whitespaces around <TT>p</TT> and <TT>xxx</TT> are ignored.
2086 +A profile may also include blank lines, and lines beginning
2087 +with <TT>#</TT>; both kinds of lines are ignored.<BR>
2088 +<BR>
2089 +When Unison starts, it first reads the profile and then the command
2090 +line, so command-line options will override settings from the
2091 +profile. <BR>
2092 +<BR>
2093 +Profiles may also include lines of the form <TT>include
2094 + </TT><TT><I>name</I></TT>, which will cause the file <TT><I>name</I></TT> (or
2095 +<TT><I>name</I></TT><TT>.prf</TT>, if <TT><I>name</I></TT> does not exist in the
2096 +<CODE>.unison</CODE> directory) to be read at the point, and included as if
2097 +its contents, instead of the <TT>include</TT> line, was part of the
2098 +profile. Include lines allows settings common to several profiles to
2099 +be stored in one place.<BR>
2100 +<BR>
2101 +A profile may include a preference `<TT>label = </TT><TT><I>desc</I></TT>' to
2102 +provide a description of the options selected in this profile. The
2103 +string <TT><I>desc</I></TT> is listed along with the profile name in the profile
2104 +selection dialog, and displayed in the top-right corner of the main
2105 +Unison window in the graphical user interface.<BR>
2106 +<BR>
2107 +The graphical user-interface also supports one-key shortcuts for commonly
2108 +used profiles. If a profile contains a preference of the form 
2109 +`<TT>key = </TT><TT><I>n</I></TT>', where <TT><I>n</I></TT> is a single digit, then
2110 +pressing this digit key will cause Unison to immediately switch to
2111 +this profile and begin synchronization again from scratch. In this
2112 +case, all actions that have been selected for a set of changes
2113 +currently being displayed will be discarded.<BR>
2114 +<BR>
2115 +<!--TOC subsection <A NAME="profileegs"></A>Sample Profiles-->
2116 +
2117 +<H3><A NAME="profileegs"></A>Sample Profiles</H3><!--TOC subsubsection <A NAME="minimalprofile"></A>A Minimal Profile-->
2118 +
2119 +<H4><A NAME="minimalprofile"></A>A Minimal Profile</H4>Here is a very minimal profile file, such as might be found in <TT>.unison/default.prf</TT>:
2120 +<PRE>
2121 +    # Roots of the synchronization
2122 +    root = /home/bcpierce
2123 +    root = ssh://saul//home/bcpierce
2124 +
2125 +    # Paths to synchronize 
2126 +    path = current
2127 +    path = common
2128 +    path = .netscape/bookmarks.html
2129 +</PRE><!--TOC subsubsection <A NAME="basicprofile"></A>A Basic Profile-->
2130 +
2131 +<H4><A NAME="basicprofile"></A>A Basic Profile</H4>Here is a more sophisticated profile, illustrating some other useful
2132 +features. 
2133 +<PRE>
2134 +    # Roots of the synchronization
2135 +    root = /home/bcpierce
2136 +    root = ssh://saul//home/bcpierce
2137 +
2138 +    # Paths to synchronize 
2139 +    path = current
2140 +    path = common
2141 +    path = .netscape/bookmarks.html
2142 +
2143 +    # Some regexps specifying names and paths to ignore
2144 +    ignore = Name temp.*
2145 +    ignore = Name *~
2146 +    ignore = Name .*~
2147 +    ignore = Path */pilot/backup/Archive_*
2148 +    ignore = Name *.o
2149 +    ignore = Name *.tmp
2150 +
2151 +    # Window height
2152 +    height = 37
2153 +
2154 +    # Keep a backup copy of the entire replica
2155 +    backup = Name *
2156 +
2157 +    # Use this command for displaying diffs
2158 +    diff = diff -y -W 79 --suppress-common-lines
2159 +
2160 +    # Log actions to the terminal
2161 +    log = true
2162 +</PRE><!--TOC subsubsection <A NAME="powerprofile"></A>A Power-User Profile-->
2163 +
2164 +<H4><A NAME="powerprofile"></A>A Power-User Profile</H4>When Unison is used with large replicas, it is often convenient to be
2165 +able to synchronize just a part of the replicas on a given run (this
2166 +saves the time of detecting updates in the other parts). This can be
2167 +accomplished by splitting up the profile into several parts --- a common
2168 +part containing most of the preference settings, plus one ``top-level''
2169 +file for each set of paths that need to be synchronized. (The <TT>include</TT> mechanism can also be used to allow the same set of preference
2170 +settings to be used with different roots.)<BR>
2171 +<BR>
2172 +The collection
2173 +of profiles implementing this scheme might look as follows.
2174 +The file <TT>default.prf</TT> is empty except for an <TT>include</TT>
2175 +directive:
2176 +<PRE>
2177 +    # Include the contents of the file common
2178 +    include common
2179 +</PRE>
2180 +Note that the name of the common file is <TT>common</TT>, not <TT>common.prf</TT>; this prevents Unison from offering <TT>common</TT> as one of
2181 +the list of profiles in the opening dialog (in the graphical UI).<BR>
2182 +<BR>
2183 +The file <TT>common</TT> contains the real preferences:
2184 +<PRE>
2185 +    # (... other preferences ...)
2186 +
2187 +    # If any new preferences are added by Unison (e.g. 'ignore'
2188 +    # preferences added via the graphical UI), then store them in the
2189 +    # file 'common' rathen than in the top-level preference file
2190 +    addprefsto = common
2191 +
2192 +    # regexps specifying names and paths to ignore
2193 +    ignore = Name temp.*
2194 +    ignore = Name *~
2195 +    ignore = Name .*~
2196 +    ignore = Path */pilot/backup/Archive_*
2197 +    ignore = Name *.o
2198 +    ignore = Name *.tmp
2199 +</PRE>
2200 +Note that there are no <TT>path</TT> preferences in <TT>common</TT>. This
2201 +means that, when we invoke Unison with the default profile (e.g., by
2202 +typing '<TT>unison default</TT>' or just '<TT>unison</TT>' on the command
2203 +line), the whole replicas will be synchronized. (If we <EM>never</EM> want
2204 +to synchronize the whole replicas, then <TT>default.prf</TT> would instead
2205 +include settings for all the paths that are usually synchronized.)<BR>
2206 +<BR>
2207 +To synchronize just part of the replicas, Unison is invoked with an
2208 +alternate preference file---e.g., doing '<TT>unison papers</TT>', where the
2209 +preference file <TT>papers.prf</TT> contains
2210 +<PRE>
2211 +    path = current/papers
2212 +    path = older/papers
2213 +    include common
2214 +</PRE>
2215 +causes Unison to synchronize just the subdirectories <TT>current/papers</TT>
2216 +and <TT>older/papers</TT>.<BR>
2217 +<BR>
2218 +The <TT>key</TT> preference can be used in combination with the graphical UI
2219 +to quickly switch between different sets of paths. For example, if the
2220 +file <TT>mail.prf</TT> contains
2221 +<PRE>
2222 +    path = Mail
2223 +    batch = true
2224 +    key = 2
2225 +    include common
2226 +</PRE>
2227 +then pressing 2 will cause Unison to look for updates in the <TT>Mail</TT>
2228 +subdirectory and (because the <TT>batch</TT> flag is set) immediately
2229 +propagate any that it finds.<BR>
2230 +<BR>
2231 +<!--TOC subsection <A NAME="backups"></A>Keeping Backups-->
2232 +
2233 +<H3><A NAME="backups"></A>Keeping Backups</H3>Unison can maintain full backups of the last-synchronized versions of
2234 +some of the files in each replica; these function both as backups in the
2235 +usual sense and as the ``common version'' when invoking external merge
2236 +programs.<BR>
2237 +<BR>
2238 +The backed up files are stored in a directory <CODE>~/.unison/backup</CODE> on
2239 +each host. The name of this directory can be changed by setting the
2240 +environment variable <CODE>UNISONBACKUPDIR</CODE>.
2241 +Files are added to the backup directory whenever unison updates its
2242 +archive. This means that
2243 +<UL>
2244 +<LI>
2245 +When unison reconstructs its archive from scratch (e.g.,
2246 + because of an upgrade, or because the archive files have been
2247 + manually deleted), all files will be backed up. 
2248 +
2249 +<LI>Otherwise, each file will be backed up the first time unison
2250 + propagates an update for it.
2251 +</UL>
2252 +It is safe to manually delete files from the backup directory (or to
2253 +throw away the directory itself). Before unison uses any of these files
2254 +for anything important, it checks that its fingerprint matches the one
2255 +that it expects.<BR>
2256 +<BR>
2257 +The preference <CODE>backup</CODE> controls which files are actually backed
2258 +up: for example, giving the preference `<CODE>backup = Path *</CODE>' causes
2259 +backing up of all files. The preference <CODE>backupversions</CODE>
2260 +controls how many previous versions of each file are kept. The
2261 +default is value 2 (i.e., the last synchronized version plus one backup).
2262 +For backward compatibility, the <CODE>backups</CODE> preference is also
2263 +still supported, but <CODE>backup</CODE> is now preferred.<BR>
2264 +<BR>
2265 +<!--TOC subsection <A NAME="merge"></A>Merging Conflicting Versions-->
2266 +
2267 +<H3><A NAME="merge"></A>Merging Conflicting Versions</H3>Both user interfaces offer a `merge' command that can be used to
2268 +interactively merge conflicting versions of a file. It is invoked by
2269 +selecting a conflicting file and pressing `<CODE>m</CODE>'.<BR>
2270 +<BR>
2271 +The actual merging is performed by an external program. The
2272 +preferences <CODE>merge</CODE> and <CODE>merge2</CODE> control how this program is
2273 +invoked. If a backup exists for this file (see the <CODE>backup</CODE>
2274 +preference), then the <CODE>merge</CODE> preference is used for this
2275 +purpose; otherwise <CODE>merge2</CODE> is used. In both cases, the value of
2276 +the preference should be a string representing the command that should
2277 +be passed to a shell to invoke the merge program. Within this string,
2278 +the special substrings <CODE>CURRENT1</CODE>, <CODE>CURRENT2</CODE>, <CODE>NEW</CODE>,
2279 +and <CODE>OLD</CODE> may appear at any point. Unison will substitute these
2280 +substrings as follows before invoking the command:
2281 +<UL>
2282 +<LI>
2283 +<CODE>CURRENT1</CODE> is replaced by the name of the
2284 + local copy of the file;
2285 +
2286 +<LI><CODE>CURRENT2</CODE> is replaced by the name of a temporary
2287 + file, into which the contents of the remote copy of the file have
2288 + been transferred by Unison prior to performing the merge;
2289 +
2290 +<LI><CODE>NEW</CODE> is replaced by the name of a temporary file
2291 + that Unison expects to be written by the merge program when it
2292 + finishes, giving the desired new contents of the file; and
2293 +
2294 +<LI><CODE>OLD</CODE> is replaced by the name of the backed up copy
2295 + of the original version of the file (i.e., its state at the end of
2296 + the last successful run of Unison), if one exists. Substitution of
2297 + <CODE>OLD</CODE> applies only to <CODE>merge</CODE>, not <CODE>merge2</CODE>).
2298 +</UL>
2299 +For example, on Unix systems setting the <CODE>merge</CODE> preference to
2300 +<PRE>
2301 +   merge = diff3 -m CURRENT1 OLD CURRENT2 &gt; NEW
2302 +</PRE>
2303 +will tell Unison to use the external <CODE>diff3</CODE> program for merging. 
2304 +A large number of external merging programs are available. For example,
2305 +<CODE>emacs</CODE> users may find the following settings convenient:
2306 +<PRE>
2307 +    merge2 = emacs -q --eval '(ediff-merge-files "CURRENT1" "CURRENT2" 
2308 +               nil "NEW")' 
2309 +    merge = emacs -q --eval '(ediff-merge-files-with-ancestor 
2310 +               "CURRENT1" "CURRENT2" "OLD" nil "NEW")' 
2311 +</PRE>
2312 +(These commands are displayed here on two lines to avoid running off the
2313 +edge of the page. In your preference file, each command should be written on a
2314 +single line.) <BR>
2315 +<BR>
2316 +If the external program exits without leaving any file at the path
2317 +<CODE>NEW</CODE>, Unison considers the merge to have failed. If the merge
2318 +program writes a file called <CODE>NEW</CODE> but exits with a non-zero status
2319 +code, then Unison considers the merge to have succeeded but to have
2320 +generated conflicts. In this case, it attempts to invoke an external
2321 +editor so that the user can resolve the conflicts. The value of the
2322 +<CODE>editor</CODE> preference controls what editor is invoked by Unison. The
2323 +default is <CODE>emacs</CODE>.<BR>
2324 +<BR>
2325 +<BLOCKQUOTE>
2326 +<I>Please send us suggestions for other useful values of the
2327 +</I><CODE><I>merge2</I></CODE><I> and </I><CODE><I>merge</I></CODE><I> preferences---we'd like to give several 
2328 +examples in the manual.)
2329 +</I></BLOCKQUOTE><!--TOC subsection <A NAME="ui"></A>The User Interface-->
2330 +
2331 +<H3><A NAME="ui"></A>The User Interface</H3>Both the textual and the graphical user interfaces are intended to be
2332 +mostly self-explanatory. Here are just a few tricks:
2333 +<UL>
2334 +<LI>
2335 +By default, when running on Unix the textual user interface will
2336 +try to put the terminal into the ``raw mode'' so that it reads the input a
2337 +character at a time rather than a line at a time. (This means you can
2338 +type just the single keystroke ``<CODE>&gt;</CODE>'' to tell Unison to
2339 +propagate a file from left to right, rather than ``<CODE>&gt;</CODE> Enter.'')<BR>
2340 +<BR>
2341 +There are some situations, though, where this will not work --- for
2342 +example, when Unison is running in a shell window inside Emacs.
2343 +Setting the <CODE>dumbtty</CODE> preference will force Unison to leave the
2344 +terminal alone and process input a line at a time.
2345 +</UL><!--TOC subsection <A NAME="exit"></A>Exit code-->
2346 +
2347 +<H3><A NAME="exit"></A>Exit code</H3>When running in the textual mode, Unison returns an exit status, which
2348 +describes whether, and at which level, the synchronization was successful.
2349 +The exit status could be useful when Unison is invoked from a script.
2350 +Currently, there are four possible values for the exit status:
2351 +<UL>
2352 +<LI>
2353 +0: successful synchronization; everything is up-to-date now.
2354 +
2355 +<LI>1: some files were skipped, but all file transfers were successful.
2356 +
2357 +<LI>2: non-fatal failures occurred during file transfer.
2358 +
2359 +<LI>3: a fatal error occurred, or the execution was interrupted.
2360 +</UL>The graphical interface does not return any useful information through the
2361 +exit status.<BR>
2362 +<BR>
2363 +<!--TOC subsection <A NAME="pathspec"></A>Path specification-->
2364 +
2365 +<H3><A NAME="pathspec"></A>Path specification</H3>
2366 +Several Unison preferences (e.g., <CODE>ignore</CODE>/<CODE>ignorenot</CODE>,
2367 +<CODE>follow</CODE>, <CODE>sortfirst</CODE>/<CODE>sortlast</CODE>, <CODE>backup</CODE>)
2368 +specify individual paths or sets of paths. These preferences share a
2369 +common syntax based on regular-expressions. Each preference
2370 +is associated with a list of path patterns; the paths specified are those
2371 +that match any one of the path pattern.<BR>
2372 +<BR>
2373 +<UL>
2374 +<LI>
2375 +Pattern preferences can be given on the command line,
2376 + or, more often, stored in profiles, using the same syntax as other preferences. 
2377 + For example, a profile line of the form
2378 +<PRE>
2379 +             ignore = <TT><I>pattern</I></TT>
2380 +</PRE>
2381 +adds <TT><I>pattern</I></TT> to the list of patterns to be ignored.<BR>
2382 +<BR>
2383 +
2384 +<LI>Each <TT><I>pattern</I></TT> can have one of three forms. The most
2385 +general form is a Posix extended regular expression introduced by the
2386 +keyword <CODE>Regex</CODE>. (The collating sequences and character classes of
2387 +full Posix regexps are not currently supported).
2388 +<PRE>
2389 +                 Regex <TT><I>regexp</I></TT>
2390 +</PRE>
2391 +For convenience, two other styles of pattern are also recognized:
2392 +<PRE>
2393 +                 Name <TT><I>name</I></TT>
2394 +</PRE>
2395 +matches any path in which the last component matches <TT><I>name</I></TT>, while
2396 +<PRE>
2397 +                 Path <TT><I>path</I></TT>
2398 +</PRE>
2399 +matches exactly the path <TT><I>path</I></TT>.
2400 +The <TT><I>name</I></TT> and <TT><I>path</I></TT> arguments of the latter forms of
2401 +patterns are <EM>not</EM> regular expressions. Instead, 
2402 +standard ``globbing'' conventions can be used in <TT><I>name</I></TT> and
2403 +<TT><I>path</I></TT>: 
2404 +<UL>
2405 +<LI>
2406 +a <CODE>?</CODE> matches any single character except <CODE>/</CODE>
2407 +
2408 +<LI>a <CODE>*</CODE> matches any sequence of characters not including <CODE>/</CODE>
2409 +
2410 +<LI><CODE>[xyz]</CODE> matches any character from the set {<TT><I>x</I></TT>,
2411 + <TT><I>y</I></TT>, <TT><I>z</I></TT> }
2412 +
2413 +<LI><CODE>{a,bb,ccc}</CODE> matches any one of <CODE>a</CODE>, <CODE>bb</CODE>, or
2414 + <CODE>ccc</CODE>. 
2415 +</UL>
2416 +
2417 +<LI>
2418 +The path separator in path patterns is always the
2419 +forward-slash character ``/'' --- even when the client or server is
2420 +running under Windows, where the normal separator character is a
2421 +backslash. This makes it possible to use the same set of path
2422 +patterns for both Unix and Windows file systems. 
2423 +</UL>Some examples of path patterns appear in the <A HREF="#ignore">Ignoring
2424 + Paths</A> section.<BR>
2425 +<BR>
2426 +<!--TOC subsection <A NAME="ignore"></A>Ignoring Paths-->
2427 +
2428 +<H3><A NAME="ignore"></A>Ignoring Paths</H3>Most users of Unison will find that their replicas contain lots of
2429 +files that they don't ever want to synchronize --- temporary files,
2430 +very large files, old stuff, architecture-specific binaries, etc.
2431 +They can instruct Unison to ignore these paths using patterns
2432 +introduced in the <A HREF="#pathspec">Path Patterns</A> section.<BR>
2433 +<BR>
2434 +For example, the following pattern will make Unison ignore any
2435 +path containing the name <CODE>CVS</CODE> or a name ending in <CODE>.cmo</CODE>:
2436 +<PRE>
2437 +             ignore = Name {CVS,*.cmo}
2438 +</PRE>
2439 +The next pattern makes Unison ignore the path <CODE>a/b</CODE>:
2440 +<PRE>
2441 +             ignore = Path a/b
2442 +</PRE>
2443 +This pattern makes Unison ignore any path beginning with <CODE>a/b</CODE>
2444 +and ending with a name ending by <CODE>.ml</CODE>.
2445 +<PRE>
2446 +             ignore = Regex a/b/.*\.ml
2447 +</PRE>
2448 +Note that regular expression patterns are ``anchored'': they must
2449 +match the whole path, not just a substring of the path.<BR>
2450 +<BR>
2451 +Here are a few extra points regarding the <TT>ignore</TT> preference.
2452 +<UL>
2453 +<LI>
2454 +If a directory is ignored, all its descendents will be too.
2455
2456 +
2457 +<LI>The user interface provides some convenient commands for adding
2458 + new patterns to be ignored. To ignore a particular file, select it
2459 + and press ``<TT>i</TT>''. To ignore all files with the same extension,
2460 + select it and press ``<TT>E</TT>'' (with the shift key). To ignore all
2461 + files with the same name, no matter what directory they appear in,
2462 + select it and press ``<TT>N</TT>''.
2463 +These new patterns become permanent: they
2464 +are immediately added to the current profile on disk.<BR>
2465 +<BR>
2466 +
2467 +<LI>If you use the <CODE>include</CODE> directive to include a common
2468 +collection of preferences in several top-level preference files, you will
2469 +probably also want to set the <CODE>addprefsto</CODE> preference to the name of
2470 +this file. This will cause any new ignore patterns that you add from
2471 +inside Unison to be appended to this file, instead of whichever top-level
2472 +preference file you started Unison with. <BR>
2473 +<BR>
2474 +
2475 +<LI>Ignore patterns can also be specified on the command line, if
2476 +you like (this is probably not very useful), using an option like
2477 +<CODE>-ignore 'Name temp.txt'</CODE>.
2478 +</UL> <!--TOC subsection <A NAME="symlinks"></A>Symbolic Links-->
2479 +
2480 +<H3><A NAME="symlinks"></A>Symbolic Links</H3>Ordinarily, Unison treats symbolic links in Unix replicas as
2481 +``opaque'': it considers the contents of the link to be just the
2482 +string specifying where the link points, and it will propagate changes in
2483 +this string to the other replica.<BR>
2484 +<BR>
2485 +It is sometimes useful to treat a symbolic link ``transparently,''
2486 +acting as though whatever it points to were physically <EM>in</EM> the
2487 +replica at the point where the symbolic link appears. To tell Unison
2488 +to treat a link in this manner, add a line of the form
2489 +<PRE>
2490 +             follow = <TT><I>pathspec</I></TT>
2491 +</PRE>
2492 +to the profile, where <TT><I>pathspec</I></TT> is a path pattern as described in
2493 +the <A HREF="#pathspec">Path Patterns</A> section.<BR>
2494 +<BR>
2495 +Windows file systems do not support symbolic links; Unison will refuse
2496 +to propagate an opaque symbolic link from Unix to Windows and flag the
2497 +path as erroneous. When a Unix replica is to be synchronized with a
2498 +Windows system, all symbolic links should match either an
2499 +<CODE>ignore</CODE> pattern or a <CODE>follow</CODE> pattern.<BR>
2500 +<BR>
2501 +<!--TOC subsection <A NAME="perms"></A>Permissions-->
2502 +
2503 +<H3><A NAME="perms"></A>Permissions</H3>Synchronizing the permission bits of files is slightly tricky when two
2504 +different filesytems are involved (e.g., when synchronizing a Windows
2505 +client and a Unix server). In detail, here's how it works:
2506 +<UL>
2507 +<LI>
2508 +When the permission bits of an existing file or directory are
2509 +changed, the values of those bits that make sense on <EM>both</EM>
2510 +operating systems will be propagated to the other replica. The other
2511 +bits will not be changed. 
2512 +
2513 +<LI>When a newly created file is propagated to a remote replica, the
2514 +permission bits that make sense in both operating systems are also
2515 +propagated. The values of the other bits are set to default values
2516 +(they are taken from the current umask, if the receiving host is a
2517 +Unix system).
2518 +
2519 +<LI>For security reasons, the Unix <CODE>setuid</CODE> and <CODE>setgid</CODE>
2520 +bits are not propagated. 
2521 +
2522 +<LI>The Unix owner and group ids are not propagated. (What would
2523 +this mean, in general?) All files are created with the owner and
2524 +group of the server process.
2525 +</UL><!--TOC subsection <A NAME="crossplatform"></A>Cross-Platform Synchronization-->
2526 +
2527 +<H3><A NAME="crossplatform"></A>Cross-Platform Synchronization</H3>If you use Unison to synchronize files between Windows and Unix
2528 +systems, there are a few special issues to be aware of.<BR>
2529 +<BR>
2530 +<B>Case conflicts.</B> In Unix, filenames are case sensitive:
2531 +<TT>foo</TT> and <TT>FOO</TT> can refer to different files. In
2532 +Windows, on the other hand, filenames are not case sensitive:
2533 +<TT>foo</TT> and <TT>FOO</TT> can only refer to the same file. This
2534 +means that a Unix <TT>foo</TT> and <TT>FOO</TT> cannot be synchronized
2535 +onto a Windows system --- Windows won't allow two different files to
2536 +have the ``same'' name. Unison detects this situation for you, and
2537 +reports that it cannot synchronize the files. <BR>
2538 +<BR>
2539 +You can deal with a case conflict in a couple of ways. If you need to
2540 +have both files on the Windows system, your only choice is to rename
2541 +one of the Unix files to avoid the case conflict, and re-synchronize.
2542 +If you don't need the files on the Windows system, you can simply
2543 +disregard Unison's warning message, and go ahead with the
2544 +synchronization; Unison won't touch those files. If you don't want to
2545 +see the warning on each synchronization, you can tell Unison to ignore
2546 +the files (see the <A HREF="#ignore">Ignore</A> section).<BR>
2547 +<BR>
2548 +<B>Illegal filenames.</B> Unix allows some filenames that are
2549 +illegal in Windows. For example, colons (`:') are not allowed in
2550 +Windows filenames, but they are legal in Unix filenames. This means
2551 +that a Unix file <TT>foo:bar</TT> can't be synchronized to a Windows
2552 +system. As with case conflicts, Unison detects this situation for
2553 +you, and you have the same options: you can either rename the Unix
2554 +file and re-synchronize, or you can ignore it.<BR>
2555 +<BR>
2556 +<!--TOC subsection <A NAME="speed"></A>Slow Links-->
2557 +
2558 +<H3><A NAME="speed"></A>Slow Links</H3>Unison is built to run well even over relatively slow links such as
2559 +modems and DSL connections. <BR>
2560 +<BR>
2561 +Unison uses the ``rsync protocol'' designed by Andrew Tridgell and Paul
2562 +Mackerras to greatly speed up transfers of large files in which only
2563 +small changes have been made. More information about the rsync protocol
2564 +can be found at the rsync web site (<A HREF="http://samba.anu.edu.au/rsync/">http://samba.anu.edu.au/rsync/</A>).<BR>
2565 +<BR>
2566 +If you are using Unison with <TT>ssh</TT>, you may get some speed
2567 +improvement by enabling <TT>ssh</TT>'s compression feature. Do this by
2568 +adding the option ``<TT>-rshargs -C</TT>'' to the command line or ``<TT>rshargs = -C</TT>'' to your profile. <BR>
2569 +<BR>
2570 +<!--TOC subsection <A NAME="fastcheck"></A>Fast Update Detection-->
2571 +
2572 +<H3><A NAME="fastcheck"></A>Fast Update Detection</H3>If your replicas are large and at least one of them is on a Windows
2573 +system, you may find that Unison's default method for detecting changes
2574 +(which involves scanning the full contents of every file on every
2575 +sync---the only completely safe way to do it under Windows) is too slow.
2576 +Unison provides a preference <TT>fastcheck</TT> that, when set to
2577 +<CODE>yes</CODE>, causes it to use file creation times as 'pseudo inode
2578 +numbers' when scanning replicas for updates, instead of reading the full
2579 +contents of every file. <BR>
2580 +<BR>
2581 +When <CODE>fastcheck</CODE> is set to <CODE>no</CODE>,
2582 +Unison will perform slow checking---re-scanning the contents of each file
2583 +on each synchronization---on all replicas. When <CODE>fastcheck</CODE> is set
2584 +to <CODE>default</CODE> (which, naturally, is the default), Unison will use
2585 +fast checks on Unix replicas and slow checks on Windows replicas.<BR>
2586 +<BR>
2587 +This strategy may cause Unison to miss propagating an update if the
2588 +create time, modification time, and length of the file are all unchanged
2589 +by the update (this is not easy to achieve, but it can be done).
2590 +However, Unison will never <EM>overwrite</EM> such an update with a change
2591 +from the other replica, since it always does a safe check for updates
2592 +just before propagating a change. Thus, it is reasonable to use this
2593 +switch most of the time and occasionally run Unison once with <TT>fastcheck</TT> set to <CODE>no</CODE>, if you are worried that Unison may have
2594 +overlooked an update.<BR>
2595 +<BR>
2596 +<!--TOC subsection <A NAME="click"></A>Click-starting Unison-->
2597 +
2598 +<H3><A NAME="click"></A>Click-starting Unison</H3>On Windows NT/2k systems, the graphical version of Unison can be
2599 +invoked directly by clicking on its icon. On Windows 95/98 systems,
2600 +click-starting also works, <EM>as long as you are not using ssh</EM>.
2601 +Due to an incompatibility with ocaml and Windows 95/98 that is not
2602 +under our control, you must start Unison from a DOS window in Windows
2603 +95/98 if you want to use ssh.<BR>
2604 +<BR>
2605 +When you click on the Unison icon, two windows will be created:
2606 +Unison's regular window, plus a console window, which is used only for
2607 +giving your password to ssh (if you do not use ssh to connect, you can
2608 +ignore this window). When your password is requested, you'll need to
2609 +activate the console window (e.g., by clicking in it) before typing.
2610 +If you start Unison from a DOS window, Unison's regular window will
2611 +appear and you will type your password in the DOS window you were
2612 +using.<BR>
2613 +<BR>
2614 +To use Unison in this mode, you must first create a profile (see
2615 +the <A HREF="#profile">Profile</A> section). Use your favorite editor for this. <BR>
2616 +<BR>
2617 +<hr><!--TOC section <A NAME="advice"></A>Advice-->
2618 +
2619 +<H2><A NAME="advice"></A>Advice</H2><!--TOC subsection <A NAME="faq"></A>Frequently Asked Questions-->
2620 +
2621 +<H3><A NAME="faq"></A>Frequently Asked Questions</H3>(See the <A HREF="#problems">Common Problems</A> section and the <A HREF="#tips">Tips
2622 + and Tricks</A> section for further suggestions.)<BR>
2623 +<BR>
2624 +<UL>
2625 +<LI>
2626 +<EM>What are the differences between Unison and rsync?</EM><BR>
2627 +<BR>
2628 +Rsync is a mirroring tool; Unison is a synchronizer. That is, rsync
2629 +needs to be told ``this replica contains the true versions of all the
2630 +files; please make the other replica look exactly the same.'' Unison
2631 +is capable of recognizing updates in both replicas and deciding which way
2632 +they should be propagated.<BR>
2633 +<BR>
2634 +Both Unison and rsync use the so-called ``rsync algorithm,'' by Andrew
2635 +Tridgell and Paul Mackerras, for performing updates. This algorithm
2636 +streamlines updates in small parts of large files by transferring only
2637 +the parts that have changed.<BR>
2638 +<BR>
2639 +
2640 +<LI><EM>What are the differences between Unison and CVS?</EM><BR>
2641 +<BR>
2642 +Both CVS and Unison can be used to keep a remote replica of a
2643 +directory structure up to date with a central repository. Both are
2644 +capable of propagating updates in both directions and recognizing
2645 +conflicting updates. Both use the rsync protocol for file transfer.<BR>
2646 +<BR>
2647 +Unison's main advantage is being somewhat more automatic and easier to
2648 +use, especially on large groups of files. CVS requires manual
2649 +notification whenever files are added or deleted. Moving files is a
2650 +bit tricky. And if you decide to move a directory... well, heaven
2651 +help you.<BR>
2652 +<BR>
2653 +CVS, on the other hand, is a full-blown version control system, and it
2654 +has <EM>lots</EM> of other features (version history, multiple branches,
2655 +etc.) that Unison (which is just a file synchronizer) doesn't have.<BR>
2656 +<BR>
2657 +
2658 +<LI><EM>Is it OK to mount my remote filesystem using NFS and
2659 + run unison locally, or should I run a remote server process?</EM><BR>
2660 +<BR>
2661 +NFS-mounting the replicas is fine, as long as the local network is
2662 +fast enough. Unison needs to read a lot of files (in particular, it
2663 +needs to check the last-modified time of every file in the repository
2664 +every time it runs), so if the link bandwidth is low then running a
2665 +remote server is much better.<BR>
2666 +<BR>
2667 +
2668 +<LI><EM>When I run Unison on Windows, it creates two different
2669 + windows, the main user interface and a blank console window. Is
2670 + there any way to get rid of the second one?</EM><BR>
2671 +<BR>
2672 +The extra console window is there for ssh to use to get your password.
2673 +Unfortunately, in the present version of unison the window will appear
2674 +whether you're using ssh or not.<BR>
2675 +<BR>
2676 +Karl Moerder contributed some scripts that he uses to make the command
2677 +window a bit more attractive. He starts unison from a shortcut to a
2678 +<CODE>.cmd</CODE> file. This lets him control the attributes of the command
2679 +window, making it small and gray and centering the passphrase request.
2680 +His scripts can be found at 
2681 +<A HREF="http://www.cis.upenn.edu/~bcpierce/unison/download/resources/karls-winhax.zip">http://www.cis.upenn.edu/~bcpierce/unison/download/resources/karls-winhax.zip</A>.<BR>
2682 +<BR>
2683 +It is also possible to get rid of the window entirely (for users that
2684 +only want socket mode connections) by playing games with icons. 
2685 +If you make a symbolic link to the executable, you can edit the
2686 +properties box to make this window come up iconic. That way when you
2687 +click on the link, you seem to just get a unison window (except on the
2688 +task bar, where the text window shows). <BR>
2689 +<BR>
2690 +
2691 +<LI><EM>Will unison behave correctly if used transitively? That is,
2692 + if I synchronize both between </EM><CODE><EM>host1:dir</EM></CODE><EM> and </EM><CODE><EM>host2:dir</EM></CODE><EM> and
2693 + between </EM><CODE><EM>host2:dir</EM></CODE><EM> and </EM><CODE><EM>host3:dir</EM></CODE><EM> at different times? Are
2694 + there any problems if the ``connectivity graph'' has loops?</EM><BR>
2695 +<BR>
2696 +This mode of usage will work fine. As far as each ``host pair'' is
2697 +concerned, filesystem updates made by Unison when synchronizing any other
2698 +pairs of hosts are exactly the same as ordinary user changes to the
2699 +filesystem. So if a file started out having been modified on just one
2700 +machine, then every time Unison is run on a pair of hosts where one has
2701 +heard about the change and the other hasn't will result in the change
2702 +being propagated to the other host. Running unison between machines
2703 +where both have already heard about the change will leave that file
2704 +alone. So, no matter what the connectivity graph looks like (as long as
2705 +it is not partitioned), eventually everyone will agree on the new value
2706 +of the file.<BR>
2707 +<BR>
2708 +The only thing to be careful of is changing the file <EM>again</EM> on the first
2709 +machine (or, in fact, any other machine) before all the machines have
2710 +heard about the first change -- this can result in Unison reporting
2711 +conflicting changes to the file, which you'll then have to resolve by
2712 +hand.<BR>
2713 +<BR>
2714 +
2715 +<LI><EM>What will happen if I try to synchronize a special file (e.g.,
2716 +something in </EM><CODE><EM>/dev</EM></CODE><EM>, </EM><CODE><EM>/proc</EM></CODE><EM>, etc.)?</EM><BR>
2717 +<BR>
2718 +Unison will refuse to synchronize such files. It only understands
2719 +ordinary files, directories, and symlinks.<BR>
2720 +<BR>
2721 +
2722 +<LI><EM>Is it OK to run several copies of Unison concurrently?</EM><BR>
2723 +<BR>
2724 +Unison is built to handle this case, but this functionality has not been
2725 +extensively tested. Keep your eyes open.<BR>
2726 +<BR>
2727 +
2728 +<LI><EM>What will happen if I do a local (or NFS, etc.) sync and some
2729 + file happens to be part of both replicas?</EM><BR>
2730 +<BR>
2731 +It will look to Unison as though somebody else has been modifying the
2732 +files it is trying to synchronize, and it will fail (safely) on these
2733 +files.<BR>
2734 +<BR>
2735 +
2736 +<LI><EM>What happens if Unison gets killed while it is working? Do I
2737 + have to kill it nicely, or can I use </EM><EM><TT>kill -9</TT></EM><EM>? What if the network
2738 + goes down during a synchronization? What if one machine crashes but
2739 + the other keeps running?</EM><BR>
2740 +<BR>
2741 +Don't worry; be happy. See the <A HREF="#failures">Invariants</A> section.<BR>
2742 +<BR>
2743 +
2744 +<LI><EM>What about race conditions when both Unison and some other
2745 + program or user are both trying to write to a file at exactly the same
2746 + moment?</EM> <BR>
2747 +<BR>
2748 +Unison works hard to make these ``windows of danger'' as short as
2749 +possible, but they cannot be eliminated completely.<BR>
2750 +<BR>
2751 +
2752 +<LI><EM>The Unix file locking mechanism doesn't work very well under
2753 + NFS. Is this a problem for Unison?</EM><BR>
2754 +<BR>
2755 +No.<BR>
2756 +<BR>
2757 +
2758 +<LI><EM>On Windows systems, it looks like the </EM><EM><TT>root</TT></EM><EM> preferences
2759 + are specified using backslashes, but </EM><EM><TT>path</TT></EM><EM> and </EM><EM><TT>ignore</TT></EM><EM>
2760 + preferences are specified with forward slashes. What's up with that?</EM> <BR>
2761 +<BR>
2762 +Unison uses two sorts of paths: native filesystem paths, which use the
2763 +syntax of the host filesystem, and ``portable'' paths relative to the
2764 +roots of the replicas, which always use / to separate the path
2765 +components. Roots are native filesystem paths; the others are
2766 +root-relative.</UL><!--TOC subsection <A NAME="problems"></A>Common Problems-->
2767 +
2768 +<H3><A NAME="problems"></A>Common Problems</H3>If you're having problems with Unison, the suggestions in this section
2769 +may help. <BR>
2770 +<BR>
2771 +A general recommendation is that, if you've gotten into a state you don't
2772 +understand, deleting the archive files on both replicas (files with names
2773 +like <TT>arNNNNNNNNNNNNNNN</TT> in the <TT>.unison</TT> directory) will return
2774 +you to a blank slate. If the replicas are identical, then deleting the
2775 +archives is always safe. If they are not identical, then deleting the
2776 +archives will cause all files that exist on one side but not the other to
2777 +be copied, and will report conflicts for all non-identical files that
2778 +do exist on both sides.<BR>
2779 +<BR>
2780 +(If you think the behavior you're observing is an actual bug,
2781 +then you might consider <EM>moving</EM> the archives to somewhere else
2782 +instead of deleting them, so that you can try to replicate the bad
2783 +behavior and tell us what more clearly happened.)<BR>
2784 +<BR>
2785 +<UL>
2786 +<LI>
2787 +<EM>The text mode user interface fails with 
2788 +``</EM><CODE><EM>Uncaught exception Sys_blocked_io</EM></CODE><EM>'' when running over ssh2.</EM><BR>
2789 +<BR>
2790 +The problem here is that ssh2 puts its standard file descriptors into
2791 +non-blocking mode. But unison and ssh share the same stderr (so that
2792 +error messages from the server are displayed), and the nonblocking
2793 +setting interferes with Unison's interaction with the user. This can be
2794 +corrected by redirecting the stderr when invoking Unison:
2795 +<PRE>
2796 +     unison -ui text &lt;other args&gt; 2&gt;/dev/tty
2797 +</PRE>
2798 +(The redirection syntax is a bit shell-specific. On some shells, e.g.,
2799 + csh and tcsh, you may need to write
2800 +<PRE>
2801 +   unison -ui text &lt;other args&gt;  &gt; &amp; /dev/tty
2802 +</PRE>
2803 +instead.) <BR>
2804 +<BR>
2805 +
2806 +<LI><EM>What does the following mean?</EM>
2807 +<PRE>
2808 +    Propagating updates [accounting/fedscwh3qt2000.wb3]
2809 +    failed: error in renaming locally:
2810 +    /DANGER.README: permission denied
2811 +</PRE>It means that unison is having trouble creating the temporary file
2812 +DANGER.README, which it uses as a "commit log" for operations (such as
2813 +renaming its temporary file <TT>accounting/fedscwh3qt2000.wb3.unison.tmp</TT> to
2814 +the real location <TT>accounting/fedscwh3qt2000.wb3</TT>) that may leave the
2815 +filesystem in a bad state if they are interrupted in the middle. This is
2816 +pretty unlikely, since the rename operation happens fast, but it is
2817 +possible; if it happens, the commit log will be left around and Unison
2818 +will notice (and tell you) the next time it runs that the consistency of
2819 +that file needs to be checked.<BR>
2820 +<BR>
2821 +The specific problem here is that Unison is trying to create
2822 +DANGER.README in the directory specified by your HOME environment
2823 +variable, which seems to be set to /, where you do not have write
2824 +permission.<BR>
2825 +<BR>
2826 +
2827 +<LI><EM>The command line</EM>
2828 +<PRE>
2829 +     unison work ssh://remote.dcs.ed.ac.uk/work
2830 +</PRE>
2831 +<EM>fails, with ``</EM><EM><TT>fatal error: could not connect to server.</TT></EM><EM>''
2832 +But when I connect directly with </EM><EM><TT>ssh remote.dcs.ed.ac.uk/work</TT></EM><EM>,
2833 +I see that my </EM><EM><TT>PATH</TT></EM><EM> variable is correctly set, and the unison
2834 +executable is found. </EM><BR>
2835 +<BR>
2836 +In the first case, Unison is using <TT>ssh</TT> to execute a command, and
2837 +in the second, it is giving you an interactive remote shell. Under
2838 +some ssh configurations, these two use different startup sequences.
2839 +You can test whether this is the problem here by trying, e.g.,
2840 +<PRE>
2841 +    ssh remote.dcs.ed.ac.uk 'echo $PATH'
2842 +</PRE>
2843 +and seeing whether your <TT>PATH</TT> is the same as when you do
2844 +<PRE>
2845 +    ssh remote.dcs.ed.ac.uk 
2846 +    [give password and wait for connection]
2847 +    echo $PATH
2848 +</PRE>This seems to be controlled by the configuration of ssh, but we have
2849 +not understood all the details---if someone does, please let us know.<BR>
2850 +<BR>
2851 +
2852 +<LI><EM>I'm having trouble getting unison working with openssh
2853 + under Windows. Any suggestions?</EM>
2854
2855 + <A HREF="http://www.apocalypse.org/pub/u/antony">Antony Courtney</A>
2856 + contributed the following comment.
2857 + <BLOCKQUOTE>
2858 + I ran in to some difficulties trying to use this ssh client with
2859 + Unison, and tracked down at least one of the problems. I thought
2860 + I'd share my experiences, and provide a 'known good' solution for
2861 + other users who might want to use this Windows / Unison / ssh /
2862 + Cygwin combination.
2863
2864 + If you launch Unison from bash, it fails (at least for me).
2865 + Running <CODE>unison_win32-gtkui.exe</CODE>, I get a dialog box that
2866 + reads:
2867 +<PRE>
2868 +        Fatal error: Error in checkServer: Broken pipe [read()]
2869 +</PRE>
2870 + and a message is printed to stderr in the bash window that reads:
2871 +<PRE>
2872 +        ssh: unison_win32-gtkui.exe: no address associated with hostname.
2873 +</PRE>
2874 + My guess is that this is caused by some incompatibility between
2875 + the Ocaml Win32 library routines and Cygwin with regard to setting
2876 + up argv[] for child processes.
2877 + </BLOCKQUOTE>The solution is to launch Unison from a DOS command prompt instead;
2878 +or see section&nbsp;<A HREF="#click">5.18</A>.<BR>
2879 +<BR>
2880 +
2881 +<LI><EM>When I use ssh to log into the server, everything looks fine
2882 + (and I can see the Unison binary in my path).
2883 + But when I do '</EM><EM><TT>ssh &lt;server&gt; unison</TT></EM><EM>' it fails. Why?</EM><BR>
2884 +<BR>
2885 +[Thanks to Nick Phillips for the following explanation.]<BR>
2886 +<BR>
2887 +It's simple. If you start ssh, enter your password etc. and then end up
2888 +in a shell, you have a login shell.<BR>
2889 +<BR>
2890 +If you do "ssh myhost.com unison" then unison is not run in a login shell.<BR>
2891 +<BR>
2892 +This means that different shell init scripts are used, and most people seem
2893 +to have their shell init scripts set up all wrong.<BR>
2894 +<BR>
2895 +With bash, for example, your <CODE>.bash_profile</CODE> <EM>only</EM> gets used if
2896 +you start 
2897 +a login shell. This usually means that you've logged in on the system console,
2898 +on a terminal, or remotely. If you start an xterm from the command line
2899 +you won't get a login shell in it. If you start a command remotely from
2900 +the ssh or rsh command line you also won't get a login shell to run it in
2901 +(this is of course a Good Thing -- you may want to run interactive commands
2902 +from it, for example to ask what type of terminal they're using today).<BR>
2903 +<BR>
2904 +If people insist on setting their <CODE>PATH</CODE> in their
2905 +<CODE>.bash_profile</CODE>, then they 
2906 +should probably do at least one of the following:
2907 +<OL>
2908 +<LI>
2909
2910 +
2911 +stop it;
2912 +
2913 +<LI>
2914 +read the bash manual, section "INVOCATION";
2915 +
2916 +<LI>
2917 +set their path in their <CODE>.bashrc</CODE>;
2918 +
2919 +<LI>
2920 +get their sysadmin to set a sensible system-wide default path;
2921 +
2922 +<LI>
2923 + source their <CODE>.bash_profile</CODE> from their <CODE>.bashrc</CODE> ...
2924 +</OL>
2925 +It's pretty similar for most shells.<BR>
2926 +<BR>
2927 +
2928 +<LI><EM>Unison crashes with an ``out of memory'' error when used to
2929 + synchronize really huge directories (e.g., with hundreds of thousands
2930 + of files).</EM><BR>
2931 +<BR>
2932 +You may need to increase your maximum stack size. On Linux and Solaris
2933 +systems, for example, you can do this using the <TT>ulimit</TT> command (see
2934 +the <TT>bash</TT> documentation for details).<BR>
2935 +<BR>
2936 +
2937 +<LI><EM>Unison seems to be unable to copy a single really huge file.
2938 + I get something like this:</EM>
2939 +<PRE>
2940 +    Error in querying file information:
2941 +    Value too large for defined data type [lstat(...)]
2942 +</PRE>This is a limitation in the OCaml interface to the Unix system calls.
2943 +(The problem is that the OCaml library uses 32-bit integers to represent
2944 +file positions. The maximal positive 'int' in OCaml is about 2.1E9. We
2945 +hope that the OCaml team will someday provide an alternative interface
2946 +that uses 64-bit integers.<BR>
2947 +<BR>
2948 +
2949 +<LI><EM>Why does unison run so slowly the first time I start it?</EM><BR>
2950 +<BR>
2951 +On the first synchronization, unison doesn't have any ``memory'' of what
2952 +your replicas used to look like, so it has to go through, fingerprint
2953 +every file, transfer the fingerprints across the network, and compare
2954 +them to what's on the other side. Having done this once, it stashes away
2955 +the information so that in future runs almost all of the work can be done
2956 +locally on each side.<BR>
2957 +<BR>
2958 +
2959 +<LI><EM>I can't seem to override the paths selected in the profile by
2960 + using a </EM><EM><TT>-path</TT></EM><EM> argument on the command line.</EM><BR>
2961 +<BR>
2962 +Right: the <TT>path</TT> preference is additive (each use adds an entry to
2963 +the list of paths within the replicas that Unison will try to
2964 +synchronize), and there is no way to remove entries once they have gotten
2965 +into this list. The solution is to split your preference file into
2966 +different ``top-level'' files containing different sets of <TT>path</TT>
2967 +preferences and make them all include a common preference file to avoid
2968 +repeating the non-path preferences. See the <A HREF="#profileegs">Profile
2969 + Examples</A> section for a complete example. <BR>
2970 +<BR>
2971 +
2972 +<LI><EM>I can't seem to override the roots selected in the profile by
2973 + listing the roots on the command line. I get ``Fatal error: Wrong
2974 + number of roots (2 expected; 4 provided).''</EM><BR>
2975 +<BR>
2976 +Roots should be provided <EM>either</EM> in the preference file <EM>or</EM> on
2977 +the command line, not both. See the <A HREF="#profileegs">Profile
2978 + Examples</A> section for further advice.<BR>
2979 +<BR>
2980 +
2981 +<LI><EM>I am trying to compile unison 2.7.7 using OCaml 3.04. I get ``Values do not match'' error.</EM>
2982
2983 + Unison 2.7.7 compiles with Ocaml 3.02. Later versions of OCaml,
2984 + include version 3.04, require by default all parameter labels for
2985 + function calls if they are declared in the interface. Adding the
2986 + compilation option ``<CODE>-nolabels</CODE>'' (by inserting a line
2987 + ``<CODE>CAMLFLAGS+=-nolabels</CODE>'' to the file named ``<CODE>Makefile.OCaml</CODE>'')
2988 + should solve the problem. To compile the graphical user interface for Unison 2.7.7, use LablGtk 1.1.2 instead of LablGtk 1.1.3.</UL><!--TOC subsection <A NAME="tips"></A>Tricks and Tips-->
2989 +
2990 +<H3><A NAME="tips"></A>Tricks and Tips</H3><UL>
2991 +<LI>
2992 +<EM>Is it possible to run Unison from </EM><EM><TT>inetd</TT></EM><EM> (the Unix
2993 + internet services daemon)?</EM><BR>
2994 +<BR>
2995 +We haven't tried this ourselves, but Toby Johnson has contributed a
2996 +detailed
2997 +<A HREF="http://www.cis.upenn.edu/~bcpierce/unison/download/resources/xinetd-chroot-howto.txt">chroot
2998 + min-HOWTO</A> describing how to do it. (Yan Seiner wrote an earlier
2999 +<A HREF="http://www.cis.upenn.edu/~bcpierce/unison/download/resources/inetd-howto.txt">howto</A>,
3000 +on which Toby's is based.)<BR>
3001 +<BR>
3002 +
3003 +<LI><EM>Is there a way to get Unison not to prompt me for a
3004 + password every time I run it (e.g., so that I can run it every
3005 + half hour from a shell script)?</EM>
3006
3007 + It's actually <TT>ssh</TT> that's asking for the password. If you're
3008 + running the Unison client on a Unix system, you should check out the
3009 + 'ssh-agent' facility in ssh. If you do
3010 +<PRE>
3011 +      ssh-agent bash
3012 +</PRE>
3013 + (or <TT>ssh-agent startx</TT>, when you first log in) it will start you a
3014 + shell (or an X Windows session) in which all processes and
3015 + sub-processes are part of the same ssh-authorization group. If, inside
3016 + any shell belonging to this authorization group, you run the <TT>ssh-add</TT> program, it will prompt you <EM>once</EM> for a password and
3017 + then remember it for the duration of the bash session. You can then
3018 + use Unison over <TT>ssh</TT>---or even run it repeatedly from a shell
3019 + script---without giving your password again.<BR>
3020 +<BR>
3021 + It may also be possible to configure <TT>ssh</TT> so that it does not
3022 + require any password: just enter an empty password when you create a
3023 + pair of keys. If you think it is safe enough to keep your private key
3024 + unencrypted on your client machine, this solution should work even
3025 + under Windows.<BR>
3026 +<BR>
3027 +
3028 +<LI><EM>Is there a way, under Windows, to click-start Unison and make
3029 + it synchronize according to a particular profile?</EM><BR>
3030 +<BR>
3031 +Greg Sullivan sent us the following useful trick: <BR>
3032 +<BR>
3033 +<BLOCKQUOTE>
3034 +In order to make syncing a particular profile ``clickable'' from the
3035 +Win98 desktop, when the profile uses <TT>ssh</TT>, you need to create a <TT>.bat</TT> file that contains nothing but ``<TT>unison profile-name</TT>''
3036 +(assuming <TT>unison.exe</TT> is in the <TT>PATH</TT>). I first tried the
3037 +``obvious'' strategy of creating a shortcut on the desktop with the
3038 +actual command line ``<TT>unison profile</TT>, but that hangs. The <TT>.bat</TT> file trick works, though, because it runs <TT>command.com</TT> and
3039 +then invokes the <TT>.bat</TT> file.
3040 +</BLOCKQUOTE>
3041 +<LI><EM>Can Unison be used with SSH's port forwarding features?</EM><BR>
3042 +<BR>
3043 +Mark Thomas says the following procedure works for him:
3044 +<BLOCKQUOTE>
3045 +After having problems with unison spawning a command line ssh in Windows
3046 +I noticed that unison also supports a socket mode of communication (great
3047 +software!) so I tried the port forwarding feature of ssh using a
3048 +graphical SSH terminal TTSSH:
3049 +<BLOCKQUOTE>
3050 +<A HREF="http://www.zip.com.au/~roca/ttssh.html">http://www.zip.com.au/~roca/ttssh.html</A>
3051 +</BLOCKQUOTE>To use unison I start TTSHH with port forwarding enabled and login to 
3052 +the Linux box where the unison server (<CODE>unison -socket xxxx</CODE>) is 
3053 +started automatically. In windows I just run unison and 
3054 +connect to localhost (<CODE>unison socket://localhost:xxxx/ ...</CODE>)
3055 +</BLOCKQUOTE>
3056 +<LI><EM>How can I use Unison from a laptop whose hostname changes
3057 + depending on where it is plugged into the network?</EM><BR>
3058 +<BR>
3059 +See the discussion of the <TT>rootalias</TT> preference in
3060 +the <A HREF="#archives">Archive Files</A> section.<BR>
3061 +<BR>
3062 +
3063 +<LI><EM>It's annoying that (on Unix systems) I have to type an ssh
3064 + passphrase into a console window, rather than being asked for it in a
3065 + dialog box. Is there a better way?</EM><BR>
3066 +<BR>
3067 +We have some ideas about how this might be done (by allocating a PTY and
3068 +using it to talk to ssh), but we haven't implemented them yet. If you'd
3069 +like to have a crack at it, we'd be glad to discuss ideas and incorporate
3070 +patches. <BR>
3071 +<BR>
3072 +In the meantime, tmb has contributed a script that uses <TT>expectk</TT> to
3073 +do what's needed. It's available at
3074 +<A HREF="http://www.cis.upenn.edu/&nbsp;bcpierce/unison/download/resources/expectk-startup">http://www.cis.upenn.edu/&nbsp;bcpierce/unison/download/resources/expectk-startup</A>.</UL><hr><!--TOC section <A NAME="ssh"></A>Installing Ssh-->
3075 +
3076 +<H2><A NAME="ssh"></A>Installing Ssh</H2>Your local host will need just an ssh client; the remote host needs an
3077 +ssh server (or daemon), which is available on Unix
3078 +systems.<A NAME="text2"></A><A HREF="#note2"><SUP><FONT SIZE=2>2</FONT></SUP></A>
3079 +Unison is known to work with ssh version 1.2.27 (Unix) and version
3080 +1.2.14 (Windows); other versions may or may not work.<BR>
3081 +<BR>
3082 +<!--TOC subsection <A NAME="ssh-unix"></A>Unix-->
3083 +
3084 +<H3><A NAME="ssh-unix"></A>Unix</H3><OL>
3085 +<LI>
3086
3087 +Install <CODE>ssh</CODE>. 
3088 +<OL>
3089 +<LI>
3090
3091 +
3092 +Become root. (If you do not have administrator permissions, ask your
3093 + system manager to install an ssh client and an ssh server for you and 
3094 + skip this section.)
3095 +
3096 +<LI>Download <CODE>ssh-1.2.27.tar.gz</CODE> from <A HREF="ftp://ftp.ssh.com/pub/ssh/">ftp://ftp.ssh.com/pub/ssh/</A>.
3097 +
3098 +<LI>Install it:
3099 +<UL>
3100 +<LI>
3101 + Unpack the archive (<CODE>gunzip ssh-1.2.27.tar.gz</CODE> and 
3102 + then <CODE>tar xvf ssh-1.2.27.tar.gz</CODE>). 
3103
3104 +<LI>following instructions in <CODE>INSTALL</CODE>, enter
3105 + <CODE>./configure</CODE>, <CODE>make</CODE>, and
3106 + <CODE>make install</CODE>.
3107 +
3108 +<LI>to run the ssh daemon:
3109 +<UL>
3110 +<LI>
3111 +find the server daemon <CODE>sshd</CODE> (e.g.,
3112 + <CODE>/usr/local/sbin/sshd</CODE> on RedHat-Linux systems).
3113 +
3114 +<LI>put its full pathname in the system initialization script to have it 
3115 + run at startup (this script is called
3116 + <CODE>/etc/rc.d/rc.sysinit</CODE> on RedHat-Linux, for example).
3117 +</UL>
3118 +</UL>
3119 +
3120 +<LI>Once a server is running on the remote host and a client is
3121 +available on the 
3122 + local host, you should be able to connect with ssh in the same way as
3123 + with rsh (e.g., <CODE>ssh foobar</CODE>, then enter your password).
3124 +</OL>
3125
3126 +
3127 +<LI>If you like, you can now set up ssh so that you only need to type
3128 +your password once per X session, rather than every time you run
3129 +Unison (this is not necessary for using ssh with Unison, but it
3130 +saves typing).
3131 +<OL>
3132 +<LI>
3133
3134 +
3135 + Build your keys :
3136 + <UL>
3137 +<LI>
3138
3139 + enter <CODE>ssh-keygen</CODE> and type a passphrase as required.
3140
3141 +<LI>your private key is now in <CODE>~/.ssh/identity</CODE> (this file
3142 + must remain 
3143 + private) and your public key in <CODE>~/.ssh/identity.pub</CODE>.
3144 + </UL>
3145 +
3146 +<LI>Allow user-mode secure connection.
3147 +<UL>
3148 +<LI>
3149 +
3150 + append contents of the local file <CODE>~/.ssh/identity.pub</CODE> to the file
3151 + <CODE>~/.ssh/authorized_keys</CODE> on the remote system.
3152
3153 +<LI>Test that you can connect by starting <CODE>ssh</CODE> and giving
3154 + the passphrase you just chose instead of your remote password.
3155 +</UL>
3156
3157 +
3158 +<LI>Create an agent to manage authentication for you :
3159 +<UL>
3160 +<LI>
3161 +
3162 +start <CODE>ssh-agent</CODE> with the parent program whose children will be granted 
3163 + automatic connections (e.g., <CODE>ssh-agent bash</CODE> or
3164 + <CODE>ssh-agent startx</CODE>).
3165 +
3166 +<LI>enter <CODE>ssh-add</CODE> to enter your passphrase and enable
3167 +automatic login for connections to come.
3168 +
3169 +<LI>you should now be able to run Unison using SSH without giving 
3170 + any passphrase or password.
3171 +
3172 +<LI>to kill the agent, enter <CODE>ssh-agent -k</CODE>, or simply exit the
3173 + program you launched using <CODE>ssh-agent</CODE>.
3174 +</UL>
3175 +</OL>
3176
3177 +</OL><!--TOC subsection <A NAME="ssh-win"></A>Windows-->
3178 +
3179 +<H3><A NAME="ssh-win"></A>Windows</H3>
3180 +Many Windows implementations of ssh only provide graphical interfaces,
3181 +but Unison requires an ssh client that it can invoke with a
3182 +command-line interface. A suitable version of ssh can be installed as
3183 +follows.<BR>
3184 +<BR>
3185 +<OL>
3186 +<LI>
3187
3188 +Download an <CODE>ssh</CODE> executable. 
3189
3190 +Warning: there are many implementations and ports of ssh for
3191 +Windows, and not all of them will work with Unison. We have gotten
3192 +Unison to work with Cygwin's port of openssh, and we suggest you use
3193 +that one. Here's how to install it:
3194 +<OL>
3195 +<LI>
3196
3197 +First, create a new folder on your desktop to hold temporary
3198 + installation files. It can have any name you like, but in these
3199 + instructions we'll assume that you call it <CODE>Foo</CODE>.
3200 +
3201 +<LI>Direct your web browser to www.cygwin.com, and click on the
3202 + ``Install now!'' link. This will download a file, <CODE>setup.exe</CODE>;
3203 + save it in the directory <CODE>Foo</CODE>. The file <CODE>setup.exe</CODE> is a
3204 + small program that will download the actual install files from
3205 + the Internet when you run it.
3206 +
3207 +<LI>Start <CODE>setup.exe</CODE> (by double-clicking). This brings up a
3208 + series of dialogs that you will have to go through. Select
3209 + ``Install from Internet.'' For ``Local Package Directory'' select
3210 + the directory <CODE>Foo</CODE>. For ``Select install root directory'' we
3211 + recommend that you use the default, <CODE>C:\cygwin</CODE>. The next
3212 + dialog asks you to select the way that you want to connect to the
3213 + network to download the installation files; we have used ``Use IE5
3214 + Settings'' successfully, but you may need to make a different
3215 + selection depending on your networking setup. The next dialog gives
3216 + a list of mirrors; select one close to you.
3217
3218 + Next you are asked to select which packages to install. The default
3219 + settings in this dialog download a lot of packages that are not
3220 + strictly necessary to run Unison with ssh. If you don't want to
3221 + install a package, click on it until ``skip'' is shown. For a
3222 + minimum installation, select only the packages ``cygwin'' and
3223 + ``openssh,'' which come to about 1900KB; the full installation is
3224 + much larger. <BR>
3225 +<BR>
3226 + <BLOCKQUOTE> <EM>Note that you are plan to build unison using the free
3227 + CygWin GNU C compiler, you need to install essential development
3228 + packages such as ``gcc'', ``make'', ``fileutil'', etc; we refer to
3229 + the file ``INSTALL.win32-cygwin-gnuc'' in the source distribution
3230 + for further details.
3231 + </EM></BLOCKQUOTE> After the packages are downloaded and installed, the next dialog
3232 + allows you to choose whether to ``Create Desktop Icon'' and ``Add to
3233 + Start Menu.'' You make the call.
3234 +
3235 +<LI>You can now delete the directory <CODE>Foo</CODE> and its contents.
3236 +</OL><BR>
3237 +
3238 +<LI>You must set the environment variables HOME and PATH.
3239 + Ssh will create a directory <CODE>.ssh</CODE> in the directory given
3240 + by HOME, so that it has a place to keep data like your public and
3241 + private keys. PATH must be set to include the Cygwin <CODE>bin</CODE>
3242 + directory, so that Unison can find the ssh executable.
3243 + <UL>
3244 +<LI>
3245
3246 + On Windows 95/98, add the lines
3247 +<PRE>
3248 +    set PATH=%PATH%;&lt;SSHDIR&gt;
3249 +    set HOME=&lt;HOMEDIR&gt;
3250 +</PRE>
3251 + to the file <CODE>C:\AUTOEXEC.BAT</CODE>, where <CODE>&lt;HOMEDIR&gt;</CODE> is the
3252 + directory where you want ssh to create its <CODE>.ssh</CODE> directory,
3253 + and <CODE>&lt;SSHDIR&gt;</CODE> is the directory where the executable
3254 + <CODE>ssh.exe</CODE> is stored; if you've installed Cygwin in the
3255 + default location, this is <CODE>C:\cygwin\bin</CODE>. You will have to
3256 + reboot your computer to take the changes into account.
3257
3258 +<LI>On Windows NT/2k, open the environment variables dialog box:
3259 + <UL>
3260 +<LI>
3261 + Windows NT: My Computer/Properties/Environment
3262
3263 +<LI>Windows 2k: My Computer/Properties/Advanced/Environment
3264 + variables
3265 + </UL>
3266 + then select Path and edit its value by appending <CODE>;&lt;SSHDIR&gt;</CODE>
3267 + to it, where <CODE>&lt;SSHDIR&gt;</CODE> is the full name of the directory 
3268 + that includes the ssh executable; if you've installed Cygwin in
3269 + the default location, this is <CODE>C:\cygwin\bin</CODE>.
3270 + </UL>
3271
3272 +<LI>Test ssh from a DOS shell by typing
3273 +<PRE>
3274 +      ssh &lt;remote host&gt; -l &lt;login name&gt;
3275 +</PRE>
3276 + You should get a prompt for your password on <CODE>&lt;remote host&gt;</CODE>,
3277 + followed by a working connection.
3278
3279 +<LI>Note that <CODE>ssh-keygen</CODE> may not work (fails with
3280 + ``gethostname: no such file or directory'') on some systems. This is
3281 + OK: you can use ssh with your regular password for the remote
3282 + system. 
3283 +
3284 +<LI>You should now be able to use Unison with an ssh connection. If
3285 + you are logged in with a different user name on the local and remote
3286 + hosts, provide your remote user name when providing the remote root
3287 + (i.e., <CODE>//username@host/path...</CODE>).
3288 +</OL><hr><!--TOC section <A NAME="news"></A>Changes in Version 2.9.1-->
3289 +
3290 +<H2><A NAME="news"></A>Changes in Version 2.9.1</H2>Changes since 2.8.19:
3291 + <UL>
3292 +<LI>
3293 +
3294 +Fixed a bug due to a wrong assumption
3295 +
3296 +<LI>Changing profile works again under Windows
3297 +
3298 +<LI>Fixed a bug due to a wrong assumption
3299 +
3300 +<LI>fixed the Makefile
3301 +
3302 + </UL>
3303 +Changes since 2.8.1:
3304 + <UL>
3305 +<LI>
3306 +
3307 +Statistic window (transfer rate, amount of data transferred).
3308 + [NB: not available Cygwin version.]
3309 +
3310 +<LI>symlinks works under the cygwin version (which is dynamically linked).
3311 +
3312 +<LI>File movement hack: Unison now tries to use local copy instead of
3313 + transfer for moved or copied files. It is controled by a boolean option
3314 + ``xferbycopying''.
3315 +
3316 +<LI>Fixed deadlock when synchronizing between Windows and Unix
3317 +
3318 +<LI>Small improvements:
3319 + <UL>
3320 +<LI> 
3321 + If neither the <BR>tt USERPROFILE nor the <BR>tt HOME environment
3322 + variables are set, then Unison will put its temporary commit log
3323 + (called <BR>tt DANGER.README) into the directory named by the 
3324 + <BR>tt UNISON environment variable, if any; otherwise it will use
3325 + <BR>tt C:.
3326
3327 +<LI>alternative set of values for fastcheck: yes = true; no = false; default
3328 + = auto.
3329
3330 +<LI>-silent implies -contactquietly
3331 + </UL>
3332 +
3333 +<LI>Source code:
3334 + <UL>
3335 +<LI>
3336 + Code reorganization and tidying. (Started breaking up some of the
3337 + basic utility modules so that the non-unison-specific stuff can be
3338 + made available for other projects.)
3339
3340 +<LI>several Makefile and docs changes (for release);
3341
3342 +<LI>further comments in ``update.ml'';
3343
3344 +<LI>connection information are not stored in global variables anymore.
3345 + </UL>
3346 +
3347 + </UL>
3348 +Changes since 2.7.78:
3349 + <UL>
3350 +<LI>
3351 +
3352 +Small bugfix to textual user interface under Unix (to avoid leaving
3353 + the terminal in a bad state where it would not echo inputs after Unison
3354 + exited).
3355 +
3356 + </UL>
3357 +Changes since 2.7.39:
3358 + <UL>
3359 +<LI>
3360 +
3361 +Improvements to the main web page (stable and beta version docs are
3362 + now both accessible).
3363 +
3364 +<LI>User manual revised.
3365 +
3366 +<LI>Added some new preferences:
3367 +<UL>
3368 +<LI>
3369 +``sshcmd'' and ``rshcmd'' for specifying paths to ssh and rsh programs.
3370 +
3371 +<LI>``contactquietly'' for suppressing the ``contacting server'' message
3372 +during Unison startup (under the graphical UI).
3373 +</UL>
3374 +
3375 +<LI>Bug fixes:
3376 +<UL>
3377 +<LI>
3378 +Fixed small bug in UI that neglected to change the displayed column 
3379 + headers if loading a new profile caused the roots to change.
3380 +
3381 +<LI>Fixed a bug that would put the text UI into an infinite loop if it
3382 + encountered a conflict when run in batch mode.
3383 +
3384 +<LI>Added some code to try to fix the display of non-Ascii characters in 
3385 + filenames on Windows systems in the GTK UI. (This code is currently 
3386 + untested---if you're one of the people that had reported problems with
3387 + display of non-ascii filenames, we'd appreciate knowing if this actually 
3388 + fixes things.)
3389 +
3390 +<LI>`<CODE>-prefer/-force newer</CODE>' works properly now. 
3391 + (The bug was reported by Sebastian Urbaniak and Sean Fulton.)
3392 +</UL>
3393 +
3394 +<LI>User interface and Unison behavior:
3395 +<UL>
3396 +<LI>
3397 +Renamed `Proceed' to `Go' in the graphical UI.
3398 +
3399 +<LI>Added exit status for the textual user interface.
3400 +
3401 +<LI>Paths that are not synchronized because of conflicts or errors during 
3402 + update detection are now noted in the log file.
3403 +
3404 +<LI><CODE>[END]</CODE> messages in log now use a briefer format
3405 +
3406 +<LI>Changed the text UI startup sequence so that
3407 + <BR>tt ./unison -ui text will use the default profile instead of failing.
3408 +
3409 +<LI>Made some improvements to the error messages.
3410 +
3411 +<LI>Added some debugging messages to remote.ml.
3412 +</UL>
3413 +
3414 + </UL>
3415 +Changes since 2.7.7:
3416 + <UL>
3417 +<LI>
3418 +
3419 +Incorporated, once again, a multi-threaded transport sub-system.
3420 + It transfers several files at the same time, thereby making much
3421 + more effective use of available network bandwidth. Unlike the
3422 + earlier attempt, this time we do not rely on the native thread
3423 + library of OCaml. Instead, we implement a light-weight,
3424 + non-preemptive multi-thread library in OCaml directly. This version
3425 + appears stable. <BR>
3426 +<BR>
3427 + Some adjustments to unison are made to accommodate the multi-threaded
3428 + version. These include, in particular, changes to the
3429 + user interface and logging, for example:
3430 + <UL>
3431 +<LI>
3432 + Two log entries for each transferring task, one for the
3433 + beginning, one for the end.
3434
3435 +<LI>Suppressed warning messages against removing temp files left
3436 + by a previous unison run, because warning does not work nicely
3437 + under multi-threading. The temp file names are made less likely
3438 + to coincide with the name of a file created by the user. They
3439 + take the form<BR><CODE>.#&lt;filename&gt;.&lt;serial&gt;.unison.tmp</CODE>.
3440 + </UL>
3441 +
3442 +<LI>Added a new command to the GTK user interface: pressing 'f' causes
3443 + Unison to start a new update detection phase, using as paths <EM>just</EM>
3444 + those paths that have been detected as changed and not yet marked as
3445 + successfully completed. Use this command to quickly restart Unison on
3446 + just the set of paths still needing attention after a previous run.
3447 +
3448 +<LI>Made the <TT>ignorecase</TT> preference user-visible, and changed the
3449 + initialization code so that it can be manually set to true, even if
3450 + neither host is running Windows. (This may be useful, e.g., when using 
3451 + Unison running on a Unix system with a FAT volume mounted.)
3452 +
3453 +<LI>Small improvements and bug fixes:
3454 + <UL>
3455 +<LI>
3456 + Errors in preference files now generate fatal errors rather than
3457 + warnings at startup time. (I.e., you can't go on from them.) Also,
3458 + we fixed a bug that was preventing these warnings from appearing in the
3459 + text UI, so some users who have been running (unsuspectingly) with 
3460 + garbage in their prefs files may now get error reports.
3461
3462 +<LI>Error reporting for preference files now provides file name and
3463 + line number.
3464
3465 +<LI>More intelligible message in the case of identical change to the same 
3466 + files: ``Nothing to do: replicas have been changed only in identical 
3467 + ways since last sync.''
3468
3469 +<LI>Files with prefix '.#' excluded when scanning for preference
3470 + files.
3471
3472 +<LI>Rsync instructions are send directly instead of first
3473 + marshaled.
3474
3475 +<LI>Won't try forever to get the fingerprint of a continuously changing file:
3476 + unison will give up after certain number of retries.
3477
3478 +<LI>Other bug fixes, including the one reported by Peter Selinger
3479 + (<CODE>force=older preference</CODE> not working).
3480 + </UL>
3481 +
3482 +<LI>Compilation:
3483 + <UL>
3484 +<LI>
3485 + Upgraded to the new OCaml 3.04 compiler, with the LablGtk
3486 + 1.2.3 library (patched version used for compiling under Windows).
3487
3488 +<LI>Added the option to compile unison on the Windows platform with
3489 + Cygwin GNU C compiler. This option only supports building
3490 + dynamically linked unison executables.
3491 + </UL>
3492 +
3493 + </UL>
3494 +Changes since 2.7.4:
3495 + <UL>
3496 +<LI>
3497 +
3498 +Fixed a silly (but debilitating) bug in the client startup sequence.
3499 +
3500 + </UL>
3501 +Changes since 2.7.1:
3502 + <UL>
3503 +<LI>
3504 +
3505 +Added <CODE>addprefsto</CODE> preference, which (when set) controls which
3506 +preference file new preferences (e.g. new ignore patterns) are added to.
3507 +
3508 +<LI>Bug fix: read the initial connection header one byte at a time, so
3509 +that we don't block if the header is shorter than expected. (This bug
3510 +did not affect normal operation --- it just made it hard to tell when you
3511 +were trying to use Unison incorrectly with an old version of the server,
3512 +since it would hang instead of giving an error message.)
3513 +
3514 + </UL>
3515 +Changes since 2.6.59:
3516 + <UL>
3517 +<LI>
3518 +
3519 +Changed <CODE>fastcheck</CODE> from a boolean to a string preference. Its 
3520 + legal values are <CODE>yes</CODE> (for a fast check), <CODE>no</CODE> (for a safe 
3521 + check), or <CODE>default</CODE> (for a fast check---which also happens to be 
3522 + safe---when running on Unix and a safe check when on Windows). The default 
3523 + is <CODE>default</CODE>.
3524
3525 +<LI>Several preferences have been renamed for consistency. All
3526 + preference names are now spelled out in lowercase. For backward
3527 + compatibility, the old names still work, but they are not mentioned in
3528 + the manual any more.
3529 +
3530 +<LI>The temp files created by the 'diff' and 'merge' commands are now
3531 + named by <EM>pre</EM>pending a new prefix to the file name, rather than
3532 + appending a suffix. This should avoid confusing diff/merge programs
3533 + that depend on the suffix to guess the type of the file contents.
3534 +
3535 +<LI>We now set the keepalive option on the server socket, to make sure
3536 + that the server times out if the communication link is unexpectedly broken. 
3537 +
3538 +<LI>Bug fixes:
3539 +<UL>
3540 +<LI>
3541 +When updating small files, Unison now closes the destination file.
3542 +
3543 +<LI>File permissions are properly updated when the file is behind a
3544 + followed link.
3545 +
3546 +<LI>Several other small fixes.
3547 +</UL>
3548 +
3549 + </UL>
3550 +Changes since 2.6.38:
3551 + <UL>
3552 +<LI>
3553 +
3554 +Major Windows performance improvement! <BR>
3555 +<BR>
3556 +We've added a preference <CODE>fastcheck</CODE> that makes Unison look only at
3557 +a file's creation time and last-modified time to check whether it has
3558 +changed. This should result in a huge speedup when checking for updates
3559 +in large replicas.<BR>
3560 +<BR>
3561 + When this switch is set, Unison will use file creation times as 
3562 + 'pseudo inode numbers' when scanning Windows replicas for updates, 
3563 + instead of reading the full contents of every file. This may cause 
3564 + Unison to miss propagating an update if the create time, 
3565 + modification time, and length of the file are all unchanged by 
3566 + the update (this is not easy to achieve, but it can be done). 
3567 + However, Unison will never <EM>overwrite</EM> such an update with
3568 + a change from the other replica, since it 
3569 + always does a safe check for updates just before propagating a 
3570 + change. Thus, it is reasonable to use this switch most of the time 
3571 + and occasionally run Unison once with <TT>fastcheck</TT> set to false, 
3572 + if you are worried that Unison may have overlooked an update.<BR>
3573 +<BR>
3574 + Warning: This change is has not yet been thoroughly field-tested. If you 
3575 + set the <CODE>fastcheck</CODE> preference, pay careful attention to what
3576 + Unison is doing.<BR>
3577 +<BR>
3578 +
3579 +<LI>New functionality: centralized backups and merging 
3580 +<UL>
3581 +<LI>
3582 +This version incorporates two pieces of major new functionality,
3583 + implemented by Sylvain Roy during a summer internship at Penn: a
3584 + <EM>centralized backup</EM> facility that keeps a full backup of
3585 + (selected files 
3586 + in) each replica, and a <EM>merging</EM> feature that allows Unison to
3587 + invoke an external file-merging tool to resolve conflicting changes to
3588 + individual files.
3589
3590 +
3591 +<LI>Centralized backups:
3592 +<UL>
3593 +<LI>
3594 + Unison now maintains full backups of the last-synchronized versions
3595 + of (some of) the files in each replica; these function both as
3596 + backups in the usual sense
3597 + and as the ``common version'' when invoking external
3598 + merge programs.
3599
3600 +<LI>The backed up files are stored in a directory &nbsp;/.unison/backup on each
3601 + host. (The name of this directory can be changed by setting
3602 + the environment variable <CODE>UNISONBACKUPDIR</CODE>.)
3603
3604 +<LI>The predicate <CODE>backup</CODE> controls which files are actually
3605 + backed up:
3606 + giving the preference '<CODE>backup = Path *</CODE>' causes backing up
3607 + of all files.
3608
3609 +<LI>Files are added to the backup directory whenever unison updates
3610 + its archive. This means that
3611 + <UL>
3612 +<LI>
3613 + When unison reconstructs its archive from scratch (e.g., 
3614 + because of an upgrade, or because the archive files have
3615 + been manually deleted), all files will be backed up.
3616
3617 +<LI>Otherwise, each file will be backed up the first time unison
3618 + propagates an update for it.
3619 + </UL>
3620
3621 +<LI>The preference <CODE>backupversions</CODE> controls how many previous
3622 + versions of each file are kept. The default is 2 (i.e., the last 
3623 + synchronized version plus one backup).
3624
3625 +<LI>For backward compatibility, the <CODE>backups</CODE> preference is also
3626 + still supported, but <CODE>backup</CODE> is now preferred.
3627
3628 +<LI>It is OK to manually delete files from the backup directory (or to throw
3629 + away the directory itself). Before unison uses any of these files for 
3630 + anything important, it checks that its fingerprint matches the one 
3631 + that it expects. 
3632 +</UL><BR>
3633 +
3634 +<LI>Merging:
3635 +<UL>
3636 +<LI>
3637 + Both user interfaces offer a new 'merge' command, invoked by pressing
3638 + 'm' (with a changed file selected). 
3639
3640 +<LI>The actual merging is performed by an external program. 
3641 + The preferences <CODE>merge</CODE> and <CODE>merge2</CODE> control how this
3642 + program is invoked. If a backup exists for this file (see the
3643 + <CODE>backup</CODE> preference), then the <CODE>merge</CODE> preference is used for 
3644 + this purpose; otherwise <CODE>merge2</CODE> is used. In both cases, the 
3645 + value of the preference should be a string representing the command 
3646 + that should be passed to a shell to invoke the 
3647 + merge program. Within this string, the special substrings
3648 + <CODE>CURRENT1</CODE>, <CODE>CURRENT2</CODE>, <CODE>NEW</CODE>, and <CODE>OLD</CODE> may appear
3649 + at any point. Unison will substitute these as follows before invoking
3650 + the command:
3651 + <UL>
3652 +<LI>
3653 + <CODE>CURRENT1</CODE> is replaced by the name of the local 
3654 + copy of the file;
3655
3656 +<LI><CODE>CURRENT2</CODE> is replaced by the name of a temporary
3657 + file, into which the contents of the remote copy of the file have
3658 + been transferred by Unison prior to performing the merge;
3659
3660 +<LI><CODE>NEW</CODE> is replaced by the name of a temporary
3661 + file that Unison expects to be written by the merge program when
3662 + it finishes, giving the desired new contents of the file; and
3663
3664 +<LI><CODE>OLD</CODE> is replaced by the name of the backed up
3665 + copy of the original version of the file (i.e., its state at the 
3666 + end of the last successful run of Unison), if one exists 
3667 + (applies only to <CODE>merge</CODE>, not <CODE>merge2</CODE>).
3668 + </UL>
3669 + For example, on Unix systems setting the <CODE>merge</CODE> preference to
3670 +<PRE>
3671 +   merge = diff3 -m CURRENT1 OLD CURRENT2 &gt; NEW
3672 +</PRE>
3673 + will tell Unison to use the external <CODE>diff3</CODE> program for merging. <BR>
3674 +<BR>
3675 + A large number of external merging programs are available. For 
3676 + example, <CODE>emacs</CODE> users may find the following convenient:
3677 +<PRE>
3678 +    merge2 = emacs -q --eval '(ediff-merge-files "CURRENT1" "CURRENT2" 
3679 +               nil "NEW")' 
3680 +    merge = emacs -q --eval '(ediff-merge-files-with-ancestor 
3681 +               "CURRENT1" "CURRENT2" "OLD" nil "NEW")' 
3682 +</PRE>
3683 +(These commands are displayed here on two lines to avoid running off the
3684 +edge of the page. In your preference file, each should be written on a
3685 +single line.) <BR>
3686 +<BR>
3687
3688 +<LI>If the external program exits without leaving any file at the
3689 + path <CODE>NEW</CODE>, 
3690 + Unison considers the merge to have failed. If the merge program writes
3691 + a file called <CODE>NEW</CODE> but exits with a non-zero status code,
3692 + then Unison 
3693 + considers the merge to have succeeded but to have generated conflicts.
3694 + In this case, it attempts to invoke an external editor so that the
3695 + user can resolve the conflicts. The value of the <CODE>editor</CODE> 
3696 + preference controls what editor is invoked by Unison. The default
3697 + is <CODE>emacs</CODE>.<BR>
3698 +<BR>
3699
3700 +<LI>Please send us suggestions for other useful values of the
3701 + <CODE>merge2</CODE> and <CODE>merge</CODE> preferences -- we'd like to give several 
3702 + examples in the manual.
3703 +</UL>
3704 +</UL><BR>
3705 +
3706 +<LI>Smaller changes:
3707 +<UL>
3708 +<LI>
3709 +When one preference file includes another, unison no longer adds the
3710 + suffix '<CODE>.prf</CODE>' to the included file by default. If a file with 
3711 + precisely the given name exists in the .unison directory, it will be used; 
3712 + otherwise Unison will 
3713 + add <CODE>.prf</CODE>, as it did before. (This change means that included 
3714 + preference files can be named <CODE>blah.include</CODE> instead of 
3715 + <CODE>blah.prf</CODE>, so that unison will not offer them in its 'choose 
3716 + a preference file' dialog.)
3717 +
3718 +<LI>For Linux systems, we now offer both a statically linked and a dynamically
3719 + linked executable. The static one is larger, but will probably run on more
3720 + systems, since it doesn't depend on the same versions of dynamically
3721 + linked library modules being available.
3722 +
3723 +<LI>Fixed the <CODE>force</CODE> and <CODE>prefer</CODE> preferences, which were
3724 + getting the propagation direction exactly backwards.
3725 +
3726 +<LI>Fixed a bug in the startup code that would cause unison to crash
3727 + when the default profile (<CODE>~/.unison/default.prf</CODE>) does not exist.
3728 +
3729 +<LI>Fixed a bug where, on the run when a profile is first created, 
3730 + Unison would confusingly display the roots in reverse order in the user
3731 + interface.
3732 +</UL><BR>
3733 +
3734 +<LI>For developers:
3735 +<UL>
3736 +<LI>
3737 +We've added a module dependency diagram to the source distribution, in
3738 + <CODE>src/DEPENDENCIES.ps</CODE>, to help new prospective developers with
3739 + navigating the code. 
3740 +</UL>
3741 +
3742 + </UL>
3743 +Changes since 2.6.11:
3744 + <UL>
3745 +<LI>
3746 +
3747 +<B>Incompatible change:</B> 
3748 +  Archive format has changed. <BR>
3749 +<BR>
3750 +
3751 +<LI><B>Incompatible change:</B> 
3752 +  The startup sequence has been completely rewritten
3753 +and greatly simplified. The main user-visible change is that the
3754 +<CODE>defaultpath</CODE> preference has been removed. Its effect can be
3755 +approximated by using multiple profiles, with <CODE>include</CODE> directives
3756 +to incorporate common settings. All uses of <CODE>defaultpath</CODE> in
3757 +existing profiles should be changed to <CODE>path</CODE>.<BR>
3758 +<BR>
3759 +Another change in startup behavior that will affect some users is that it
3760 +is no longer possible to specify roots <EM>both</EM> in the profile <EM>and</EM> on the command line.<BR>
3761 +<BR>
3762 +You can achieve a similar effect, though, by breaking your profile into
3763 +two:
3764 +<PRE>
3765 +  
3766 +  default.prf = 
3767 +      root = blah
3768 +      root = foo
3769 +      include common
3770 +
3771 +  common.prf = 
3772 +      &lt;everything else&gt;
3773 +</PRE>
3774 +Now do
3775 +<PRE>
3776 +  unison common root1 root2
3777 +</PRE>
3778 +when you want to specify roots explicitly.<BR>
3779 +<BR>
3780 +
3781 +<LI>The <CODE>-prefer</CODE> and <CODE>-force</CODE> options have been extended to
3782 +allow users to specify that files with more recent modtimes should be
3783 +propagated, writing either <CODE>-prefer newer</CODE> or <CODE>-force newer</CODE>.
3784 +(For symmetry, Unison will also accept <CODE>-prefer older</CODE> or
3785 +<CODE>-force older</CODE>.) The <CODE>-force older/newer</CODE> options can only be
3786 +used when <CODE>-times</CODE> is also set.<BR>
3787 +<BR>
3788 +The graphical user interface provides access to these facilities on a
3789 +one-off basis via the <CODE>Actions</CODE> menu.<BR>
3790 +<BR>
3791 +
3792 +<LI>Names of roots can now be ``aliased'' to allow replicas to be
3793 +relocated without changing the name of the archive file where Unison
3794 +stores information between runs. (This feature is for experts only. See
3795 +the ``Archive Files'' section of the manual for more information.)<BR>
3796 +<BR>
3797 +
3798 +<LI>Graphical user-interface:
3799 +<UL>
3800 +<LI>
3801 +A new command is provided in the Synchronization menu for
3802 + switching to a new profile without restarting Unison from scratch.
3803 +
3804 +<LI>The GUI also supports one-key shortcuts for commonly
3805 +used profiles. If a profile contains a preference of the form 
3806 +'<CODE>key = n</CODE>', where <CODE>n</CODE> is a single digit, then pressing this
3807 +key will cause Unison to immediately switch to this profile and begin
3808 +synchronization again from scratch. (Any actions that may have been
3809 +selected for a set of changes currently being displayed will be
3810 +discarded.) <BR>
3811 +<BR>
3812 +
3813 +<LI>Each profile may include a preference '<CODE>label = &lt;string&gt;</CODE>' giving a
3814 + descriptive string that described the options selected in this profile.
3815 + The string is listed along with the profile name in the profile selection
3816 + dialog, and displayed in the top-right corner of the main Unison window.
3817 +</UL><BR>
3818 +
3819 +<LI>Minor:
3820 +<UL>
3821 +<LI>
3822 +Fixed a bug that would sometimes cause the 'diff' display to order
3823 + the files backwards relative to the main user interface. (Thanks
3824 + to Pascal Brisset for this fix.)
3825 +
3826 +<LI>On Unix systems, the graphical version of Unison will check the
3827 + <CODE>DISPLAY</CODE> variable and, if it is not set, automatically fall back
3828 + to the textual user interface.
3829 +
3830 +<LI>Synchronization paths (<CODE>path</CODE> preferences) are now matched
3831 + against the ignore preferences. So if a path is both specified in a
3832 + <CODE>path</CODE> preference and ignored, it will be skipped.
3833 +
3834 +<LI>Numerous other bugfixes and small improvements.
3835 +</UL>
3836 +
3837 + </UL>
3838 +Changes since 2.6.1:
3839 + <UL>
3840 +<LI>
3841 +
3842 +The synchronization of modification times has been disabled for
3843 + directories.<BR>
3844 +<BR>
3845 +
3846 +<LI>Preference files may now include lines of the form
3847 + <CODE>include &lt;name&gt;</CODE>, which will cause <CODE>name.prf</CODE> to be read
3848 + at that point.<BR>
3849 +<BR>
3850 +
3851 +<LI>The synchronization of permission between Windows and Unix now
3852 + works properly.<BR>
3853 +<BR>
3854 +
3855 +<LI>A binding <CODE>CYGWIN=binmode</CODE> in now added to the environment
3856 + so that the Cygwin port of OpenSSH works properly in a non-Cygwin
3857 + context.<BR>
3858 +<BR>
3859 +
3860 +<LI>The <CODE>servercmd</CODE> and <CODE>addversionno</CODE> preferences can now
3861 + be used together: <CODE>-addversionno</CODE> appends an appropriate
3862 + <CODE>-NNN</CODE> to the server command, which is found by using the value
3863 + of the <CODE>-servercmd</CODE> preference if there is one, or else just
3864 + <CODE>unison</CODE>.<BR>
3865 +<BR>
3866 +
3867 +<LI>Both <CODE>'-pref=val'</CODE> and <CODE>'-pref val'</CODE> are now allowed for
3868 + boolean values. (The former can be used to set a preference to false.)<BR>
3869 +<BR>
3870 +
3871 +<LI>Lot of small bugs fixed.
3872 +
3873 + </UL>
3874 +Changes since 2.5.31:
3875 + <UL>
3876 +<LI>
3877 +
3878 +The <CODE>log</CODE> preference is now set to <CODE>true</CODE> by default,
3879 + since the log file seems useful for most users. 
3880 +
3881 +<LI>Several miscellaneous bugfixes (most involving symlinks).
3882 +
3883 + </UL>
3884 +Changes since 2.5.25:
3885 + <UL>
3886 +<LI>
3887 +
3888 +<B>Incompatible change:</B> 
3889 +  Archive format has changed (again). <BR>
3890 +<BR>
3891 +
3892 +<LI>Several significant bugs introduced in 2.5.25 have been fixed. 
3893 +
3894 + </UL>
3895 +Changes since 2.5.1:
3896 + <UL>
3897 +<LI>
3898 +
3899 +<B>Incompatible change:</B> 
3900 +  Archive format has changed. Make sure you
3901 +synchronize your replicas before upgrading, to avoid spurious
3902 +conflicts. The first sync after upgrading will be slow.<BR>
3903 +<BR>
3904 +
3905 +<LI>New functionality:
3906 +<UL>
3907 +<LI>
3908 +Unison now synchronizes file modtimes, user-ids, and group-ids. <BR>
3909 +<BR>
3910 +These new features are controlled by a set of new preferences, all of
3911 +which are currently <CODE>false</CODE> by default. <BR>
3912 +<BR>
3913 +<UL>
3914 +<LI>
3915 +When the <CODE>times</CODE> preference is set to <CODE>true</CODE>, file
3916 +modification times are propaged. (Because the representations of time
3917 +may not have the same granularity on both replicas, Unison may not always
3918 +be able to make the modtimes precisely equal, but it will get them as
3919 +close as the operating systems involved allow.)
3920 +
3921 +<LI>When the <CODE>owner</CODE> preference is set to <CODE>true</CODE>, file
3922 +ownership information is synchronized.
3923 +
3924 +<LI>When the <CODE>group</CODE> preference is set to <CODE>true</CODE>, group 
3925 +information is synchronized.
3926 +
3927 +<LI>When the <CODE>numericIds</CODE> preference is set to <CODE>true</CODE>, owner
3928 +and group information is synchronized numerically. By default, owner and
3929 +group numbers are converted to names on each replica and these names are
3930 +synchronized. (The special user id 0 and the special group 0 are never
3931 +mapped via user/group names even if this preference is not set.)
3932 +</UL><BR>
3933 +
3934 +<LI>Added an integer-valued preference <CODE>perms</CODE> that can be used to
3935 +control the propagation of permission bits. The value of this preference
3936 +is a mask indicating which permission bits should be synchronized. It is
3937 +set by default to 0<I>o</I>1777: all bits but the set-uid and set-gid bits are
3938 +synchronised (synchronizing theses latter bits can be a security hazard).
3939 +If you want to synchronize all bits, you can set the value of this
3940 +preference to -1.<BR>
3941 +<BR>
3942 +
3943 +<LI>Added a <CODE>log</CODE> preference (default <CODE>false</CODE>), which makes
3944 +Unison keep a complete record of the changes it makes to the replicas.
3945 +By default, this record is written to a file called <CODE>unison.log</CODE> in
3946 +the user's home directory (the value of the <CODE>HOME</CODE> environment
3947 +variable). If you want it someplace else, set the <CODE>logfile</CODE>
3948 +preference to the full pathname you want Unison to use.<BR>
3949 +<BR>
3950 +
3951 +<LI>Added an <CODE>ignorenot</CODE> preference that maintains a set of patterns 
3952 + for paths that should definitely <EM>not</EM> be ignored, whether or not
3953 + they match an <CODE>ignore</CODE> pattern. (That is, a path will now be ignored
3954 + iff it matches an ignore pattern and does not match any ignorenot patterns.)
3955 +</UL>
3956
3957 +
3958 +<LI>User-interface improvements:
3959 +<UL>
3960 +<LI>
3961 +Roots are now displayed in the user interface in the same order
3962 +as they were given on the command line or in the preferences file.
3963 +
3964 +<LI>When the <CODE>batch</CODE> preference is set, the graphical user interface no 
3965 + longer waits for user confirmation when it displays a warning message: it
3966 + simply pops up an advisory window with a Dismiss button at the bottom and
3967 + keeps on going.
3968 +
3969 +<LI>Added a new preference for controlling how many status messages are
3970 + printed during update detection: <CODE>statusdepth</CODE> controls the maximum
3971 + depth for paths on the local machine (longer paths are not displayed, nor
3972 + are non-directory paths). The value should be an integer; default is 1. 
3973 +
3974 +<LI>Removed the <CODE>trace</CODE> and <CODE>silent</CODE> preferences. They did
3975 +not seem very useful, and there were too many preferences for controlling
3976 +output in various ways.
3977 +
3978 +<LI>The text UI now displays just the default command (the one that
3979 +will be used if the user just types <CODE>&lt;return&gt;</CODE>) instead of all
3980 +available commands. Typing <CODE>?</CODE> will print the full list of
3981 +possibilities.
3982 +
3983 +<LI>The function that finds the canonical hostname of the local host
3984 +(which is used, for example, in calculating the name of the archive file
3985 +used to remember which files have been synchronized) normally uses the
3986 +<CODE>gethostname</CODE> operating system call. However, if the environment
3987 +variable <CODE>UNISONLOCALHOSTNAME</CODE> is set, its value will now be used
3988 +instead. This makes it easier to use Unison in situations where a
3989 +machine's name changes frequently (e.g., because it is a laptop and gets
3990 +moved around a lot).
3991 +
3992 +<LI>File owner and group are now displayed in the ``detail window'' at
3993 +the bottom of the screen, when unison is configured to synchronize them.
3994 +</UL><BR>
3995 +
3996 +<LI>For hackers:
3997 +<UL>
3998 +<LI>
3999 +Updated to Jacques Garrigue's new version of <CODE>lablgtk</CODE>, which
4000 + means we can throw away our local patched version. <BR>
4001 +<BR>
4002 + If you're compiling the GTK version of unison from sources, you'll need
4003 + to update your copy of lablgtk to the developers release, available from
4004 + <A HREF="http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html">http://wwwfun.kurims.kyoto-u.ac.jp/soft/olabl/lablgtk.html</A><BR>
4005 +<BR>
4006 + (Warning: installing lablgtk under Windows is currently a bit
4007 + challenging.) <BR>
4008 +<BR>
4009 +
4010 +<LI>The TODO.txt file (in the source distribution) has been cleaned up
4011 +and reorganized. The list of pending tasks should be much easier to
4012 +make sense of, for people that may want to contribute their programming
4013 +energies. There is also a separate file BUGS.txt for open bugs.
4014 +
4015 +<LI>The Tk user interface has been removed (it was not being maintained
4016 +and no longer compiles).
4017 +
4018 +<LI>The <CODE>debug</CODE> preference now prints quite a bit of additional
4019 +information that should be useful for identifying sources of problems.
4020 +
4021 +<LI>The version number of the remote server is now checked right away 
4022 + during the connection setup handshake, rather than later. (Somebody
4023 + sent a bug report of a server crash that turned out to come from using
4024 + inconsistent versions: better to check this earlier and in a way that
4025 + can't crash either client or server.)
4026 +
4027 +<LI>Unison now runs correctly on 64-bit architectures (e.g. Alpha
4028 +linux). We will not be distributing binaries for these architectures
4029 +ourselves (at least for a while) but if someone would like to make them
4030 +available, we'll be glad to provide a link to them.
4031 +</UL><BR>
4032 +
4033 +<LI>Bug fixes:
4034 +<UL>
4035 +<LI>
4036 +Pattern matching (e.g. for <CODE>ignore</CODE>) is now case-insensitive
4037 + when Unison is in case-insensitive mode (i.e., when one of the replicas
4038 + is on a windows machine).
4039 +
4040 +<LI>Some people had trouble with mysterious failures during
4041 + propagation of updates, where files would be falsely reported as having
4042 + changed during synchronization. This should be fixed.
4043 +
4044 +<LI>Numerous smaller fixes.
4045 +</UL>
4046 +
4047 + </UL>
4048 +Changes since 2.4.1:
4049 + <UL>
4050 +<LI>
4051 +
4052 +Added a number of 'sorting modes' for the user interface. By
4053 +default, conflicting changes are displayed at the top, and the rest of
4054 +the entries are sorted in alphabetical order. This behavior can be
4055 +changed in the following ways:
4056 +<UL>
4057 +<LI>
4058 +Setting the <CODE>sortnewfirst</CODE> preference to <CODE>true</CODE> causes
4059 +newly created files to be displayed before changed files.
4060 +
4061 +<LI>Setting <CODE>sortbysize</CODE> causes files to be displayed in
4062 +increasing order of size.
4063 +
4064 +<LI>Giving the preference <CODE>sortfirst=&lt;pattern&gt;</CODE> (where
4065 +<CODE>&lt;pattern&gt;</CODE> is a path descriptor in the same format as 'ignore' and 'follow'
4066 +patterns, causes paths matching this pattern to be displayed first.
4067 +
4068 +<LI>Similarly, giving the preference <CODE>sortlast=&lt;pattern&gt;</CODE> 
4069 +causes paths matching this pattern to be displayed last.
4070 +</UL>
4071 +The sorting preferences are described in more detail in the user manual.
4072 +The <CODE>sortnewfirst</CODE> and <CODE>sortbysize</CODE> flags can also be accessed
4073 +from the 'Sort' menu in the grpahical user interface.<BR>
4074 +<BR>
4075 +
4076 +<LI>Added two new preferences that can be used to change unison's
4077 +fundamental behavior to make it more like a mirroring tool instead of
4078 +a synchronizer.
4079 +<UL>
4080 +<LI>
4081 +Giving the preference <CODE>prefer</CODE> with argument <CODE>&lt;root&gt;</CODE>
4082 +(by adding <CODE>-prefer &lt;root&gt;</CODE> to the command line or <CODE>prefer=&lt;root&gt;</CODE>)
4083 +to your profile) means that, if there is a conflict, the contents of
4084 +<CODE>&lt;root&gt;</CODE> 
4085 +should be propagated to the other replica (with no questions asked).
4086 +Non-conflicting changes are treated as usual.
4087 +
4088 +<LI>Giving the preference <CODE>force</CODE> with argument <CODE>&lt;root&gt;</CODE>
4089 +will make unison resolve <EM>all</EM> differences in favor of the given
4090 +root, even if it was the other replica that was changed.
4091 +</UL>
4092 +These options should be used with care! (More information is available in
4093 +the manual.)<BR>
4094 +<BR>
4095 +
4096 +<LI>Small changes:
4097 +<UL>
4098 +<LI>
4099 +
4100 +Changed default answer to 'Yes' in all two-button dialogs in the 
4101 + graphical interface (this seems more intuitive).<BR>
4102 +<BR>
4103 +
4104 +<LI>The <CODE>rsync</CODE> preference has been removed (it was used to
4105 +activate rsync compression for file transfers, but rsync compression is
4106 +now enabled by default). 
4107 +
4108 +<LI>In the text user interface, the arrows indicating which direction
4109 +changes are being 
4110 + propagated are printed differently when the user has overridded Unison's
4111 + default recommendation (<CODE>====&gt;</CODE> instead of <CODE>----&gt;</CODE>). This
4112 + matches the behavior of the graphical interface, which displays such
4113 + arrows in a different color.
4114 +
4115 +<LI>Carriage returns (Control-M's) are ignored at the ends of lines in
4116 + profiles, for Windows compatibility.
4117 +
4118 +<LI>All preferences are now fully documented in the user manual. 
4119 +</UL>
4120 +
4121 + </UL>
4122 +Changes since 2.3.12:
4123 + <UL>
4124 +<LI>
4125 +
4126 +<B>Incompatible change:</B> 
4127 +  Archive format has changed. Make sure you
4128 +synchronize your replicas before upgrading, to avoid spurious
4129 +conflicts. The first sync after upgrading will be slow.<BR>
4130 +<BR>
4131 +
4132 +<LI>New/improved functionality:
4133 +<UL>
4134 +<LI>
4135 +A new preference -sortbysize controls the order in which changes
4136 + are displayed to the user: when it is set to true, the smallest
4137 + changed files are displayed first. (The default setting is false.) 
4138 +
4139 +<LI>A new preference -sortnewfirst causes newly created files to be 
4140 + listed before other updates in the user interface.
4141 +
4142 +<LI>We now allow the ssh protocol to specify a port. 
4143 +
4144 +<LI>Incompatible change: The unison: protocol is deprecated, and we added
4145 + file: and socket:. You may have to modify your profiles in the
4146 + .unison directory.
4147 + If a replica is specified without an explicit protocol, we now
4148 + assume it refers to a file. (Previously "//saul/foo" meant to use
4149 + SSH to connect to saul, then access the foo directory. Now it means
4150 + to access saul via a remote file mechanism such as samba; the old
4151 + effect is now achieved by writing <TT>ssh://saul/foo</TT>.)
4152 +
4153 +<LI>Changed the startup sequence for the case where roots are given but
4154 + no profile is given on the command line. The new behavior is to
4155 + use the default profile (creating it if it does not exist), and
4156 + temporarily override its roots. The manual claimed that this case
4157 + would work by reading no profile at all, but AFAIK this was never
4158 + true.
4159 +
4160 +<LI>In all user interfaces, files with conflicts are always listed first
4161 +
4162 +<LI>A new preference 'sshversion' can be used to control which version
4163 + of ssh should be used to connect to the server. Legal values are 1 and 2.
4164 + (Default is empty, which will make unison use whatever version of ssh
4165 + is installed as the default 'ssh' command.)
4166 +
4167 +<LI>The situation when the permissions of a file was updated the same on
4168 + both side is now handled correctly (we used to report a spurious conflict)</UL><BR>
4169 +
4170 +<LI>Improvements for the Windows version:
4171 +<UL>
4172 +<LI>
4173 +The fact that filenames are treated case-insensitively under
4174 +Windows should now be handled correctly. The exact behavior is described
4175 +in the cross-platform section of the manual.
4176 +
4177 +<LI>It should be possible to synchronize with Windows shares, e.g.,
4178 + //host/drive/path.
4179 +
4180 +<LI>Workarounds to the bug in syncing root directories in Windows.
4181 +The most difficult thing to fix is an ocaml bug: Unix.opendir fails on
4182 +c: in some versions of Windows.
4183 +</UL><BR>
4184 +
4185 +<LI>Improvements to the GTK user interface (the Tk interface is no
4186 +longer being maintained): 
4187 +<UL>
4188 +<LI>
4189 +The UI now displays actions differently (in blue) when they have been
4190 + explicitly changed by the user from Unison's default recommendation.
4191 +
4192 +<LI>More colorful appearance.
4193 +
4194 +<LI>The initial profile selection window works better.
4195 +
4196 +<LI>If any transfers failed, a message to this effect is displayed along with
4197 + 'Synchronization complete' at the end of the transfer phase (in case they
4198 + may have scrolled off the top).
4199 +
4200 +<LI>Added a global progress meter, displaying the percentage of <EM>total</EM>
4201 + bytes that have been transferred so far.
4202 +</UL><BR>
4203 +
4204 +<LI>Improvements to the text user interface:
4205 +<UL>
4206 +<LI>
4207 +The file details will be displayed automatically when a
4208 + conflict is been detected.
4209 +
4210 +<LI>when a warning is generated (e.g. for a temporary
4211 + file left over from a previous run of unison) Unison will no longer
4212 + wait for a response if it is running in -batch mode.
4213 +
4214 +<LI>The UI now displays a short list of possible inputs each time it waits
4215 + for user interaction. 
4216 +
4217 +<LI>The UI now quits immediately (rather than looping back and starting
4218 + the interaction again) if the user presses 'q' when asked whether to 
4219 + propagate changes.
4220 +
4221 +<LI>Pressing 'g' in the text user interface will proceed immediately
4222 + with propagating updates, without asking any more questions.
4223 +</UL><BR>
4224 +
4225 +<LI>Documentation and installation changes:
4226 +<UL>
4227 +<LI>
4228 +The manual now includes a FAQ, plus sections on common problems and
4229 +on tricks contributed by users.
4230 +
4231 +<LI>Both the download page and the download directory explicitly say
4232 +what are the current stable and beta-test version numbers.
4233 +
4234 +<LI>The OCaml sources for the up-to-the-minute developers' version (not
4235 +guaranteed to be stable, or even to compile, at any given time!) are now
4236 +available from the download page.
4237 +
4238 +<LI>Added a subsection to the manual describing cross-platform
4239 + issues (case conflicts, illegal filenames)
4240 +</UL><BR>
4241 +
4242 +<LI>Many small bug fixes and random improvements.<BR>
4243 +<BR>
4244 +
4245 + </UL>
4246 +Changes since 2.3.1:
4247 + <UL>
4248 +<LI>
4249 +
4250 +Several bug fixes. The most important is a bug in the rsync
4251 +module that would occasionally cause change propagation to fail with a
4252 +'rename' error.
4253 +
4254 + </UL>
4255 +Changes since 2.2:
4256 + <UL>
4257 +<LI>
4258 +
4259 +The multi-threaded transport system is now disabled by default.
4260 +(It is not stable enough yet.)
4261 +
4262 +<LI>Various bug fixes.
4263 +
4264 +<LI>A new experimental feature: <BR>
4265 +<BR>
4266 + The final component of a -path argument may now be the wildcard 
4267 + specifier <CODE>*</CODE>. When Unison sees such a path, it expands this path on 
4268 + the client into into the corresponding list of paths by listing the
4269 + contents of that directory. <BR>
4270 +<BR>
4271 + Note that if you use wildcard paths from the command line, you will
4272 + probably need to use quotes or a backslash to prevent the * from
4273 + being interpreted by your shell.<BR>
4274 +<BR>
4275 + If both roots are local, the contents of the first one will be used
4276 + for expanding wildcard paths. (Nb: this is the first one <EM>after</EM> the
4277 + canonization step -- i.e., the one that is listed first in the user 
4278 + interface -- not the one listed first on the command line or in the
4279 + preferences file.)
4280 +
4281 + </UL>
4282 +Changes since 2.1:
4283 + <UL>
4284 +<LI>
4285 +
4286 +The transport subsystem now includes an implementation by
4287 +Sylvain Gommier and Norman Ramsey of Tridgell and Mackerras's
4288 +<CODE>rsync</CODE> protocol. This protocol achieves much faster 
4289 +transfers when only a small part of a large file has been changed by
4290 +sending just diffs. This feature is mainly helpful for transfers over
4291 +slow links---on fast local area networks it can actually degrade
4292 +performance---so we have left it off by default. Start unison with
4293 +the <CODE>-rsync</CODE> option (or put <CODE>rsync=true</CODE> in your preferences
4294 +file) to turn it on.<BR>
4295 +<BR>
4296 +
4297 +<LI>``Progress bars'' are now diplayed during remote file transfers,
4298 +showing what percentage of each file has been transferred so far.<BR>
4299 +<BR>
4300 +
4301 +<LI>The version numbering scheme has changed. New releases will now
4302 + be have numbers like 2.2.30, where the second component is
4303 + incremented on every significant public release and the third
4304 + component is the ``patch level.''<BR>
4305 +<BR>
4306 +
4307 +<LI>Miscellaneous improvements to the GTK-based user interface.
4308 +
4309 +<LI>The manual is now available in PDF format.<BR>
4310 +<BR>
4311 +
4312 +<LI>We are experimenting with using a multi-threaded transport
4313 +subsystem to transfer several files at the same time, making
4314 +much more effective use of available network bandwidth. This feature
4315 +is not completely stable yet, so by default it is disabled in the
4316 +release version of Unison.<BR>
4317 +<BR>
4318 +If you want to play with the multi-threaded version, you'll need to
4319 +recompile Unison from sources (as described in the documentation),
4320 +setting the THREADS flag in Makefile.OCaml to true. Make sure that
4321 +your OCaml compiler has been installed with the <CODE>-with-pthreads</CODE>
4322 +configuration option. (You can verify this by checking whether the
4323 +file <CODE>threads/threads.cma</CODE> in the OCaml standard library
4324 +directory contains the string <CODE>-lpthread</CODE> near the end.)
4325 +
4326 + </UL>
4327 +Changes since 1.292:
4328 + <UL>
4329 +<LI>
4330 +
4331 +Reduced memory footprint (this is especially important during
4332 +the first run of unison, where it has to gather information about all
4333 +the files in both repositories). 
4334 +
4335 +<LI>Fixed a bug that would cause the socket server under NT to fail
4336 + after the client exits. 
4337 +
4338 +<LI>Added a SHIFT modifier to the Ignore menu shortcut keys in GTK
4339 + interface (to avoid hitting them accidentally). 
4340 +
4341 + </UL>
4342 +Changes since 1.231:
4343 + <UL>
4344 +<LI>
4345 +
4346 +Tunneling over ssh is now supported in the Windows version. See
4347 +the installation section of the manual for detailed instructions.<BR>
4348 +<BR>
4349 +
4350 +<LI>The transport subsystem now includes an implementation of the
4351 +<CODE>rsync</CODE> protocol, built by Sylvain Gommier and Norman Ramsey.
4352 +This protocol achieves much faster transfers when only a small part of
4353 +a large file has been changed by sending just diffs. The rsync
4354 +feature is off by default in the current version. Use the
4355 +<CODE>-rsync</CODE> switch to turn it on. (Nb. We still have a lot of
4356 +tuning to do: you may not notice much speedup yet.)<BR>
4357 +<BR>
4358 +
4359 +<LI>We're experimenting with a multi-threaded transport subsystem,
4360 +written by Jerome Vouillon. The downloadable binaries are still
4361 +single-threaded: if you want to try the multi-threaded version, you'll
4362 +need to recompile from sources. (Say <CODE>make THREADS=true</CODE>.)
4363 +Native thread support from the compiler is required. Use the option
4364 +<CODE>-threads N</CODE> to select the maximal number of concurrent 
4365 +threads (default is 5). Multi-threaded
4366 +and single-threaded clients/servers can interoperate. <BR>
4367 +<BR>
4368 +
4369 +<LI>A new GTK-based user interface is now available, thanks to
4370 +Jacques Garrigue. The Tk user interface still works, but we'll be
4371 +shifting development effort to the GTK interface from now on.
4372 +
4373 +<LI>OCaml 3.00 is now required for compiling Unison from sources.
4374 +The modules <CODE>uitk</CODE> and <CODE>myfileselect</CODE> have been changed to
4375 +use labltk instead of camltk. To compile the Tk interface in Windows,
4376 +you must have ocaml-3.00 and tk8.3. When installing tk8.3, put it in
4377 +<CODE>c:\Tcl</CODE> rather than the suggested <CODE>c:\Program Files\Tcl</CODE>, 
4378 +and be sure to install the headers and libraries (which are not 
4379 +installed by default).<BR>
4380 +<BR>
4381 +
4382 +<LI>Added a new <CODE>-addversionno</CODE> switch, which causes unison to
4383 +use <CODE>unison-&lt;currentversionnumber&gt;</CODE> instead of just <CODE>unison</CODE>
4384 +as the remote server command. This allows multiple versions of unison
4385 +to coexist conveniently on the same server: whichever version is run
4386 +on the client, the same version will be selected on the server.
4387 +
4388 + </UL>
4389 +Changes since 1.219:
4390 + <UL>
4391 +<LI>
4392 +
4393 +<B>Incompatible change:</B> 
4394 +  Archive format has changed. Make sure you
4395 +synchronize your replicas before upgrading, to avoid spurious
4396 +conflicts. The first sync after upgrading will be slow.<BR>
4397 +<BR>
4398 +
4399 +<LI>This version fixes several annoying bugs, including:
4400 +<UL>
4401 +<LI>
4402 +Some cases where propagation of file permissions was not
4403 +working.
4404 +
4405 +<LI>umask is now ignored when creating directories
4406 +
4407 +<LI>directories are create writable, so that a read-only directory and
4408 + its contents can be propagated.
4409 +
4410 +<LI>Handling of warnings generated by the server.
4411 +
4412 +<LI>Synchronizing a path whose parent is not a directory on both sides is
4413 +now flagged as erroneous. 
4414 +
4415 +<LI>Fixed some bugs related to symnbolic links and nonexistant roots.
4416 +<UL>
4417 +<LI>
4418 +
4419 + When a change (deletion or new contents) is propagated onto a 
4420 + 'follow'ed symlink, the file pointed to by the link is now changed.
4421 + (We used to change the link itself, which doesn't fit our assertion
4422 + that 'follow' means the link is completely invisible)
4423
4424 +<LI>When one root did not exist, propagating the other root on top of it
4425 + used to fail, becuase unison could not calculate the working directory
4426 + into which to write changes. This should be fixed.
4427 +</UL>
4428 +</UL><BR>
4429 +
4430 +<LI>A human-readable timestamp has been added to Unison's archive files.<BR>
4431 +<BR>
4432 +
4433 +<LI>The semantics of Path and Name regular expressions now
4434 +correspond better. <BR>
4435 +<BR>
4436 +
4437 +<LI>Some minor improvements to the text UI (e.g. a command for going
4438 +back to previous items)<BR>
4439 +<BR>
4440 +
4441 +<LI>The organization of the export directory has changed --- should
4442 +be easier to find / download things now.
4443 +
4444 + </UL>
4445 +Changes since 1.200:
4446 + <UL>
4447 +<LI>
4448 +
4449 +<B>Incompatible change:</B> 
4450 +  Archive format has changed. Make sure you
4451 +synchronize your replicas before upgrading, to avoid spurious
4452 +conflicts. The first sync after upgrading will be slow.<BR>
4453 +<BR>
4454 +
4455 +<LI>This version has not been tested extensively on Windows.<BR>
4456 +<BR>
4457 +
4458 +<LI>Major internal changes designed to make unison safer to run
4459 +at the same time as the replicas are being changed by the user.<BR>
4460 +<BR>
4461 +
4462 +<LI>Internal performance improvements. 
4463 +
4464 + </UL>
4465 +Changes since 1.190:
4466 + <UL>
4467 +<LI>
4468 +
4469 +<B>Incompatible change:</B> 
4470 +  Archive format has changed. Make sure you
4471 +synchronize your replicas before upgrading, to avoid spurious
4472 +conflicts. The first sync after upgrading will be slow.<BR>
4473 +<BR>
4474 +
4475 +<LI>A number of internal functions have been changed to reduce the
4476 +amount of memory allocation, especially during the first
4477 +synchronization. This should help power users with very big replicas.<BR>
4478 +<BR>
4479 +
4480 +<LI>Reimplementation of low-level remote procedure call stuff, in
4481 +preparation for adding rsync-like smart file transfer in a later
4482 +release. <BR>
4483 +<BR>
4484 +
4485 +<LI>Miscellaneous bug fixes.
4486 +
4487 + </UL>
4488 +Changes since 1.180:
4489 + <UL>
4490 +<LI>
4491 +
4492 +<B>Incompatible change:</B> 
4493 +  Archive format has changed. Make sure you
4494 +synchronize your replicas before upgrading, to avoid spurious
4495 +conflicts. The first sync after upgrading will be slow.<BR>
4496 +<BR>
4497 +
4498 +<LI>Fixed some small bugs in the interpretation of ignore patterns. <BR>
4499 +<BR>
4500 +
4501 +<LI>Fixed some problems that were preventing the Windows version
4502 +from working correctly when click-started.<BR>
4503 +<BR>
4504 +
4505 +<LI>Fixes to treatment of file permissions under Windows, which were
4506 +causing spurious reports of different permissions when synchronizing
4507 +between windows and unix systems.<BR>
4508 +<BR>
4509 +
4510 +<LI>Fixed one more non-tail-recursive list processing function,
4511 +which was causing stack overflows when synchronizing very large
4512 +replicas. 
4513 +
4514 + </UL>
4515 +Changes since 1.169:
4516 + <UL>
4517 +<LI>
4518 +
4519 +The text user interface now provides commands for ignoring
4520 + files. 
4521 +
4522 +<LI>We found and fixed some <EM>more</EM> non-tail-recursive list
4523 + processing functions. Some power users have reported success with
4524 + very large replicas.
4525 +
4526 +<LI><B>Incompatible change:</B> 
4527 + Files ending in <CODE>.tmp</CODE> are no longer ignored automatically. If you want
4528 +to ignore such files, put an appropriate ignore pattern in your profile.<BR>
4529 +<BR>
4530 +
4531 +<LI><B>Incompatible change:</B> 
4532 +  The syntax of <TT>ignore</TT> and <TT>follow</TT>
4533 +patterns has changed. Instead of putting a line of the form
4534 +<PRE>
4535 +                 ignore = &lt;regexp&gt;
4536 +</PRE>
4537 + in your profile (<TT>.unison/default.prf</TT>), you should put:
4538 +<PRE>
4539 +                 ignore = Regexp &lt;regexp&gt;
4540 +</PRE>
4541 +Moreover, two other styles of pattern are also recognized:
4542 +<PRE>
4543 +                 ignore = Name &lt;name&gt;
4544 +</PRE>
4545 +matches any path in which one component matches <CODE>&lt;name&gt;</CODE>, while
4546 +<PRE>
4547 +                 ignore = Path &lt;path&gt;
4548 +</PRE>
4549 +matches exactly the path <CODE>&lt;path&gt;</CODE>.<BR>
4550 +<BR>
4551 +Standard ``globbing'' conventions can be used in <CODE>&lt;name&gt;</CODE> and
4552 +<CODE>&lt;path&gt;</CODE>: 
4553 +<UL>
4554 +<LI>
4555 +a <CODE>?</CODE> matches any single character except <CODE>/</CODE>
4556 +
4557 +<LI>a <CODE>*</CODE> matches any sequence of characters not including <CODE>/</CODE>
4558 +
4559 +<LI><CODE>[xyz]</CODE> matches any character from the set {<TT><I>x</I></TT>,
4560 + <TT><I>y</I></TT>, <TT><I>z</I></TT> }
4561 +
4562 +<LI><CODE>{a,bb,ccc}</CODE> matches any one of <CODE>a</CODE>, <CODE>bb</CODE>, or
4563 + <CODE>ccc</CODE>. 
4564 +</UL><BR>
4565 +See the user manual for some examples.
4566 +
4567 + </UL>
4568 +Changes since 1.146:
4569 + <UL>
4570 +<LI>
4571 +
4572 +Some users were reporting stack overflows when synchronizing
4573 + huge directories. We found and fixed some non-tail-recursive list
4574 + processing functions, which we hope will solve the problem. Please 
4575 + give it a try and let us know.
4576 +
4577 +<LI>Major additions to the documentation. 
4578 +
4579 + </UL>
4580 +Changes since 1.142:
4581 + <UL>
4582 +<LI>
4583 +
4584 +Major internal tidying and many small bugfixes.
4585 +
4586 +<LI>Major additions to the user manual.
4587 +
4588 +<LI>Unison can now be started with no arguments -- it will prompt
4589 +automatically for the name of a profile file containing the roots to
4590 +be synchronized. This makes it possible to start the graphical UI
4591 +from a desktop icon.
4592 +
4593 +<LI>Fixed a small bug where the text UI on NT was raising a 'no such
4594 + signal' exception.
4595 +
4596 + </UL>
4597 +Changes since 1.139:
4598 + <UL>
4599 +<LI>
4600 +
4601 +The precompiled windows binary in the last release was compiled
4602 +with an old OCaml compiler, causing propagation of permissions not to
4603 +work (and perhaps leading to some other strange behaviors we've heard
4604 +reports about). This has been corrected. If you're using precompiled
4605 +binaries on Windows, please upgrade.
4606 +
4607 +<LI>Added a <CODE>-debug</CODE> command line flag, which controls debugging
4608 +of various modules. Say <CODE>-debug XXX</CODE> to enable debug tracing for
4609 +module <CODE>XXX</CODE>, or <CODE>-debug all</CODE> to turn on absolutely everything.
4610 +
4611 +<LI>Fixed a small bug where the text UI on NT was raising a 'no such signal'
4612 +exception.
4613 +
4614 + </UL>
4615 +Changes since 1.111:
4616 + <UL>
4617 +<LI>
4618 +
4619 +<B>Incompatible change:</B> 
4620 +  The names and formats of the preference files in
4621 +the .unison directory have changed. In particular:
4622 +<UL>
4623 +<LI>
4624 +the file ``prefs'' should be renamed to default.prf
4625 +
4626 +<LI>the contents of the file ``ignore'' should be merged into
4627 + default.prf. Each line of the form <CODE>REGEXP</CODE> in ignore should
4628 + become a line of the form <CODE>ignore = REGEXP</CODE> in default.prf.
4629 +</UL>
4630 +
4631 +<LI>Unison now handles permission bits and symbolic links. See the
4632 +manual for details.<BR>
4633 +<BR>
4634 +
4635 +<LI>You can now have different preference files in your .unison
4636 +directory. If you start unison like this
4637 +<PRE>
4638 +             unison profilename
4639 +</PRE>
4640 +(i.e. with just one ``anonymous'' command-line argument), then the
4641 +file <CODE>~/.unison/profilename.prf</CODE> will be loaded instead of
4642 +<CODE>default.prf</CODE>. <BR>
4643 +<BR>
4644 +
4645 +<LI>Some improvements to terminal handling in the text user interface<BR>
4646 +<BR>
4647 +
4648 +<LI>Added a switch -killServer that terminates the remote server process
4649 +when the unison client is shutting down, even when using sockets for 
4650 +communication. (By default, a remote server created using ssh/rsh is 
4651 +terminated automatically, while a socket server is left running.)
4652 +
4653 +<LI>When started in 'socket server' mode, unison prints 'server started' on
4654 + stderr when it is ready to accept connections. 
4655 + (This may be useful for scripts that want to tell when a socket-mode server 
4656 + has finished initalization.)
4657 +
4658 +<LI>We now make a nightly mirror of our current internal development
4659 + tree, in case anyone wants an up-to-the-minute version to hack
4660 + around with.
4661 +
4662 +<LI>Added a file CONTRIB with some suggestions for how to help us
4663 +make Unison better.
4664 +
4665 + </UL>
4666 +<!--BEGIN NOTES document-->
4667 +<HR ALIGN=left WIDTH="50%"><DL>
4668 +<DT><A NAME="note1"></A><A HREF="#text1"><FONT SIZE=5>1</FONT></A><DD> If you are compiling Unison 2.7.7 or an earlier version, you need to
4669 +<UL>
4670 +<LI>
4671 +insert a line ``<TT>CAMLFLAGS+=-nolabels</TT> to the file named ``<TT>Makefile.OCaml</TT>'' in the source directory, and
4672 +
4673 +<LI>install LablGtk 1.1.1 instead of the latest version.
4674 +</UL>
4675 +
4676 +<DT><A NAME="note2"></A><A HREF="#text2"><FONT SIZE=5>2</FONT></A><DD> The Cygwin port (the <A HREF="#ssh-win">Installing Ssh on Windows</A> section) of openssh includes a ssh server program for the Windows
4677 + platform, but we have not yet tested Unison with this ssh server.</DL>
4678 +<!--END NOTES-->
4679 +<!--HTMLFOOT-->
4680 +<!--ENDHTML-->
4681 +
4682 +<!--FOOTER-->
4683 +<HR  SIZE=2>
4684 +<BLOCKQUOTE><EM>This document was translated from L<sup>A</sup>T<sub>E</sub>X by </EM><A HREF="http://para.inria.fr/~maranget/hevea/index.html"><EM>H</EM><EM><FONT SIZE=2><sup>E</sup></FONT></EM><EM>V</EM><EM><FONT SIZE=2><sup>E</sup></FONT></EM><EM>A</EM></A><EM>.
4685 +</EM></BLOCKQUOTE></BODY>
4686 +</HTML>
4687 +
4688 --- unison-2.9.1.orig/debian/unison-manual.ps
4689 +++ unison-2.9.1/debian/unison-manual.ps
4690 @@ -0,0 +1,6286 @@
4691 +%!PS-Adobe-2.0
4692 +%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
4693 +%%Title: unison-manual.dvi
4694 +%%Pages: 56
4695 +%%PageOrder: Ascend
4696 +%%BoundingBox: 0 0 612 792
4697 +%%EndComments
4698 +%DVIPSWebPage: (www.radicaleye.com)
4699 +%DVIPSCommandLine: dvips -o unison-manual.ps unison-manual.dvi
4700 +%DVIPSParameters: dpi=600, compressed
4701 +%DVIPSSource:  TeX output 2002.04.11:0113
4702 +%%BeginProcSet: texc.pro
4703 +%!
4704 +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
4705 +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
4706 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
4707 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
4708 +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
4709 +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
4710 +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
4711 +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
4712 +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
4713 +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
4714 +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
4715 +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
4716 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
4717 +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
4718 +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
4719 +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
4720 +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
4721 +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
4722 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
4723 +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
4724 +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
4725 +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
4726 +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
4727 +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
4728 +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
4729 +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
4730 +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
4731 +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
4732 +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
4733 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
4734 +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
4735 +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
4736 +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
4737 +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
4738 +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
4739 +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
4740 +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
4741 +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
4742 +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
4743 +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
4744 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
4745 +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
4746 +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
4747 +(LaserWriter 16/600)]{A length product length le{A length product exch 0
4748 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
4749 +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
4750 +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
4751 +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
4752 +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
4753 +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
4754 +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
4755 +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
4756 +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
4757 +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
4758 +
4759 +%%EndProcSet
4760 +TeXDict begin 40258431 52099146 1000 600 600 (unison-manual.dvi)
4761 +@start
4762 +%DVIPSBitmapFont: Fa cmmi10 10 2
4763 +/Fa 2 112 df<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A12
4764 +06120E5A5A5A12600A19798817>59 D<EC1FC0ECFFF8903807E07E90380F801F90393F00
4765 +0F80017E14C0491307484814E0485A4848EB03F0120F5B121F48481307A2127F90C7FCA2
4766 +150F5A4815E0A2151F16C0A248EC3F8016005D157E007E5C4A5A003E495A003F495A6C49
4767 +5A6C6C48C7FC3807E07E3801FFF038003F8024267DA428>111 D
4768 +E
4769 +%EndDVIPSBitmapFont
4770 +%DVIPSBitmapFont: Fb cmitt10 10 28
4771 +/Fb 28 121 df<003FB612804815C0B7FCA27E6C15802206769B2C>45
4772 +D<1738177C177E17FEEE01FC160317F8EE07F0EE0FE0A2EE1FC0EE3F80A2EE7F0016FEA2
4773 +4B5A4B5AA24B5A4B5A151F5E4B5A4BC7FCA215FE4A5AA24A5A4A5AA24A5A4A5A143F5D4A
4774 +C8FC14FEA2495A495AA2495A495AA2495A495A137F91C9FC13FE485AA2485A485AA2485A
4775 +485AA2485A48CAFC5A5A5A5A12702F417CB92C>47 D<15E0EC01F0A214031407140F141F
4776 +EC3FE0147FEB01FF133F4913C0A214DFEB3F1F01001380A2143FA21500A25CA2147EA214
4777 +FEA25CA21301A25CA21303A25CA21307A25CA2130FA25CA2131FA2007FB512C0B612E0A3
4778 +6C14C01C3477B32C>49 D<EC01FE91380FFFC0023F13F091B57E01038049EB03FE90390F
4779 +F800FF4948133FD93FC014804A131F49C713C0017E140F13FE5B12015BA20000151F90C8
4780 +1380A2163FEE7F005E4B5A4B5A150F4B5AED7FF0913801FFC002075BDA3FFEC7FCECFFFC
4781 +010313F04913C0011F90C8FCEB3FFCD97FE0EB07C0495A4890C7120F485AD807F8141F48
4782 +5A49EC3F80486C147FD9FF801400489038F001FEECFE074890B55A019F5CD87E015C26FE
4783 +007F13C0007C011F5B0078D903FCC7FC2A357CB32C>I<1338137E137F8080EB3FF0EB0F
4784 +F86D7E6DB4FC6D7F6D6C7EEC3FF06E7EEC07FC6EB4FC6E13809138007FC0ED3FE0ED1FF8
4785 +ED07FC1503150F151FED7FF8913801FFE00207138091381FFE004A5AECFFF0010313C001
4786 +0F90C7FCEB3FFCEBFFF84813E000071380D81FFEC8FCEA7FF8EAFFE05B90C9FC12FC1270
4787 +262A7AAD2C>62 D<ED0FC0ED1FE0153FA2157FA215FF15FBEC01F7A21403EDE7C0140715
4788 +C7140FA2EC1F87A2EC3F0FA2143E147EA214FCA2EB01F8A2EB03F0A2EB07E0A2EB0FC0A2
4789 +49B5FCA35BA290387E000F151F5BA248481480A2485AA212073A7FFC01FFF0486C4813F8
4790 +A36C486C13F025347DB32C>65 D<0107B512FC4914FF17C017E07F903A00FE001FF04A13
4791 +07EE03F8130116015CA21303EE03F05CA20107EC07E0EE0FC04A131FEE3F80010FEC7F00
4792 +ED03FE91B512F85E495C16F88291388001FE013FEB007FA291C77E178049141FA2137EA2
4793 +13FEEE3F005B5E0001157E16FE49495A4B5A0003EC0FF0ED3FE0007FB65AB75A93C7FC15
4794 +FC6C14E02D337EB22C>I<EB03F090380FFC7890383FFFFC5B90B5FC3801FE1F48486C5A
4795 +EA07F8380FF00713E0D81FC05B1380123F1300485C127EA2140F12FE485CA291381FC180
4796 +ED87E0143FA2EC7F8F9138FF0FC05B6C5AD87E07EB1F80D87F0F133F6CB612006C13DFEC
4797 +8FFE3907FE07FC3901F801F0232476A32C>97 D<EA7FF8487EA3127F12015BA21203A25B
4798 +A21207A25BEBE1FC380FE7FF90B5128015C015E048130F9038FC07F0EBF8039038F001F8
4799 +EA3FE013C01380A2EA7F00A2127EA2140312FE4814F0A2140715E0140F15C0141FEC3F80
4800 +EC7F00007E5B387F01FE383F87FCEBFFF86C5B6C13C06C90C7FCEA01FC1D3375B22C>I<
4801 +EC7F80903803FFE0010F13F8013F13FC5B9038FFC1FE3801FE003803FC01EA07F8EA0FF0
4802 +01E013FCEA1FC0393F80007090C8FCA2127EA312FE5AA77E007E141C007F143E6C6C13FE
4803 +EBC00F6CB5FC6C14FC6C14F0000114C039007FFE001F2475A32C>I<913803FF804A13C0
4804 +A380EC001F1680A2153FA21600A25DA2157EEB03F090380FFCFEEB3FFF495B90B5FC3801
4805 +FE1F3803FC0FD807F85B380FF00713E0EA1FC001805B123F13005A007E5CA2140F12FE48
4806 +5CA291381FC180EDC7E0EC3F87A2EC7F8F02FF13C049130F6C5AD87E07EB1F80D87F0F13
4807 +3F6CB612006C13DFEC8FFE3907FE07FC3901F801F0233376B22C>I<147F903803FFC001
4808 +0F13F0013F13F84913FCEBFFC13801FE004848137E485AD80FE013FE15FC485A383F8001
4809 +90380007F848133F90B512F015E01580B5EAFE0014F000FCC8FCA6127E151C007F143E6C
4810 +6C13FEEBC00F6CB5FC6C14FC6C14F0000114C039007FFE001F2475A32C>I<ED03FCED1F
4811 +FF4B13C05D17E0EDFE1F15FCA30201EB0FC09238F8078093C7FCA40103B512F8825B7F5E
4812 +90260007F0C7FC5DA5140F5DA5141F5DA5143F92C8FCA45C147EA514FE5CA313015CA313
4813 +03001C5B127F130700FF5B130F495AEBFF807E6C90C9FCEA1FFCEA07F02B457DB22C>I<
4814 +EC07F091381FFC7891387FFEFC49B5FC5B903807FC3F90380FF01F90391FE00FF8ECC007
4815 +EB3F80EB7F00017E14F013FE5B12014914E0A2150F12034914C0A2151FA2ED3F80A2157F
4816 +15FF4A13006C6C5A6D5A3800FE1F90B55A7F7FEB1FFC903807F0FC90C7FC1401A25DA214
4817 +03A25D003C1307007E495AB4131F4A5A49B45A90B5C7FC5C6C13F86C13E0000F90C8FC26
4818 +367BA32C>I<EA07FF487FA37EEA003F91C8FCA25BA2137EA213FEA25BEC3FC00001EBFF
4819 +F090B57E81A248EBF0FEECC07E14005B12075B5BA2484813FE5D5BA2381FC0015DA2EB80
4820 +03003FECF03016FCEB000715E04814E1020F13F8007E14C1EDC3F000FE14C7EDCFE04814
4821 +FF6E13C0168048903803FE000070EB00FC263379B22C>I<140FEC1F80EC3FC0A4EC1F80
4822 +EC0F0091C7FCA8133FEBFFC0000313F05A487FEA1FE1EA3FC11381EA7F01127EEAFE0300
4823 +FC5B13075C1200130F5C131FA25C133FEC0060EC01F8137F137EEBFE0301FC13F01407EC
4824 +0FE0141FEC3FC090B512806D13005CEB1FF8EB07E01D3475B32C>I<EA7FFFB51280A37E
4825 +EA003F1400A25BA2137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA25BA2
4826 +121FA25BA2003F1318147E1300A24813FE14FC127EEB01F81303387F87F0EA3FFF6C13E0
4827 +6C13C06C1300EA01FE173370B22C>108 D<D9707E137E903A79FF81FF8090B500C713C0
4828 +15CF92B512E002C313C348018313830203EB03F001FE13FE01FC01FC13E0120301F813F8
4829 +A29039F007F007000716C0A201E013E0000F010F130F01C001C01380A2001F011F131F01
4830 +8001801300A25E003F013F133E01001300167E167C485B007E137EA2167F00FE13FE4849
4831 +EB3F80170000780178130F2C247DA32C>I<3901F007F03907F81FFC390FFC7FFE486CB5
4832 +FC48B6128090383FFE1F14F8007E13F014E0EB7FC012FE00FC1380140049133FC6481400
4833 +A348485B157EA24913FE0003ECFC18167EEBF00115F8000715FE020313FC01E013F015F1
4834 +000F15F8EDF3F001C013FF6E13E016C0496C13806CC7EA3E0027247AA32C>I<14FE9038
4835 +07FF80011F13E04913F090B5FC48EB83F83903FE01FCEBF800485A4848137E485AA2485A
4836 +90C7FC5A127EA215FE12FE4814FCA2140115F81403EC07F0A2EC0FE0007EEB1FC0EC3F80
4837 +007F13FFD83F8313006CB45A14F86C5B000313C0C648C7FC1F2476A32C>I<903907C00F
4838 +C090391FF03FF090393FF8FFFCEB7FFD91B57E9039FE7FF87F01FC497ED801F801E01380
4839 +EDC01FECFF8000031400495AA2EBF1FCEA00015CA20103143FA24A1400A201075C167E16
4840 +FE5E010F13014B5A15076E485A011F495A6E485A91B55A93C7FC495BEC9FF8EC07E091C9
4841 +FC5BA2137EA213FEA25BA21201A25BA2387FFFE0A2B57E6C5BA2293680A32C>I<D801F8
4842 +EBFF802607FE0313E0260FFF0F13F848019F13FC91B512FED83F9F138190390FFE007E00
4843 +7E49137F4A13FF49485A12FC9138E000FE16FC49481378000015005CA249C8FCA3137E13
4844 +FEA25BA21201A25BA21203A25BA35B6C5A282479A32C>114 D<ECFFE0010713FC011F7F
4845 +497F4914809038FF807FEBFC00485A5BA20003EC3F00151C6C6C90C7FC13FEEBFFF86C13
4846 +FF6D13C0011F13F001077F9038003FFC1401EC007EA2001C143E127F157E48147C15FC14
4847 +0148495A39FF803FF06CB55A6C5C6C5C000749C7FCC613E0212478A32C>I<EB01E0497E
4848 +A31307A25CA2130FA25CA2131FA25C007FB5128015C0B6FC7E1580C66CC7FCA2137EA213
4849 +FEA25BA21201A25BA21203A25BA2000714C0EC03F013E0A2000F1307EC0FE0EBC01FEC3F
4850 +C0EC7F809038E1FF006CB45A5C6C5B6C13E06C6CC7FC1C3374B22C>I<01F8EB01C0D803
4851 +FEEB03E0486C13075A481380D83F9F130F131F007F15C0127E013F131F00FE130000FC15
4852 +805B017E133F120001FE14005B5D120149137EA2EDFE180003157E9038F001FCA2140316
4853 +FE913807F8FC140F9038F81FF92601FC3F13F890B6FC6C15F090397FFE7FE090393FF83F
4854 +C090390FE00F8027247AA32C>I<017E14F03901FF8001000701C013F85A4813E001C714
4855 +FCD83F8713001307007F1401007E15F8EAFE0F00FC13C0131FEC8003000015F0133F1400
4856 +15074914E0137EA2ED0FC013FE49131F1680A2ED3F005D017E137E5DEB7F836DB45A6D5B
4857 +6D5B6D1380D900FEC7FC26247AA32C>I<003C903803800E003FECC01F267F8007EB3F80
4858 +123F01C0141F0007130F1580A3141F000F020013001380A2001F495BD9003E133E5A123E
4859 +027E137E007E157C007C137CA202FC13FC00FC5D485B010113015EA20103130300FC01FC
4860 +5BD87C0713073A7E0FFE0FC0007FB6FC6C01BF5B6C011F90C7FC6C486C5A3903F803F829
4861 +2479A32C>I<90391FC01F809039FFF07FE0489038F9FFF8000790B5FC4815FCD81FF013
4862 +F03A3FC07FE07E9039803FC0FED87F001381007E148300FE140348EC01FC16F891387F00
4863 +F0C71400147EA214FEA25CA201011418001E157E003F5B127F018314FE00FF15FC010313
4864 +01D8FE07EB03F839FC0FFC073A7E1FFE1FF0007FB612E06C15C0023F1300390FFC1FFE39
4865 +03F007F027247AA32C>I E
4866 +%EndDVIPSBitmapFont
4867 +%DVIPSBitmapFont: Fc cmtt8 8 23
4868 +/Fc 23 116 df<EB0780497EAB007FB512F8B612FCA46C14F839000FC000AB6D5A1E1E7E
4869 +A223>43 D<007FB51280B612C0A46C14801A067C9623>45 D<123E127FEAFF80A5EA7F00
4870 +123E0909738823>I<007FB512F8B612FCA4003F14F8C9FCA6003FB512F8B612FCA46C14
4871 +F81E127E9C23>61 D<EB0FC0A2497EA4EB3CF0A5EB7CF8A3EB7878EBF87CA548487EA400
4872 +03133F497EA290B5FCA2481480A3EBC00F000F14C0EB8007A3397FF03FF800FF14FCA300
4873 +7F14F81E2A7EA923>65 D<90380FE0E090383FF9F0EBFFFD4813FF5A3807FC3F380FF00F
4874 +381FC007A2383F80031300481301127EA2007CEB00E000FC1400A25AA97EA2127C007E14
4875 +E0EC01F0127F7EEB8003EA1FC0EC07E0380FF00F3907FC1FC06CB512806C14006C5BEB3F
4876 +F8EB0FE01C2B7DA923>67 D<007FB512FCB612FEA37E3907C0003EA5151C1500A3140E14
4877 +1FA390B5FCA5EBC01FA3140E91C7FCA9EA7FFEB5FCA36C5A1F297FA823>70
4878 +D<90381FC1C090387FF3E090B5FC12035AEBF83F380FE01F381FC00F1380003F13071300
4879 +007E1303A3007CEB01C000FC90C7FCA25AA6EC7FF815FCA27E15F8007CEB03E0127E1407
4880 +A27EEB800F121FEBC01FEA0FE03807F87F90B5FC7EC613FB90387FF1C090381FC0001E2B
4881 +7EA923>I<EA7FFEB5FCA36C5AEA07C0B3A6157CA7007FB512FCB6FCA36C14F81E297EA8
4882 +23>76 D<39FF8001FFA26D5AA3391EE00778A3EBF00FEB700EA2EB781EA2EB381CEB3C3C
4883 +A2EB1C38EB1E78A2EB0E70A3EB07E0A3EB03C0A290C7FCA939FFC003FFA520297FA823>
4884 +I<3803FFF0000F13FC487F487FA2397F807F80387E001F007C130FA200FC14C0481307B3
4885 +A46C130FA2007C1480A2007E131F387F807F6CB51200A26C5B6C5B000313F01A2B7CA923
4886 +>79 D<9038FF83800003EBE3C04813FF121F5AEA7FC0EB003F00FE131F48130FA25A1407
4887 +A26CEB038091C7FC127E127FEA3FF06CB4FC6C13F06C13FC00017F39001FFF80010113C0
4888 +EB001FEC0FE01407EC03F0A20070130112F8A36C1303A26CEB07E06C130F9038E03FC090
4889 +B5FC15005C00F15B38703FE01C2B7DA923>83 D<3803FF80000F13E04813F8487F80EB80
4890 +FFEC3F80381F001FC7FC140F14FF137F0003B5FC120F5A387FF00F130012FCA25A141F7E
4891 +6C133F387F81FF90B512FC6C14FE7E000713C73901FE01FC1F1D7D9C23>97
4892 +D<B47E7FA41207A7EBC1FCEBC7FF01DF13C090B512E015F09038FE0FF8EBF8039038F001
4893 +FCEBE000A249137EA2153EA5157E7F15FC7F14019038F803F89038FE0FF090B5FC15E001
4894 +DF138001CF1300380383F81F297FA823>I<EB3FC0EBFFF800037F4813FF481480381FF0
4895 +7F393F801FC0EB000F007E130715E05AB6FCA415C000F8C8FC7EA2007EEB01C0007FEB03
4896 +E0383F800713E0391FF81FC06CB5FC6C14800001EBFE006C6C5AEB1FE01B1D7D9C23>
4897 +101 D<147F903801FFC0010713E05B5BEB3FCF140F90383E07C091C7FCA4007FB51280B6
4898 +12C0A36C1480D8003EC7FCB3383FFFFE487FA36C5B1B297EA823>I<133813FEA5133890
4899 +C7FCA6EA7FFC487EA3127FEA003EB3387FFFFEB6FCA36C13FE182A7AA923>105
4900 +D<EA7F80487EA3127F1203A7ECFFFC13C1A313C0EC3F00147E5CEBC1F8EBC3F0EBC7E0EB
4901 +CFC0EBDFE0EBFFF0A2EBFCF8497EEBF07EEBE03E497E1580EC0FC01407EC03E0397FFE0F
4902 +FFB55AA36C487E20297FA823>107 D<EA7FFEB5FCA37EEA001FB3AD007FB512C0B612E0
4903 +A36C14C01B297CA823>I<397E1F01F039FF7FC7FC9038FFEFFE14FF6C80390FE1FE1FEB
4904 +C1FC01C07FEB80F8A2EB00F0AE3A7FE3FE3FE026FFF3FF13F0A3267FE3FE13E0241D819C
4905 +23>I<38FF81FCEBC7FF01DF138090B512C0A23907FE0FE0EBF807EBF00313E0A313C0AD
4906 +39FFFE1FFF5CA380201D7F9C23>I<133F3801FFE0487F487F487F381FC0FE383F807F38
4907 +3E001F007E1480007C130F00FC14C0481307A66C130FA2007C1480007E131F6CEB3F006D
4908 +5A381FE1FE6CB45A6C5B6C5B6C5BD8003FC7FC1A1D7C9C23>I<3801FF9C000F13FE5A12
4909 +7FA2EAFF0000FC137E48133EA26C131C6C1300EA7FF0383FFF80000F13E06C13F838007F
4910 +FCEB01FEEB007F0070133F00F8131F7E143F7E38FF80FFEBFFFE14FC14F814F000701380
4911 +181D7B9C23>115 D E
4912 +%EndDVIPSBitmapFont
4913 +%DVIPSBitmapFont: Fd cmsy8 8 1
4914 +/Fd 1 16 df<EB7F803801FFE0000713F8487F487F487FA2481480A2B612C0A86C1480A2
4915 +6C1400A26C5B6C5B6C5B000113E038007F801A1A7C9D23>15 D E
4916 +%EndDVIPSBitmapFont
4917 +%DVIPSBitmapFont: Fe cmr8 8 43
4918 +/Fe 43 122 df<14FF010713E090381F80F090383E003849137C4913FC485A1203491378
4919 +153092C7FCA7157CB612FCA23803E000157CB3A5486C13FE3A7FFF0FFFE0A2232F7FAE27
4920 +>12 D<003C13F0387E01F838FF03FCA2EB83FEA2EA7F81383D80F600011306A30003130E
4921 +EB000CA248131C00061318000E13384813704813E0387001C00060138017157EAD23>34
4922 +D<13031307130E131C1338137013F0EA01E013C01203EA0780A2EA0F00A2121EA35AA45A
4923 +A512F8A25AAB7EA21278A57EA47EA37EA2EA0780A2EA03C0120113E0EA00F01370133813
4924 +1C130E1307130310437AB11B>40 D<12C07E12707E7E7E120FEA0780120313C0EA01E0A2
4925 +EA00F0A21378A3133CA4131EA5131FA2130FAB131FA2131EA5133CA41378A313F0A2EA01
4926 +E0A2EA03C013801207EA0F00120E5A5A5A5A5A10437CB11B>I<123C127EB4FCA21380A2
4927 +127F123D1201A312031300A25A1206120E5A5A5A126009157A8714>44
4928 +D<123C127E12FFA4127E123C08087A8714>46 D<130C133C137CEA03FC12FFEAFC7C1200
4929 +B3B113FE387FFFFEA2172C7AAB23>49 D<EB7F803801FFF0380780FC380E003F48EB1F80
4930 +48EB0FC05A0060EB07E012F000FC14F07E1403A3007C1307C7FCA215E0140F15C0141F15
4931 +80EC3F00147E147C5C495A495A495A495A011EC7FC5B5B4913305B485A4848136048C7FC
4932 +000E14E0001FB5FC5A4814C0B6FCA21C2C7DAB23>I<1230123C003FB512F8A215F05A15
4933 +E039700001C000601480140348EB0700140E140CC7121C5C143014705C495AA2495AA249
4934 +C7FCA25B130E131EA2133EA3133C137CA413FCA913781D2E7CAC23>55
4935 +D<4A7E4A7EA34A7EA24A7EA3EC1BF81419A2EC30FCA2EC70FEEC607EA24A7EA349486C7E
4936 +A2010380EC000FA201066D7EA3496D7EA2011FB57EA29038180001496D7EA349147EA201
4937 +E0147F4980A20001ED1F801203000716C0D80FF0EC3FE0D8FFFC0103B5FCA2302F7EAE35
4938 +>65 D<DA1FF013C09138FFFE01903903F00F8390390F8001E3013FC71277017C143F4848
4939 +141F4848140F48481407A248481403121F491401123F90C8FC481500A300FE1600AB127F
4940 +17C0A27E7F001F15016D1580120F6C6C1403EE07006C6C14066C6C140ED8007C5C013F14
4941 +7890390F8001E0903903F00FC0902600FFFEC7FCEC1FF02A2F7CAD33>67
4942 +D<DA1FF013C09138FFFE01903903F00F8390390F8001E3013FC71277017C143F4848141F
4943 +4848140F48481407A248481403121F491401123F90C8FC481500A300FE1600A992381FFF
4944 +FEA2007F9138001FE0EE0FC0A27E7F121F7F120F6C7EA26C7E6C6C141FEA007C013F143F
4945 +D90F8013F3903903F007C10100B51200DA1FF813002F2F7CAD37>71
4946 +D<B512F0A23803FC006C5AB3B3A3487EB512F0A2142D7EAC19>73
4947 +D<B512F8A2D803FCC8FC6C5AB3A7160CA41618A41638A2167816F81501ED07F00003141F
4948 +B7FCA2262D7EAC2C>76 D<90383F80303901FFF0703807C07C390F000EF0001E13074813
4949 +034813011400127000F01470A315307EA26C1400127E127FEA3FE013FE381FFFE06C13FC
4950 +6C13FF00011480D8003F13E013039038003FF0EC07F81401140015FC157C12C0153CA37E
4951 +A215787E6C14706C14F06CEB01E039F78003C039E3F00F0038E07FFE38C00FF01E2F7CAD
4952 +27>83 D<007FB712F8A29039000FC003007C150000701638A200601618A200E0161CA248
4953 +160CA5C71500B3A94A7E011FB512E0A22E2D7EAC33>I<B539F003FFFCA2D803FCC7EA3F
4954 +C06C48EC0F001606B3AB160E0000150C7F161C017C1418017E14386D5C6D146090390F80
4955 +01E0903907E00380902601F80FC7FC9038007FFCEC0FF02E2E7DAC35>I<B53C801FFFF0
4956 +01FFF8A22707FC000190C7EA3FC0D803F06D48EC1F00047E140EA26C6C027F140CA26D17
4957 +1C0000DBDF801318A26D1738017E9026018FC01330A2017F17706D90260307E01360A202
4958 +8016E0011F90260603F05BA202C01501010F90260C01F85BA202E01503010790261800FC
4959 +90C7FCA202F05D010349EB7E06A202F8150E010149EB3F0CA202FC151C010049EB1F98A2
4960 +02FE15B8DA7F80EB0FF0A2023F5D92C71207A26E5D021E1403A2020E5D020C1401452E7F
4961 +AC48>87 D<EAFFE0A3EAE000B3B3B3A7EAFFE0A30B4379B114>91
4962 +D<0003130C48131C000E13384813704813E0003013C0EA700100601380A2EAE00300C013
4963 +00A300DE137800FF13FCEB83FEA2EA7F81A2383F00FC001E1378171577AD23>I<EAFFE0
4964 +A31200B3B3B3A712FFA30B437FB114>I<13FF000713C0380F01F0381C00F8003F137C80
4965 +A2143F001E7FC7FCA4EB07FF137F3801FE1FEA07F0EA1FC0EA3F80EA7F00127E00FE1406
4966 +5AA3143F7E007E137F007FEBEF8C391F83C7FC390FFF03F83901FC01E01F207D9E23>97
4967 +D<EA07C012FFA2120F1207AC14FE9038C7FF809038CF03E09038DC01F09038F8007C4913
4968 +7E49133E497F1680A2150F16C0A9ED1F80A216005D6D133E6D5B01B05B9038BC01F09038
4969 +0E07E0390607FF80260001FCC7FC222F7EAD27>I<EB1FE0EB7FFC3801F01E3803E00739
4970 +07C01F80EA0F80EA1F005A003EEB0F00007E90C7FCA2127C12FCA9127EA215C07E6C1301
4971 +01801380380FC0033907E007003801F03E38007FF8EB1FC01A207E9E1F>I<15F8141FA2
4972 +14011400ACEB0FE0EB7FF83801F81E3803E0073807C003380F8001EA1F00481300123E12
4973 +7EA25AA9127C127EA2003E13017EEB8003000F13073903E00EFC3A01F03CFFC038007FF0
4974 +90391FC0F800222F7EAD27>I<EB1F80EBFFF03803E0783807C03E380F801E381F001FEC
4975 +0F80123E007E130715C0127C12FCA3B6FCA200FCC8FCA5127EA2003E14C0123F6C130139
4976 +0F80038001C013003803E00F3801F03C38007FF8EB1FC01A207E9E1F>I<EB03F0EB0FFC
4977 +EB3E1EEB7C3F13F8EA01F0A23803E00C1400AAB512E0A23803E000B3A6487E387FFF80A2
4978 +182F7FAE16>I<013F13F89038FFC3FE3903E1FF1E3807807C000F140C391F003E00A200
4979 +3E7FA76C133EA26C6C5A00071378380FE1F0380CFFC0D81C3FC7FC90C8FCA3121E121F38
4980 +0FFFF814FF6C14C04814F0391E0007F848130048147C12F848143CA46C147C007C14F86C
4981 +EB01F06CEB03E03907E01F803901FFFE0038003FF01F2D7E9D23>I<EA07C012FFA2120F
4982 +1207AC14FE9038C3FF809038C703E09038DE01F013F8496C7EA25BA25BB2486C487E3AFF
4983 +FE1FFFC0A2222E7EAD27>I<EA0780EA0FC0EA1FE0A4EA0FC0EA0780C7FCA8EA07C012FF
4984 +A2120F1207B3A5EA0FE0EAFFFCA20E2E7EAD14>I<EA07C012FFA2120F1207ADEC1FFEA2
4985 +EC0FF0EC07C05D020EC7FC5C5C5C5CEBC3C013C7EBCFE0EBDFF013F9EBF0F8497EEBC07E
4986 +143E80816E7E14076E7E816E7E486C487E3AFFFE07FF80A2212E7EAD25>107
4987 +D<EA07C012FFA2120F1207B3B3A3EA0FE0EAFFFEA20F2E7EAD14>I<2607C07FEB07F03B
4988 +FFC3FFC03FFC903AC783F0783F3C0FCE01F8E01F803B07DC00F9C00F01F8D9FF8013C049
4989 +90387F000749137EA249137CB2486C01FEEB0FE03CFFFE0FFFE0FFFEA2371E7E9D3C>I<
4990 +3807C0FE39FFC3FF809038C703E0390FDE01F0EA07F8496C7EA25BA25BB2486C487E3AFF
4991 +FE1FFFC0A2221E7E9D27>I<EB1FE0EB7FF83801F03E3803C00F3907800780390F0003C0
4992 +4814E0003EEB01F0A248EB00F8A300FC14FCA9007C14F8A26CEB01F0A26CEB03E0A2390F
4993 +8007C03907C00F803901F03E0038007FF8EB1FE01E207E9E23>I<3807C0FE39FFC7FF80
4994 +9038CF03E0390FDC01F03907F800FC49137E49133E49133FED1F80A3ED0FC0A8151F1680
4995 +A2ED3F00A26D137E6D137C5D9038FC01F09038CE07E09038C7FF80D9C1FCC7FC01C0C8FC
4996 +A9487EEAFFFEA2222B7E9D27>I<380781F838FF87FEEB8E3FEA0F9CEA07B813B0EBF01E
4997 +EBE000A45BB0487EB5FCA2181E7E9D1C>114 D<3801FE183807FFB8381E01F8EA3C0048
4998 +1378481338A21418A27E7EB41300EA7FF06CB4FC6C13C06C13F0000113F838001FFC1301
4999 +38C0007E143EA26C131EA27EA26C133CA26C137838FF01F038E3FFC000C0130017207E9E
5000 +1C>I<1360A413E0A312011203A21207121FB512F0A23803E000AF1418A714383801F030
5001 +14703800F860EB3FE0EB0F80152A7FA81B>I<D807C013F800FF131FA2000F1301000713
5002 +00B21401A314033803E007EC0EFC3A01F81CFFC038007FF890391FE0F800221F7E9D27>
5003 +I<3AFFFC01FFC0A23A0FE0007E000007147C15380003143015706C6C1360A26C6C5BA390
5004 +387C0180A26D48C7FCA2EB3F07EB1F06A2EB0F8CA214DCEB07D8A2EB03F0A36D5AA26D5A
5005 +221E7F9C25>I<3BFFFC3FFE07FFA23B0FE003F001F801C09038E000F00007010114E081
5006 +2603E00314C0A2913807F8012701F006781380A29039F80E7C030000D90C3C1300A29039
5007 +7C181E06A2151F6D486C5AA2168C90391F600798A216D890390FC003F0A36D486C5AA36D
5008 +C75A301E7F9C33>I<3AFFFC01FFC0A23A0FE0007E000007147C1538000314306D137000
5009 +011460A26C6C5BA2EBFC01017C5BEB7E03013E90C7FCA2EB1F06A2148EEB0F8CA2EB07D8
5010 +A2EB03F0A36D5AA26D5AA2495AA2130391C8FC1278EAFC06A25B131CEA7838EA7070EA3F
5011 +E0EA0F80222B7F9C25>121 D E
5012 +%EndDVIPSBitmapFont
5013 +%DVIPSBitmapFont: Ff cmr6 6 2
5014 +/Ff 2 51 df<13E01201120712FF12F91201B3A7487EB512C0A212217AA01E>49
5015 +D<EA01FC3807FF80381C0FC0383003E0386001F0EB00F812F86C13FCA2147C1278003013
5016 +FCC7FC14F8A2EB01F0EB03E014C0EB0780EB0F00131E13385B5B3801C00CEA0380380600
5017 +185A5A383FFFF85AB512F0A216217CA01E>I E
5018 +%EndDVIPSBitmapFont
5019 +%DVIPSBitmapFont: Fg cmr7 7 2
5020 +/Fg 2 51 df<13381378EA01F8121F12FE12E01200B3AB487EB512F8A215267BA521>49
5021 +D<13FF000313E0380E03F0381800F848137C48137E00787F12FC6CEB1F80A4127CC7FC15
5022 +005C143E147E147C5C495A495A5C495A010EC7FC5B5B903870018013E0EA018039030003
5023 +0012065A001FB5FC5A485BB5FCA219267DA521>I E
5024 +%EndDVIPSBitmapFont
5025 +%DVIPSBitmapFont: Fh cmbx12 12 61
5026 +/Fh 61 123 df<ED0FFF4AB512C0020F14F0027F80903A01FFF803FC499038C000FE010F
5027 +EB00034948497E49485B5C495A4C138001FF6E13005CA3705AEE01F893C8FCA74BB51280
5028 +B9FCA5C69038E00003B3B0007FD9FFC1B6FCA538467EC53E>12 D<ED0FFF4AB5EAEF8002
5029 +0F14FF147F903901FFF807491380010F495A495A495A5C495A8213FF4A7FADB9FCA5C690
5030 +38E00003B3B0007FD9FFC1B6FCA538467EC53E>I<B612F8A91D097F9A25>45
5031 +D<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA3FF8EA1FF0EA07C00F0F788E1F>I<
5032 +EC3FF849B5FC010F14E0013F14F890397FF01FFC9039FFC007FE4890380001FF48486D13
5033 +80000716C049147F000F16E049143F001F16F0A2003F16F8A249141F007F16FCA600FF16
5034 +FEB3A3007F16FCA56C6CEC3FF8A3001F16F0A2000F16E06D147F000716C06D14FF6C6C49
5035 +13806C6D4813006C6D485A90397FF01FFC6DB55A010F14E0010314809026003FF8C7FC2F
5036 +427CC038>48 D<EC03C01407141F147FEB03FF133FB6FCA413C3EA0003B3B3ADB712FCA5
5037 +264177C038>I<ECFFE0010F13FE013F6D7E90B612E0000315F82607FC0313FE3A0FE000
5038 +7FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E13F07F17F881A46C5A6C
5039 +5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A5E4B5A4B5A4A90C7FC4A
5040 +5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E014F0495A495A49C8FC01
5041 +7C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC038>I<ECFFF0010713FF
5042 +011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E81D80FF86D138013FE001F16C0
5043 +7FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A5B020F1380902607FFFEC7FC15
5044 +F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017E0A26F13F0A217F8A3EA0FC0EA
5045 +3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F80491380D81FF0491300D80FFE
5046 +EBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E02D427BC038>I<163FA25E5E5D
5047 +5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F07143E147E147C14F8EB
5048 +01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A120F5B48C7FC123E5A12
5049 +FCB91280A5C8000F90C7FCAC027FB61280A531417DC038>I<0007150301E0143F01FFEB
5050 +07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAAEC3FF001C1B5FC01C714
5051 +C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D13804915C0497F6C4815E0C8FC
5052 +6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815E05B007EC74813C0123E
5053 +003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB612F0C65D013F1480010F01FC
5054 +C7FC010113C02D427BC038>I<4AB47E021F13F0027F13FC49B6FC01079038807F809039
5055 +0FFC001FD93FF014C04948137F4948EBFFE048495A5A1400485A120FA248486D13C0EE7F
5056 +80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000FF017F13E091B512F89039F9F0
5057 +1FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13E0A24915F0A317F85BA4127FA5
5058 +123FA217F07F121FA2000F4A13E0A26C6C15C06D4913806C018014006C6D485A6C9038E0
5059 +1FFC6DB55A011F5C010714C0010191C7FC9038003FF02D427BC038>I<121E121F13FC90
5060 +B712FEA45A17FC17F817F017E017C0A2481680007EC8EA3F00007C157E5E00785D15014B
5061 +5A00F84A5A484A5A5E151FC848C7FC157E5DA24A5A14035D14074A5AA2141F5D143FA214
5062 +7F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F447AC238>I<EC7FF00103B5FC
5063 +010F14C0013F14F090397F801FFC3A01FC0003FE48486D7E497F4848EC7F80163F484815
5064 +C0A2001F151FA27FA27F7F01FE143F6D158002C0137F02F014006C01FC5B6E485A6C9038
5065 +FF83FCEDE7F86CECFFE06C5D6C92C7FC6D14C06D80010F14F882013F8090B7FC48013F14
5066 +802607FC0F14C0260FF80314E04848C6FC496D13F0003F141F48481307496D13F8150000
5067 +FF157F90C8123F161F160FA21607A36D15F0127F160F6D15E06C6C141F6DEC3FC06C6CEC
5068 +7F80D80FFE903801FF003A07FFC00FFE6C90B55AC615F0013F14C0010F91C7FC010013F0
5069 +2D427BC038>I<EC7FF0903807FFFE011F6D7E017F14E09039FFE03FF0489038800FF848
5070 +496C7E48488048486D7E001F80003F1680A2484815C08117E0A212FF17F0A617F8A45D12
5071 +7FA3003F5CA26C7E5D6C6C5B12076C6C133E6CEBC07C6CEBFFF8013F5B010F01C013F001
5072 +01130090C8FCA217E05DA2EA03C0D80FF015C0487E486C491380A217004B5A150F5E4949
5073 +5A6C48495A01C0EBFFE0260FF0035B6CB65A6C4AC7FC6C14F86C6C13E0D907FEC8FC2D42
5074 +7BC038>I<903807FFC0013F13FC48B612804815E0260FF80013F0D81FC0EB3FF848C7EA
5075 +1FFC4815FE01C0130F486C14FF7FA66C485B6C4814FE000FC7FCC8EA3FFCED7FF8EDFFF0
5076 +4A13E04A13801600EC07FC4A5A5D4A5A5D4A5A92C7FCA2147E147CA31478AA91C8FCA814
5077 +F8EB03FE497E497FA2497FA56D5BA26D90C7FC6D5AEB00F828467AC535>63
5078 +D<EE1F80A24C7EA24C7EA34C7EA24B7FA34B7FA24B7FA34B7F169F031F80161F82033F80
5079 +ED3E07037E80157C8203FC804B7E02018115F0820203814B137F0207815D173F020F814B
5080 +7F021F8292C77EA24A82023E80027E82027FB7FCA291B87EA2498302F0C8FCA20103834A
5081 +157F0107834A153FA249488284011F8491C97E4984133E017E82B6020FB612F0A54C457C
5082 +C455>65 D<B9FC18F018FE727E19E026003FFCC700077F05017F716C7E727E727EA27213
5083 +80A37213C0A74E1380A24E1300A24E5A4E5A4E5A4D5B05075B94B5128091B700FCC7FC18
5084 +F018FF19E002FCC7000113F8716C7EF01FFE727E7213801AC07213E0A27213F0A31AF8A7
5085 +1AF0A2601AE0604E13C0604E138095B5120005075BBA12F86119C04EC7FC18E045447CC3
5086 +50>I<DCFFF01470031F01FF14F04AB6EAE0010207EDF803023FEDFE0791B539E001FF0F
5087 +4949C7EA3F9F010701F0EC0FFF4901C0804990C87E4948814948814948167F4849163F48
5088 +49161F5A4A160F485B19074890CAFC19035A5BA2007F1801A34994C7FC12FFAE127F7F1A
5089 +F0A2123FA27F6C18011AE06C7F19036C6D17C06E16077E6C6DEE0F806C6DEE1F006D6C5E
5090 +6D6C167E6D6C6C5D6D6D4A5A6D01F0EC07F0010101FEEC1FE06D903AFFF001FF80023F90
5091 +B6C7FC020715FC020115F0DA001F1480030001F8C8FC44467AC451>I<B9FC18F018FE72
5092 +7E19E026003FFEC7001F13F805017F9438003FFF060F7F727F727F727F84737E737EA273
5093 +7EA2737EA21B80A2851BC0A51BE0AD1BC0A51B8061A21B006162193F624F5A19FF624E5B
5094 +06075B4E5B063F90C7FC4DB45A050F13F8BA5A19C04EC8FC18F095C9FC4B447CC356>I<
5095 +BA12F8A485D8001F90C71201EF003F180F180318011800A2197E193EA3191EA21778A285
5096 +A405F890C7FCA316011603161F92B5FCA5ED001F160316011600A2F101E01778A2F103C0
5097 +A494C7FC1907A21A80A2190FA2191FA2193FF17F0061601807181F4DB5FCBBFC61A44344
5098 +7DC34A>I<BA1280A419C026003FFEC7121F1701EF007F183F181F180F180719E01803A3
5099 +1801A3EE01E0F000F0A419001603A31607160F167F91B6FCA59138FE007F160F16071603
5100 +A31601A693C9FCAFB712F0A53C447CC346>I<DCFFF01470031F01FF14F04AB6EAE00102
5101 +07EDF803023FEDFE0791B539E001FF0F4949C7EA3F9F010701F0EC0FFF4901C0804990C8
5102 +7E4948814948814948167F4849163F4849161F5A4A160F485B19074890CAFC19035A5BA2
5103 +007F1801A34994C8FC12FFAD057FB612F0127F7FA3003FDC0001EBF000A27F7EA26C7FA2
5104 +6C7F807E6C7F6C7F6D7E6D6C5D6D6C7E6D6D5C6D01F05C010101FE143F6D903AFFF001FF
5105 +9F023F90B6120F0207EDFC030201EDF000DA001F02C01330030001FCC9FC4C467AC458>
5106 +I<B7D88003B612FEA526003FFEC9EBF800B3A791B9FCA54AC9FCB3AAB7D88003B612FEA5
5107 +4F447CC358>I<B712E0A5D8001F90C7FCB3B3B3A4B712E0A523447DC32A>I<B76C0103B5
5108 +12F8A526003FFEC93807E0004F5A4F5A077EC7FC614E5A4E5A4E5AF01F804EC8FC187E60
5109 +4D5AEF07F0EF0FC04D5A4DC9FC177E4C5AEE03F04C5A4C5A4C7EEE7FF04C7E5D4B7F4B7F
5110 +4B7FED3F3FDB7E1F7F03FC806E486C7F4B7E4B6C7F0380804B6C7F4A7F717E84717F8371
5111 +7F85717F83717F85717F187F727E86727F84727F86727F84B76C90B612FCA54E447CC358
5112 +>75 D<B712F0A526003FFECAFCB3B1F00780A4180F1900A460A360A2187EA218FE170117
5113 +031707171F177FEE03FFB95AA539447CC343>I<B500FE067FB512806E95B6FCA26F5EA2
5114 +D8003F50C7FC013D6DEE03DFA2013C6DEE079FA26E6CEE0F1FA26E6C161EA26E6C163CA3
5115 +6E6C1678A26E6C16F0A26E6DEC01E0A26E6DEC03C0A36E6DEC0780A26F6CEC0F00A26F6C
5116 +141EA26F6C5CA36F6C5CA26F6C5CA26F6D485AA26F6D485AA26F6D485AA3706C48C7FCA2
5117 +93383FF81EA2706C5AA2706C5AA3706C5AA2705BA2705BA2705BA2B6057FB6128071C7FC
5118 +A2173E171C61447CC36A>I<B9FC18F018FE727E19E0D8001F90C7000F7F05017F716C7E
5119 +727E727E721380A21AC084A21AE0A91AC0A24E1380A21A00604E5A4E5A4D485A050F5B92
5120 +B712C096C7FC18FC18C092CBFCB3A7B712E0A543447DC34D>80 D<923807FFC092B512FE
5121 +0207ECFFC0021F15F091267FFE0013FC902601FFF0EB1FFF010701C0010713C04990C700
5122 +017F49486E7F49486F7E49486F7E49486F7E48496F7E48496F1380A248496F13C0A24819
5123 +E091C97E4819F0A248487013F8A3007F19FCA249177FA300FF19FEAD007F19FCA36D17FF
5124 +003F19F8A3001F19F06D5EA26C19E06E01FE5B6C912603FF8014C06C6D486D4813804B13
5125 +E06C9028E01F83F00F13006C903BF01E00F81FFE90267FF83E90387C3FFC90263FFC3C6D
5126 +485AD91FFE91381EFFF0D90FFF021F5B6D01FE5D010194C7FC6D6D6CB45A023F90B512F8
5127 +020703E0130202006F1307030713C792C7EA07F8716C130F72131F9538FF80FF96B5FC71
5128 +14FEA3831AFCA27213F81AF0847213E07213C0721300F001FC48587AC454>I<B812F8EF
5129 +FFC018F818FE727ED8001F90C7003F13E005037F05007F727E727E727EA28684A286A762
5130 +A24E90C7FCA24E5A61187F943801FFF005075B053F138092B7C8FC18F818E018F892C77F
5131 +EF3FFF050F7F717F717FA2717FA2717FA785A61B0F85A2187F73131F72141EB700E06DEB
5132 +803E72EBE0FC72EBFFF8060114F0726C13E0CC0007138050457DC354>I<DAFFE0131C01
5133 +0701FE133C013F9038FF807C90B6EAE0FC4815F9489038801FFF3907FC00014848EB007F
5134 +4848143F4848140F491407007F15035B1601160012FF177CA27FA26D153C7F7F6D92C7FC
5135 +6C7EEBFFE014FE6CEBFFF015FF6C15E016FC6C816C6F7E6C826C826C6C81011F81010781
5136 +1300020F80140003077FED007F82040F1380828212F082A282A27EA218007EA26C5D6C5E
5137 +6D14036D5D6D140701F84A5A01FFEC3FF002F8EBFFE0486CB65AD8FC1F92C7FCD8F80714
5138 +FC48C614F0480107138031467AC43E>I<003FBA12E0A59026FE000FEB8003D87FE09338
5139 +003FF049171F90C71607A2007E1803007C1801A300781800A400F819F8481978A5C81700
5140 +B3B3A20107B8FCA545437CC24E>I<B76C010FB512F8A526003FFEC93803E000B3B3A901
5141 +1F17076280190F6D606F151F6D95C7FC6D6D5D197E6D6D5D6D6D1403DA7FFC4A5A6EB4EC
5142 +3FF0020F9039F003FFE06E90B61280020193C8FC6E6C14FC030F14E09226007FFEC9FC4D
5143 +457CC356>I<B792B6FCA526003FFECAEAFC00806D606F15016D608119036D606F15076D
5144 +606F150F6D6081191F6D6D93C7FC61027F163E6F157E023F167C8119FC6E6D5C18016E5E
5145 +7013036E5E8218076E6D5C180F6E5E70131F6E93C8FC705B037F143E82187E033F147C70
5146 +13FC6F5C17816F5C17C117C36F5C17E76F5C17FF6F5CA36F91C9FCA2705AA2705AA3705A
5147 +A2705AA2705AA250457EC355>I<B600FE017FB691B512FEA526007FFCC8D83FFEC9EA7C
5148 +006E82013F701778807415F86D705F6F7014016D705FA26F7014036D64814E6D14076D64
5149 +6F70140F6D041E94C7FCA26F023E6D5C6DDC3C7F151E81027F037C6D5CF0783F6F70147C
5150 +023F4B6C1578A26F01016F13F86E4B6C5D16806E02036F485A4E7E04C0EEE0036E4A486C
5151 +5DA2DCE00FEDF0076E4B6C5D16F06E4A6F48C8FC051E7F04F8705A6E4A027F131EA2DCFC
5152 +7CEDFE3E037F0178023F133C04FE16FF033F01F85E4D8004FF17F86F496E5BA36F496E5B
5153 +A26F604D80A26F90C86C5BA36F486F90C9FCA26F48167EA30478163C6F457EC374>I<B7
5154 +6C027FB5FCA5D8003F0180C9EAFC006D6D4B5AA26D6D4B5A6D6D4B5A816D4D5A6D6D4B5A
5155 +816D4DC7FC6E6C157E826E5E6E6D495A826E4B5A6E6D495A6E7F4E5A6E6D495A6E7F4EC8
5156 +FC6F6C137E6F1380606FEBC1F86F13E1EFF3F06FEBF7E06F13FF606F5C8195C9FC705A16
5157 +3FB3A592B77EA550447EC355>89 D<903801FFE0011F13FE017F6D7E48B612E03A03FE00
5158 +7FF84848EB1FFC6D6D7E486C6D7EA26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91
5159 +B6FC1307013F13F19038FFFC01000313E0000F1380381FFE00485A5B127F5B12FF5BA35D
5160 +A26D5B6C6C5B4B13F0D83FFE013EEBFFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB80
5161 +07D90FFCC9FC322F7DAD36>97 D<EB7FC0B5FCA512037EB1ED0FF892B57E02C314E002CF
5162 +14F89139DFC03FFC9139FF000FFE02FCEB03FF4A6D13804A15C04A6D13E05CEF7FF0A218
5163 +F8173FA318FCAC18F8A2177F18F0A3EFFFE06E15C06E5B6E491380027C491300496C495A
5164 +903AFC1FC07FFC496CB512F0D9F00314C049C691C7FCC8EA1FF036467DC43E>I<EC3FFC
5165 +49B512C0010F14F0013F14FC90397FF003FE9039FFC001FF0003495A48494813805B120F
5166 +485AA2485A6F1300007F6E5AED00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C14
5167 +07000F16806D140F6C6DEB1F006C6D133E6C01F05B3A007FFC03F86DB55A010F14C00103
5168 +91C7FC9038003FF82A2F7CAD32>I<EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC
5169 +010FEBFF8F013F14CF9039FFF807FF48EBC00148903880007F4890C7123F4848141F4914
5170 +0F121F485AA3127F5BA212FFAC127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91
5171 +B5FC6CD9C00314FC6C9038F01FEF6DB5128F011FEBFE0F010713F89026007FC0EBF80036
5172 +467CC43E>I<EC3FF80103B57E010F14E0013F8090397FF83FF89039FFC007FC48496C7E
5173 +48496C7E48486D1380485A001FED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FC
5174 +A401F0C9FCA5127FA27FA2123F17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F
5175 +806C01F0EB3F0090397FFE01FE011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD
5176 +33>I<EDFF80020F13E0027F13F049B512F849EB8FFC90390FFE0FFE90381FFC1F14F813
5177 +3FEB7FF0A2ED0FFCEBFFE0ED03F0ED00C01600ABB612F8A5C601E0C7FCB3B0007FEBFFE0
5178 +A527467DC522>I<DAFFE0137E010F9039FE03FF80013FEBFF8F90B812C048D9C07F133F
5179 +489038001FF84848EB0FFC4848903907FE1F80001F9238FF0F00496D90C7FCA2003F82A8
5180 +001F93C7FCA26D5B000F5D6C6C495A6C6C495A6C9038C07FF04890B55A1680D8078F49C8
5181 +FC018013E0000F90CAFCA47F7F7F90B612C016FC6CEDFF8017E06C826C16FC7E00038200
5182 +0F82D81FF0C77ED83FC014074848020113808248C9FC177FA46D15FF007F17006D5C6C6C
5183 +4A5A6C6C4A5AD80FFEEC3FF83B07FFC001FFF0000190B612C06C6C92C7FC010F14F8D900
5184 +7F90C8FC32427DAC38>I<EB7FC0B5FCA512037EB1ED07FE92383FFF8092B512E002C114
5185 +F89139C7F03FFC9138CF801F9139DF000FFE14DE14FC4A6D7E5CA25CA35CB3A7B60083B5
5186 +12FEA537457CC43E>I<137C48B4FC4813804813C0A24813E0A56C13C0A26C13806C1300
5187 +EA007C90C7FCAAEB7FC0EA7FFFA512037EB3AFB6FCA518467CC520>I<EB7FC0B5FCA512
5188 +037EB293387FFFE0A593380FE0004C5A4CC7FC167E5EED03F8ED07E04B5A4B5A037FC8FC
5189 +15FEECC1FCECC3FE14C7ECDFFF91B57E82A202F97F02E17F02C07FEC807F6F7E826F7E81
5190 +6F7F836F7F816F7F83707E163FB60003B512F8A535457DC43B>107
5191 +D<EB7FC0B5FCA512037EB3B3B3A3B61280A519457CC420>I<90277F8007FEEC0FFCB590
5192 +263FFFC090387FFF8092B5D8F001B512E002816E4880913D87F01FFC0FE03FF8913D8FC0
5193 +0FFE1F801FFC0003D99F009026FF3E007F6C019E6D013C130F02BC5D02F86D496D7EA24A
5194 +5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7CAC5E>I<90397F8007FEB590383FFF
5195 +8092B512E0028114F8913987F03FFC91388F801F000390399F000FFE6C139E14BC02F86D
5196 +7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>I<EC1FFC49B512C0010714F0011F14
5197 +FC90397FF80FFF9026FFC0017F48496C7F4848C7EA3FE000078248486E7E49140F001F82
5198 +A2003F82491407007F82A400FF1780AA007F1700A46C6C4A5AA2001F5E6D141F000F5E6C
5199 +6C4A5AA26C6C6CEBFFE06C6D485B27007FF80F90C7FC6DB55A010F14F8010114C0902600
5200 +1FFCC8FC312F7DAD38>I<90397FC00FF8B590B57E02C314E002CF14F89139DFC03FFC91
5201 +39FF001FFE000301FCEB07FF6C496D13804A15C04A6D13E05C7013F0A2EF7FF8A4EF3FFC
5202 +ACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913806E4913006E495A9139DFC07FFC02
5203 +CFB512F002C314C002C091C7FCED1FF092C9FCADB67EA536407DAC3E>I<DA3FE0131E90
5204 +2603FFFC133E010F01FF137E013F1480903AFFF80FE0FE489038E003F148EBC001489038
5205 +8000FB4890C7127F49143F001F151F485A160F5B127FA3485AAC6C7EA46C7EA26C6C141F
5206 +163F6C6C147F6C15FF6C6D5A6C9038E003EF6C9038F01FCF6DB5128F011FEBFE0F010313
5207 +F89038007FC091C7FCAD0307B512FCA536407CAC3B>I<90387F807FB53881FFE0028313
5208 +F0028F13F8ED8FFC91389F1FFE000313BE6C13BC14F8A214F0ED0FFC9138E007F8ED01E0
5209 +92C7FCA35CB3A5B612E0A5272D7DAC2E>I<90391FFC038090B51287000314FF120F381F
5210 +F003383FC00049133F48C7121F127E00FE140FA215077EA27F01E090C7FC13FE387FFFF0
5211 +14FF6C14C015F06C14FC6C800003806C15806C7E010F14C0EB003F020313E0140000F014
5212 +3FA26C141F150FA27EA26C15C06C141FA26DEB3F8001E0EB7F009038F803FE90B55A00FC
5213 +5CD8F03F13E026E007FEC7FC232F7CAD2C>I<EB01E0A51303A41307A2130FA2131FA213
5214 +3F137F13FF1203000F90B51280B7FCA4C601E0C7FCB3A3ED01E0A9150302F013C0137F15
5215 +0790393FF80F8090391FFC1F006DB5FC6D13FC01015B9038003FE023407EBE2C>I<D97F
5216 +C049B4FCB50103B5FCA50003EC000F6C81B3A85EA25EA25E7E6E491380017FD901F713FE
5217 +9138F807E76DB512C7010F1407010313FE9026007FF0EBFC00372E7CAC3E>I<B6903803
5218 +FFFCA5000101E09038003E006C163C80017F5D8017F8013F5D6E1301011F5D6E1303010F
5219 +5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F802
5220 +3F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578362C7EAB3B>I<B5
5221 +D8FE1FB539801FFFF0A500019027C0003FE0C7EA7C007114786E17F86C6F6C5C6E160101
5222 +7F6E6C5CA26E011F1403013F6F5C6E013F1407011F6F5CA26E0179140F010F048090C7FC
5223 +6E01F95C6D02F0EBC01E15806D902681E07F5B18E003C3157C6D9139C03FF07815E76DDA
5224 +801F5B18F803FF14F96E9039000FFDE018FF6E486D5BA36E486D5BA26E486D90C8FCA24B
5225 +7F02075DA26E48147C4B143C4C2C7EAB51>I<B500FE90383FFFF0A5C601F0903803E000
5226 +6D6C495A013F4A5A6D6C49C7FC6E5B6D6C137E6DEB807C6D6D5A6DEBC1F0EDE3E06DEBF7
5227 +C06EB45A806E90C8FC5D6E7E6E7F6E7FA24A7F4A7F8291381F3FFCEC3E1F027C7F4A6C7E
5228 +49486C7F01036D7F49487E02C08049486C7F49C76C7E013E6E7E017E141FB500E090B512
5229 +FCA5362C7EAB3B>I<B6903803FFFCA5000101E09038003E006C163C80017F5D8017F801
5230 +3F5D6E1301011F5D6E1303010F5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E163E6D
5231 +143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E5AA2
5232 +6E5AA21578A215F85D14015D001F1303D83F805B387FC007D8FFE05B140F92C9FC5C143E
5233 +495A387FC1F8EB07F06CB45A6C5B000790CAFCEA01FC36407EAB3B>I<001FB71280A490
5234 +26FC001F130001E0495A5B49495A90C7485A48495B123E4A5B4A5B003C495BA24A90C7FC
5235 +4A5A4A5AC7FC4A5A495B495BA2495B499038800780491300A2495A4948130F49481400A2
5236 +485B48495B485BA248495B4890C75A48485C15034848EB1FFEB7FCA4292C7DAB32>I
5237 +E
5238 +%EndDVIPSBitmapFont
5239 +%DVIPSBitmapFont: Fi cmti10 10 65
5240 +/Fi 65 125 df<04FFEB03F003039038E00FFC923A0FC0F01F1E923A3F00783E0F923A7E
5241 +01F87C3FDB7C03EBFC7F03FC14F8DA01F813F905F1137EDC01E1133C913B03F00003F000
5242 +A314074B130760A3140F4B130F60A3010FB812C0A3903C001F80001F8000A3023F143F92
5243 +C790C7FCA44A5C027E147EA402FE14FE4A5CA413014A13015FA313034A13035FA313074A
5244 +495AA44948495AA44948495AA3001CD9038090C8FC007E90380FC03F013E143E00FE011F
5245 +5B133C017C5C3AF8780F01E0D878F0EB07C0273FE003FFC9FC390F8000FC404C82BA33>
5246 +11 D<EE3FFC4BB51280923907E007C092391F8001E0DB3F0013F0037E13034B1307A24A
5247 +5A18E04A48EB038094C7FCA314075DA4140F5DA3010FB7FCA25F903A001F80007EA217FE
5248 +023F5C92C7FCA216015F5C147E16035FA214FE4A13075FA30101140F5F4AECC1C0A2161F
5249 +1783010316805CA2EF870013074A5CEE0F8EEE079EEE03FC010FEC00F04A91C7FCA35C13
5250 +1FA2001C90CAFC127E5BEAFE3E133C137CEAF878EA78F0EA3FE0EA0F80344C82BA2F>I<
5251 +EE7FE0923903FFFC7E92380FC03E92381F000F033EEB3FFE4B137F03FC14FC5D1401173D
5252 +4A48EB01F8A21703A24A4814F0A21707A2020F15E05D170FA218C0010FB7FCA3903B001F
5253 +80001F80A2173F143F92C71300A25FA24A147E147E17FEA25F14FE4A1301A25FA2010114
5254 +035CEFF070A21607010316F04AECE0E0A3EFE1C013074A14C3933803E380EE01E7933800
5255 +FF004948143C94C7FCA3495AA3001C90CAFC127E133E12FE133C137CEAF878EA78F0EA3F
5256 +E0EA0F80374C82BA31>I<3901E003C03907F00FE0000F131F01F813F0001F133FA3000F
5257 +131F3907B00F6038003000A2017013E0016013C0EBE00101C01380000113030180130000
5258 +035B3807000E000E5B485B485B485B48485A00C05B1C1971B92B>34
5259 +D<EA01E0EA07F0120F13F8121FA3120FEA07B0EA0030A21370136013E013C01201138012
5260 +03EA0700120E5A5A5A5A5A0D196EB919>39 D<150C151C153815F0EC01E0EC03C0EC0780
5261 +EC0F00141E5C147C5C5C495A1303495A5C130F49C7FCA2133EA25BA25BA2485AA212035B
5262 +12075BA2120F5BA2121FA290C8FCA25AA2123EA2127EA2127CA412FC5AAD1278A57EA312
5263 +1C121EA2120E7EA26C7E6C7EA212001E5274BD22>I<140C140E80EC0380A2EC01C015E0
5264 +A2140015F0A21578A4157C153CAB157CA715FCA215F8A21401A215F0A21403A215E0A214
5265 +07A215C0140F1580A2141F1500A2143EA25CA25CA2495AA2495A5C1307495A91C7FC5B13
5266 +3E133C5B5B485A12035B48C8FC120E5A12785A12C01E527FBD22>I<EA03C0EA07F0120F
5267 +121F13F8A313F0EA07B0EA003013701360A213E013C01201EA038013005A120E5A5A5A5A
5268 +5A0D197A8819>44 D<387FFFF8A2B5FCA214F0150579941E>I<120EEA3F80127F12FFA3
5269 +1300127E123C0909778819>I<1703EF0780170FA2EF1F005F173E5FA25FA24C5A16035F
5270 +4C5AA24C5AA24CC7FCA2163E167E167C5EA24B5AA24B5A15075E4B5AA24BC8FCA2153E15
5271 +7E157C5DA24A5AA24A5A14075D4A5AA24AC9FCA2143EA25C14FC5C495AA2495AA2495A13
5272 +0F5C49CAFCA2133EA25B13FC5B485AA2485AA2485A120F5B48CBFCA2123EA25AA25AA212
5273 +7031537FBD2A>I<EC03F8EC1FFEEC7C1F9138F80780D901E013C0903903C003E0EB0780
5274 +010F1301D91F0013F0A2133E137E017C130313FCA2485AA2000314075BA2120716E04913
5275 +0F120FA34848EB1FC0A44848EB3F80A448C7EA7F00A3157E007E14FEA25D00FE13015DA2
5276 +48495AA25D007C13075D4A5AA24AC7FC6C133E5C6C5B380F83E03807FF80C648C8FC243A
5277 +77B72A>I<EC03F8EC0FFE91383C0F809138F007C0903901E003E0D903C013F090380780
5278 +01020013F8130E131E90391C6000FCEB3870EC30011370A213F013E0EC70030001016013
5279 +F813C014E0ECC00701C114F0903881800F018314E09039C7001FC001FEEB3F80D8007814
5280 +0090C7127E5D4A5A4A5AEC07C0EC1F80023EC7FC14FCEB01F0EB07C0495A011EC8FC137C
5281 +4914C0484813015B485A4848130348C71380000E1407001E140F48EC1F00D83FF85B397F
5282 +FFC07E39783FFFFCEA700FD8F0075BD8E0015B6D13C0021FC7FC263A79B72A>50
5283 +D<EC03FCEC1FFF91387E07C09138F003E0903903C001F0D9078013F849C7FC131E011C14
5284 +FC133CEB38C0EB78E0EB7060150101F014F813E0A2ECE003D971C013F090387F8007D91E
5285 +0013E090C7EA0FC0ED1F80ED3F00157E5D49B45A4913E092C7FC9038000FC0EC03F01401
5286 +6E7E81A381A5007E130100FE5CA31403485C00E05C14074A5A5D4A5A007049C7FC007813
5287 +7E6C13F8381E07F03807FF80D801FCC8FC263A78B72A>I<16E0ED01F01503A3150716E0
5288 +A3150F16C0A2151F1680A2ED3F00A3157EA2157C15FC5D14015D14035D14075D140F5D14
5289 +1F92C7FC143EA25CECF81C153E903801F07EEB03E014C090380780FE130F49485A133EEB
5290 +7C01137801F05BEA01E03803C003EA0FFE391FFFC3F04813FB267C01FF13403AF0003FFF
5291 +E000601307C71400EC0FE05DA3141F5DA3143F92C7FCA4143E141C24487DB72A>I<D970
5292 +7C130ED9F3FE131E496C133C48B5133816784815F0EC0F019039FC0703E03A07F00307C0
5293 +01E0138F3A0FC001FF80497E48C7EA0F00001E5C48141E153E48143C157C485C5A4A5AC7
5294 +FC4A5AA24A5A140FA24A5AA24AC7FCA25C147E14FE5C1301A25C1303A2495AA3130F5CA2
5295 +131F5CA2133FA25C137FA391C8FC137E133C273A74B72A>55 D<133C137E13FF5AA313FE
5296 +13FCEA00701300B2120EEA3F80127F12FFA31300127E123C102477A319>58
5297 +D<EB0780EB0FC0EB1FE0133FA314C01480EB0E0090C7FCB2EA03C0487E487E121FA45B12
5298 +07EA006013E05BA212015B120390C7FC5A120E5A121812385A5A5A13347AA319>I<14FC
5299 +EB07FF90381F03C090383C01E090387000F049137048481378485A120748C7FC120E121E
5300 +121C003C14F8003814F0007813011270007CEB03E000FE1307EC0FC0EC1F80147F48EBFF
5301 +00387001FCC6485AEB0FF0495AEB3F8049C7FCEA01FE485A13F0485A5B380F81C01301A2
5302 +495A130791C7FC131EEA07FCEA01F0C9FCA81207EA1FC0123F127FA35B6CC8FC121E1D3C
5303 +70BB2A>63 D<EE01C01603A21607160FA2161F83163FA2167F16FF16EF150116CFED038F
5304 +A2ED070FA2150E151E151C1538A203707FA2EDE007A2EC01C014031580EC0700A2140EA2
5305 +5CA25C027FB5FCA291B6FC9139E00007F849481303A2495A130791C7FC5B130E5BA25B13
5306 +78137013F0EA03F8486C4A7EB56C48B512F0A3343C7BBB3E>65 D<0107B612FCEFFF8018
5307 +C0903B000FF0001FF04BEB07F81703021F15FC17014B14FEA2023F1400A24B1301A2147F
5308 +18FC92C7120318F84A140718F04AEC0FE0EF1FC00101ED3F80EF7F004AEB01FEEE07F849
5309 +B612E05F9139F80007F0EE01FC01076E7E177F4AEC3F80A2010F16C0171F5CA2131F173F
5310 +5CA2133FEF7F805C1800017F5D4C5A91C7485A5F49140FEE1FE0494A5A00014AB45AB748
5311 +C7FC16F816C037397BB83A>I<DB03FE130E92393FFF801E92B5EAE03C913903FE01F091
5312 +3A0FF000787CDA3FC0EB3CFC4AC7EA1FF802FE140FEB03FC49481407494815F049481403
5313 +495A5C49C813E05B485A5B000317C0485AA2485A1880485A94C7FCA2485AA3127F5BA312
5314 +FF90CBFCA41738A217784816707E17F06C5E16015F16036C6C4A5A94C7FC001F150E6D14
5315 +1E000F5D6D5C6C6C495A6C6CEB03C0D801FEEB0F8027007F807EC8FC6DB45A010F13E001
5316 +0090C9FC373D74BA3B>I<0103B612FEEFFFC018F0903B0007F8000FF84BEB03FCEF00FE
5317 +020F157FF03F804B141F19C0021F150F19E05D1807143F19F05DA2147FA292C8FCA25C18
5318 +0F5CA2130119E04A151FA2130319C04A153FA201071780187F4A1600A2010F16FEA24A4A
5319 +5A60011F15034D5A4A5D4D5A013F4B5A173F4A4AC7FC17FC017FEC03F84C5A91C7EA1FC0
5320 +4949B45A007F90B548C8FCB712F016803C397CB83F>I<0107B712FEA3903A000FF00007
5321 +4B1300187C021F153CA25DA2143FA25D1838147FA292C8FCEE03804A130718004A91C7FC
5322 +A201015CA24A131E163E010314FE91B5FC5EA2903807F800167C4A1378A2130FA24A1370
5323 +A2011F14F0A24A90C8FCA2133FA25CA2137FA291CAFCA25BA25B487EB6FCA337397BB836
5324 +>70 D<DB03FE130E92393FFF801E92B5EAE03C913903FE01F0913A0FF000787CDA3FC0EB
5325 +3CFC4AC7EA1FF802FE140FEB03FC49481407494815F049481403495A5C49C813E05B485A
5326 +5B000317C0485AA2485A1880485A94C7FCA2485AA3127F5BA312FF90CBFC0307B512E0A3
5327 +92390007FC00705A16075FA36C150F5FA36C6C141FA2001F5E6D143F6C7E167F6C6C4A5A
5328 +6C6CEB03EFD801FEEB07C73A007FC03F0790273FFFFC03C7FC010F01F0C8FC0100138037
5329 +3D74BA40>I<0103B5D8F80FB512E0A390260007F8C7381FE0004B5DA2020F153F615DA2
5330 +021F157F96C7FC5DA2023F5D605DA2027F14016092C7FCA24A1403605CA249B7FC60A202
5331 +FCC712070103150F605CA20107151F605CA2010F153F605CA2011F157F95C8FC5CA2013F
5332 +5D5F5CA2017F14015F91C7FC491403007FD9FE01B512F8B55BA243397CB83E>I<0103B5
5333 +12F8A390390007F8005DA2140FA25DA2141FA25DA2143FA25DA2147FA292C7FCA25CA25C
5334 +A21301A25CA21303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA291C8
5335 +FC497EB6FCA25C25397CB820>I<0103B500F890387FFFE0A21AC090260007F8C7380FFC
5336 +004B15E061020F4BC7FC183E4B5C18F0021F4A5A4D5A4BEB0F804DC8FC023F143C5F4B5B
5337 +4C5A027FEB07C04CC9FCED001E5E4A5BED01FCECFE0315070101497E151FECFC7C4B7E90
5338 +3903FDE07FDAFFC07F1580ED003F49488014F84A131F83130F160F4A801607011F81A24A
5339 +130383133F16014A80A2017F6E7EA291C8FC494A7F007F01FE011F13FCB55CA243397CB8
5340 +40>75 D<0107B512FCA25E9026000FF8C7FC5D5D141FA25DA2143FA25DA2147FA292C8FC
5341 +A25CA25CA21301A25CA21303A25CA21307A25CA2130F170C4A141CA2011F153C17384A14
5342 +78A2013F157017F04A14E01601017F140317C091C71207160F49EC1F80163F4914FF0001
5343 +02071300B8FCA25E2E397BB834>I<902603FFF891B512E0A281D90007923807F8006F6E
5344 +5A61020F5E81DA0E7F5DA2021E6D1307033F92C7FC141C82DA3C1F5C70130EEC380FA202
5345 +786D131E0307141C147082DAF003143C70133814E0150101016E1378030014705C820103
5346 +6E13F0604A1480163F010715C1041F5B91C7FC17E149EC0FE360010E15F31607011E15FF
5347 +95C8FC011C80A2013C805F1338160013785F01F8157CEA03FC267FFFE0143CB51538A243
5348 +397CB83E>78 D<ED03FE92383FFFC09238FC07F0913903E001F891390F80007C023FC77E
5349 +027E8002F815804948EC0FC0EB07E04948EC07E0131F4A15F049C81203137E01FE16F848
5350 +5AA2485AA2485AA2120F5B001F16075B123FA34848ED0FF0A448C9EA1FE0A3EF3FC0A218
5351 +80177F18005F5F16015F6C4B5A4C5AA24C5A6C4B5A6D4A5A001F93C7FC6D147E000F5D6C
5352 +6CEB03F06C6C495A6C6CEB0F806C6C013FC8FC90383F01FC90381FFFE0010190C9FC353D
5353 +74BA40>I<0107B612F817FF1880903B000FF0003FE04BEB0FF0EF03F8141FEF01FC5DA2
5354 +023F15FEA25DA2147FEF03FC92C7FCA24A15F817074A15F0EF0FE01301EF1FC04AEC3F80
5355 +EFFE0001034A5AEE0FF091B612C04CC7FCD907F8C9FCA25CA2130FA25CA2131FA25CA213
5356 +3FA25CA2137FA291CAFCA25BA25B1201B512FCA337397BB838>I<0103B612F017FEEFFF
5357 +80903B0007F8003FC04BEB0FF01707020FEC03F8EF01FC5DA2021F15FEA25DA2143FEF03
5358 +FC5DA2027FEC07F818F092C7120F18E04AEC1FC0EF3F004A14FEEE01F80101EC0FE091B6
5359 +128004FCC7FC9138FC003F0103EC0F80834A6D7E8301071403A25C83010F14075F5CA201
5360 +1F140FA25CA2133F161F4AECE007A2017F160F180E91C7FC49020F131C007F01FE153CB5
5361 +913807F078040313F0CAEAFFE0EF3F80383B7CB83D>82 D<92383FC00E913901FFF01C02
5362 +0713FC91391FC07E3C91393F001F7C027CEB0FF84A130749481303495A4948EB01F0A249
5363 +5AA2011F15E091C7FCA34915C0A36E90C7FCA2806D7E14FCECFF806D13F015FE6D6D7E6D
5364 +14E0010080023F7F14079138007FFC150F15031501A21500A2167C120EA3001E15FC5EA3
5365 +003E4A5AA24B5AA2007F4A5A4B5A6D49C7FC6D133ED8F9F013FC39F8FC03F839F07FFFE0
5366 +D8E01F138026C003FCC8FC2F3D7ABA2F>I<0007B812E0A25AD9F800EB001F01C049EB07
5367 +C0485AD900011403121E001C5C003C17801403123800785C00701607140700F01700485C
5368 +A2140FC792C7FC5DA2141FA25DA2143FA25DA2147FA292C9FCA25CA25CA21301A25CA213
5369 +03A25CA21307A25CA2130FA25CEB3FF0007FB512F8B6FCA2333971B83B>I<003FB53980
5370 +0FFFFEA326007F80C7EA7F8091C8EA3F00173E49153CA2491538A20001167817705BA200
5371 +0316F05F5BA2000715015F5BA2000F15035F5BA2001F150794C7FC5BA2003F5D160E5BA2
5372 +007F151E161C90C8FCA2163C4815385A16781670A216F04B5A5E1503007E4A5A4BC8FC15
5373 +0E6C143E6C6C5B15F0390FC003E03907F01FC00001B5C9FC38007FFCEB1FE0373B70B83E
5374 +>I<B500F8903803FFFEA218FCD803FEC8EA7FC049ED3F000001163E173C17385FA25F16
5375 +015F6D4A5AA200004BC7FC5E160E5EA25EA25E5EA26D495A7F4B5A150793C8FC150EA25D
5376 +153C15385D1480013F5B14815DEC8380A20287C9FCA2148E149E149C14F8A26D5AA25C5C
5377 +A25CA291CAFC131EA2373B6FB83E>I<B5D8F80FB590381FFFF06102F018E0D807FEC7D8
5378 +7FE0903803FE00D803F8DA3F806D5AF100F0A24F5A621903621907047F92C7FC190E16FF
5379 +4B5DA2DB03BF5C7F0001DA073F5CA2030E5D83DB1C1F495A180303385D4EC8FC157003F0
5380 +140E15E0DA01C05CA2DA03805CA2DA07005CA2020E5D17C14A5DEFC3805C027802C7C9FC
5381 +14704A14CE13FE6C6C4814DCA24A14F8A291C75B160F495D5F5B5F5B4992CAFCA249140E
5382 +4C3B6FB853>I<01181330013813709038F001E03901C003800180130000035B3807000E
5383 +000E5B000C1318001C1338485B00301360A2007013E000605BA238EF01DE38FF81FFA66C
5384 +C65A003C13781C196AB92B>92 D<14F8EB07FE90381F871C90383E03FE137CEBF8011201
5385 +48486C5A485A120FEBC001001F5CA2EA3F801403007F5C1300A21407485C5AA2140F5D48
5386 +ECC1C0A2141F15831680143F1587007C017F1300ECFF076C485B9038038F8E391F0F079E
5387 +3907FE03FC3901F000F0222677A42A>97 D<133FEA1FFFA3C67E137EA313FE5BA312015B
5388 +A312035BA31207EBE0F8EBE7FE9038EF0F80390FFC07C013F89038F003E013E0D81FC013
5389 +F0A21380A2123F1300A214075A127EA2140F12FE4814E0A2141F15C05AEC3F80A215005C
5390 +147E5C387801F8007C5B383C03E0383E07C0381E1F80D80FFEC7FCEA01F01C3B77B926>
5391 +I<147F903803FFC090380FC1E090381F0070017E13784913383901F801F83803F0031207
5392 +13E0120FD81FC013F091C7FC485AA2127F90C8FCA35A5AA45AA3153015381578007C14F0
5393 +007EEB01E0003EEB03C0EC0F806CEB3E00380F81F83803FFE0C690C7FC1D2677A426>I<
5394 +ED01F815FFA3150316F0A21507A216E0A2150FA216C0A2151FA21680A2153FA202F81300
5395 +EB07FE90381F877F90383E03FF017C5BEBF80112013803F00048485B120FEBC001121F5D
5396 +EA3F801403127F01005BA214075A485CA2140FA248ECC1C0A2141F15C3ED8380143F1587
5397 +007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901F000F0253B77B9
5398 +2A>I<147F903803FFC090380FC1E090383F00F0017E13785B485A485A485A120F4913F8
5399 +001F14F0383F8001EC07E0EC1F80397F81FF00EBFFF891C7FC90C8FC5A5AA55AA2153000
5400 +7C14381578007E14F0003EEB01E0EC03C06CEB0F806CEB3E00380781F83803FFE0C690C7
5401 +FC1D2677A426>I<ED07C0ED1FF0ED3E38ED7C3CEDF8FC15F9140115F1020313F8EDF0F0
5402 +160014075DA4140F5DA4141F5D010FB512C05B16809039003F800092C7FCA45C147EA414
5403 +FE5CA413015CA413035CA413075CA4130F5CA3131F5CA391C8FC5B121CEA7E3EA2EAFE3C
5404 +137C1378EAF8F01278EA3FC0EA0F80264C82BA19>I<EC07C0EC3FF09138FC38E0903901
5405 +F01FF0EB03E0903807C00FEB0F80011F1307D93F0013E05B017E130F13FE4914C0120115
5406 +1F1203491480A2153F1207491400A25DA249137EA215FEA25D00031301140314076C6C48
5407 +5A0000131FEB787BEB3FF390380FC3F0EB00031407A25DA2140F5D121C007E131F5D00FE
5408 +49C7FC147E5C387801F8387C07E0381FFF80D803FEC8FC24367CA426>I<EB03F0EA01FF
5409 +A3EA00075CA3130F5CA3131F5CA3133F91C8FCA35B90387E07F0EC1FFCEC783E9038FFE0
5410 +1F02C01380EC800F1400485A16C05B49EB1F8012035BA2153F000715005BA25D000F147E
5411 +5B15FE5D121FD98001131C15F8163C003F01031338010013F0A216704814E0007E15F016
5412 +E0EDE1C000FE903801E38048903800FF000038143C263B7BB92A>I<EB01C0EB07E014F0
5413 +130F14E01307EB038090C7FCAB13F0EA03FCEA071EEA0E1F121CA212385B1270A25BEAF0
5414 +7E12E013FEC65AA212015B1203A25B12075BA2000F13E013C013C1001F13C01381A2EB83
5415 +801303EB0700A2130E6C5AEA07F8EA01E0143879B619>I<150E153F157FA3157E151C15
5416 +00ABEC1F80EC7FC0ECF1F0EB01C090380380F813071401130F130E131EEB1C03133C0138
5417 +13F0A2EB0007A215E0A2140FA215C0A2141FA21580A2143FA21500A25CA2147EA214FEA2
5418 +5CA21301A25CA213035C121C387E07E0A238FE0FC05C49C7FCEAF83EEA787CEA3FF0EA0F
5419 +C0204883B619>I<EB03F0EA01FFA3EA00075CA3130F5CA3131F5CA3133F91C8FCA35B01
5420 +7EEB0F80ED3FE015F09039FE01C1F09038FC0387EC0707140E0001011C13E0EBF8389138
5421 +3003800270C7FC00035BEBF1C0EBF38001FFC8FCEA07FC7FEBFFC0EBE7F8380FE1FCEBC0
5422 +7E147F80001F809039801F81C0A21583003F013F138001001303A21507481500007E133E
5423 +EC1E0E151E00FE6D5A48EB07F80038EB01E0243B7BB926>I<EB0FC0EA07FFA3EA001F14
5424 +80A2133FA21400A25BA2137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA2
5425 +5BA2121FA25BA2123FA290C7FCA25AA2EA7E0EA212FE131EEAFC1CA2133C133812F81378
5426 +EA7870EA7CE0121FEA0F80123B79B915>I<D801E001FEEB07F03C07F803FF801FFC3C0E
5427 +3C0F07C0783E3C1E3E3C03E1E01F261C1F78D9F3C013803C383FF001F7800F02E0140000
5428 +7801C013FE007018C002805B4A4848EB1F80EAF07FD8E07E5CA200000207143F01FE1700
5429 +495CA2030F5C0001177E495C18FE031F5C120349DA8001131C18F8033F153C0007040313
5430 +3849020013F0A24B1570000F17E049017E15F019E003FEECE1C0001FEE01E34949903800
5431 +FF000007C70038143C3E2679A444>I<D801E013FE3A07F803FF803A0E3C0F07C03A1E3E
5432 +3C03E0261C1F787F39383FF00114E0007813C000708114804A485AEAF07FEAE07EA20000
5433 +140701FE5C5BA2150F00015D5B151F5E12034990383F8380160316070007027F13004913
5434 +7EA2160E000F147C49141E161C5E001FEC3C7849EB1FE00007C7EA0780292679A42F>I<
5435 +147F903803FFC090380FC1F090381F00F8017E137C5B4848137E4848133E0007143F5B12
5436 +0F485AA2485A157F127F90C7FCA215FF5A4814FEA2140115FC5AEC03F8A2EC07F015E014
5437 +0F007C14C0007EEB1F80003EEB3F00147E6C13F8380F83F03803FFC0C648C7FC202677A4
5438 +2A>I<9039078007C090391FE03FF090393CF0787C903938F8E03E9038787FC00170497E
5439 +ECFF00D9F0FE148013E05CEA01E113C15CA2D80003143FA25CA20107147FA24A1400A201
5440 +0F5C5E5C4B5A131F5EEC80035E013F495A6E485A5E6E48C7FC017F133EEC70FC90387E3F
5441 +F0EC0F8001FEC9FCA25BA21201A25BA21203A25B1207B512C0A3293580A42A>I<3903C0
5442 +03F0390FF01FFC391E783C0F381C7C703A3C3EE03F8038383FC0EB7F8000781500007013
5443 +00151CD8F07E90C7FCEAE0FE5BA2120012015BA312035BA312075BA3120F5BA3121F5BA3
5444 +123F90C9FC120E212679A423>114 D<14FE903807FF8090380F83C090383E00E04913F0
5445 +0178137001F813F00001130313F0A215E00003EB01C06DC7FC7FEBFFC06C13F814FE6C7F
5446 +6D13807F010F13C01300143F141F140F123E127E00FE1480A348EB1F0012E06C133E0070
5447 +5B6C5B381E03E06CB45AD801FEC7FC1C267AA422>I<EB0380EB07C0130FA4131F1480A3
5448 +133F1400A35B137E007FB5FCA2B6FC3800FC00A312015BA312035BA312075BA3120F5BA3
5449 +121FEB801CA2143C003F1338EB0078147014F014E0EB01C0EA3E03381F0780380F0F00EA
5450 +07FCEA01F0183579B31C>I<13F8D803FEEB01C0D8078FEB03E0390E0F8007121E121C00
5451 +38140F131F007815C01270013F131F00F0130000E015805BD8007E133FA201FE14005B5D
5452 +120149137EA215FE120349EBFC0EA20201131E161C15F813E0163CD9F003133814070001
5453 +ECF07091381EF8F03A00F83C78E090393FF03FC090390FC00F00272679A42D>I<01F013
5454 +0ED803FC133FD8071EEB7F80EA0E1F121C123C0038143F49131F0070140FA25BD8F07E14
5455 +0000E08013FEC6485B150E12015B151E0003141C5BA2153C000714385B5DA35DA24A5A14
5456 +0300035C6D48C7FC0001130E3800F83CEB7FF8EB0FC0212679A426>I<01F01507D803FC
5457 +903903801F80D8071E903907C03FC0D80E1F130F121C123C0038021F131F49EC800F0070
5458 +1607A249133FD8F07E168000E0ED000313FEC64849130718000001147E5B03FE5B000316
5459 +0E495BA2171E00070101141C01E05B173C1738A217781770020314F05F0003010713016D
5460 +486C485A000190391E7C07802800FC3C3E0FC7FC90393FF81FFE90390FE003F0322679A4
5461 +37>I<903907E007C090391FF81FF89039787C383C9038F03E703A01E01EE0FE3803C01F
5462 +018013C0D8070014FC481480000E1570023F1300001E91C7FC121CA2C75AA2147EA214FE
5463 +A25CA21301A24A1370A2010314F016E0001C5B007E1401010714C000FEEC0380010F1307
5464 +010EEB0F0039781CF81E9038387C3C393FF03FF03907C00FC027267CA427>I<13F0D803
5465 +FCEB01C0D8071EEB03E0D80E1F1307121C123C0038140F4914C01270A249131FD8F07E14
5466 +8012E013FEC648133F160012015B5D0003147E5BA215FE00075C5BA214015DA314035D14
5467 +070003130FEBF01F3901F87FE038007FF7EB1FC7EB000F5DA2141F003F5C48133F92C7FC
5468 +147E147C007E13FC387001F8EB03E06C485A383C1F80D80FFEC8FCEA03F0233679A428>
5469 +I<903903C0038090380FF007D91FF81300496C5A017F130E9038FFFE1E9038F83FFC3901
5470 +F007F849C65A495B1401C7485A4A5A4AC7FC141E5C5C5C495A495A495A49C8FC131E5B49
5471 +131C5B4848133C48481338491378000714F8390FF801F0391FFF07E0383E1FFFD83C0F5B
5472 +00785CD8700790C7FC38F003FC38E000F021267BA422>I<BC12F8A24D02779655>124
5473 +D E
5474 +%EndDVIPSBitmapFont
5475 +%DVIPSBitmapFont: Fj cmsy10 10 8
5476 +/Fj 8 111 df<007FB81280B912C0A26C17803204799641>0 D<121C127FEAFF80A5EA7F
5477 +00121C0909799917>I<EB0380497EA7397803803C00FC147E00FE14FE397F8383FC393F
5478 +C387F8390FE38FE03903FBBF803900FFFE00EB3FF8EB0FE0A2EB3FF8EBFFFE3903FBBF80
5479 +390FE38FE0393FC387F8397F8383FC39FE0380FE00FC147E0078143C390007C000A76D5A
5480 +1F247BA62A>3 D<EB1FF0EBFFFE487F000714C04814E04814F04814F8A24814FCA3B612
5481 +FEA96C14FCA36C14F8A26C14F06C14E06C14C0000114006C5BEB1FF01F1F7BA42A>15
5482 +D<D93F801508D9FFF0151C00037F4813FE487F4814C09026C07FE0143C273F000FF01438
5483 +003CD907FC147848EB01FE6E6C6C13F0007091383FC00300F091391FF80FE0486EB5FC03
5484 +0314C06F14806F6C1300EE3FFC0040ED07F036137B9D41>24 D<EC01F8140FEC3F80ECFC
5485 +00495A495A495AA2130F5CB3A7131F5C133F49C7FC13FEEA03F8EA7FE048C8FCEA7FE0EA
5486 +03F8EA00FE137F6D7E131F80130FB3A7801307A26D7E6D7E6D7EEC3F80EC0FF814011D53
5487 +7ABD2A>102 D<12FCEAFFC0EA07F0EA01FCEA007E7F80131F80130FB3A7801307806D7E
5488 +6D7EEB007EEC1FF0EC07F8EC1FF0EC7E00495A495A495A5C130F5CB3A7131F5C133F91C7
5489 +FC137E485AEA07F0EAFFC000FCC8FC1D537ABD2A>I<126012F07EA21278127CA2123C12
5490 +3EA2121E121FA27E7FA212077FA212037FA212017FA212007FA21378137CA2133C133EA2
5491 +131E131FA27F80A2130780A26D7EA2130180A2130080A21478147CA2143C143EA2141E14
5492 +1FA2801580A2140715C0A2140315E0A2140115F0A2140015F8A21578157CA2153C153EA2
5493 +151E150C1F537BBD2A>110 D E
5494 +%EndDVIPSBitmapFont
5495 +%DVIPSBitmapFont: Fk cmtt10 10 86
5496 +/Fk 86 127 df<003C131E007F137F481480A66C1400A6007E7FA6003E133EA3003C131E
5497 +001C131C191977B32C>34 D<010F133C90381F807EA8013F13FE4A5AA4007FB612F0B712
5498 +F8A4003F15F03A007E01F800A5EBFE0301FC5BA6003FB612F0B712F8A46C15F03A01F807
5499 +E000A30003130F01F05BA86C486C5A25337DB22C>I<EB01C0497EA6EB0FFC90387FFF80
5500 +48B512E00007804880391FFBEFFC393FC3E1FE903803E07F007E80127C00FC158012F815
5501 +7FA300FCEC3F00A2007E91C7FC127FEA3FC313FBEA1FFF6C13FC6C13FF000114C06C6C7F
5502 +011F13F801037F14E7ECE1FEECE07F81001880007E1580150F12FFA312FE151F1600007E
5503 +5C007F143ED83F8313FE9038C3E1FC391FFBEFF86CB55A6C5C6C5CC691C7FCEB1FF8EB03
5504 +E0A66D5A21417BB92C>I<D807801307D81FE0EB0F80151F487E486C133F1600007C5CD8
5505 +FCFC137EEAF87C15FE5D14015DA21403D8FCFC5BEA7CF8007F13075D383FF00FD81FE05B
5506 +A23807801FC75B143F92C7FCA25C147E14FE5CA213015CA213035C13075CA2130F5C131F
5507 +EC800FED3FC0013FEB7FE0140049EBFFF0017E13F9A2D9FE0113F801FC13F0A2120113F8
5508 +120313F015F90007010013F05B000F14FF49EB7FE0A20007EC3FC06C48EB0F0025417DB9
5509 +2C>I<EB0FC0EB3FE0497E497E80EA01F8EBF07C147E0003133E13E0A5147E147C9138FC
5510 +3FF89039F0F87FFCEA01F1EBF3F001F7EB3FF89138E01F009038FFC03F6CEB803EA2EC00
5511 +7E49137C485A486C13FC00075CEBFF01D80FDF5B381F9F81383F8F8390380FC3E0387E07
5512 +E75D38FC03F7EB01FF5D6D1410ED007C80A26CEBFF80D87E0113C0D87F03EBE0FC3A3F87
5513 +F7F1F89038FFE3FF6C01C113F06C13806C9038007FC0D801FCEB1F8026357EB32C>I<EA
5514 +0F80EA1FC0EA3FE013F0A213F8A2121F120F1200A4120113F0A2120313E01207EA0FC012
5515 +1FEA3F80EA7F0012FE5A5A12700D1B71B22C>I<143814FC13011303EB07F8EB0FF0EB1F
5516 +C0EB3F80EB7F0013FE485A485A5B12075B120F5B485AA2123F90C7FCA25A127EA312FE5A
5517 +AC7E127EA3127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137FEB3F80EB1FC0EB0F
5518 +F0EB07F8EB03FC130113001438164272B92C>I<127012FC7E7E6C7E6C7EEA0FE06C7E6C
5519 +7E6C7E6C7E137F7F1480131F14C0130FEB07E0A214F01303A214F81301A314FC1300AC13
5520 +0114F8A3130314F0A2130714E0A2EB0FC0131F1480133F14005B13FE485A485A485A485A
5521 +EA3FC0485A48C7FC5A5A1270164279B92C>I<EB0380497EA60020140800F8143E00FE14
5522 +FE00FF13C1EBC7C7EBE7CF003FB512F8000F14E0000314806C140038007FFCA248B5FC48
5523 +1480000F14E0003F14F839FFE7CFFEEBC7C7EB07C100FE13C000F8143E00201408000014
5524 +00A66D5A1F247AAA2C>I<147814FCAF007FB612F0B712F8A46C15F0C700FCC7FCAF1478
5525 +25267DAB2C>I<EA0F80EA1FE0EA3FF0EA7FF8A213FCA3123F121F120F120013F8A21201
5526 +EA03F01207EA1FE0EA7FC0EAFF80130012FC12700E17718A2C>I<007FB6FCB71280A46C
5527 +150021067B9B2C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B708A2C>I<
5528 +1507ED0F80151FA2153F16005D157E15FE5D14015D14035DA214075D140F5D141F5D143F
5529 +92C7FC5C147E14FE5CA213015C13035C13075C130F5C131F5CA2133F91C8FC5B137E13FE
5530 +5B12015B12035B12075BA2120F5B121F5B123F90C9FC5A127E12FE5AA25A127821417BB9
5531 +2C>I<EB03F8EB0FFE90383FFF80497F90B57E3901FE0FF03903F803F848486C7EEBE000
5532 +4848137EA248487FA248C7EA1F80A2003E140F007E15C0A3007C140700FC15E0AC6C140F
5533 +007E15C0A46CEC1F80A36C6CEB3F00A26C6C137E6D13FE00075CEBF0016C6C485A3901FE
5534 +0FF06CB55A6D5B6D5BD90FFEC7FCEB03F823357CB32C>I<1307497EA2131FA2133F137F
5535 +13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE007FB512E0B612F0A36C14E01C3477B3
5536 +2C>I<EB0FF890387FFF8048B512E00007804814FC391FF80FFE393FE001FF903880007F
5537 +48C7EA3F80007E141F00FE15C0150F6C15E01507A3127E123CC8FCA2150F16C0151F1680
5538 +153F16005D15FE4A5A14034A5A4A5A4A5A4A5AECFF804948C7FC495A495A495AEB3FE0EB
5539 +7F8049C8FC485A4848EB03C04848EB07E0EA1FE0485A48B6FCB7FCA36C15C023347CB32C
5540 +>I<EB0FFC90387FFF8048B512E0000714F84880391FF807FEEBC0004848137F6D7F1680
5541 +151FA26C5A6CC7FCC8FC153F16005D15FE14014A5AEC1FF890381FFFF0495BA215F86D7F
5542 +90380007FEEC00FF81ED3F80ED1FC0150FA216E01507A2123C127EB4FC150F16C0A24814
5543 +1F007FEC3F806DEB7F006C6C5B391FF807FE6CB55A6C5C6C14E0C66C1380D90FFCC7FC23
5544 +357CB32C>I<1278B712C016E0A316C000FCC7EA3F80ED7F0015FE00785CC712014A5A4A
5545 +5A5D140F5D4A5A143F92C7FC5C147E14FE5C13015CA2495AA213075CA3495AA4495AA513
5546 +3F91C8FCAA131E23357CB32C>55 D<EB07FCEB3FFF90B512C0488048803907FC07F8390F
5547 +F001FC48486C7ED83F80137E157F48C77E007EEC1F8012FE5AED0FC0A416E0A37E127E00
5548 +7F141F7E6D133F6C6C137F390FF001FF3807FC0F6CB6FC6C14F76C14C7013F130FD90FF8
5549 +13C090C7FCA2151F1680153F1600000F5C486C137E486C13FE4A5A4A5A14079038801FF0
5550 +391FE07FE090B55A6C91C7FC6C5B000113F838007FC023357CB32C>57
5551 +D<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0EAFFE0
5552 +A5EA7FC0EA3F80EA1F000B2470A32C>I<EA0F80EA1FC0EA3FE0EA7FF0A5EA3FE0EA1FC0
5553 +EA0F80C7FCAEEA0F80EA1FC0EA3FE0127F13F0A4123F121F120F1201120313E01207EA0F
5554 +C0A2EA3F80EA7F005A5A12F812700C3071A32C>I<1507ED1F80153F15FF14034A1300EC
5555 +1FFC4A5AECFFE0491380010790C7FCEB0FFCEB3FF8EB7FE048485A4890C8FCEA0FFEEA1F
5556 +F8EA7FF0EAFFC05BA27FEA7FF0EA1FF8EA0FFEEA03FF6C13C06C6C7EEB3FF8EB0FFC6DB4
5557 +FC01017F6D13E0EC3FF86E7EEC07FF6E13801400153F151FED0700212A7BAD2C>I<007F
5558 +B612F0B712F8A4003F15F0CAFCA8003FB612F0B712F8A46C15F025147DA22C>I<127012
5559 +FC7E6C7E13E06C7EEA1FFC6C7E3803FF80C67FEB7FF0EB1FF8EB0FFEEB03FF6D13C06D6C
5560 +7EEC3FF8EC0FFC6EB4FC0201138080A25C02071300EC0FFCEC3FF8EC7FE049485A4990C7
5561 +FCEB0FFEEB1FF8EB7FF0EBFFC000035BD80FFEC8FC485AEA7FF0485A138048C9FC5A1270
5562 +212A7BAD2C>I<EB3FFE0003B512C0000F14F04814FC4880397FE007FF90C7FC00FEEC3F
5563 +806C141FA3153F007EEC7F00003C5CC7EA03FEEC0FFC4A5AEC3FE04A5A4AC7FC495A495A
5564 +5C13075C130F5CA76D5A90C9FCA8EB0380EB0FE0A2497EA36D5AA2EB038021337BB22C>
5565 +I<EC7F80903803FFE0010F7F013F7F497F9038FFC0FE3901FE007FD803F87F4848EB1F80
5566 +9038E00FCF390FC03FFF48484813C091B5FCEA3F01393E03F87F903907F03FE0007EEBE0
5567 +1F397C0FC00FEC8007A2EAFC1F00F8EB0003A900FCEB8007D87C0F14C0A2ECC00F3A7E07
5568 +E01F80003EEBF03F903903F87F00393F01FFFED81F805B6E5A6C6C6C5A3907E00FC09039
5569 +F00007C06C6CEB0FE0D801FE131F3900FFC0FF6DB512C06D1480010FEBFE00010313F890
5570 +38007FC023337CB22C>I<14FE497EA4497FA214EFA2130781A214C7A2010F7FA314C390
5571 +381F83F0A590383F01F8A490387E00FCA549137E90B512FEA34880A29038F8003FA34848
5572 +EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE6C15FC497E27347EB32C>I<007F
5573 +B512E015F8B612FE6C8016C03903F0003FED0FE0ED07F01503A2ED01F8A6ED03F0A21507
5574 +ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039F0001FE0ED07F0ED03F81501ED00FC
5575 +A216FE167EA616FE16FC1501ED03F8150FED3FF0007FB612E016C0B712806CECFE0015F0
5576 +27337FB22C>I<02FF13700107EBE0F84913F9013F13FD4913FFEBFF813901FE007F4848
5577 +131FD807F0130F1507485A491303485A150148C7FCA25A007EEC00F01600A212FE5AAB7E
5578 +127EA3007F15F06CEC01F8A26C7EA26C6C13036D14F06C6C130716E0D803FC131F6C6CEB
5579 +3FC03A00FF81FF806DB512006D5B010F5B6D13F00100138025357DB32C>I<007FB5FCB6
5580 +12C015F0816C803907E003FEEC00FFED7F80153FED1FC0ED0FE0A2150716F0150316F815
5581 +01A4ED00FCACED01F8A3150316F0A2150716E0150FED1FC0153FED7F80EDFF00EC03FE00
5582 +7FB55AB65A5D15C06C91C7FC26337EB22C>I<007FB612F0B712F8A37E3903F00001A7ED
5583 +00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A91C8FCA5163C167EA8007FB612FEB7
5584 +FCA36C15FC27337EB22C>I<007FB612F8B712FCA37ED803F0C7FCA716781600A515F04A
5585 +7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5FC805C7E26337EB22C>I<903901FC
5586 +038090390FFF87C04913EF017F13FF90B6FC4813073803FC01497E4848137F4848133F49
5587 +131F121F5B003F140F90C7FCA2127EED078092C7FCA212FE5AA8913803FFF84A13FCA27E
5588 +007E6D13F89138000FC0A36C141FA27F121F6D133F120F6D137F6C7E6C6C13FF6D5A3801
5589 +FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7FC26357DB32C>I<D87FFEEBFFFCB5
5590 +4813FEA36C486C13FCD807E0EB0FC0B190B6FCA59038E0000FB3D87FFEEBFFFCB54813FE
5591 +A36C486C13FC27337EB22C>I<007FB512F8B612FCA36C14F839000FC000B3B3A5007FB5
5592 +12F8B612FCA36C14F81E3379B22C>I<D87FFCEB7FF8486CEBFFFCA36C48EB7FF8D807C0
5593 +EB1F80153FED7F00157E5D4A5A14034A5A5D4A5A4A5A143F4AC7FC147E5CEBC1F813C3EB
5594 +C7FCA2EBCFFEEBDFBEEBFFBF141F01FE7F496C7E13F86E7EEBF00301E07FEBC001816E7E
5595 +A2157E153E153F811680ED0FC0A2ED07E0D87FFCEB1FFC486CEB3FFEA36C48EB1FFC2733
5596 +7EB22C>75 D<387FFFE0B57EA36C5BD803F0C8FCB3AE16F0ED01F8A8007FB6FCB7FCA36C
5597 +15F025337DB22C>I<D87FE0EB0FFC486CEB1FFEA26D133F007F15FC000F15E001BC137B
5598 +A4019E13F3A3EB9F01A2018F13E3A21483A2018713C314C7A201831383A214EFA2018113
5599 +03A214FFEB80FEA3147C14381400ACD87FF0EB1FFC486CEB3FFEA36C48EB1FFC27337EB2
5600 +2C>I<D87FF0EB7FFC486CEBFFFEA27F007FEC7FFCD807FEEB07C013DEA213DF13CFA214
5601 +8013C714C0A213C314E0A213C114F0A213C014F8A2147CA3143EA2141E141FA2140F1587
5602 +A2140715C7A2140315E71401A215F71400A215FFD87FFC137F487E153FA26C48EB1F8027
5603 +337EB22C>I<EB7FFF0003B512E0000F14F848804880EBE003EB800048C7127FA2007E80
5604 +A300FE158048141FB3A86C143FA2007E1500A3007F5CA26C6C13FEEBF00790B5FC6C5C6C
5605 +5C000314E0C66C90C7FC21357BB32C>I<007FB512C0B612F88115FF6C15802603F00013
5606 +C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015FF90B61280
5607 +160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C>I<387FFFFCB67E15E0
5608 +15F86C803907E007FE1401EC007F6F7E151FA26F7EA64B5AA2153F4BC7FCEC01FE140790
5609 +B55A5D15E081819038E007FCEC01FE1400157F81A8160FEE1F80A5D87FFEEB1FBFB5ECFF
5610 +00815E6C486D5AC8EA01F029347EB22C>82 D<90381FF80790B5EA0F804814CF000714FF
5611 +5A381FF01F383FC003497E48C7FC007E147F00FE143F5A151FA46CEC0F00007E91C7FC12
5612 +7F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C14F06C6C7F01077F9038007FFEEC07FF
5613 +02001380153FED1FC0A2ED0FE0A20078140712FCA56CEC0FC0A26CEC1F806D133F01E0EB
5614 +7F009038FE01FF90B55A5D00F914F0D8F83F13C0D8700790C7FC23357CB32C>I<007FB6
5615 +12FCB712FEA43AFC007E007EA70078153CC71400B3AF90383FFFFCA2497F6D5BA227337E
5616 +B22C>I<3B7FFF803FFFC0B56C4813E0A36C496C13C03B03F00001F800B3AF6D13030001
5617 +5DA26D130700005D6D130F017F495A6D6C485AECE0FF6DB5C7FC6D5B010313F86D5B9038
5618 +003F802B3480B22C>I<D87FFCEB7FFC486CEBFFFEA36C48EB7FFCD80FC0EB07E06D130F
5619 +000715C0A36D131F00031580A36D133F00011500A36D5B0000147EA4017E5BA46D485AA4
5620 +90381F83F0A4010F5B14C7A301075BA214EFA201035BA214FFA26D90C7FCA46D5A27347E
5621 +B22C>I<D87FF0EB07FF486C491380A36C486D1300001FC8127CA46C6C5CA76C6C495AA4
5622 +143E147FA33A03E0FF83E0A214F7A201E113C3A3000101E35BA201F113C701F313E7A314
5623 +C1A200005DA201F713F71480A301FF13FF017F91C7FC4A7EA4013E133E29347FB22C>I<
5624 +3A3FFF03FFE0484913F0148714076C6D13E03A01F800FE007F0000495A13FE017E5BEB7F
5625 +03013F5B1487011F5B14CF010F5B14FF6D5BA26D90C7FCA26D5AA26D5AA2497EA2497EA2
5626 +497F81EB0FCF81EB1FC7EC87F0EB3F83EC03F8EB7F01017E7FEBFE00497F0001147E4913
5627 +7F000380491480151FD87FFEEBFFFC6D5AB514FE6C15FC497E27337EB22C>I<D87FFCEB
5628 +7FFC486CEBFFFEA36C48EB7FFCD807F0EB0FC0151F000315806D133F12016DEB7F001200
5629 +6D137E017E13FE017F5BEB3F01EC81F8131FEC83F0EB0FC314C7903807E7E0A201035B14
5630 +EF6DB45AA292C7FC7F5C147EB0903807FFE0497FA36D5B27337EB22C>I<003FB612C048
5631 +15E0A4007EC7EA1FC0ED3F80A2ED7F00157E15FE4A5A003C5CC712034A5AA24A5A4A5AA2
5632 +4A5A4AC7FCA214FE495AA2495A495AA2495A495AA2495A49C8FCA213FE485AA24848EB03
5633 +C049EB07E01207485A5B121F485AA248C7FCB7FCA46C15C023337CB22C>I<387FFFFCB5
5634 +12FEA314FC00FCC7FCB3B3B3B512FC14FEA36C13FC17416FB92C>I<127812F87EA27E12
5635 +7E127F7E7F121F7F120F7F1207A27F12037F12017F12007F137E137F7F80131FA280130F
5636 +801307801303801301801300A280147E147F8081141F81140F811407811403A281140181
5637 +140081157E157F811680151FA2150FED070021417BB92C>I<387FFFFCB512FEA37EC712
5638 +7EB3B3B3387FFFFEB5FCA36C13FC17417DB92C>I<007FB6FCB71280A46C150021067B7D
5639 +2C>95 D<137013F812011203EA07F0EA0FE0EA1FC01380EA3F00123E127E127CA212FC5A
5640 +A4EAFF8013C013E0A2127FA2123FEA1FC0EA0F800D1B71B82C>I<3801FFF0000713FE00
5641 +1F6D7E15E048809038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE131F90B5
5642 +FC1203120F48EB807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003383FE01F6C
5643 +B612FC6C15FE6C14BF0001EBFE1F3A003FF007FC27247CA32C>I<EA7FF0487EA3127F12
5644 +01AAEC1FE0ECFFF801FB13FE90B6FC16809138F07FC09138801FE091380007F049EB03F8
5645 +5BED01FC491300A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE0
5646 +9138E07FC091B51280160001FB5B01F813F83900F03FC027337FB22C>I<903803FFE001
5647 +1F13F8017F13FE48B5FC48804848C6FCEA0FF0485A49137E4848131890C9FC5A127EA25A
5648 +A8127EA2127F6C140F6DEB1F806C7E6D133F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B
5649 +011F13E0010390C7FC21247AA32C>I<EC0FFE4A7EA380EC003FAAEB07F8EB3FFE90B512
5650 +BF4814FF5A3807FC0F380FF00348487E497E48487F90C7FC007E80A212FE5AA87E007E5C
5651 +A2007F5C6C7E5C6C6C5A380FF0073807FC1F6CB612FC6CECBFFE6C143FEB3FFC90390FF0
5652 +1FFC27337DB22C>I<EB03FE90381FFFC0017F13F048B57E48803907FE03FE390FF800FF
5653 +D81FE0EB3F805B4848EB1FC090C7120F5A007E15E015075AB7FCA416C000FCC9FC7E127E
5654 +A2127F6CEC03C06DEB07E06C7ED80FF0130F6C6CEB3FC001FF13FF000190B512806C1500
5655 +013F13FC010F13F00101138023247CA32C>I<EC0FF8EC3FFE91B5FC4914805B903807FC
5656 +7F14F090390FE03F0014C092C7FCA6007FB512FEB7FCA36C5C26000FC0C7FCB3A8003FB5
5657 +12F04880A36C5C21337DB22C>I<ED03F8903907F80FFC90391FFE3FFE017FB6FC48B7FC
5658 +48ECFE7F9038FC0FF82607F003133E3A0FE001FC1CD9C0001300001F8049137EA66D13FE
5659 +000F5CEBE0016C6C485A3903FC0FF048B5FC5D481480D99FFEC7FCEB87F80180C8FCA37F
5660 +6C7E90B512F06C14FE48ECFF804815E04815F03A3FC0001FF848C7EA03FC007E1400007C
5661 +157C00FC157E48153EA46C157E007E15FCD87F801303D83FE0EB0FF8D81FFCEB7FF06CB6
5662 +12E0000315806C1500D8003F13F8010713C028387EA42C>I<EA7FF0487EA3127F1201AA
5663 +EC1FE0EC7FFC9038F9FFFE01FB7F90B6FC9138F03F80ECC01F02807FEC000F5B5BA25BB3
5664 +267FFFE0B5FCB500F11480A36C01E0140029337FB22C>I<1307EB1FC0A2497EA36D5AA2
5665 +0107C7FC90C8FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512FCB612FEA36C14FC1F34
5666 +79B32C>I<140EEC3F80A2EC7FC0A3EC3F80A2EC0E0091C7FCA748B512804814C0A37EC7
5667 +120FB3B3A2141F003C1480007E133FB414005CEB01FEEBFFFC6C5B5C001F5B000790C7FC
5668 +1A467CB32C>I<EA7FE0487EA3127F1201AA91381FFFF04A13F8A36E13F0913800FE004A
5669 +5A4A5A4A5A4A5A4A5A4A5A4AC7FC14FEEBF1FC13F3EBF7FE90B5FCA2EC9F80EC0FC001FE
5670 +7FEBFC07496C7E496C7E811400157E811680151F3A7FFFC0FFFCB500E113FEA36C01C013
5671 +FC27337EB22C>I<387FFFE0B57EA37EEA0003B3B3A5007FB61280B712C0A36C15802233
5672 +7BB22C>I<3A7F83F007E09039CFFC1FF83AFFDFFE3FFCD87FFF13FF91B57E3A07FE1FFC
5673 +3E01FCEBF83F496C487E01F013E001E013C0A301C01380B33B7FFC3FF87FF0027F13FFD8
5674 +FFFE6D13F8D87FFC4913F0023F137F2D2481A32C>I<397FF01FE039FFF87FFC9038F9FF
5675 +FE01FB7F6CB6FC00019038F03F80ECC01F02807FEC000F5B5BA25BB3267FFFE0B5FCB500
5676 +F11480A36C01E0140029247FA32C>I<EB07FCEB1FFF017F13C048B512F048803907FC07
5677 +FC390FF001FE48486C7E0180133F003F158090C7121F007EEC0FC0A348EC07E0A76C140F
5678 +007E15C0A2007F141F6C15806D133F6C6CEB7F006D5B6C6C485A3907FC07FC6CB55A6C5C
5679 +6C6C13C0011F90C7FCEB07FC23247CA32C>I<397FF01FE039FFF8FFF801FB13FE90B6FC
5680 +6C158000019038F07FC09138801FE091380007F049EB03F85BED01FC491300A216FE167E
5681 +A816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE09138E07FC091B51280160001
5682 +FB5B01F813F8EC3FC091C8FCAD387FFFE0B57EA36C5B27367FA32C>I<903903FC078090
5683 +391FFF0FC0017F13CF48B512EF4814FF3807FE07380FF00148487E49137F4848133F90C7
5684 +FC48141F127E150F5AA87E007E141FA26C143F7F6C6C137F6D13FF380FF0033807FC0F6C
5685 +B6FC6C14EF6C6C138F6D130FEB07F890C7FCAD0203B5FC4A1480A36E140029367DA32C>
5686 +I<D87FFEEB3FC0B53801FFF0020713F8021F13FC6C5B39003F7FE1ECFF019138FC00F84A
5687 +13704A13005CA25C5CA391C8FCAF007FB512E0B67EA36C5C26247EA32C>I<90387FF870
5688 +0003B512F8120F5A5A387FC00F387E00034813015AA36CEB00F0007F140013F0383FFFC0
5689 +6C13FE6CEBFF80000314E0C66C13F8010113FCEB0007EC00FE0078147F00FC143F151F7E
5690 +A26C143F6D133E6D13FE9038F007FC90B5FC15F815E000F8148039701FFC0020247AA32C
5691 +>I<131E133FA9007FB6FCB71280A36C1500D8003FC8FCB1ED03C0ED07E0A5EC800F011F
5692 +EB1FC0ECE07F6DB51280160001035B6D13F89038003FE0232E7EAD2C>I<3A7FF003FF80
5693 +486C487FA3007F7F0001EB000FB3A3151FA2153F6D137F3900FE03FF90B7FC6D15807F6D
5694 +13CF902603FE07130029247FA32C>I<3A7FFF01FFFCB514FE148314016C15FC3A03E000
5695 +0F80A26D131F00011500A26D5B0000143EA26D137E017C137CA2017E13FC013E5BA2EB3F
5696 +01011F5BA21483010F5BA214C701075BA214EF01035BA214FF6D90C7FCA26D5A147C2724
5697 +7EA32C>I<D87FFFEB7FFF6EB5FCB515806C16004A7ED807C0EB01F0A66C6C495AA3143E
5698 +147FA2D801F0495AECFF87A214F7A201F113C700005D9038F9E3CFA201FB13EFA3D97BC1
5699 +90C7FC017F13FFA21480A2013F5B90381F007C29247FA32C>I<3A3FFF03FFF048018713
5700 +F8A36C010313F03A00FC007E005D90387E01F8013F5BEB1F83EC87E090380FCFC0903807
5701 +EF80EB03FF6D90C7FC5C6D5A147C14FE130180903803EF80903807CFC0EB0FC7EC83E090
5702 +381F01F0013F7FEB7E00017C137C49137E0001803A7FFF01FFFC1483B514FE6C15FC1401
5703 +27247EA32C>I<3A7FFF01FFFCB5008113FE148314816C010113FC3A03E0000F806C7E15
5704 +1F6D140012005D6D133E137C017E137E013E137CA2013F13FC6D5BA2EB0F815DA2EB07C1
5705 +ECC3E0A2EB03E3ECE7C0130114F75DEB00FFA292C7FC80A2143EA2147E147CA214FC5CA2
5706 +EA0C01003F5BEA7F83EB87E0EA7E0F495A387FFF806C90C8FC6C5A6C5AEA07E027367EA3
5707 +2C>I<003FB612E04815F0A4007EC7EA1FE0ED3FC0ED7F80EDFF004A5A003C495AC7485A
5708 +4A5A4A5A4A5A4A5A4AC7FCEB01FC495AEB0FF0495A495A495A49C8FC4848EB01E04848EB
5709 +03F0485A485A485A485A485AB7FCA46C15E024247DA32C>I<15FF02071380141F147F91
5710 +B512004913C04AC7FCEB03F85CB31307EB1FE013FF007F5BB55A49C8FC6D7E6C7FC67F13
5711 +1FEB07F01303B380EB01FEECFFC06D13FF6E1380141F14070200130021417BB92C>I<12
5712 +7812FCB3B3B3A9127806416DB92C>I<EA7FC0EAFFF813FE6D7E6C7FC67F131FEB07F013
5713 +03B380EB01FEECFFC06D13FF6E1380141F147F91B512004913C04AC7FCEB03F85CB31307
5714 +EB1FE013FF007F5BB55A49C8FC13F8EA7FC021417BB92C>I<01F81370D803FE13F8380F
5715 +FF0148138748EBCFF0397F9FFFE0D8FF0F13C0D8FC07138039F803FE00387000F81D0A79
5716 +B22C>I E
5717 +%EndDVIPSBitmapFont
5718 +%DVIPSBitmapFont: Fl cmbx10 10 54
5719 +/Fl 54 124 df<913A03FF8007FE027F9039F07FFF800103B500FDB512E0010F903A00FF
5720 +FE0FF0D93FF8ECF81F90267FE0019038F03FF849485A4816E014804816C00200ED1FF081
5721 +F007C06F91C7FCA8B912E0A4000390C701C0C7FCB3ABB5D8FC3FEBFF80A43D3A7EB938>
5722 +11 D<913803FFC0027F13F00103B512FC010FEB00FED93FF8133FD97FE0EBFF8049485A
5723 +5A1480484A13C04A6C1380A36F1300167E93C7FCA592383FFFC0B8FCA4000390C7FCB3AB
5724 +B5D8FC3F13FFA4303A7EB935>I<913903FFC7C0027F13FF0103B6FC010F130090383FF8
5725 +0190387FE003EBFFC05A14805A4A7EA281A9B8FCA4000390C7FCB3ABB5D8FC3F13FFA430
5726 +3A7EB935>I<B61280A819087F9620>45 D<EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2
5727 +EA3FE0EA0F800D0D798C1B>I<141E143E14FE1307133FB5FCA313CFEA000FB3B3A6007F
5728 +B61280A4213779B630>49 D<EB0FFC90387FFFC048B512F0000714FC390FF03FFF261F80
5729 +0F1380263F000313C05AD9C00113E0486C6C13F07FA2ED7FF8A46C5A6C5A000FC7FCC8FC
5730 +EDFFF0A216E05C16C04A138016004A5A5D4A5A4A5A4A5AEC7F8092C7FC14FEEB01F84948
5731 +1378495A495A495A013EC712F84914F05B4848130148B6FCA25A5A5A5A4815E0B7FCA425
5732 +377BB630>I<EB03FF011F13F0017F13FC3901FC07FF2603F003138048486C13C0496C13
5733 +E0EA0FF001FC14F0121F7FA56C4814E0A23803F001C714C04A138016004A5A4A5AEC3FF0
5734 +90380FFFC092C7FC15F090380007FE913801FF806E13C016E0ED7FF016F816FC153FA216
5735 +FEEA1FC0487E487E487EA416FCA249EB7FF8127F01C0EBFFF06C4814E06C6C4813C0260F
5736 +FC0713806CB61200000114FC6C6C13F0010790C7FC27387CB630>I<ED07C0150FA2151F
5737 +153F157F15FFA25C5C5C5CA2141E5C147C5C5C495A495A1307495A5C131E5B137C5B5B48
5738 +5A485A1207485A90C7FC121E5A127C5AB81280A4C70001EBC000AA0103B61280A429377D
5739 +B630>I<001C15C0D81F80130701F8137F90B61280A216005D5D15F05D15804AC7FC14F0
5740 +90C9FCA8EB07FE90383FFFE090B512F89038FC07FC9038E003FFD98001138090C713C012
5741 +0EC813E0157F16F0A216F8A21206EA3F80EA7FE012FF7FA44914F0A26C4813FF90C713E0
5742 +007C15C06C5B6C491380D9C0071300390FF01FFE6CB512F8000114E06C6C1380D90FF8C7
5743 +FC25387BB630>I<EC0FF8ECFFFE0103EBFF8090390FF80FC090393FE003E090397FC001
5744 +F09038FF000F48EC1FF84848133F485A120F5B121FA2003FEC1FF0ED0FE04990C7FC127F
5745 +A21408EC7FF039FFF1FFFC01F313FFD9F78013809039FF007FC049EB3FE04914F0ED1FF8
5746 +5B16FCA34914FEA5127FA5123F16FCA26C7E16F8000F143F6C6C14F0ED7FE06C6C14C03A
5747 +01FF81FF806C90B51200013F13FC010F13F00101138027387CB630>I<49B47E010F13F0
5748 +013F13FC9038FE01FF3A01F8007F804848EB3FC04848EB1FE0150F485AED07F0121FA27F
5749 +A27F7F01FEEB0FE0EBFF809138E01FC06CEBF03F02FC13809138FF7F006C14FC6C5C7E6C
5750 +14FE6D7F6D14C04914E048B612F0EA07F848486C13F8261FE01F13FC383FC007EB800100
5751 +7F6D13FE90C7123F48140F48140715031501A21500A216FC7E6C14016D14F86C6CEB03F0
5752 +6D13076C6CEB0FE0D80FFEEB7FC00003B61200C614FC013F13F00103138027387CB630>
5753 +56 D<EB03FF011F13E0017F13F83901FF03FE4848C67E4848EB7F80484814C0001FEC3F
5754 +E0123F49EB1FF0127F16F8A212FF16FCA516FEA5007F143FA3123F157F6C7E000F14FF6C
5755 +6C5A3903FE03DF6CB5129F6C6C131FD91FFC13FCEB00201400A216F8D80FE0133F487E48
5756 +6C14F0A216E0157F16C0EDFF80495A6C4848130090388007FE390FE01FF86CB55A6C14C0
5757 +C691C7FCEB1FF027387CB630>I<EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA
5758 +0F80C7FCABEA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F800D2579A41B>I<
5759 +ED03E04B7EA24B7EA34B7EA24B7EA34B7EA292B57EA34A8015F302038015E1A202078015
5760 +C0020F80ED807FA2021F80ED003F4A80023E131FA2027E80027C7F02FC814A7FA2010182
5761 +4A7F49B77EA3498202C0C7FC010F824A147FA2011F8291C8123F4982013E151FA2017E82
5762 +017C8101FE83B500F80107B61280A4413A7DB948>65 D<B812C017FC17FF18C028007FF0
5763 +00037F04007F717E717E171F84A2717EA74D5AA260173F4D5A4D5A4C13C0040F5B91B600
5764 +FCC7FCA2EFFF8002F0C713F0EF3FF8717E717E717E19807113C0A319E0A719C0A25F4D13
5765 +8019005FEF7FFE4C485AB912F018C095C7FC17F03B397DB844>I<DB3FFCEB01C00203B5
5766 +EAC003021FECF00791B6EAFC0F01039039FC00FF3F4901C0EB1FFFD91FFEC77E49481403
5767 +D97FF080494880485B48177F4849153F4890C9FC181F485A180F123F5B1807127FA24993
5768 +C7FC12FFAD127F7FF003C0123FA27F001F1707A26C6C1780180F6C6D16006C6D5D6C173E
5769 +6C6D157ED97FF85D6D6C4A5A6DB44A5A010701C0EB0FE06D01FCEBFF80010090B548C7FC
5770 +021F14F8020314E09126003FFEC8FC3A3B7BB945>I<B612FCA439007FF800B3B3ADB612
5771 +FCA41E397DB824>73 D<B500F80403B512F06E5EA26E5ED8007FF1E000A2D97BFF161EA2
5772 +01796D5DA201786D5DA26E6C5DA36E6C4A5AA26E6C4A5AA26E6C4A5AA26E6C4A5AA26E6C
5773 +141EA36E6D5BA26E6D5BA26F6C5BA26F6C485AA36F6C485AA26F6C485AA26F6C48C7FCA2
5774 +923803FF1EA36F13BCA26F13F8A2705AA2705AA213FCB500FC6D4848B612F0A2EE0F80EE
5775 +070054397DB85B>77 D<B500FC0203B512F0A28080C66C6D90390003F0006F6E5A81017B
5776 +7F13798101787F6E7E6E7E6E7F6E7FA26E7F6E7F6E7F6E7F6F7E153F826F13806F13C06F
5777 +13E06F13F06F13F88117FCEE7FFEEE3FFF7013817013C17013E18218F17013F97013FDEF
5778 +7FFF8383A28383838383187FA2183F181F01FC160FB500FC150718031801A244397DB84B
5779 +>I<EDFFF8020FEBFF80027F14F0903A01FFC01FFC010790380007FFD91FFC010113C0D9
5780 +3FF06D6C7E49486E7E49486E7E48496E7E48834890C86C7EA248486F1380A248486F13C0
5781 +A2003F18E0A348486F13F0A400FF18F8AC007F18F06D5DA3003F18E0A26D5D001F18C0A2
5782 +6C6C4B13806C18006E5C6C6D4A5A6C5F6C6D4A5A6D6C4A5AD93FFC49485A6DB401075B01
5783 +07D9C01F90C7FC010190B512FC6D6C14F0020F1480020001F8C8FC3D3B7BB948>I<B8FC
5784 +17F017FEEFFF8028007FF8000F13C0040113E07013F0EF7FF8EF3FFCA2EF1FFEA218FFA8
5785 +18FEA2EF3FFCA2EF7FF8EFFFF04C13E0040F13C091B7120017FC17E002F8C9FCB3A4B612
5786 +FCA438397DB841>I<B712FCEEFFE017FC17FF28007FF8000F13C004017F707F717E717E
5787 +A2717EA284A760A24D5A604D5A4D5A04035B041F90C8FC91B612FC17E0839139F8003FFC
5788 +EE0FFF707F707F8284A2707FA584A51A601AF084177F1901DD3FFE13E0B600FC011F1303
5789 +94390FFF87C071EBFF8005011400CBEA1FFC443A7DB848>82 D<D907FF130E013FEBE01E
5790 +90B5EAF83E0003ECFE7E3A07FC01FFFE390FF0001F4848130F48481303491301007F1400
5791 +90C8FC167E5A163EA27F161E7F7F6D91C7FC13FC387FFFE014FEECFFF06C14FE6F7E6C81
5792 +6C15F06C816C81C681133F010F801301D9000F1480EC007F030F13C01503818100F0157F
5793 +A3163FA27E17807E167F6C16007E6D14FE01E0495A01F813039039FF801FF800FC90B512
5794 +E0D8F83F5CD8F00749C7FC39E0007FF02A3B7BB935>I<003FB91280A4D9F800EBF003D8
5795 +7FC09238007FC049161F007EC7150FA2007C1707A200781703A400F818E0481701A4C892
5796 +C7FCB3AE010FB7FCA43B387DB742>I<B600FC011FB512C0A426007FF8C8381FC000725A
5797 +B3B3181F013F94C7FC8060011F163E6D6C157E187C6D6C15FC6D6D495A6D6DEB07F06D01
5798 +F0EB1FE0DA7FFEEBFFC0021FB6C8FC02075C020014F0030F1380423A7DB849>I<B600F0
5799 +0103B512E0A4C601F0C83807F0006E5E017F5F6E150FA2013F5F6E151F011F94C7FC6E5D
5800 +6D163E6F147E6D167CA26F14FC6D5E6F13016D5E6F13036D5E811707027F5D6F130F023F
5801 +5D6F131F021F92C8FC815F6E143EEE807E6E147CEEC0FC6E5C16E016E16E5C16F36E5C16
5802 +FF6F5BA36F5BA26F90C9FCA26F5AA36F5AA26F5AA26F5A433A7EB848>I<B6D8E01FB500
5803 +FC90383FFFFCA4000101F0C7D83FFCC8EA7E006C71153C171F6E197C017F701578836E70
5804 +14F8013F6F5E6E1801011F4B6D5CA26E18036D4B6D5CA26D6D496D495A173C6F170F6D03
5805 +7C6D91C7FCEF787F6F5F6D4B6C6C131E816D02016E5BEFE01F03F8177C027F01036E1378
5806 +4D7E03FCEE80F8023F49486C5C15FE021F010FEDC1E04D7E03FF16C36E49EDE3C0041E7F
5807 +049E15F76E01BC6D5C04FC15FF6E95C8FC4C80A26E5F4C143F6E5F4C141FA2037F5E4C14
5808 +0FA26F486E5AA2031F5E93C812036F5E5E3A7EB863>I<EB3FFE0003B512E0000F14F839
5809 +1FF00FFE003FEB03FF6D6C7F6E7FA26F7EA26C5A6C5AEA0380C8FCA2EC3FFF010FB5FC13
5810 +7F3901FFF87F00071380380FFE00EA3FF85B485A12FF5BA415FF6D5A127F263FF00713F8
5811 +3B1FFC1FBFFFC0390FFFFE1F0003EBF80F39003FE0032A257DA42E>97
5812 +D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC9138FE03FFDAF00013804AEB7FC002
5813 +80EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FCA3EE1FF8A217F06E133F6EEB7FE0
5814 +6E14C0903AFDF001FF80903AF8FC07FE009039F03FFFF8D9E00F13E0D9C00390C7FC2F3A
5815 +7EB935>I<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF812
5816 +1F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6C
5817 +EB07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101138023257DA42A>I<EE
5818 +7F80ED7FFFA4150381AF903801FF81010F13F1013F13FD9038FFC07F0003EB001FD807FC
5819 +1307000F8048487F5B123FA2485AA312FFAA127FA27F123FA26C6C5B000F5C6C6C5B6C6C
5820 +4913C02701FF80FD13FE39007FFFF9011F13E1010313012F3A7DB935>I<903803FF8001
5821 +1F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC1FE05B003FEC0F
5822 +F0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F0
5823 +00071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025257DA42C>I<EC
5824 +1FF0903801FFFC010713FF90391FF87F8090383FE0FFD9FFC113C0A2481381A24813016E
5825 +1380A2ED3E0092C7FCA8B6FCA4000390C8FCB3ABB512FEA4223A7DB91D>I<161FD907FE
5826 +EBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F48486C138F003F15CF4990
5827 +387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B512F8
5828 +6D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8EDFF8016E06C15F86C816C81
5829 +5A001F81393FC0000F48C8138048157F5A163FA36C157F6C16006D5C6C6C495AD81FF0EB
5830 +07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377DA530>I<13FFB5FCA41207
5831 +7EAFED7FC0913803FFF8020F13FE91381F03FFDA3C01138014784A7E4A14C05CA25CA291
5832 +C7FCB3A3B5D8FC3F13FFA4303A7DB935>I<EA01F0EA07FC487EA2487EA56C5AA26C5AEA
5833 +01F0C8FCA913FF127FA412077EB3A9B512F8A4153B7DBA1B>I<13FFB5FCA412077EAF92
5834 +380FFFE0A4923803FC0016F0ED0FE0ED1F804BC7FC157E5DEC03F8EC07E04A5A141FEC7F
5835 +E04A7E8181A2ECCFFEEC0FFF496C7F806E7F6E7F82157F6F7E6F7E82150F82B5D8F83F13
5836 +F8A42D3A7EB932>107 D<13FFB5FCA412077EB3B3ACB512FCA4163A7DB91B>I<01FED97F
5837 +E0EB0FFC00FF902601FFFC90383FFF80020701FF90B512E0DA1F81903983F03FF0DA3C00
5838 +903887801F000749DACF007F00034914DE6D48D97FFC6D7E4A5CA24A5CA291C75BB3A3B5
5839 +D8FC1FB50083B512F0A44C257DA451>I<01FEEB7FC000FF903803FFF8020F13FE91381F
5840 +03FFDA3C011380000713780003497E6D4814C05CA25CA291C7FCB3A3B5D8FC3F13FFA430
5841 +257DA435>I<903801FFC0010F13F8017F13FFD9FF807F3A03FE003FE048486D7E48486D
5842 +7E48486D7EA2003F81491303007F81A300FF1680A9007F1600A3003F5D6D1307001F5DA2
5843 +6C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC011F13FC010113C029257DA430>
5844 +I<9039FF01FF80B5000F13F0023F13FC9138FE07FFDAF00113800007496C13C06C0180EB
5845 +7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA217F8163F17F06E137F6E14E06E
5846 +EBFFC0DAF00313809139FC07FE0091383FFFF8020F13E0020390C7FC91C9FCACB512FCA4
5847 +2F357EA435>I<49B4EB0780010FEBE00F013FEBF81F9039FFC07C3F0003EB803E3A07FE
5848 +000F7F4848EB07FF121F497F123F497F127FA25B12FFAA6C7EA36C7E5D6C7E000F5C6C6C
5849 +5B6C6C133F6CEBC0FD39007FFFF1011F13C10101130190C7FCAC037F13FEA42F357DA432
5850 +>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8FFC000075B6C6C5A5CA2913880
5851 +7F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA427>I<90383FF0383903FFFEF8
5852 +000F13FF381FC00F383F0003007E1301007C130012FC15787E7E6D130013FCEBFFE06C13
5853 +FCECFF806C14C06C14F06C14F81203C614FC131F9038007FFE140700F0130114007E157E
5854 +7E157C6C14FC6C14F8EB80019038F007F090B512C000F8140038E01FF81F257DA426>I<
5855 +130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA3000390C7FCB21578A815F86CEB80F0
5856 +14816CEBC3E090383FFFC06D1380903803FE001D357EB425>I<01FFEC3FC0B5EB3FFFA4
5857 +000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E13FF90387FFFFC011F13F0010313
5858 +8030257DA435>I<B539F001FFF8A4000390C7EA3F00161E6E133E6C153C6E137C6C1578
5859 +6E13F8017F5CECF001013F5C14F8011F495AA2ECFC07010F5CECFE0F010791C7FC6E5A6D
5860 +131E15BE6D13BC15FC6D5BA36E5AA26E5AA26E5AA26E5AA22D257EA432>I<B500F1B538
5861 +803FFFA43D07FE000FF80003E06C6C010715C082028015076C6E6C148015076C01C0ED0F
5862 +00826E485C017FED801E5D90273FF01E7F5B17C0DAF83E147C011F90393C3FE078037C14
5863 +F8903B0FFC781FF0F0A29139FEF00FF10107EDF9E002FF14FB6D496CB45AA24B7E6D5EA2
5864 +6D496C90C7FCA292C7FC6E5CA2023E147C023C143C40257EA445>I<B539F01FFFF0A400
5865 +0390398003F8006C01C013E06C1407D97FE05B6D6C485A6E48C7FC90381FFC3E010F5B90
5866 +3807FEFC6D6C5A5D6D5B6D5B6E7E6E7E814A7EA24A7E903801F3FFD903E37FD907C17FEB
5867 +0FC049486C7E4A6C7E013E80496D7E49130F00016E7EB590383FFFF8A42D257EA432>I<
5868 +B539F001FFF8A4000390C7EA3F00161E6E133E6C153C6E137C6C15786E13F8017F5CECF0
5869 +01013F5C14F8011F495AA2ECFC07010F5CECFE0F010791C7FC6E5A6D131E15BE6D13BC15
5870 +FC6D5BA36E5AA26E5AA26E5AA26E5AA292C8FCA25C141E003F133E387F803C38FFC07C14
5871 +7814F8EBC1F0EBC3E06C485A387D1F80D83FFFC9FCEA1FFCEA07F02D357EA432>I<003F
5872 +B612C0A3D9F0031380EB800749481300003E5C003C495A007C133F5D0078495A14FF5D49
5873 +5B5BC6485B92C7FC495A131F5C495A017FEB03C0EBFFF014E04813C05AEC80074813005A
5874 +49EB0F80485A003F141F4848133F9038F001FFB7FCA322257DA42A>I<B812FEA32F0380
5875 +9730>I E
5876 +%EndDVIPSBitmapFont
5877 +%DVIPSBitmapFont: Fm cmbx12 14.4 34
5878 +/Fm 34 119 df<EA07F0487E487E487E487EB51280A76C13006C5A6C5A6C5A6C5A111176
5879 +9025>46 D<157815FC14031407141F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3
5880 +B3B3A6007FB712FEA52F4E76CD43>49 D<EC3FFE0103B512E0010F14FC013F14FF90B712
5881 +C048D9C07F7F2703FE000F13F8D807F801037FD80FE06D7F48486D7F48488001F0168048
5882 +6C6E13C07F486C6E13E07FA27013F0A56C5AA26C5AEA0FF0EA03C0C914E05EA218C05E18
5883 +80A24C13005F4C5A4B5B5F4B5B5F4B5B4B90C7FC4B5A5E4B5AED7FE04B5A4A5B4A48C8FC
5884 +4A5A5D4A48EB01F04A5AEC3F804AC7FC02FEEC03E0495A495A495A495AD91F80140749C8
5885 +FC013E150F017FB7FC90B812C05A5A5A5A5A5A5AB9FC1880A4344E79CD43>I<91380FFF
5886 +C091B512FC0107ECFF80011F15E090263FF8077F9026FF800113FC4848C76C7ED803F86E
5887 +7E491680D807FC8048B416C080486D15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9
5888 +FC4C13005FA24C5A4B5B4B5B4B13C04B5BDBFFFEC7FC91B512F816E016FCEEFF80DA0007
5889 +13E0030113F89238007FFE707E7013807013C018E07013F0A218F8A27013FCA218FEA2EA
5890 +03E0EA0FF8487E487E487EB57EA318FCA25E18F891C7FC6C17F0495C6C4816E001F04A13
5891 +C06C484A1380D80FF84A13006CB44A5A6CD9F0075BC690B612F06D5D011F1580010302FC
5892 +C7FCD9001F1380374F7ACD43>I<177C17FEA2160116031607160FA2161F163F167FA216
5893 +FF5D5DA25D5DED1FBFED3F3F153E157C15FCEC01F815F0EC03E01407EC0FC01580EC1F00
5894 +5C147E147C5C1301495A495A5C495A131F49C7FC133E5B13FC485A5B485A1207485A485A
5895 +90C8FC123E127E5ABA12C0A5C96C48C7FCAF020FB712C0A53A4F7CCE43>I<D80380150E
5896 +D807E0157E01FEEC03FED9FFF0137F91B65A5F5F5F5F5F94C7FC5E5E16F016C093C8FC15
5897 +F801E190C9FC01E0CAFCABEC0FFF027F13F001E3B512FE01E76E7E9026FFF8077FDAC001
5898 +7F49C713F8496E7E49143F4981496E7E6C481680C9FC18C08218E0A418F0A3EA0FE0487E
5899 +487E487E487EA418E0A35B6C484A13C05B491680003EC85A003F17006C6C4A5A6D5D6C6C
5900 +4A5AD807F8495BD803FE01075B2701FFC03F5B6C90B65A013F4AC7FC6D14F8010314C090
5901 +26007FF8C8FC344F79CD43>I<ED0FFF92B512E0020780021F14FC91397FFE03FE903A01
5902 +FFF0007F4901C0EB3F804990C7121F4948EC7FC0494814FF49484913E049485B01FF5C48
5903 +5BA2485B5AA2486F13C04A6D1380486F1300177E94C7FC5AA291CAFC5AA21508913801FF
5904 +F8020713FFB54814C04A14F04AC66C7E023C6D7E4A6D7E4A6D7E7013804A15C0A24A15E0
5905 +7013F05C18F8A491C714FCA37EA67EA46C17F880A27E18F06C5D18E06C6D15C07E6E4913
5906 +806C6D15006D6C495A6D6CEB7FFC6DB448485A6D90B55A010315C0010092C7FC023F13FC
5907 +020713C0364F7ACD43>I<91380FFF8091B512F8010314FE010F6E7E4901037F90267FF8
5908 +007F4948EB3FF048496D7E484980486F7E484980824817805A91C714C05A7013E0A218F0
5909 +B5FCA318F8A618FCA46C5DA37EA25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF8
5910 +03011FB512E36D14C30103028313F89039007FFE03EC00401500A218F05EA3D801F816E0
5911 +487E486C16C0487E486D491380A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C4849
5912 +5BD803FC010F5B9027FF807FFEC7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F036
5913 +4F7ACD43>57 D<171F4D7E4D7EA24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C808304
5914 +7F80167E8304FE804C7E03018116F8830303814C7E03078116E083030F814C7E031F8116
5915 +8083033F8293C77E4B82157E8403FE824B800201835D840203834B800207835D844AB87E
5916 +A24A83A3DA3F80C88092C97E4A84A2027E8202FE844A82010185A24A820103854A820107
5917 +85A24A82010F855C011F717FEBFFFCB600F8020FB712E0A55B547BD366>65
5918 +D<BA12C019FEF1FFC01AF01AFCD8000701F0C7000313FFDE007F7F737F070F7F737F8785
5919 +87858785A287A84F5BA263616361634F5B4F5B077F90C7FC4E485A060713F892B812E097
5920 +C8FC861AF003F0C7000313FE9539003FFF80070F13E0737F07017F87737F747E1C807413
5921 +C0A27413E0A31CF0A386A362A31CE0A2621CC0A250138097B5FC1C004F5B19074F5B073F
5922 +13F04EB55ABC128098C7FC1AF81AC007F8C8FC54527CD160>I<932601FFFCEC01C0047F
5923 +D9FFC013030307B600F81307033F03FE131F92B8EA803F0203DAE003EBC07F020F01FCC7
5924 +383FF0FF023F01E0EC0FF94A01800203B5FC494848C9FC4901F882494982494982494982
5925 +4949824990CA7E494883A2484983485B1B7F485B481A3FA24849181FA3485B1B0FA25AA2
5926 +98C7FC5CA2B5FCAE7EA280A2F307C07EA36C7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D
5927 +606C6D187EA26D6C606D6D4C5A6D6D16036D6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D
5928 +6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1FF80203903AFFE001FFF0020091B612C0033F
5929 +93C8FC030715FCDB007F14E0040101FCC9FC525479D261>I<B812C0A5D8000701F8C7FC
5930 +B3B3B3B2B812C0A52A527CD132>73 D<BAFC19F819FF1AE086D8000701F0C7001F13FC06
5931 +0113FF726C13807313C0070F13E01BF0857313F81BFCA27313FEA41BFFA81BFEA31BFC61
5932 +A21BF84F13F04F13E0614F13C04F13004E485A061F5B92B812F01AC04FC7FC19E003F8CB
5933 +FCB3AEB812C0A550527CD15C>80 D<B912F0F0FF8019F819FF1AC0D8000701F0C714F006
5934 +0F7F060113FE727F737F737F85737F87A2737FA387A863A2616363A24F5B4F5B4F90C8FC
5935 +4F5A06035B060F13F095B512C092B8C9FC19F819E019F89226F0000313FE9439007FFF80
5936 +727F727F727F727F727F8684A28684A787A71D1C75133EA38575137E73157C7513FC7314
5937 +01B86C6D9038F803F807039038FE07F07390B512E0736C14C0080F1400CEEA7FFC5F537C
5938 +D164>82 D<91260FFF80130791B500F85B010702FF5B011FEDC03F49EDF07F9026FFFC00
5939 +6D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F001F824981123F4981007F
5940 +82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15F86CECFF8016FC6CEDFF
5941 +C017F06C16FC6C16FF6C17C06C836C836D826D82010F821303010082021F16801400030F
5942 +15C0ED007F040714E01600173F050F13F08383A200788200F882A3187FA27EA219E07EA2
5943 +6CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A5A02F8EC7FF0903B1FFF
5944 +C003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F048D9007F90C8FC3C5479D2
5945 +4B>I<003FBC1280A59126C0003F9038C0007F49C71607D87FF8060113C001E08449197F
5946 +49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6C994C7FCB3B3AC91B912
5947 +F0A553517BD05E>I<B700FE031FB512FEA5D8001F01F0CA383FFE00F307F06D626F170F
5948 +6D62811B1F6D6D601B3F6D97C7FC6F5F6D197E821BFE6E6D5E1A016E6D5E1A036E607015
5949 +07A26E6D5E1A0F6E6D5E1A1F6E6070153FA26E6D93C8FC626E6E147E1AFE6F5E711301A2
5950 +6F6D5C19036F6D5C19076F5E71130FA26F6D5C191F6F6D5C193F6F93C9FC715BA26FEC80
5951 +7E19FE706D5A18C1705C18E3705C18F318F770EBFFE0A2705CA2705CA37091CAFCA2705B
5952 +A2715AA3715AA2715AA2715A715A5F537DD166>86 D<EC7FFF0107B512F0013F14FE90B7
5953 +7E48D9E00F7F2703FE000113F0486C6D7F6EEB3FFC48826E131F83707FA36C496D7FA26C
5954 +90C7FC6C5AC9FCA6037FB5FC020FB6FC91B7FC01071487013FEBF0074913803901FFFC00
5955 +4813F0485B485B485B4890C7FC5A5BA2485AA45EA26D5C007F151D163D6C6C02797F6C6D
5956 +01F113F86C9026C003E1EBFFE06C9026F81FC014F06C90B5487EC6ED001F011F01FC0107
5957 +13E0010101E090C8FC3C387CB641>97 D<913801FFF8021FEBFF8091B612F0010315FC01
5958 +0F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817C048495B5C5A485BA2486F
5959 +138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27EA2EF03E06C7F17076C6D15
5960 +C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB03F8010F9038E01FF00103
5961 +90B55A01001580023F49C7FC020113E033387CB63C>99 D<4DB47E0407B5FCA5EE001F17
5962 +07B3A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE74990380007F7D97FFC01
5963 +01B5FC49487F4849143F484980485B83485B5A91C8FC5AA3485AA412FFAC127FA36C7EA3
5964 +7EA26C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED90FEFEBFF80903A0FFFC0
5965 +7FCF6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC41547CD24B>I<913803FFC0
5966 +023F13FC49B6FC010715C04901817F903A3FFC007FF849486D7E49486D7E4849130F4849
5967 +6D7E48178048497F18C0488191C7FC4817E0A248815B18F0A212FFA490B8FCA318E049CA
5968 +FCA6127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6DEC0FC06C6D141F6C6DEC
5969 +3F806D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A010015C0021F49C7FC0201
5970 +13F034387CB63D>I<ED3FFC0203B5FC020F14C0023F14E09139FFF81FF0499038C03FF8
5971 +49EB807F49903800FFFC495A495AA2495AA2EE7FF8495AEE3FF0EE0FC093C7FCAEB712E0
5972 +A526007FF8C8FCB3B3A7007FB512FEA52E547CD329>I<DA3FFF14FF0103B5D8F00713C0
5973 +010FDAFC1F13E0013FECFF7F90267FFC0F9038FF9FF09026FFE001EBF83F48496C13E048
5974 +4990387FF01F4890C7D83FF813E0489338FC0FC0F0078048486E6CC7FCA2003F82A9001F
5975 +5EA26C6C4A5AA26C5E6C6D495A6C6D495A6C6D485BDAFC0F5B4890B6C8FCD803EF14FC01
5976 +C314F02607C03F90C9FC91CBFCA2120FA37FA213F813FE90B7FC6C16F817FF18C06C836C
5977 +836C836D828448B9FC12074848C700031480D81FF8EC003F4848150748486F13C083485A
5978 +83A56D5D007F18806D5D003F18006C6C4B5AD80FFEED1FFC6C6C6CEC7FF86C01E049485A
5979 +6C01FE011F5B6C6CB71280010F03FCC7FC010115E0D9000F01FCC8FC3C4F7CB543>I<EB
5980 +3FF0B5FCA51203C6FCB3A4EE1FFC93B512C0030314F0030F8092391FE07FFC92393F001F
5981 +FE037C8003F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA25CA45CB3ACB6D8F807B612
5982 +C0A542537BD24B>I<137F497E000313E0487FA2487FA76C5BA26C5BC613806DC7FC90C8
5983 +FCADEB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I<EB3FF0B5FCA512017EB3B3
5984 +B3B1B612F0A51C537BD225>108 D<D93FF0EB1FFCB591B512C0030314F0030F8092391F
5985 +E07FFC92393F001FFE0003027C80C602F07FDAF1E081ECF3C0DAF7807F8502FFC7FC5CA2
5986 +5CA45CB3ACB6D8F807B612C0A542367BB54B>110 D<913801FFE0021F13FE91B612C001
5987 +0315F0010F9038807FFC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A
5988 +147F48834890C86C7EA24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18
5989 +006D5DA26C5FA26C5F6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90
5990 +C7FC903A0FFF807FFC6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3F
5991 +F001FFE0B5010F13FE033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB
5992 +1FFFC602806D7F92C76C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A3
5993 +6118FFA2615F616E4A5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B
5994 +02F8B612E06F1480031F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<90397F
5995 +E003FEB590380FFF80033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6EC
5996 +C07FECE78014EF150014EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F
5997 +367CB537>114 D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0
5998 +130148487F4980127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14
5999 +FF16C06C15F06C816C816C81C681013F1580010F15C01300020714E0EC003F030713F015
6000 +010078EC007F00F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001
6001 +FEEB01FE9039FFC00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<
6002 +143EA6147EA414FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA42600
6003 +3FFEC8FCB3A9EE07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D
6004 +6C5B021F5B020313802A4D7ECB34>I<D93FF8913801FFC0B50207B5FCA50003ED001FC6
6005 +1607B3AE5FA35FA2017F5D173B177B6D6C14F3DC01E313F06D6CD907C3EBFFC0903A0FFF
6006 +C03F836D90B51203010114FE6D6C13F8020701E091C7FC42377BB54B>I<B600F00107B5
6007 +FCA5000101F8C8EA7FE06C6DED3F00A2017F163E6E157E013F167C6E15FC6D5E6F13016D
6008 +5E8117036D5E6F13076D5E6F130F6D5E6F131F6D93C7FC815F6E6C133E177E023F147C6F
6009 +13FC6E5C16816E5C16C3A26EEBE3E016E76E5C16FF6E5CA26E91C8FCA26F5AA36F5AA26F
6010 +5AA26F5AA26F5A6F5A40367DB447>I E
6011 +%EndDVIPSBitmapFont
6012 +%DVIPSBitmapFont: Fn cmr10 10 90
6013 +/Fn 90 125 df<DA0FF813FC91397FFF07FF903B01F807DF83C0903A07E001FF0F903B1F
6014 +8007FE1FE090393F000FFC137E16F85B9338F007804848010790C7FC1503ACB812F8A328
6015 +01F80003F0C7FCB3AB486C497E267FFFE0B512F0A3333B7FBA30>11
6016 +D<EC0FF8EC7FFE903901F80780903907E001C090391F8000E090383F0007017E497EA25B
6017 +A2485A6F5AED018092C8FCA9ED03F0B7FCA33901F8000F1503B3AA486C497E267FFFE0B5
6018 +12C0A32A3B7FBA2E>I<EC0FFC91387FFF70903901F803F0903807E00790381F800FEB3F
6019 +00137EA25B150748481303ADB7FCA33901F80003B3AB486C497E267FFFE0B512C0A32A3B
6020 +7FBA2E>I<DA0FF0EB1FF0DA7FFEEBFFFC903B01F80F83F00F903C07E001CFC00380903C
6021 +1F8000FF0001C090273F0007FE130F017E4948497EA2495CA248485C03076E5A03030203
6022 +C7FC95C8FCA9F007E0BAFCA33C01F80003F0001F1807B3AA486C496C497E267FFFE0B500
6023 +C1B51280A3413B7FBA45>I<133C137EA213FE1201EA03FC13F0EA07E0EA0FC0EA1F80EA
6024 +1E005A5A5A12C00F0F6FB92A>19 D<121C127FEAFF80A8EA7F00AB123EAB121CABC7FCA8
6025 +121C127FEAFF80A5EA7F00121C093C79BB17>33 D<001C131C007F137F39FF80FF80A26D
6026 +13C0A3007F137F001C131C00001300A40001130101801380A20003130301001300485B00
6027 +061306000E130E485B485B485B006013601A197DB92A>I<030C1303031E497EA2033E13
6028 +0FA2033C91C7FCA2037C5BA20378131EA303F8133EA24B133CA20201147CA24B1378A202
6029 +0314F8A24B5BA302071301007FB91280BA12C0A26C1880C7271F0007C0C7FC021E5CA302
6030 +3E130FA2023C91C8FCA2027C5BA20278131EA302F8133E007FB91280BA12C0A26C188028
6031 +0003E000F8C8FC4A5BA301071301A202805BA2010F1303A202005BA2491307A2011E5CA3
6032 +013E130FA2013C91C9FCA2017C5BA20178131EA20130130C3A4A7BB945>I<121C127FEA
6033 +FF80A213C0A3127F121C1200A412011380A2120313005A1206120E5A5A5A12600A1979B9
6034 +17>39 D<146014E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B120F
6035 +90C7FCA25A121EA2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C7E
6036 +A26C7E1378A27F7F130E7FEB0380EB01C0EB00E01460135278BD20>I<12C07E12707E7E
6037 +7E120F6C7E6C7EA26C7E6C7EA21378A2137C133C133E131EA2131F7FA21480A3EB07C0A6
6038 +EB03E0B2EB07C0A6EB0F80A31400A25B131EA2133E133C137C1378A25BA2485A485AA248
6039 +5A48C7FC120E5A5A5A5A5A13527CBD20>I<EB0380497EA7397803803C00FC147E00FE14
6040 +FE397F8383FC393FC387F8390FE38FE03903FBBF803900FFFE00EB3FF8EB0FE0A2EB3FF8
6041 +EBFFFE3903FBBF80390FE38FE0393FC387F8397F8383FC39FE0380FE00FC147E0078143C
6042 +390007C000A76D5A1F247BBD2A>I<15301578B3A6007FB812F8B912FCA26C17F8C80078
6043 +C8FCB3A6153036367BAF41>I<121C127FEAFF80A213C0A3127F121C1200A412011380A2
6044 +120313005A1206120E5A5A5A12600A19798817>I<B512FCA516057F941C>I<121C127FEA
6045 +FF80A5EA7F00121C0909798817>I<150C151E153EA2153C157CA2157815F8A215F01401
6046 +A215E01403A215C01407A21580140FA215005CA2141E143EA2143C147CA2147814F8A25C
6047 +1301A25C1303A2495AA25C130FA291C7FC5BA2131E133EA2133C137CA2137813F8A25B12
6048 +01A25B1203A25B1207A25B120FA290C8FC5AA2121E123EA2123C127CA2127812F8A25A12
6049 +601F537BBD2A>I<EB03F8EB1FFF90387E0FC09038F803E03901E000F048481378000714
6050 +7C48487FA248C77EA2481580A3007EEC0FC0A600FE15E0B3007E15C0A4007F141F6C1580
6051 +A36C15006D5B000F143EA26C6C5B6C6C5B6C6C485A6C6C485A90387E0FC0D91FFFC7FCEB
6052 +03F8233A7DB72A>I<EB01C013031307131F13FFB5FCA2131F1200B3B3A8497E007FB512
6053 +F0A31C3879B72A>I<EB0FF0EB7FFE48B57E3903E03FE0390F000FF0000E6D7E486D7E48
6054 +6D7E123000706D7E126012FCB4EC7F807FA56CC7FC121CC8FCEDFF00A34A5A5D14035D4A
6055 +5A5D140F4A5A4A5A92C7FC147C5C495A495A495A495A91C8FC011EEB01805B5B49130348
6056 +481400485A485A000EC75A000FB6FC5A5A485CB6FCA321387CB72A>I<EB07F8EB3FFF49
6057 +13C03901F80FF03903C007F848486C7E380E0001000F80381FE0006D7FA56C5A6C5AC85A
6058 +1401A25D4A5AA24A5A5DEC0F80027EC7FCEB1FFCECFF809038000FE06E7EEC01FC816E7E
6059 +ED7F80A216C0A2153F16E0A2121EEA7F80487EA416C049137F007F1580007EC7FC0070EC
6060 +FF006C495A121E390F8003F83907F00FF00001B512C06C6C90C7FCEB0FF8233A7DB72A>
6061 +I<1538A2157815F8A2140114031407A2140F141F141B14331473146314C313011483EB03
6062 +0313071306130C131C131813301370136013C01201EA038013005A120E120C5A12381230
6063 +5A12E0B712F8A3C73803F800AB4A7E0103B512F8A325397EB82A>I<0006140CD8078013
6064 +3C9038F003F890B5FC5D5D158092C7FC14FC38067FE090C9FCABEB07F8EB3FFE9038780F
6065 +803907E007E090388003F0496C7E12066E7EC87EA28181A21680A4123E127F487EA490C7
6066 +1300485C12E000605C12700030495A00385C6C1303001E495A6C6C485A3907E03F800001
6067 +B5C7FC38007FFCEB1FE0213A7CB72A>I<EC3FC0903801FFF0010713FC90380FE03E9038
6068 +3F800790387E001F49EB3F804848137F485AA2485A000FEC3F0049131E001F91C7FCA248
6069 +5AA3127F90C9FCEB01FC903807FF8039FF1E07E090383801F0496C7E01607F01E0137E49
6070 +7FA249148016C0151FA290C713E0A57EA56C7E16C0A2121FED3F807F000F15006C6C5B15
6071 +FE6C6C5B6C6C485A3900FE07F090383FFFC06D90C7FCEB03FC233A7DB72A>I<12301238
6072 +123E003FB612E0A316C05A168016000070C712060060140E5D151800E01438485C5D5DC7
6073 +12014A5A92C7FC5C140E140C141C5CA25CA214F0495AA21303A25C1307A2130FA3495AA3
6074 +133FA5137FA96DC8FC131E233B7BB82A>I<EB03F8EB1FFF017F13C09038FC07F03901E0
6075 +01F848486C7E4848137C90C77E48141E000E141F001E80A3121FA27F5D01E0131E6C6C13
6076 +3E01FC133C6D5B6C6C6C5AECC1E06CEBF3C06C01FFC7FC6C5BEB3FFF6D13C081017F13F8
6077 +01F07F3903E07FFE3907801FFF48486C1380481303003E6D13C0003CEB007F007C143F00
6078 +78EC0FE000F814075A1503A21501A36C15C012781503007C15806CEC07006C5C6C6C131E
6079 +D807E0137C3903F803F0C6B55A013F1380D907FCC7FC233A7DB72A>I<EB03F8EB1FFF01
6080 +7F13C09038FC07E03903F803F048486C7E48486C7E49137E121F48487FA2007F158090C7
6081 +FCA248EC1FC0A616E0A56C143FA27F123F001F147FA26C6C13FF3907E001DF0003149F38
6082 +01F0033900FC0F1FD93FFC13C0EB07F090C7FC153F1680A316005D000F147E487E486C5B
6083 +A24A5A4A5A49485A6C48485A001C495A260F807FC7FC3807FFFC000113F038003FC0233A
6084 +7DB72A>I<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C0924
6085 +79A317>I<121C127FEAFF80A5EA7F00121CC7FCB2121C127F5A1380A4127F121D1201A4
6086 +12031300A25A1206A2120E5A121812385A1260093479A317>I<007FB812F8B912FCA26C
6087 +17F8CCFCAE007FB812F8B912FCA26C17F836167B9F41>61 D<EB3FE03801FFFE3907C03F
6088 +80390E000FC0003CEB07F000301303007014F8007C130100FE14FC7EA4127E003CEB03F8
6089 +C7FCEC07F0A2EC0FE0EC1F80EC3F00147E147C5C495A5C495A5CA249C7FCA31306AA90C8
6090 +FCA8130EEB3F80497EA56D5A010EC7FC1E3B7CBA27>63 D<1538A3157CA315FEA34A7EA3
6091 +4A6C7EA202077FEC063FA2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC
6092 +6003A202C07F1501A2D901807F81A249C77F167FA20106810107B6FCA24981010CC7121F
6093 +A2496E7EA3496E7EA3496E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3
6094 +373C7DBB3E>65 D<B712E016FC16FF0001903980007FC06C90C7EA1FE0707E707E707EA2
6095 +707EA283A75F16035F4C5A4C5A4C5A4C5AEEFF8091B500FCC7FCA291C7EA7F80EE1FE0EE
6096 +07F0707E707E83707EA21880177F18C0A7188017FFA24C13005F16034C5AEE1FF8486DEB
6097 +7FF0B812C094C7FC16F832397DB83B>I<913A01FF800180020FEBE003027F13F8903A01
6098 +FF807E07903A03FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F
6099 +12014848151F4848150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD12
6100 +7F6DED0180A3123F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15
6101 +386D6C5CD91FE05C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13
6102 +F002011380313D7BBA3C>I<B712C016F816FE000190398001FF806C90C7EA3FE0EE0FF0
6103 +EE03F8707E707E177FA2EF3F8018C0171F18E0170F18F0A3EF07F8A418FCAC18F8A4EF0F
6104 +F0A218E0A2171F18C0EF3F80A2EF7F0017FE4C5A4C5AEE0FF0EE3FE0486DEBFF80B8C7FC
6105 +16F816C036397DB83F>I<B812FCA30001903880000F6C90C71201EE007E173E171E170E
6106 +A31706A317078316C0A394C7FCA31501A21503150F91B5FCA3EC000F15031501A21500A2
6107 +1860A318E093C712C0A41701A3EF0380A21707A2170F173F177F486D903807FF00B9FCA3
6108 +33397DB839>I<B812F8A30001903880001F6C90C71201EE00FC177C173C171CA2170CA4
6109 +170E1706A2ED0180A21700A41503A21507151F91B5FCA3EC001F15071503A21501A692C8
6110 +FCAD4813C0B612C0A32F397DB836>I<DBFF8013C0020FEBF001023F13FC9139FF803F03
6111 +903A03FC000787D90FF0EB03CF4948EB00EF4948147F4948143F49C8121F485A4848150F
6112 +48481507A248481503A2485A1701123F5B007F1600A448481600AB93B6FCA26C7E933800
6113 +7FE0EF3FC0A2123F7F121FA26C7EA26C7EA26C7E6C7E6C6C157F6D7E6D6C14FF6D6C14EF
6114 +D90FF8EB03C7D903FEEB0783903A00FFC03F0191393FFFFC00020F01F013000200138038
6115 +3D7CBA41>I<B648B512FEA30001902680000313006C90C76C5AB3A491B6FCA391C71201
6116 +B3A6486D497EB648B512FEA337397DB83E>I<B612C0A3C6EBC0006D5AB3B3AD497EB612
6117 +C0A31A397EB81E>I<013FB512E0A39039001FFC00EC07F8B3B3A3123FEA7F80EAFFC0A4
6118 +4A5A1380D87F005B0070131F6C5C6C495A6C49C7FC380781FC3801FFF038007F80233B7D
6119 +B82B>I<B649B5FCA3000101809038007FF06C90C8EA3F80053EC7FC173C17385F5F4C5A
6120 +4C5A4CC8FC160E5E5E5E5E4B5AED0780030EC9FC5D153E157E15FF5C4A7F4A6C7E140E4A
6121 +6C7E4A6C7E14704A6C7E4A6C7E14804A6C7E6F7EA26F7F707EA2707E707EA2707EA2707E
6122 +707EA2707E707F8484486D497FB6011FEBFF80A339397DB841>I<B612E0A3000101C0C8
6123 +FC6C90C9FCB3AD1718A517381730A31770A317F0A216011603160FEE1FE0486D13FFB8FC
6124 +A32D397DB834>I<B5933807FFF86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3
6125 +D9C7F01563A3D9C3F815C3A2D9C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA3
6126 +6E6C1318A26E6C1330A36E6C1360A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F
6127 +06A3ED3F8CA2ED1FD8A3ED0FF0A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2
6128 +ED018045397DB84C>I<B5913807FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706
6129 +EBCFF8EBC7FCA2EBC3FEEBC1FFA201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E1680
6130 +80ED7FC016E0153FED1FF0ED0FF8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2
6131 +EE1FF6EE0FFEA216071603A216011600A2177E486C153E487ED80FFC151EB500C0140EA2
6132 +170637397DB83E>I<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D
6133 +7ED93F80EB07F049C76C7E01FE6E7E48486E7E49157E0003167F4848ED3F80A24848ED1F
6134 +C0A2001F17E049150F003F17F0A3007F17F8491507A300FF17FCAC007F17F86D150FA300
6135 +3F17F0A26C6CED1FE0A36C6CED3FC0000717806D157F000317006C6C15FEA26C6C4A5A01
6136 +7F4A5A6D6C495A6D6C495AD907E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE002
6137 +0390C8FC363D7BBA41>I<B712C016F816FE000190398001FF806C90C7EA3FC0EE0FE0EE
6138 +07F0EE03F817FC17FE1601A217FFA717FEA2EE03FCA2EE07F817F0EE0FE0EE3FC0923801
6139 +FF0091B512FC16F091C9FCB3A5487FB6FCA330397DB839>I<EC03FF021F13E09138FE01
6140 +FC903901F8007ED907E0EB1F8049486D7ED93F80EB07F049C76C7E01FE6E7E48486E7EA2
6141 +4848157F0007178049153F000F17C049151F001F17E0A24848ED0FF0A3007F17F8A24915
6142 +07A200FF17FCAC007F17F8A26D150FA2003F17F0A26C6CED1FE0A36C6CED3FC00007027C
6143 +14804AB4FC3C03F80383807F003B01FC0701C0FEEC0E002600FE0CEBE1FC017FEC63F8D9
6144 +3F8CEB77F0D91FCCEB3FE0D907EE14806DB449C7FC0100D981FC130CEC1FFF0203131C91
6145 +C7001E131C161F183CEF807CEFC0F8EE0FFFA318F08218E07013C07013809338007E0036
6146 +4B7BBA41>I<B612FEEDFFE016F8000190388007FE6C90C76C7EEE3FC0707E707E707EA2
6147 +707EA283A65FA24C5AA24C5A4C5AEE3F8004FFC8FCED07FC91B512E05E9138000FF0ED03
6148 +F8ED00FE82707E707EA2161F83A583A6F00180A217F8160F1803486D01071400B66D6C5A
6149 +04011306933800FE0ECAEA3FFCEF07F0393B7DB83D>I<D90FF813C090383FFE0190B512
6150 +813903F807E33907E000F74848137F4848133F48C7121F003E140F007E1407A2007C1403
6151 +12FC1501A36C1400A37E6D14006C7E7F13F86CB47E6C13F8ECFF806C14E06C14F86C14FE
6152 +C680013F1480010714C0EB007F020713E0EC007FED3FF0151F150FED07F8A200C01403A2
6153 +1501A37EA216F07E15036C15E06C14076C15C06C140F6DEB1F80D8FBF0EB3F00D8F0FE13
6154 +FE39E03FFFF8010F13E0D8C00190C7FC253D7CBA2E>I<003FB812E0A3D9C003EB001F27
6155 +3E0001FE130348EE01F00078160000701770A300601730A400E01738481718A4C71600B3
6156 +B0913807FF80011FB612E0A335397DB83C>I<B6903807FFFEA3000101809038007FE06C
6157 +90C8EA1F80EF0F001706B3B2170E6D150C80171C133F17186D6C14385F6D6C14F06D6C5C
6158 +6D6C495A6D6CEB07806D6C49C7FC91387F807E91381FFFF8020713E09138007F80373B7D
6159 +B83E>I<B500FC91387FFF80A30003018091380FFC006C90C8EA07E0715A6C705A6E1403
6160 +017F93C7FCA280013F1506A26E140E011F150C80010F5DA28001075DA26E147001031560
6161 +A26D6C5CA2806D4A5AA2ED8003027F91C8FCA291383FC006A215E0021F5BA2EDF01C020F
6162 +1318A26E6C5AA215FC02035BA2EDFEE002015BA26E6C5AA36FC9FCA3153EA2151CA3393B
6163 +7EB83E>I<B5D8FC07B5D8F001B5FCA30007902780001FFEC7EA1FF86C48C7D80FF8EC07
6164 +E000010307ED03C01B807F6C6F6C1500A26E5F017F6E6C1406A280013F4A6C5CA280011F
6165 +4A6D5BEE067FA26D6C010E6D5BEE0C3FA26D6C011C6D5BEE181FA26D6C6F5BEE300FA26D
6166 +6C6F485AEE6007A26D6C4CC7FC9338C003FCA203805D913B7F818001FE06A203C1150EDA
6167 +3FC3C7EAFF0CA203E3151CDA1FE6EC7F98A215F6DA0FFCEC3FF0A302075E4B141FA20203
6168 +5E4B140FA202015E4B1407A2020093C8FC4B80503B7EB855>I<007FB590383FFFFCA3C6
6169 +01F801071380D97FE0D903FCC7FC013FEC01F06D6C5C5F6D6C5C6D6C13034CC8FC6D6C13
6170 +06160E6D6C5B6DEB8018163891387FC0306E6C5A16E06E6C5A91380FF18015FB6EB4C9FC
6171 +5D14036E7EA26E7F6F7EA24B7E15DF9138019FF09138038FF8150F91380607FC91380E03
6172 +FE140C4A6C7EEC38000230804A6D7E14E04A6D7E49486D7E130391C76C7E01066E7E130E
6173 +010C6E7E011C1401013C8101FE822607FF80010713E0B500E0013FEBFF80A339397EB83E
6174 +>I<B500FE91383FFFE0A3000301E0913807FE00C649EC03F0017F6F5A606D6C5D6D6C14
6175 +0395C7FC6D6C1406A26D6C5C6D6C141C17186D6C143817306D6D5B6E6C13E05F91383FE0
6176 +015F91381FF003DA0FF890C8FC1606913807FC0E160C913803FE1C913801FF185E6E13B0
6177 +16E0157F6F5AB3A24B7E023FB512C0A33B397FB83E>I<003FB7FCA39039FC0001FE01C0
6178 +130349495A003EC7FC003C4A5A5E0038141F00784A5A12704B5A5E006014FF4A90C7FCA2
6179 +4A5A5DC712074A5AA24A5A5D143F4A5AA24A5A92C8FC5B495AA2495A5C130F4948EB0180
6180 +A2495A5C137F495A16034890C7FC5B1203485AEE0700485A495C001F5D48485C5E484849
6181 +5A49130FB8FCA329397BB833>I<EAFFF8A4EAF000B3B3B3B3A3EAFFF8A40D5378BD17>I<
6182 +3901800180000313033907000700000E130E485B00181318003813380030133000701370
6183 +00601360A200E013E0485BA400CE13CE39FF80FF806D13C0A3007F137FA2393F803F8039
6184 +0E000E001A1974B92A>I<EAFFF8A4EA0078B3B3B3B3A3EAFFF8A40D537FBD17>I<131013
6185 +38137C13FE487E3803C780380783C0380F01E0381E00F04813780070131C48130E004013
6186 +04170D77B92A>I<EA01801203EA0700120E5A12181238123012701260A212E05AA412CE
6187 +EAFF8013C0A3127FA2EA3F80EA0E000A197AB917>96 D<EB1FE0EBFFFC3803E03F390700
6188 +0F80390F8007E0486C6C7E13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EBFE00
6189 +EA03F8EA0FF0EA1FC0123F485A90C7FC160C12FEA31401A26C13036CEB077C903980063E
6190 +18383FC01E3A0FE0781FF03A03FFF00FE03A007F8007C026277DA52A>I<EA03F012FFA3
6191 +120F1203B0EC1FE0EC7FF89038F1E03E9039F3801F809039F7000FC001FEEB07E049EB03
6192 +F049EB01F85BED00FCA216FEA2167E167FAA167E16FEA216FC15016D14F8ED03F07F01EE
6193 +EB07E001C6EB0FC09039C7801F00903881E07E903800FFF8C7EA1FC0283B7EB92E>I<EB
6194 +03FC90381FFF8090387E03E03901F80070484813F83907E001FC380FC003A2EA1F80123F
6195 +90380001F848EB00F01500A2127E12FEAA127E127FA26C14067F001F140E6D130C000F14
6196 +1C6C6C13386C6C13706C6C13E039007C07C090381FFF00EB07F81F277DA525>I<ED0FC0
6197 +EC03FFA3EC003F150FB0EB03F8EB1FFF90387E078F9038F801EF3903F0007F4848133F48
6198 +48131FA24848130F123F90C7FC5AA2127E12FEAA127E127FA27EA26C6C131FA26C6C133F
6199 +6C6C137F6C6CEBEFF03A01F801CFFF39007C078F90381FFE0FD907F813C0283B7DB92E>
6200 +I<EB07F8EB1FFF90387C0FC03901F803E03903F001F0D807E013F8380FC0004848137CA2
6201 +48C7127E153E5A153F127E12FEA3B7FCA248C8FCA5127EA2127FA26C14037F001F14076C
6202 +6C13060007140E6D131CD801F013386C6C137090387E03E090381FFF80903803FC002027
6203 +7EA525>I<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213FCA23901F803C0
6204 +91C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I<ED03F090390FF0
6205 +0FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E010000FECF000A2
6206 +48486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38060FF0000EC9FC
6207 +A4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048C7EA0FF0003E14
6208 +0348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB0F80D807E0EB3F
6209 +003901FC01FC39007FFFF0010790C7FC26387EA52A>I<EA03F012FFA3120F1203B0EC0F
6210 +F0EC3FFCECF03F9039F1C01F809039F3800FC0EBF70013FE496D7EA25BA35BB3A3486C49
6211 +7EB500C1B51280A3293A7EB92E>I<EA0380EA0FE0487EA56C5AEA0380C8FCAAEA03F012
6212 +FFA312071203B3AA487EB512C0A312387EB717>I<EB01C0EB07F0EB0FF8A5EB07F0EB01
6213 +C090C7FCAAEB01F813FFA313071301B3B3A2123C127E00FF13F01303A214E038FE07C012
6214 +7C383C0F00EA0FFEEA03F8154984B719>I<EA03F012FFA3120F1203B1913801FFFCA391
6215 +38007FC01600157C15705D4A5A4A5A4AC7FC141E1438147814FC13F1EBF3FEEBF73F01FE
6216 +7FEBF81F496C7E8114076E7E6E7E811400157E157F811680ED1FC0486CEB3FF0B500C0B5
6217 +FCA3283A7EB92C>I<EA03F012FFA3120F1203B3B3AD487EB512C0A3123A7EB917>I<2703
6218 +F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F83803F3D0FF3800FC700
6219 +1F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A3486C496CEB1FE0B500
6220 +C1B50083B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F9039F1C01F803A0FF3
6221 +800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280A329257EA42E>I<
6222 +EB03FE90380FFF8090383E03E09038F800F84848137C48487F48487F4848EB0F80001F15
6223 +C090C712074815E0A2007EEC03F0A400FE15F8A9007E15F0A2007F14076C15E0A26C6CEB
6224 +0FC0000F15806D131F6C6CEB3F006C6C137EC66C13F890387E03F090381FFFC0D903FEC7
6225 +FC25277EA52A>I<3903F01FE000FFEB7FF89038F1E07E9039F3801F803A0FF7000FC0D8
6226 +03FEEB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3ED01FCA26DEB03F8
6227 +16F06D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FFF8EC1FC091C8FCAB
6228 +487EB512C0A328357EA42E>I<D903F813C090381FFE0190387E07819038FC01C33903F0
6229 +00E3000714774848133749133F001F141F485A150F48C7FCA312FEAA127FA37E6D131F12
6230 +1F6D133F120F6C6C137F6C6C13EF3901F801CF39007E078F90381FFE0FEB07F890C7FCAB
6231 +ED1FE00203B5FCA328357DA42C>I<3807E01F00FFEB7FC09038E1E3E09038E387F0380F
6232 +E707EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512F0A31C257EA421>
6233 +I<EBFF03000313E7380F80FF381E003F487F487F00707F12F0A2807EA27EB490C7FCEA7F
6234 +E013FF6C13E06C13F86C7F00037FC67F01071380EB007F141F00C0EB0FC01407A26C1303
6235 +A37E15806C13077EEC0F00B4131E38F3C07C38E1FFF038C03F801A277DA521>I<1318A5
6236 +1338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215C0A93800FC011580
6237 +EB7C03017E13006D5AEB0FFEEB01F81A347FB220>I<D803F0EB07E000FFEB01FFA3000F
6238 +EB001F00031407B3A4150FA3151F12016D133F0000EC77F86D9038E7FF8090383F03C790
6239 +381FFF87903A03FC07E00029267EA42E>I<B538803FFEA33A0FF8000FF06C48EB07E000
6240 +03EC03C06D148000011500A26C6C1306A26D130E017E130CA26D5BA2EC8038011F1330A2
6241 +6D6C5AA214E001075BA2903803F180A3D901FBC7FCA214FF6D5AA2147CA31438A227257E
6242 +A32C>I<B53A1FFFE03FFEA3260FF8009038000FF86C48017EEB03E018C00003023EEB01
6243 +80A26C6C013FEB0300A36C6CEC8006156FA2017E9038EFC00C15C7A2D93F016D5A158302
6244 +81EBF038D91F831430150102C3EBF87090260FC6001360A2D907E66D5A02EC137CA2D903
6245 +FCEB7F804A133FA2010192C7FC4A7FA20100141E4A130E0260130C37257EA33C>I<B538
6246 +807FFFA33A03FE003FF00001EC1F80000092C7FC017E131C6D13186D6C5AECC070010F5B
6247 +6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F804A7E8114CF903801C7E090380383F09038
6248 +0703F8EB0601496C7E011C137E49137F01787F496D7E486C80000FEC3FF0D8FFFE90B512
6249 +80A329247FA32C>I<B538803FFEA33A0FF8000FF06C48EB07C00003EC03806C7E16007F
6250 +00001406A2017E5BA2137F6D5BA26D6C5AA2ECC070010F1360A26D6C5AA214F101035BA2
6251 +D901FBC7FCA214FF6D5AA2147CA31438A21430A214701460A25CA2EA7C0100FE5B130391
6252 +C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC027357EA32C>I<003FB512FCA2EB8003D83E
6253 +0013F8003CEB07F00038EB0FE012300070EB1FC0EC3F800060137F150014FE495AA2C648
6254 +5A495AA2495A495A495AA290387F000613FEA2485A485A0007140E5B4848130C4848131C
6255 +A24848133C48C7127C48EB03FC90B5FCA21F247EA325>I<B81280A2290280962A>I<BD12
6256 +C0A25202809653>I E
6257 +%EndDVIPSBitmapFont
6258 +%DVIPSBitmapFont: Fo cmr17 17.28 11
6259 +/Fo 11 116 df<120FEA3FC0EA7FE0EAFFF0A6EA7FE0EA3FC0EA0F000C0C748B24>46
6260 +D<EC01C014031407140F143F147FEB03FF130F90B5FCB6FCEBFC7F13F01300C7FCB3B3B3
6261 +B3A24A7EA2010713FCB812E0A42B5E74DD42>49 D<EC0FFE91387FFFE00103B512F8010F
6262 +14FE903A1FE00FFF8090263E000113E001FC6D6C7ED801F06E7E4848EC0FFC496E7E4848
6263 +6E7E48C81480000E81001E6F13C0121C003CEE7FE012380078EE3FF01270A3B46CED1FF8
6264 +13E0A27FA66C5A6C5A0006C913F0CA123FA318E0177FA2EFFFC0A218805E18004C5A1607
6265 +5F4C5A5F161F4C5A4C5A5F4CC7FC4B5A4B5A5E4B5A4B5A4B5A4B5A4BC8FC157E5D4A5A4A
6266 +5A4A5A4A5A4A5A4AC9FC143E4A15385C495A495A49481570495A49C9FC131E5B4916F05B
6267 +484816E0484815014848150348B8FCA25A5A5AB912C0A4355E7ADD42>I<4AB47E021F13
6268 +F0027F13FC49B6FC902607FE007FD90FF0EB3FC04948EB0FE049486D7E49486D7E49C76C
6269 +7E484881484814004848157F18804848153F001F17C0A24848151F18E0A2007F17F04915
6270 +0FA300FF17F8A418FC1707A618FEA2170F127FA46C7E171FA2121F6D153F000F16371777
6271 +6C6C15676C6C15E70001ED01C77F6C6CEC03876D6CEB07076D6C130ED90FE0133CD907F8
6272 +01F813FC0101B512F06D14C0021F130091C8120FA218F8A418F0171FA218E0A2173F18C0
6273 +A2EF7F80EA07F0486CEDFF00487E4C5A5F16035F4C5A49140F6C484A5A01804A5A90C848
6274 +5A6C6C4AC7FC01E0495A6C6CEB07F86CB4EB3FF06C6CB512C0011F91C8FC010713FC0100
6275 +13E037607BDD42>57 D<B600FC057FB5FCA4C60280050F13F0D93FFECB000313804A9538
6276 +01FE00011F62755A130F6E61010762806D4F5AA2816D4F5AA26F17076D97C7FC81027F18
6277 +0EA26F171E023F181C811B3C021F183881020F60A26F17F0020760811A016E60826E4D5A
6278 +A27015076E95C8FC82037F160EA282033F5E821A3C031F163882030F5EA27015F003075E
6279 +8219016F5E836F4B5AA27113076F93C9FC83047F140EA283043F5CA271133C041F143883
6280 +040F5CA27113F004075C831801705C188170EB8380A218C77091CAFC18E7EF7FEEA218FE
6281 +715AA3715AA2715AA3715AA3715AA260647FE163>86 D<EC03FE91381FFFE091B512F890
6282 +3901FE03FE903A07F0007F8049486D7ED93FC06D7E49C76C7E496E7E4914034848814848
6283 +1401000782491400000F8283485A1880123F49153FA2007F17C0A35BA212FF90B8FCA301
6284 +80CAFCA9127F7FA3123FA27F121FEF01C06C7E17036C6C1680A26C6C15070001EE0F006D
6285 +150E6C6C151E6D6C5C6D6C5C6D6C5CD907F0EB03E0D903FC495A902700FF803FC7FC9138
6286 +3FFFFC020F13F00201138032417CBF3A>101 D<133C13FF487F487FA66C5B6C90C7FC13
6287 +3C90C8FCB3A2EB03C0EA07FF127FA41201EA007FA2133FB3B3AC497E497EB612E0A41B5F
6288 +7DDE23>105 D<D903C0EB7FE0D807FF903803FFFCB5010F13FFDB3F0013C00378EB1FE0
6289 +4B6D7E0001D9C1C06D7E27007FC3808002C7C71203D93FCE81170114DC14D802F86E7E5C
6290 +A35CA35CB3B3496C4A7F496C4A7FB6D8F003B612C0A4423F7DBE49>110
6291 +D<EDFF80020F13F8023F13FE9139FF007F80D903FCEB1FE0D907F0EB07F0D90FC0EB01F8
6292 +D93F80EB00FE49C8127F017E81496F7E48486F7E00038349150700078348486F7EA2001F
6293 +83491501A2003F83A348486F7EA400FF1880AC007F1800A26D5DA2003F5FA36C6C4B5AA3
6294 +6C6C4B5A00075FA26C6C4B5A6C6C4B5AA26C6C4B5A017F4BC7FC6D6C14FE6D6C495AD90F
6295 +F0EB07F8D903FCEB1FE0D900FFEB7F806EB5C8FC020F13F8020113C039417CBF42>I<90
6296 +39078003F8D807FFEB0FFFB5013F13C092387C0FE0913881F01F9238E03FF00001EB8380
6297 +39007F8700148FEB3F8E029CEB1FE0EE0FC00298EB030002B890C7FCA214B014F0A25CA5
6298 +5CB3B0497EEBFFF8B612FCA42C3F7CBE33>114 D<9139FFE00180010FEBFC03017FEBFF
6299 +073A01FF001FCFD803F8EB03EFD807E0EB01FF48487F4848147F48C8123F003E151F007E
6300 +150F127CA200FC1507A316037EA27E7F6C7E6D91C7FC13F8EA3FFE381FFFF06CEBFF806C
6301 +14F86C14FF6C15C06C6C14F0011F80010714FED9007F7F02031480DA003F13C015030300
6302 +13E0167F00E0ED1FF0160F17F86C15071603A36C1501A37EA26C16F016037E17E06D1407
6303 +6DEC0FC06D1580D8FDF0141FD8F8F8EC7F00013E14FC3AF01FC00FF80107B512E0D8E001
6304 +148027C0003FF8C7FC2D417DBF34>I E
6305 +%EndDVIPSBitmapFont
6306 +%DVIPSBitmapFont: Fp cmsy10 12 1
6307 +/Fp 1 25 df<D907F01780D91FFEEE01C090387FFF8090B512E0488048803907F80FFC27
6308 +0FE001FE1503271F80007F168090C7EA1FC0003E6E6C1407003C6E6C150000386E6C5C00
6309 +786E6C5C00706E6C143EDC3F80137E00F092391FE001FC4892390FFC07F870B55A705C70
6310 +5C706C5BDD1FFEC7FC0040EE03F842187BA44D>24 D E
6311 +%EndDVIPSBitmapFont
6312 +%DVIPSBitmapFont: Fq cmtt12 12 17
6313 +/Fq 17 120 df<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B0B6C8A33>46
6314 +D<167816F8ED01FCA21503A2ED07F8A2ED0FF0A2ED1FE0A216C0153FA2ED7F80A2EDFF00
6315 +A24A5AA25D1403A24A5AA24A5AA24A5AA25D143FA24A5AA24AC7FCA2495AA25C1303A249
6316 +5AA2495AA25C131FA2495AA2495AA249C8FCA25B1201A2485AA2485AA2485AA25B121FA2
6317 +485AA2485AA248C9FCA25AA2127CA2264D7AC433>I<121FEA3F80EA7FC0EAFFE0A5EA7F
6318 +C0EA3F80EA1F00C7FCB3A3121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F000B2B6CAA
6319 +33>58 D<EA3FFC487E12FFA2127F123F1200ABEC01FE91380FFFC04A13F0027F7F91B512
6320 +FE90B7FCECFE07DAF800138002E0EB7FC04AEB3FE04A131FEE0FF091C7FC16074915F816
6321 +03A217FC1601A9160317F8A26D140717F06E130F17E06E131FEE3FC06E137F9139F801FF
6322 +80DAFE07130091B55A495C6E5BD97E3F13E0D93C0F138090260003FEC7FC2E3E7FBC33>
6323 +98 D<ECFFF0010713FE011FEBFF804914C04914E048B612F048EBC01F9038FE000F485A
6324 +485A4848EB07E049EB03C0484890C7FC5BA2127F90C9FCA25A5AA97E7EA27F003FEC01F0
6325 +6DEB03F86C7E6D13076C6C14F06C6C130F01FFEB1FE06CEBE07F6C90B512C06C1580013F
6326 +14006D13FC01075B010013C0252E79AC33>I<ED7FF84B7E5CA280157F1501ABEB01FF01
6327 +0713C1011F13F1017F13F990B6FC5A4813813907FE003FD80FF8131F49130F4848130749
6328 +1303123F491301127F90C7FCA25A5AA97E7E15037F123F6D1307A26C6C130F6D131F6C6C
6329 +133F6C6C137F2603FF81B512F091B612F8C602FD13FC6D13F96D01E113F8010F018013F0
6330 +D901FEC8FC2E3E7DBC33>I<ECFF80010713F0011F13FC497F90B6FC48158048018013C0
6331 +3A07FE003FE001F8EB0FF048481307484814F8491303003F15FC491301127F90C7FC16FE
6332 +15005A5AB7FCA516FC48C9FC7E7EA36C7E167C6C6C14FE7F6C7E6D13016C6CEB03FC6CB4
6333 +130F6C9038C03FF86C90B512F06D14E06D14C0010F1400010313FC9038007FE0272E7BAC
6334 +33>I<EA3FFC487E12FFA2127F123F1200AB4AB4FC020713C0021F13F0027F7F91B5FC90
6335 +B67EED07FEECF801ECF0004A7F4A7F5CA291C7FCA35BB3A43B3FFFF80FFFFC486D4813FE
6336 +B56C4813FFA26C496C13FE6C496C13FC303D7FBC33>104 D<14E0EB03F8A2497EA36D5A
6337 +A2EB00E091C8FCAA383FFFF8487FA47EEA0001B3AD007FB612C0B712E016F0A216E06C15
6338 +C0243E78BD33>I<4AB4FC263FFC0713C0267FFE1F13F000FF017F7F91B5FC6CB67E6CEC
6339 +07FEC6EBF801ECF0004A7F4A7F5CA291C7FCA35BB3A43B3FFFF80FFFFC486D4813FEB56C
6340 +4813FFA26C496C13FE6C496C13FC302C7FAB33>110 D<EB01FE90380FFFC0013F13F049
6341 +7F90B57E488048EB03FF2607FC0013804848EB7FC049133F4848EB1FE049130F4848EB07
6342 +F0A2007F15F890C71203A300FEEC01FCAA6C14036C15F8A26D1307003F15F06D130FA26C
6343 +6CEB1FE06D133F6C6CEB7FC06C6CEBFF802603FF0313006CEBFFFE6C5C6D5B6D5B010F13
6344 +C0D901FEC7FC262E7AAC33>I<EC01FE3A3FFC0FFFC0486C4813F000FF017F7F91B512FE
6345 +6CB7FC6CEBFE07C6D9F800138002E0EB7FC04AEB3FE04A131FEE0FF091C7FC16074915F8
6346 +1603A217FC1601A9160317F8A26D140717F06E130F17E06E131FEE3FC06E137F9139F801
6347 +FF80DAFE07130091B55A495C6E5B6E13E0020F1380DA03FEC7FC91C9FCAF383FFFF8487F
6348 +B57EA26C5B6C5B2E427FAB33>I<ED03FE3B7FFF801FFF80B5D8C07F13E002C1B5FC02C3
6349 +14F014C76C9038CFFE0F39001FDFF09139FFC007E092388003C092C8FC5C5C5CA25CA25C
6350 +A35CB2007FB512FEB7FCA46C5C2C2C7DAB33>114 D<90381FFE0F90B5EA8F80000314FF
6351 +120F5A5AEBF007387F800190C7FC00FE147F5A153FA37E007FEC1F0001C090C7FCEA3FF8
6352 +EBFFC06C13FF6C14E0000314F8C680011F13FF01001480020713C0EC007FED1FE0007C14
6353 +0F00FEEC07F01503A27EA27F15076D14E06D130F6DEB3FC09038FE01FF90B61280160000
6354 +FD5C00FC14F8D8F83F13E0D8780790C7FC242E79AC33>I<EB03C0497E130FAA003FB612
6355 +FC4881B7FCA36C5D26000FE0C8FCB3A3161FEE3F80A5167F6E140001075C6E5A9138FE07
6356 +FE6DB55A6D5C6D5C6E5B021F1380DA07FCC7FC29387EB633>I<D83FFCEB1FFE486C497E
6357 +00FF5CA2007F80003F800000EC007FB3A75EA25DA26D5B90387F800FDAE03F13FC6DB612
6358 +FE17FF6D806D01FE13FE01039038F83FFC010001C0C7FC302C7FAA33>I<3B7FFF8007FF
6359 +F8B56C4813FC6E5AA24A7E6C496C13F8D80FC0C7EA0FC06D141F00071680A56D143F0003
6360 +1600A3EC0FC0EC1FE0A23A01F83FF07EA3EC7FF8147CA20000157C9039FCFCFCFCA3ECF8
6361 +7CA2017C5C017D137EECF03EA2017F133FA26D486C5AA3ECC00F90390F8007C02E2B7EAA
6362 +33>119 D E
6363 +%EndDVIPSBitmapFont
6364 +%DVIPSBitmapFont: Fr cmr17 20.74 20
6365 +/Fr 20 123 df<BD12F8A5D8003F01F0C98001074916074B16006D193F1B1F1B071B031B
6366 +011B00881C7EA21C3EA21C1EA31C0EA21C0FA388A6F40380A3191CA299C7FCA7193CA419
6367 +7CA219FC18011803180F18FF92B7FCA503C0C7FC180F180318011800197CA2193CA4191C
6368 +A996CAFCB3AB497F81013F13FEB812E0A5597678F568>70 D<B600E00803B61280A36F62
6369 +A227003FBFF8080E49C7FC01071EF0A29026039FFC505BA3DA8FFE62A3DA87FF62A20283
6370 +6D61A302816D4E5AA302806D4E5AA26F6C4E5AA36F6C180EA36F6C60A36F6C60A26F6C60
6371 +A36F6D5FA36F6D4C5AA26F6D4C5AA3706C4CC7FCA3706C160EA3706C5EA2706C5EA3706C
6372 +5EA3706D5DA2706D4A5AA3706D4A5AA3716C4AC8FCA3716C140EA2716C5CA3716C5CA371
6373 +6C5CA2716D5BA3716D485AA3716D485AA3726C48C9FCA295383FF80EA3726C5AA3726C5A
6374 +A2726C5AA3725BA3496C6F5BA2497E725B496C517FD97FFC70C9FC0003B56C080F13FEB6
6375 +00FE073FB71280193EA3191C817678F592>77 D<B912FCF0FFF019FEF1FFC01AF8D8003F
6376 +01F0C7000713FE0107499139003FFF804B03077F6D050113F0736C7E747EF20FFF747F74
6377 +7F86747F88757EA2757EA2757EA288A28789A99AC8FCA263A264A2515A641B7F64515A64
6378 +505B5090C9FC505A505AF23FF8F27FE0963801FF80DF0FFECAFCF17FF895380FFFE092B8
6379 +CBFC19F019FC03C0C7380FFF80060113E09538003FF8F11FFEF107FF737F7313E0737F74
6380 +7E1A3F87747E1A0F878688A3747FAB88AC1F101F38747FA47416787614701B7F496D1BF0
6381 +756C14E0013F01FC051F1401B8707E0907EC03C0756CEB0780759038800F009839007FE0
6382 +3ECF381FFFFC0A075B9938007FC06D7978F575>82 D<DB3FF815E00203B512C0021F02F8
6383 +1301027F14FE49B7128049D9C007EBC003D90FFEC7EA3FF0D91FF8913807F807D93FE0EC
6384 +01FC4948913800FE0F4948153F4890C9EA1F9F4848EE0FDF49EE07FF484882000F834982
6385 +121F49177F003F183F5B191F127F190F5B190712FFA21903A31901A27FA36D1700A2127F
6386 +7F7F1A006C7E7F7F6C7F806C7F14F86C7F6CEBFF8015F86CECFF806C15F86DECFF806D15
6387 +F06D15FF6D16E0010316F86D16FE6D6C81021F16C0020382DA003F81030781DB007F8004
6388 +0780DC007F7F050F14801700063F13C07213E018077213F084841AF8197F193F1AFC191F
6389 +A2190F00E019FE1907A41903A27EA57E1AFCA27E19077E1AF86C180FA26D18F0191F6D18
6390 +E06D173F6D18C06DEF7F806D17FF017E4C13006D6C5E486C6C4B5AD90FF0ED0FF826FC07
6391 +FC4B5AD901FF4B5A486C01F0ECFFC091273FFF800F5B48010F90B548C7FC020315F80200
6392 +15E048020F14809226007FF8C8FC477C78F858>I<B80303B612FCA5D8003F01FCCA000F
6393 +1400010701E0050113F89838007FE06D49725AA2765AA276C7FCB3B3B3B3646D1A1E81A3
6394 +1C3E6D1A3CA281027F197C1C781CF86E7E646E6C1701515A140F6E6C4D5A816E4E5A6E6D
6395 +4CC8FC705E6E6D167E037F5F6F6C4B5ADB1FFC4B5A6F6CED0FE0DB03FF4B5A6F01C0EC7F
6396 +806F01F0D903FFC9FCDC3FFFEB3FFC040F90B55A040315E004001580051F01FCCAFC0501
6397 +13C0667978F577>85 D<913803FF80021F13F891B512FE903A03FC01FF80903A07E0003F
6398 +E0D91F80EB0FF8013EC76C7E496E7E01F06E7E48486E7F717E4848153F4982D807A06F7E
6399 +13FC487E6D6F7E80A2717EA46C90C8FC6C5A6C5ACAFCA6EE07FF0303B5FC157F913903FF
6400 +FE07021F138091387FF800903801FFC0010790C7FCEB1FFCEB3FF0EBFFE0485B485B4890
6401 +C8FC5B485A485AA2485A1A0E485AA312FF5B170FA4171FA26D153F007F163B177B6DDBF1
6402 +FE131C003F16E16C6C14016C6C912603C0FF13386C6CEC0F806C6C6C903A1F007F80706C
6403 +6D017CECE1E028007FF803F8EB3FFF011FB500E06D1380010391C7000713009026003FF8
6404 +EC01FC474D79CB4F>97 D<ED07FE92387FFFE00203B512FC91390FFC01FF913A3FE0001F
6405 +C0DA7F80EB03E0D901FEC812F84948157C494881494881494881013FEE07804948150349
6406 +48ED0BC048177F91C9EAFFE048485D00075EA2485AA2485AA27113C0003F70138049EE7F
6407 +0095C7FC127FA35BA212FFAE127F7FA4123F7FA2121F6D1738120F19786C6C1770A26C6C
6408 +17F019E06C6D15016C18C06D6C15036D6CED07806EED0F006D6C151E6D6C153ED903FE5D
6409 +6D6C15F06D01C0EB03E0DA3FF0EB0FC0DA0FFE01FFC7FC0203B512FCDA007F13E0030790
6410 +C8FC3D4D7BCB46>99 D<191FF07FFF051FB5FCA5EF001F180784A284B3B0ED07FE92387F
6411 +FFC00203B512F091390FFC01FC91393FE0001FDAFF80EB07814990C7EA03E1D903FCEC01
6412 +F14948EC0079D91FF0153D4948151D4A151F49488101FF824890C9FC48835B0007835B12
6413 +0F5B121FA2123F5BA2127FA35BA212FFAE127FA27FA3123FA36C7EA36C7EA200075F7F00
6414 +035F6C7E606C6D5D6D6C153D013F16396D6C03797F6D6C15F16D6CDA03E17FD903FEDA07
6415 +8113F0D900FFDA1F01EBFFF0DA7FC0137E91391FF803F80207B512E0020114809127001F
6416 +F800EC80004C797AF758>I<ED1FFC4AB512C0020714F091391FF00FFC91397F8001FFD9
6417 +01FEC7EA7FC049486E7E49486E7E49486E7E49486E7E49486E7E4948140101FF824890C9
6418 +1380A24848EE7FC0A2485A000FEF3FE05BA2001F18F0181F485AA3007F18F8A349160FA2
6419 +12FF90B9FCA301E0CBFCAB127F7FA3123FA36C7EA219386C7E1978000718707F000318F0
6420 +6C6C17E018016C6DED03C06D6C1680013F16076D6CED0F006D6C151E6D6C5D6D6C5D6DB4
6421 +4A5A6D6C6C495ADA3FE0EB1F80DA0FFE01FEC7FC0203B512F8DA007F13E0DB07FEC8FC3D
6422 +4D7BCB46>I<EE7FC0923803FFF8030F7F92383FC07F9239FF000F804A48EB3FC04A4813
6423 +7F4A48EBFFE04A485AEC1FE0143F15C0147F158002FF6D13C0EF7F804990C7EA0C0094C7
6424 +FCA3495AB3A9B812C0A5260003FEC9FCB3B3B3A7805B011F13E0001FB612F8A533797DF8
6425 +2F>I<14F8EA03FFB5FCA5C6FC133F131FA2130FB3B0933803FF80041F13F8047F13FE92
6426 +3A01FC03FF80923A03E0007FE0DB0F80EB1FF0031EC76C7E5D4B6E7E4B6E7E5D14F9DAFB
6427 +C06E7E5D14FF92C9FC865CA35CA45CB3B3A8496C4B7FD97FFF030713F0B7D8800FB612F8
6428 +A54D787AF758>104 D<131EEB7F80497E487F487FA66C5B6C5B6D5A011EC7FC90C8FCB3
6429 +A7EB01F0EA07FFB5FCA51201EA007F133FA2131FB3B3B3A3497EEBFFFEB612FCA51E727A
6430 +F12A>I<EB01F0EA07FFB5FCA51201EA007F133FA2131FB3B3B3B3B3AC497EEBFFFEB612
6431 +FEA51F787AF72A>108 D<D901F0903803FF80D807FF021F13F8B5027F13FE923A01FC03
6432 +FF80923A03E0007FE0DB0F80EB1FF0031EC76C7EC65C013F496E7E011F496E7E5DEB0FF1
6433 +DAF3C06E7E5D14F792C9FC02FF835CA35CA45CB3B3A8496C4B7FD97FFF030713F0B7D880
6434 +0FB612F8A54D4B7ACA58>110 D<ED07FE92387FFFE00203B512FC91390FFC03FF913A3F
6435 +C0003FC04AC7EA0FE0D901FEEC07F8D903F8EC01FC49486E7E4948157F49486F7E49486F
6436 +7E017F8349C96C7E4916070001844848707EA2000784491601000F84A24848701380A200
6437 +3F19C0A349177F007F19E0A412FF1AF0AD007F19E0A26D17FFA2003F19C0A46C6C4C1380
6438 +A2000F1900A26C6C4C5AA26C6C4C5A0001606D160F6C606D6C4B5A6D6C4B5AA26D6C4B5A
6439 +D907F003FEC7FCD903FCEC03FC6D6C4A5A6D6C6CEB1FF0DA3FE0EB7FC091270FFC03FFC8
6440 +FC0203B512FCDA007F13E0DB07FEC9FC444D7BCB4F>I<D903E0EB1FE0D80FFFECFFFCB5
6441 +01037F923907E01F8092391F807FC092383E00FF4B4813E000011478D8007F13F090383F
6442 +E1E015C0EB1FE39126E7800013C0EF7F8092C7EA3F0002EF91C7FC14EE14FE5CA45CA55C
6443 +B3B3A480133F90B5FCB712C0A5334B7ACA3D>114 D<DA1FFFEB038049B512E0010FECF8
6444 +07903A3FE001FE0F01FEC7EA1F9FD801F8EC07DFD807E0EC03FF484880498048C9127F48
6445 +163F003E161F127E170F127C12FC1707A46C1603A27E7F6C7E7F6D92C7FCEA3FFC13FF6C
6446 +13E06C13FF6C14F06CECFF806C15F86C15FE013F6E7E010F15E0010381010081020F14FE
6447 +DA007F7F1503DB003F1380040713C0040113E000E081177FEF3FF06C161F170FEF07F8A2
6448 +17037E1701A27EA37E18F07E17036D16E0A26D15076DED0FC06D168000FE161F017CED3F
6449 +00486C157E6DEC01F826F80FC0EB07F026F003F8EB7FC00100B6C7FC48013F13FC020713
6450 +80354D7CCB3E>I<02F8EE0F80D803FFEE3FFFB5030FB5FCA5C6EE000F013F1603011F82
6451 +A2010F82B3B3A660A460A3601307606E150E0103161E606E4B7F010116706D6C03F07F6F
6452 +D903E013F86E6C4948EBFFF8DA1FE0EB1F00DA0FFE13FE0203B512F8DA007F13E0030790
6453 +C7EBC0004D4C7ACA58>117 D<B600F84AB512FCA5000191C9003F13C026007FFC040F13
6454 +006D4817FC011F715A62010F715A6E5F13076E4C5A130397C7FC6E5E6D170E816D5FA26F
6455 +153C027F163881023F5EA26F15F0021F5E81020F4B5AA26F140302075E8102034BC8FCA2
6456 +6F5C6E150E826E5DA270133C037F143882033F5CA27013F0031F5C82030F495AA2EEFC03
6457 +03075C16FE030349C9FCA2705A6F130E178E6F139CA217FC705AA2705AA3705AA2705AA3
6458 +705AA294CAFCA25E160EA25EA2163C1638A25EA216F05EA24B5A120FD83FC01303486C5C
6459 +486C130793CBFC5D150E5D153C6C485B495B6C48485A383C0003001F495A260FE03FCCFC
6460 +3803FFFE6C13F838003FE04E6C7EC953>121 D<0007B912F0A302F8C8EA7FE0028015FF
6461 +01FCC84813C049178048484B1300495D494B5A495E171F90C9485A604D5A17FF000E4B5B
6462 +605E4C90C7FC001E5E001C4B5A161F4C5A5F167F4C5AC95B4B5B5D4B90C8FC5E150F4B5A
6463 +4B5A5E157F4B5A5E5C4A5B4A90C9FC5D020F16704A5A5D4A5A147F4A5A5D4917F0494915
6464 +E092C9FC495A130F495A4A1501133F495A5C494815035A4849150791C9FC48170F484816
6465 +1F49EE3FC04848167F003FEE01FF484815074992B5FCBAFCA33C4A7DC946>I
6466 +E
6467 +%EndDVIPSBitmapFont
6468 +end
6469 +%%EndProlog
6470 +%%BeginSetup
6471 +%%Feature: *Resolution 600dpi
6472 +TeXDict begin
6473 +
6474 +%%EndSetup
6475 +%%Page: 1 1
6476 +1 0 bop 1086 1574 a Fr(Unison)53 b(File)h(Sync)l(hronizer)886
6477 +1838 y Fq(http://www.cis.upenn.edu/)q Fp(\030)p Fq(bc)q(pier)q(ce/u)q
6478 +(nis)q(on)1582 2278 y Fo(V)-11 b(ersion)44 b(2.9.1)997
6479 +3086 y Fr(User)53 b(Man)l(ual)f(and)g(Reference)1929
6480 +5589 y Fn(1)p eop
6481 +%%Page: 2 2
6482 +2 1 bop 0 83 a Fm(Con)l(ten)l(ts)0 266 y Fl(1)77 b(Preface)3418
6483 +b(5)125 365 y Fn(1.1)83 b(P)n(eople)47 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h
6484 +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
6485 +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
6486 +(.)f(.)h(.)g(.)f(.)h(.)f(.)134 b(5)125 465 y(1.2)83 b(Cop)n(ying)50
6487 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
6488 +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
6489 +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)134
6490 +b(5)125 565 y(1.3)83 b(Rep)r(orting)28 b(Bugs)38 b(.)j(.)h(.)f(.)h(.)g
6491 +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
6492 +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
6493 +(.)f(.)h(.)f(.)134 b(5)125 664 y(1.4)83 b(Ho)n(w)28 b(Y)-7
6494 +b(ou)27 b(Can)h(Help)35 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
6495 +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
6496 +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)134
6497 +b(5)0 847 y Fl(2)77 b(Installation)3252 b(6)125 946 y
6498 +Fn(2.1)83 b(Do)n(wnloading)27 b(Unison)51 b(.)42 b(.)g(.)f(.)h(.)f(.)h
6499 +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
6500 +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)134
6501 +b(6)125 1046 y(2.2)83 b(Running)28 b(Unison)84 b(.)42
6502 +b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
6503 +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
6504 +h(.)f(.)h(.)g(.)f(.)h(.)f(.)134 b(6)125 1146 y(2.3)83
6505 +b(Upgrading)34 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
6506 +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
6507 +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)134
6508 +b(6)125 1245 y(2.4)83 b(Con)n(tributed)28 b(P)n(orts)75
6509 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
6510 +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
6511 +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)134 b(6)125 1345 y(2.5)83
6512 +b(Building)28 b(Unison)g(from)f(Scratc)n(h)43 b(.)f(.)f(.)h(.)g(.)f(.)h
6513 +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
6514 +h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)134 b(7)315
6515 +1445 y(2.5.1)94 b(Unix)40 b(.)h(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
6516 +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
6517 +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)134
6518 +b(7)315 1544 y(2.5.2)94 b(Windo)n(ws)75 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)
6519 +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
6520 +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
6521 +f(.)134 b(8)315 1644 y(2.5.3)94 b(Installation)27 b(Options)68
6522 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
6523 +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6524 +(.)h(.)f(.)134 b(8)0 1826 y Fl(3)77 b(T)-8 b(utorial)3392
6525 +b(9)125 1926 y Fn(3.1)83 b(Preliminaries)66 b(.)42 b(.)f(.)h(.)f(.)h(.)
6526 +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
6527 +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
6528 +g(.)f(.)h(.)f(.)134 b(9)125 2026 y(3.2)83 b(Lo)r(cal)27
6529 +b(Usage)40 b(.)h(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
6530 +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
6531 +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)134
6532 +b(9)125 2125 y(3.3)83 b(Remote)28 b(Usage)23 b(.)42 b(.)f(.)h(.)f(.)h
6533 +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
6534 +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
6535 +(.)g(.)f(.)h(.)f(.)93 b(11)125 2225 y(3.4)83 b(Remote)28
6536 +b(Shell)g(Metho)r(d)78 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
6537 +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
6538 +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(11)125
6539 +2325 y(3.5)83 b(So)r(c)n(k)n(et)27 b(Metho)r(d)66 b(.)41
6540 +b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
6541 +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
6542 +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(12)125 2424 y(3.6)83
6543 +b(Using)28 b(Unison)f(for)g(All)i(Y)-7 b(our)27 b(Files)41
6544 +b(.)g(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
6545 +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
6546 +93 b(12)125 2524 y(3.7)83 b(Going)28 b(F)-7 b(urther)25
6547 +b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
6548 +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
6549 +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(13)0
6550 +2707 y Fl(4)77 b(Basic)31 b(Concepts)3044 b(14)125 2806
6551 +y Fn(4.1)83 b(Ro)r(ots)75 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
6552 +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
6553 +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
6554 +(.)f(.)h(.)f(.)93 b(14)125 2906 y(4.2)83 b(P)n(aths)c(.)41
6555 +b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6556 +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
6557 +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93
6558 +b(15)125 3005 y(4.3)83 b(What)28 b(is)g(an)f(Up)r(date?)65
6559 +b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
6560 +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
6561 +(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(15)125 3105 y(4.4)83
6562 +b(What)28 b(is)g(a)f(Con\015ict?)h(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f
6563 +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
6564 +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93
6565 +b(15)125 3205 y(4.5)83 b(Reconciliation)31 b(.)42 b(.)f(.)h(.)f(.)h(.)g
6566 +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
6567 +h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
6568 +(.)f(.)h(.)f(.)93 b(15)125 3304 y(4.6)83 b(In)n(v)-5
6569 +b(arian)n(ts)54 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
6570 +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6571 +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93
6572 +b(16)125 3404 y(4.7)83 b(Ca)n(v)n(eats)26 b(and)i(Shortcomings)k(.)42
6573 +b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
6574 +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
6575 +h(.)f(.)93 b(17)0 3587 y Fl(5)77 b(Reference)3269 b(18)125
6576 +3686 y Fn(5.1)83 b(Running)28 b(Unison)84 b(.)42 b(.)f(.)h(.)g(.)f(.)h
6577 +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
6578 +h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
6579 +(.)f(.)93 b(18)125 3786 y(5.2)83 b(The)28 b Fk(.unison)d
6580 +Fn(Directory)20 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
6581 +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6582 +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(18)125 3885
6583 +y(5.3)83 b(Arc)n(hiv)n(e)27 b(Files)70 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f
6584 +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
6585 +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6586 +(.)h(.)f(.)93 b(18)125 3985 y(5.4)83 b(Preferences)69
6587 +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
6588 +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
6589 +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(19)125
6590 +4085 y(5.5)83 b(Pro\014les)d(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6591 +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
6592 +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6593 +(.)h(.)f(.)93 b(25)125 4184 y(5.6)83 b(Sample)28 b(Pro\014les)48
6594 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
6595 +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6596 +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(25)315 4284
6597 +y(5.6.1)h(A)28 b(Minimal)g(Pro\014le)73 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)
6598 +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
6599 +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93
6600 +b(25)315 4384 y(5.6.2)h(A)28 b(Basic)f(Pro\014le)53 b(.)42
6601 +b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
6602 +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
6603 +g(.)f(.)h(.)f(.)93 b(25)315 4483 y(5.6.3)h(A)28 b(P)n(o)n(w)n(er-User)c
6604 +(Pro\014le)k(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
6605 +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
6606 +h(.)g(.)f(.)h(.)f(.)93 b(26)125 4583 y(5.7)83 b(Keeping)27
6607 +b(Bac)n(kups)46 b(.)c(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
6608 +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
6609 +h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(27)125
6610 +4682 y(5.8)83 b(Merging)27 b(Con\015icting)g(V)-7 b(ersions)74
6611 +b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
6612 +h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
6613 +(.)f(.)93 b(27)125 4782 y(5.9)83 b(The)28 b(User)f(In)n(terface)59
6614 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
6615 +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
6616 +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(28)125 4882 y(5.10)41
6617 +b(Exit)28 b(co)r(de)68 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
6618 +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
6619 +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
6620 +(.)93 b(28)125 4981 y(5.11)41 b(P)n(ath)27 b(sp)r(eci\014cation)f(.)42
6621 +b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
6622 +(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
6623 +h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(29)125 5081 y(5.12)41
6624 +b(Ignoring)26 b(P)n(aths)72 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
6625 +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6626 +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93
6627 +b(30)125 5181 y(5.13)41 b(Sym)n(b)r(olic)28 b(Links)54
6628 +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
6629 +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6630 +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(30)125 5280
6631 +y(5.14)41 b(P)n(ermissions)54 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
6632 +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
6633 +h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
6634 +(.)f(.)93 b(31)1929 5589 y(2)p eop
6635 +%%Page: 3 3
6636 +3 2 bop 125 83 a Fn(5.15)41 b(Cross-Platform)25 b(Sync)n(hronization)31
6637 +b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
6638 +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
6639 +(.)93 b(31)125 183 y(5.16)41 b(Slo)n(w)28 b(Links)21
6640 +b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
6641 +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
6642 +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93
6643 +b(31)125 282 y(5.17)41 b(F)-7 b(ast)28 b(Up)r(date)g(Detection)42
6644 +b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
6645 +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
6646 +h(.)g(.)f(.)h(.)f(.)93 b(31)125 382 y(5.18)41 b(Clic)n(k-starting)26
6647 +b(Unison)j(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
6648 +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
6649 +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(32)0 565 y Fl(6)77
6650 +b(Advice)3392 b(33)125 664 y Fn(6.1)83 b(F)-7 b(requen)n(tly)28
6651 +b(Ask)n(ed)f(Questions)43 b(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
6652 +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
6653 +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(33)125 764 y(6.2)83
6654 +b(Common)28 b(Problems)43 b(.)e(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
6655 +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
6656 +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93
6657 +b(34)125 863 y(6.3)83 b(T)-7 b(ric)n(ks)27 b(and)g(Tips)39
6658 +b(.)i(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
6659 +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
6660 +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(37)0 1046 y
6661 +Fl(A)53 b(Installing)30 b(Ssh)3114 b(39)125 1146 y Fn(A.1)63
6662 +b(Unix)47 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
6663 +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
6664 +g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
6665 +(.)93 b(39)125 1245 y(A.2)63 b(Windo)n(ws)83 b(.)42 b(.)f(.)h(.)f(.)h
6666 +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
6667 +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
6668 +(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(40)0 1428 y Fl(B)57 b(Changes)31
6669 +b(in)g(V)-8 b(ersion)31 b(2.9.1)2645 b(42)1929 5589 y
6670 +Fn(3)p eop
6671 +%%Page: 4 4
6672 +4 3 bop 125 83 a Fn(Unison)27 b(is)h(a)f(\014le-sync)n(hronization)e
6673 +(to)r(ol)j(for)f(Unix)h(and)f(Windo)n(ws.)37 b(It)28
6674 +b(allo)n(ws)e(t)n(w)n(o)h(replicas)g(of)g(a)h(collection)f(of)g
6675 +(\014les)0 183 y(and)e(directories)f(to)h(b)r(e)h(stored)e(on)i
6676 +(di\013eren)n(t)f(hosts)g(\(or)f(di\013eren)n(t)i(disks)f(on)g(the)h
6677 +(same)e(host\),)i(mo)r(di\014ed)g(separately)-7 b(,)24
6678 +b(and)0 282 y(then)k(brough)n(t)f(up)h(to)f(date)h(b)n(y)f(propagating)
6679 +e(the)j(c)n(hanges)e(in)i(eac)n(h)f(replica)g(to)g(the)h(other.)125
6680 +382 y(Unison)c(shares)g(a)g(n)n(um)n(b)r(er)h(of)f(features)h(with)g
6681 +(to)r(ols)f(suc)n(h)h(as)f(con\014guration)f(managemen)n(t)h(pac)n(k)-5
6682 +b(ages)23 b(\(CVS,)j(PR)n(CS,)0 482 y(etc.\),)g(distributed)f
6683 +(\014lesystems)f(\(Co)r(da,)h(etc.\),)h(uni-directional)e(mirroring)e
6684 +(utilities)k(\(rsync,)f(etc.\),)g(and)g(other)f(sync)n(hro-)0
6685 +581 y(nizers)j(\(In)n(tellisync,)h(Reconcile,)f(etc\).)74
6686 +b(Ho)n(w)n(ev)n(er,)26 b(there)h(are)g(sev)n(eral)f(p)r(oin)n(ts)h
6687 +(where)g(it)h(di\013ers:)125 747 y Fj(\017)41 b Fn(Unison)22
6688 +b(runs)g(on)g(b)r(oth)i(Windo)n(ws)e(\(95,)h(98,)f(NT,)h(and)g(2k\))f
6689 +(and)h(Unix)f(\(Solaris,)h(Lin)n(ux,)g(etc.\))36 b(systems.)f(Moreo)n
6690 +(v)n(er,)208 847 y(Unison)26 b(w)n(orks)f Fi(acr)l(oss)j
6691 +Fn(platforms,)f(allo)n(wing)e(y)n(ou)h(to)h(sync)n(hronize)e(a)h(Windo)
6692 +n(ws)h(laptop)f(with)i(a)e(Unix)h(serv)n(er,)f(for)208
6693 +946 y(example.)125 1112 y Fj(\017)41 b Fn(Unlik)n(e)26
6694 +b(a)g(distributed)h(\014lesystem,)g(Unison)g(is)f(a)g(user-lev)n(el)f
6695 +(program:)35 b(there)26 b(is)g(no)h(need)f(to)h(hac)n(k)f(\(or)f(o)n
6696 +(wn!\))37 b(the)208 1212 y(k)n(ernel,)26 b(or)h(to)g(ha)n(v)n(e)g(sup)r
6697 +(eruser)g(privileges)f(on)h(either)h(host.)125 1378 y
6698 +Fj(\017)41 b Fn(Unlik)n(e)33 b(simple)g(mirroring)f(or)g(bac)n(kup)h
6699 +(utilities,)i(Unison)f(can)f(deal)g(with)g(up)r(dates)h(to)f(b)r(oth)h
6700 +(replicas)e(of)h(a)g(dis-)208 1478 y(tributed)e(directory)e(structure.)
6701 +46 b(Up)r(dates)32 b(that)f(do)f(not)h(con\015ict)g(are)f(propagated)f
6702 +(automatically)-7 b(.)45 b(Con\015icting)208 1577 y(up)r(dates)27
6703 +b(are)g(detected)h(and)f(displa)n(y)n(ed.)125 1743 y
6704 +Fj(\017)41 b Fn(Unison)32 b(w)n(orks)g(b)r(et)n(w)n(een)h(an)n(y)f
6705 +(pair)g(of)h(mac)n(hines)f(connected)h(to)g(the)g(in)n(ternet,)h(comm)n
6706 +(unicating)f(o)n(v)n(er)e(either)h(a)208 1843 y(direct)27
6707 +b(so)r(c)n(k)n(et)f(link)h(or)f(tunneling)i(o)n(v)n(er)d(an)i
6708 +Fk(rsh)f Fn(or)g(an)h(encrypted)g Fk(ssh)f Fn(connection.)36
6709 +b(It)27 b(is)g(careful)g(with)g(net)n(w)n(ork)208 1943
6710 +y(bandwidth,)e(and)g(runs)f(w)n(ell)g(o)n(v)n(er)f(slo)n(w)h(links)g
6711 +(suc)n(h)g(as)g(PPP)f(connections.)35 b(T)-7 b(ransfers)24
6712 +b(of)g(small)g(up)r(dates)h(to)f(large)208 2042 y(\014les)j(are)g
6713 +(optimized)g(using)h(a)f(compression)f(proto)r(col)g(similar)h(to)h
6714 +(rsync.)125 2208 y Fj(\017)41 b Fn(Unison)27 b(has)g(a)g(clear)g(and)g
6715 +(precise)g(sp)r(eci\014cation,)g(describ)r(ed)h(b)r(elo)n(w.)125
6716 +2374 y Fj(\017)41 b Fn(Unison)36 b(is)g(resilien)n(t)g(to)g(failure.)64
6717 +b(It)36 b(is)h(careful)f(to)g(lea)n(v)n(e)f(the)i(replicas)e(and)i(its)
6718 +f(o)n(wn)g(priv)-5 b(ate)36 b(structures)g(in)g(a)208
6719 +2474 y(sensible)27 b(state)g(at)h(all)f(times,)h(ev)n(en)f(in)h(case)f
6720 +(of)g(abnormal)f(termination)i(or)e(comm)n(unication)h(failures.)125
6721 +2640 y Fj(\017)41 b Fn(Unison)27 b(is)h(free;)f(full)h(source)f(co)r
6722 +(de)g(is)h(a)n(v)-5 b(ailable)26 b(under)h(the)h(GNU)h(Public)e
6723 +(License.)125 2806 y(There)j(is)h(a)f(mo)r(derated,)h(v)n(ery-lo)n(w-v)
6724 +n(olume)d(announcemen)n(t)i(list)i(for)e(new)h(Unison)g(releases;)g
6725 +(the)g(arc)n(hiv)n(es)e(of)i(this)0 2906 y(list)26 b(are)f(a)n(v)-5
6726 +b(ailable)25 b(at)g(the)i(ab)r(o)n(v)n(e)d(link.)37 b(There)25
6727 +b(is)h(also)e(a)i(mo)r(derated)f(\(but)i(higher)e(v)n(olume\))h
6728 +(discussion)f(list)h(for)f(Unison)0 3005 y(users.)1929
6729 +5589 y(4)p eop
6730 +%%Page: 5 5
6731 +5 4 bop 0 83 a Fm(1)135 b(Preface)0 281 y Fh(1.1)112
6732 +b(P)m(eople)125 435 y Fj(\017)41 b Fn(Benjamin)27 b(Pierce)g(is)g(the)h
6733 +(Unison)g(pro)5 b(ject)27 b(leader.)36 b(Zhe)27 b(Y)-7
6734 +b(ang)27 b(is)h(a)f(full-time)h(p)r(ostdo)r(c)g(on)f(the)h(pro)5
6735 +b(ject.)125 601 y Fj(\017)41 b Fn(The)33 b(curren)n(t)f(v)n(ersion)f
6736 +(of)i(Unison)g(w)n(as)f(designed)h(and)g(implemen)n(ted)g(b)n(y)g(T)-7
6737 +b(rev)n(or)31 b(Jim,)k(Benjamin)e(Pierce,)g(and)208 700
6738 +y(J)n(\023)-39 b(er^)d(ome)25 b(V)-7 b(ouillon,)27 b(with)i(Sylv)-5
6739 +b(ain)27 b(Gommier)g(and)h(Matthieu)g(Goula)n(y)-7 b(.)125
6740 +866 y Fj(\017)41 b Fn(Our)29 b(implemen)n(tation)h(of)g(the)h(rsync)e
6741 +(proto)r(col)g(w)n(as)h(built)g(b)n(y)g(Norman)g(Ramsey)f(and)h(Sylv)-5
6742 +b(ain)30 b(Gommier.)45 b(It)30 b(is)208 966 y(is)d(based)g(on)g(Andrew)
6743 +h(T)-7 b(ridgell's)27 b(thesis)g(w)n(ork)f(and)i(inspired)f(b)n(y)h
6744 +(his)f(rsync)g(utilit)n(y)-7 b(.)125 1132 y Fj(\017)41
6745 +b Fn(The)27 b(mirroring)f(and)h(merging)g(functionalit)n(y)g(w)n(as)g
6746 +(implemen)n(ted)h(b)n(y)g(Sylv)-5 b(ain)27 b(Ro)n(y)-7
6747 +b(.)125 1298 y Fj(\017)41 b Fn(Jacques)26 b(Garrigue)g(con)n(tributed)h
6748 +(the)h(original)e(Gtk)i(v)n(ersion)e(of)i(the)g(user)f(in)n(terface.)
6749 +125 1464 y Fj(\017)41 b Fn(Sundar)25 b(Balasubramaniam)e(help)r(ed)j
6750 +(build)h(a)e(protot)n(yp)r(e)g(implemen)n(tation)g(of)h(an)g(earlier)e
6751 +(sync)n(hronizer)f(in)j(Ja)n(v)-5 b(a.)208 1564 y(Insik)24
6752 +b(Shin)i(and)f(Insup)g(Lee)g(con)n(tributed)g(design)g(ideas)f(to)h
6753 +(this)h(implemen)n(tation.)36 b(Cedric)24 b(F)-7 b(ournet)25
6754 +b(con)n(tributed)208 1663 y(to)i(an)g(ev)n(en)g(earlier)g(protot)n(yp)r
6755 +(e.)0 1896 y Fh(1.2)112 b(Cop)m(ying)0 2049 y Fn(Unison)34
6756 +b(is)h(free)f(soft)n(w)n(are.)55 b(Y)-7 b(ou)35 b(are)e(free)h(to)g(c)n
6757 +(hange)f(and)i(redistribute)f(it)h(under)f(the)h(terms)f(of)g(the)h
6758 +(GNU)g(General)0 2149 y(Public)27 b(License.)37 b(Please)26
6759 +b(see)h(the)h(\014le)g(COPYING)g(in)f(the)h(Unison)g(distribution)g
6760 +(for)f(more)f(information.)0 2381 y Fh(1.3)112 b(Rep)s(orting)37
6761 +b(Bugs)0 2534 y Fn(If)28 b(Unison)g(is)f(not)h(w)n(orking)d(the)j(w)n
6762 +(a)n(y)f(y)n(ou)g(exp)r(ect,)h(here)f(are)f(some)h(steps)h(to)f(follo)n
6763 +(w:)125 2717 y Fj(\017)41 b Fn(First,)h(try)e(running)f(Unison)h(with)h
6764 +(the)f Fk(-debug)h(all)e Fn(command)g(line)h(option.)73
6765 +b(This)40 b(will)g(cause)f(Unison)h(to)208 2817 y(generate)22
6766 +b(a)i(detailed)g(trace)g(of)g(what)g(it's)g(doing,)h(whic)n(h)f(ma)n(y)
6767 +f(mak)n(e)g(it)i(clearer)e(where)g(the)i(problem)e(is)h(o)r(ccurring.)
6768 +125 2983 y Fj(\017)41 b Fn(Second,)22 b(send)f(mail)g(to)g
6769 +Fk(unison-help@cis.u)o(pen)o(n.)o(ed)o(u)15 b Fn(describing)21
6770 +b(the)g(problem)g(and)g(w)n(e'll)g(try)g(to)g(\014x)h(it.)35
6771 +b(Mak)n(e)208 3082 y(sure)c(to)h(include)h(the)g(v)n(ersion)e(of)h
6772 +(Unison)g(y)n(ou)g(are)f(using)h(\()p Fk(unison)41 b(-version)p
6773 +Fn(\),)31 b(the)i(kind)f(of)h(mac)n(hine\(s\))f(y)n(ou)208
6774 +3182 y(are)24 b(running)h(it)h(on,)f(a)g(record)f(of)i(what)f(gets)g
6775 +(prin)n(ted)g(when)h(the)f Fk(-debug)41 b(all)25 b Fn(option)g(is)g
6776 +(included,)h(and)g(as)e(m)n(uc)n(h)208 3282 y(information)i(as)h(y)n
6777 +(ou)g(can)g(ab)r(out)h(what)g(w)n(en)n(t)f(wrong.)125
6778 +3448 y Fj(\017)41 b Fn(If)28 b(y)n(ou)e(think)j(the)f(problem)f(y)n
6779 +(ou're)f(ha)n(ving)g(migh)n(t)i(ha)n(v)n(e)e(b)r(een)i(encoun)n(tered)f
6780 +(b)n(y)h(others)e(\(e.g.,)i(if)g(it)g(seems)f(lik)n(e)g(a)208
6781 +3547 y(con\014guration)e(problem,)h(not)h(a)f(real)g(bug\),)h(then)g(y)
6782 +n(ou)f(ma)n(y)g(b)r(e)h(able)f(to)h(get)f(some)g(help)h(from)f(the)h
6783 +(Unison)g(users')208 3647 y(mailing)g(list,)h Fk(unison-users@gr)o(oup)
6784 +o(s.)o(yah)o(oo)o(.c)o(om)p Fn(.)0 3879 y Fh(1.4)112
6785 +b(Ho)m(w)37 b(Y)-9 b(ou)37 b(Can)h(Help)0 4033 y Fn(Unison)29
6786 +b(is)h(a)f(part-time)g(pro)5 b(ject)29 b(for)g(its)h(dev)n(elop)r(ers:)
6787 +39 b(w)n(e)30 b(w)n(ork)e(on)h(it)h(b)r(ecause)f(w)n(e)g(enjo)n(y)g
6788 +(making)g(something)g(that)h(is)0 4132 y(useful)g(for)e(us)h(and)h(for)
6789 +e(the)i(comm)n(unit)n(y)-7 b(,)29 b(but)h(w)n(e)f(all)g(ha)n(v)n(e)f
6790 +(other)g(jobs)i(to)f(do.)41 b(If)30 b(y)n(ou)e(lik)n(e)h(Unison)g(and)g
6791 +(w)n(an)n(t)g(to)g(help)0 4232 y(impro)n(v)n(e)e(it,)h(y)n(our)f(con)n
6792 +(tributions)g(w)n(ould)h(b)r(e)g(v)n(ery)f(w)n(elcome.)37
6793 +b(F)-7 b(or)27 b(more)h(details)f(on)h(ho)n(w)f(the)i(co)r(de)f(is)f
6794 +(organized,)g(etc.,)0 4331 y(see)g(the)h(\014le)g Fk(CONTRIB)d
6795 +Fn(in)j(the)g(source)e(distribution.)125 4431 y(If)31
6796 +b(y)n(ou)g(don't)g(feel)h(lik)n(e)f(hac)n(king,)g(y)n(ou)f(can)h(help)h
6797 +(us)f(b)n(y)g(simply)h(letting)f(us)h(kno)n(w)e(ho)n(w)h(y)n(ou)f(lik)n
6798 +(e)h(Unison.)48 b(Ev)n(en)30 b(a)0 4531 y(short)g(note)h(lik)n(e)g
6799 +(\\I'm)g(using)g(it;)i(w)n(orks)d(\014ne")g(or)h(\\I)f(lo)r(ok)n(ed)g
6800 +(at)h(it)h(but)g(it's)f(not)g(quite)h(what)f(I)g(w)n(an)n(t)f(b)r
6801 +(ecause...")47 b(will)0 4630 y(giv)n(e)27 b(us)g(v)-5
6802 +b(aluable)27 b(information.)1929 5589 y(5)p eop
6803 +%%Page: 6 6
6804 +6 5 bop 0 83 a Fm(2)135 b(Installation)0 265 y Fn(Unison)35
6805 +b(is)g(designed)f(to)h(b)r(e)h(easy)e(to)h(install.)59
6806 +b(The)35 b(follo)n(wing)f(sequence)g(of)h(steps)g(should)g(get)f(y)n
6807 +(ou)h(a)f(fully)i(w)n(orking)0 364 y(installation)31
6808 +b(in)g(a)g(few)g(min)n(utes.)48 b(\(If)32 b(y)n(ou)e(run)h(in)n(to)g
6809 +(trouble,)g(y)n(ou)g(ma)n(y)f(\014nd)i(the)f(suggestions)f(in)h
6810 +(Section)g(6)g([Advice])0 464 y(helpful.\))125 564 y(Unison)c(can)g(b)r
6811 +(e)h(used)g(with)g(either)f(of)h(t)n(w)n(o)f(user)g(in)n(terfaces:)101
6812 +730 y(1.)42 b(a)27 b(simple)g(textual)h(in)n(terface,)f(suitable)h(for)
6813 +f(dum)n(b)h(terminals)f(\(and)g(running)h(from)f(scripts\),)g(and)101
6814 +896 y(2.)42 b(a)27 b(more)g(sophisticated)g(grapical)e(in)n(terface,)i
6815 +(based)h(on)f(Gtk.)125 1062 y(Y)-7 b(ou)27 b(will)h(need)f(to)h
6816 +(install)f(a)g(cop)n(y)g(of)g(Unison)h(on)f(ev)n(ery)f(mac)n(hine)h
6817 +(that)h(y)n(ou)f(w)n(an)n(t)g(to)g(sync)n(hronize.)35
6818 +b(Ho)n(w)n(ev)n(er,)26 b(y)n(ou)0 1162 y(only)f(need)g(the)h(v)n
6819 +(ersion)d(with)j(a)f(graphical)e(user)i(in)n(terface)f(\(if)i(y)n(ou)f
6820 +(w)n(an)n(t)f(a)h(GUI)g(at)g(all\))h(on)e(the)i(mac)n(hine)f(where)f(y)
6821 +n(ou're)0 1261 y(actually)k(going)f(to)h(displa)n(y)g(the)g(in)n
6822 +(terface)g(\(the)h Fi(client)g Fn(mac)n(hine\).)39 b(Other)28
6823 +b(mac)n(hines)g(that)g(y)n(ou)g(sync)n(hronize)f(with)h(can)0
6824 +1361 y(get)f(along)g(just)h(\014ne)g(with)g(the)g(textual)g(v)n
6825 +(ersion.)0 1593 y Fh(2.1)112 b(Do)m(wnloading)37 b(Unison)0
6826 +1746 y Fn(If)28 b(a)f(pre-built)h(binary)f(of)h(Unison)f(is)h(a)n(v)-5
6827 +b(ailable)26 b(for)h(the)i(clien)n(t)e(mac)n(hine's)g(arc)n(hitecture,)
6828 +g(just)h(do)n(wnload)f(it)h(and)f(put)i(it)0 1846 y(somewhere)f(in)h(y)
6829 +n(our)f(searc)n(h)f(path)j(\(if)f(y)n(ou're)f(going)g(to)h(in)n(v)n(ok)
6830 +n(e)e(it)j(from)e(the)i(command)e(line\))i(or)e(on)h(y)n(our)f(desktop)
6831 +g(\(if)0 1946 y(y)n(ou'll)f(b)r(e)h(clic)n(k-starting)e(it\).)125
6832 +2045 y(The)g(executable)h(\014le)f(for)h(the)g(graphical)e(v)n(ersion)g
6833 +(\(with)j(a)e(name)g(including)h Fk(gtkui)p Fn(\))e(actually)h(pro)n
6834 +(vides)g Fi(b)l(oth)h Fn(in)n(ter-)0 2145 y(faces:)33
6835 +b(the)22 b(graphical)e(one)h(app)r(ears)g(b)n(y)g(default,)i(while)f
6836 +(the)g(textual)g(in)n(terface)f(can)g(b)r(e)h(selected)f(b)n(y)h
6837 +(including)f Fk(-ui)43 b(text)0 2245 y Fn(on)27 b(the)h(command)g
6838 +(line.)37 b(The)27 b Fk(textui)e Fn(executable)j(pro)n(vides)e(just)i
6839 +(the)g(textual)g(in)n(terface.)125 2344 y(If)20 b(y)n(ou)f(don't)h(see)
6840 +f(a)h(pre-built)f(executable)h(for)f(y)n(our)g(arc)n(hitecture,)h(y)n
6841 +(ou'll)f(need)h(to)g(build)g(it)g(y)n(ourself.)33 b(See)20
6842 +b(Section)g(2.5)0 2444 y([Building)25 b(Unison].)35 b(\(There)25
6843 +b(are)e(also)h(a)g(small)g(n)n(um)n(b)r(er)g(of)h(\\con)n(tributed)f(p)
6844 +r(orts")f(to)i(other)f(arc)n(hitectures)f(that)i(are)e(not)0
6845 +2543 y(main)n(tained)k(b)n(y)h(us.)36 b(See)28 b(Section)g(2.4)e([Con)n
6846 +(tributed)i(P)n(orts])e(to)h(c)n(hec)n(k)g(what's)g(a)n(v)-5
6847 +b(ailable.\))125 2643 y(Chec)n(k)31 b(to)h(mak)n(e)f(sure)g(that)i
6848 +(what)e(y)n(ou)h(ha)n(v)n(e)e(do)n(wnloaded)h(is)h(really)f
6849 +(executable.)49 b(Either)32 b(clic)n(k-start)e(it,)k(or)d(t)n(yp)r(e)0
6850 +2743 y Fk(unison)41 b(-version)24 b Fn(at)k(the)g(command)f(line.)125
6851 +2842 y(Unison)35 b(can)h(b)r(e)g(used)g(in)g(sev)n(eral)e(di\013eren)n
6852 +(t)i(mo)r(des:)53 b(with)36 b(di\013eren)n(t)g(directories)e(on)i(a)f
6853 +(single)h(mac)n(hine,)h(with)f(a)0 2942 y(remote)d(mac)n(hine)h(o)n(v)n
6854 +(er)e(a)h(direct)h(so)r(c)n(k)n(et)f(connection,)i(with)f(a)g(remote)f
6855 +(mac)n(hine)g(using)h Fk(rsh)f Fn(\(on)g(Unix)i(systems\),)g(or)0
6856 +3042 y(with)25 b(a)f(remote)g(Unix)h(system)f(\(from)h(either)f(a)g
6857 +(Unix)h(or)f(a)g(Windo)n(ws)g(clien)n(t\))h(using)f(ssh)g(for)g(authen)
6858 +n(tication)h(and)f(secure)0 3141 y(transfer.)36 b(If)28
6859 +b(y)n(ou)f(in)n(tend)h(to)f(use)h(the)g(last)f(option,)g(y)n(ou)g(ma)n
6860 +(y)g(need)h(to)f(install)h(ssh;)f(see)g(Section)h(A)g([Installing)f
6861 +(Ssh].)0 3374 y Fh(2.2)112 b(Running)37 b(Unison)0 3527
6862 +y Fn(Once)32 b(y)n(ou'v)n(e)f(got)h(Unison)g(installed)h(on)f(at)g
6863 +(least)g(one)g(system,)i(read)e(Section)g(3)g([T)-7 b(utorial])32
6864 +b(of)g(the)h(user)f(man)n(ual)g(\(or)0 3626 y(t)n(yp)r(e)c
6865 +Fk(unison)41 b(-doc)h(tutorial)p Fn(\))24 b(for)k(instructions)f(on)g
6866 +(ho)n(w)g(to)g(get)h(started.)0 3859 y Fh(2.3)112 b(Upgrading)0
6867 +4012 y Fn(Upgrading)30 b(to)h(a)g(new)g(v)n(ersion)e(of)i(Unison)g
6868 +(should)g(b)r(e)h(as)e(simple)h(as)g(thro)n(wing)f(a)n(w)n(a)n(y)f(the)
6869 +i(old)g(binary)g(and)f(installing)0 4112 y(the)e(new)g(one.)125
6870 +4211 y(Before)h(upgrading,)h(it)h(is)f(a)g(go)r(o)r(d)g(idea)g(to)h
6871 +(use)f(the)h Fi(old)g Fn(v)n(ersion)e(to)i(mak)n(e)e(sure)h(all)g(y)n
6872 +(our)f(replicas)h(are)f(completely)0 4311 y(sync)n(hronized.)35
6873 +b(A)27 b(new)f(v)n(ersion)f(of)h(Unison)g(will)g(sometimes)g(in)n(tro)r
6874 +(duce)g(a)g(di\013eren)n(t)g(format)g(for)g(the)g(arc)n(hiv)n(e)f
6875 +(\014les)h(used)0 4411 y(to)c(remem)n(b)r(er)g(information)f(ab)r(out)i
6876 +(the)f(previous)f(state)h(of)h(the)f(replicas.)34 b(In)23
6877 +b(this)f(case,)h(the)f(old)h(arc)n(hiv)n(e)d(will)j(b)r(e)f(ignored)0
6878 +4510 y(\(not)i(deleted)f(|)g(if)h(y)n(ou)f(roll)f(bac)n(k)g(to)i(the)f
6879 +(previous)f(v)n(ersion)g(of)h(Unison,)h(y)n(ou)f(will)g(\014nd)h(the)f
6880 +(old)g(arc)n(hiv)n(es)f(in)n(tact\),)i(whic)n(h)0 4610
6881 +y(means)j(that)h(an)n(y)e(di\013erences)h(b)r(et)n(w)n(een)h(the)f
6882 +(replicas)g(will)g(sho)n(w)g(up)g(as)g(con\015icts)g(and)g(need)h(to)f
6883 +(b)r(e)h(resolv)n(ed)e(man)n(ually)-7 b(.)0 4842 y Fh(2.4)112
6884 +b(Con)m(tributed)37 b(P)m(orts)0 4996 y Fn(A)f(few)g(p)r(eople)f(ha)n
6885 +(v)n(e)f(o\013ered)h(to)h(main)n(tain)f(pre-built)g(executables,)i
6886 +(easy)e(installation)g(scripts,)i(etc.,)g(for)e(particular)0
6887 +5095 y(arc)n(hitectures.)h(They)28 b(are)f(not)h(main)n(tained)g(b)n(y)
6888 +f(us)h(and)g(are)f(not)h(guaran)n(teed)e(to)i(w)n(ork,)e(b)r(e)j(k)n
6889 +(ept)f(up)g(to)g(date)f(with)i(our)0 5195 y(latest)e(releases,)f(etc.,)
6890 +i(but)h(y)n(ou)d(ma)n(y)h(\014nd)h(them)g(useful.)38
6891 +b(Here's)27 b(what's)g(a)n(v)-5 b(ailable)27 b(at)g(the)h(momen)n(t:)
6892 +1929 5589 y(6)p eop
6893 +%%Page: 7 7
6894 +7 6 bop 125 83 a Fj(\017)41 b Fn(Dan)36 b(P)n(elleg)f(has)h(p)r(orted)g
6895 +(unison)g(to)g(F)-7 b(reeBSD.)37 b(This)f(means)g(that)g(an)n(y)g(F)-7
6896 +b(reeBSD)36 b(user)g(with)h(an)f(up-to-date)208 183 y(\\p)r(orts")19
6897 +b(collection)i(can)g(install)g(unison)g(b)n(y)g(doing:)33
6898 +b Fk(cd)43 b(/usr/ports/net/u)o(ni)o(so)o(n;)37 b(make)42
6899 +b(&&)h(make)f(install)p Fn(.)208 282 y(\(Mak)n(e)33 b(sure)g(y)n(our)g
6900 +(\\p)r(orts")f(collection)h(is)h(fully)g(up)h(to)e(date)h(b)r(efore)g
6901 +(doing)f(this,)j(to)e(ensure)f(that)h(y)n(ou)f(get)h(the)208
6902 +382 y(most)27 b(recen)n(t)g(Unison)g(v)n(ersion)g(that)g(has)g(b)r(een)
6903 +h(compiled)g(for)f(F)-7 b(reeBSD.\))208 514 y(F)g(reeBSD)27
6904 +b(binaries)g(can)g(also)g(b)r(e)h(obtained)f(directly)g(from)390
6905 +677 y Fk(http://www.freebs)o(d.)o(org)o(/c)o(gi)o(/po)o(rt)o(s.c)o(gi)o
6906 +(?q)o(uer)o(y=)o(uni)o(so)o(n&s)o(ty)o(pe)o(=al)o(l)p
6907 +Fn(.)125 841 y Fj(\017)41 b Fn(Andrew)25 b(Pitts)g(has)g(built)h
6908 +(binaries)f(for)f(some)h(v)n(ersions)f(of)h(Unison)g(for)g(the)h(Lin)n
6909 +(ux-PPC)e(platform.)35 b(They)26 b(can)f(b)r(e)208 941
6910 +y(found)i(in)h Fk(ftp://ftp.cl.cam.)o(ac)o(.uk)o(/p)o(ape)o(rs)o(/am)o
6911 +(p1)o(2/)o(uni)o(so)o(n/)p Fn(.)125 1104 y Fj(\017)41
6912 +b Fn(Rob)r(ert)27 b(McQueen)g(main)n(tains)g(a)g(Debian)h(pac)n(k)-5
6913 +b(age)26 b(for)h(Unison.)37 b(The)28 b(homepage)e(is)i(lo)r(cated)f(at)
6914 +390 1268 y Fk(http://packages.d)o(eb)o(ian)o(.o)o(rg)o(/te)o(st)o(ing)o
6915 +(/n)o(on)o(-us)o(/u)o(nis)o(on)o(.ht)o(ml)o Fn(.)125
6916 +1432 y Fj(\017)41 b Fn(Chris)27 b(Co)r(cosco)f(pro)n(vides)g(binaries)h
6917 +(for)g(Unison)g(under)h(SGI)g(IRIX)g(\(6.5\).)36 b(They)28
6918 +b(can)f(b)r(e)h(found)g(in)390 1595 y Fk(www.bic.mni.mcgil)o(l.)o(ca/)o
6919 +(us)o(er)o(s/c)o(ri)o(sco)o(/u)o(ni)o(son)o(.i)o(rix)o(/)p
6920 +Fn(.)0 1827 y Fh(2.5)112 b(Building)36 b(Unison)h(from)g(Scratc)m(h)0
6921 +1980 y Fn(If)28 b(a)e(pre-built)i(image)e(is)h(not)g(a)n(v)-5
6922 +b(ailable,)26 b(y)n(ou)h(will)g(need)g(to)g(compile)g(it)h(from)f
6923 +(scratc)n(h;)f(the)i(sources)d(are)i(a)n(v)-5 b(ailable)25
6924 +b(from)0 2080 y(the)j(same)f(place)g(as)g(the)h(binaries.)125
6925 +2179 y(In)k(principle,)i(Unison)f(should)f(w)n(ork)f(on)h(an)n(y)g
6926 +(platform)g(to)h(whic)n(h)f(OCaml)g(has)g(b)r(een)h(p)r(orted)g(and)f
6927 +(on)g(whic)n(h)h(the)0 2279 y Fk(Unix)c Fn(mo)r(dule)i(is)f(fully)h
6928 +(implemen)n(ted.)47 b(In)31 b(particular,)f(it)h(has)f(b)r(een)h
6929 +(tested)g(on)f(man)n(y)g(\015a)n(v)n(ors)e(of)j(Windo)n(ws)f(\(98,)h
6930 +(NT,)0 2379 y(2000\))26 b(and)h(Unix)h(\(Solaris,)f(Lin)n(ux,)g(F)-7
6931 +b(reeBSD,)28 b(MacOS)f(X\),)h(and)g(on)f(b)r(oth)h(32-)e(and)i(64-bit)f
6932 +(arc)n(hitectures.)125 2478 y(Unison)g(do)r(es)g(not)h(w)n(ork)e(\(and)
6933 +i(probably)e(nev)n(er)h(will\))h(on)f(MacOS)g(v)n(ersions)f(8)h(or)g
6934 +(9.)0 2693 y Fl(2.5.1)94 b(Unix)0 2846 y Fn(Y)-7 b(ou'll)37
6935 +b(need)g(the)g(Ob)5 b(jectiv)n(e)36 b(Caml)h(compiler)f(\(v)n(ersion)f
6936 +(3.04)h(or)g(later)2352 2816 y Fg(1)2388 2846 y Fn(\),)k(whic)n(h)c(is)
6937 +h(a)n(v)-5 b(ailable)36 b(from)g(its)h(o\016cial)f(site)0
6938 +2946 y Fk(http://caml.inri)o(a.f)o(r)p Fn(.)30 b(Building)25
6939 +b(and)f(installing)h(OCaml)f(on)h(Unix)g(systems)f(is)h(v)n(ery)f
6940 +(straigh)n(tforw)n(ard;)f(follo)n(w)h(the)0 3045 y(instructions)30
6941 +b(in)i(the)f(distribution.)47 b(Y)-7 b(ou'll)31 b(probably)e(w)n(an)n
6942 +(t)i(to)f(build)i(the)f(nativ)n(e-co)r(de)f(compiler)g(in)h(addition)g
6943 +(to)g(the)0 3145 y(b)n(yteco)r(de)c(compiler,)g(but)h(this)g(is)g(not)f
6944 +(absolutely)g(necessary)-7 b(.)125 3245 y(\(Quic)n(k)24
6945 +b(start:)35 b(on)24 b(man)n(y)g(systems,)h(the)g(follo)n(wing)e
6946 +(sequence)i(of)f(commands)g(will)h(get)g(y)n(ou)e(a)i(w)n(orking)e(and)
6947 +h(installed)0 3344 y(compiler:)36 b(\014rst)28 b(do)f
6948 +Fk(make)42 b(world)f(opt)p Fn(,)27 b(then)h Fk(su)f Fn(to)g(ro)r(ot,)g
6949 +(then)h(do)g Fk(make)41 b(install)p Fn(.\))125 3444 y(Y)-7
6950 +b(ou'll)22 b(also)f(need)h(the)g(GNU)h(mak)n(e)e(utilit)n(y)-7
6951 +b(,)23 b(standard)e(on)h(man)n(y)f(Unix)h(systems.)35
6952 +b(\(T)n(yp)r(e)22 b Fk(make)42 b(--version)18 b Fn(to)k(c)n(hec)n(k)0
6953 +3544 y(that)28 b(y)n(ou'v)n(e)e(got)h(the)h(GNU)g(v)n(ersion.\))125
6954 +3643 y(Once)h(y)n(ou'v)n(e)g(got)h(OCaml)f(installed,)i(grab)e(a)h(cop)
6955 +n(y)f(of)h(the)h(Unison)f(sources,)g(unzip)g(and)g(un)n(tar)g(them,)h
6956 +(c)n(hange)e(to)0 3743 y(the)f(new)g Fk(unison)d Fn(directory)-7
6957 +b(,)26 b(and)i(t)n(yp)r(e)523 3904 y Fk(make)42 b(UISTYLE=text)125
6958 +4066 y Fn(The)27 b(result)g(should)h(b)r(e)g(an)f(executable)g(\014le)h
6959 +(called)f Fk(unison)p Fn(.)125 4165 y(T)n(yp)r(e)g Fk(./unison)d
6960 +Fn(to)k(mak)n(e)f(sure)g(the)h(program)d(is)j(executable.)36
6961 +b(Y)-7 b(ou)28 b(should)f(get)g(bac)n(k)g(a)g(usage)g(message.)125
6962 +4265 y(If)h(y)n(ou)e(w)n(an)n(t)h(to)h(build)g(a)f(graphical)f(user)h
6963 +(in)n(terface,)g(c)n(ho)r(ose)f(one)i(of)f(the)h(follo)n(wing:)125
6964 +4426 y Fj(\017)41 b Fn(Gtk)27 b(in)n(terface:)208 4526
6965 +y(Y)-7 b(ou)32 b(will)g(need)g(Gtk)h(\(v)n(ersion)d(1.2)i(or)f(later,)i
6966 +(a)n(v)-5 b(ailable)30 b(from)i Fk(http://www.gtk.o)o(rg)26
6967 +b Fn(and)32 b(standard)f(on)h(man)n(y)208 4625 y(Unix)27
6968 +b(installations\).)208 4757 y(Y)-7 b(ou)27 b(also)g(need)g(the)h(get)g
6969 +(LablGtk)f(\(v)n(ersion)g(1.1.3)f(is)h(kno)n(wn)g(to)h(w)n(ork\).)36
6970 +b(Grab)27 b(the)h(dev)n(elop)r(ers')e(tarball)h(from)390
6971 +4921 y Fk(http://wwwfun.kur)o(im)o(s.k)o(yo)o(to)o(-u.)o(ac)o(.jp)o(/s)
6972 +o(of)o(t/o)o(la)o(bl/)o(la)o(blg)o(tk)o(.h)o(tml)o Fn(,)p
6973 +0 4972 1560 4 v 92 5025 a Ff(1)127 5049 y Fe(If)d(y)n(ou)g(are)f
6974 +(compiling)g(Unison)g(2.7.7)h(or)f(an)h(earlier)f(v)n(ersion,)g(y)n(ou)
6975 +i(need)f(to)131 5151 y Fd(\017)42 b Fe(insert)23 b(a)h(line)f(\\)p
6976 +Fc(CAMLFLAGS+=-nolabels)30 b Fe(to)24 b(the)g(\014le)g(named)g(\\)p
6977 +Fc(Makefile.OCaml)p Fe(")k(in)23 b(the)h(source)h(directory)-6
6978 +b(,)23 b(and)131 5261 y Fd(\017)42 b Fe(install)23 b(LablGtk)h(1.1.1)g
6979 +(instead)g(of)g(the)g(latest)h(v)n(ersion.)1929 5589
6980 +y Fn(7)p eop
6981 +%%Page: 8 8
6982 +8 7 bop 208 83 a Fn(un)n(tar)26 b(it,)j(and)e(follo)n(w)g(the)h
6983 +(instructions)f(to)g(build)i(and)e(install)h(it.)208
6984 +216 y(\(Quic)n(k)f(start:)36 b Fk(make)42 b(configure)p
6985 +Fn(,)24 b(then)k Fk(make)p Fn(,)e(then)i Fk(make)42 b(opt)p
6986 +Fn(,)27 b(then)h Fk(su)f Fn(and)g Fk(make)42 b(install)p
6987 +Fn(.\))208 349 y(No)n(w)27 b(build)h(unison.)36 b(If)29
6988 +b(y)n(our)d(searc)n(h)g(paths)h(are)g(set)h(up)f(correctly)-7
6989 +b(,)27 b(t)n(yping)513 548 y Fk(make)42 b(UISTYLE=gtk)208
6990 +747 y Fn(should)27 b(build)h(a)f Fk(unison)e Fn(executable)j(with)g(a)f
6991 +(Gtk)h(graphical)e(in)n(terface.)125 913 y(If)i(this)f(step)h(do)r(es)f
6992 +(not)h(w)n(ork,)e(don't)i(w)n(orry:)35 b(Unison)28 b(w)n(orks)d(\014ne)
6993 +j(with)g(the)g(textual)g(in)n(terface.)125 1013 y(Put)23
6994 +b(the)h Fk(unison)d Fn(executable)i(somewhere)f(in)i(y)n(our)e(searc)n
6995 +(h)g(path,)j(either)e(b)n(y)g(adding)g(the)h(Unison)g(directory)e(to)h
6996 +(y)n(our)0 1112 y(P)-7 b(A)g(TH)28 b(v)-5 b(ariable)26
6997 +b(or)h(b)n(y)g(cop)n(ying)g(the)h(executable)f(to)g(some)g(standard)g
6998 +(directory)f(where)h(executables)g(are)g(stored.)0 1328
6999 +y Fl(2.5.2)94 b(Windo)m(ws)0 1482 y Fn(Although)30 b(the)h(binary)e
7000 +(distribution)h(should)g(w)n(ork)f(on)h(an)n(y)f(v)n(ersion)g(of)h
7001 +(Windo)n(ws,)g(some)g(p)r(eople)g(ma)n(y)f(w)n(an)n(t)h(to)g(build)0
7002 +1581 y(Unison)e(from)f(scratc)n(h)f(on)h(those)h(systems)f(to)r(o.)0
7003 +1797 y Fl(Byteco)s(de)37 b(v)m(ersion:)82 b Fn(The)32
7004 +b(simpler)f(but)i(slo)n(w)n(er)d(compilation)h(option)g(to)h(build)h(a)
7005 +e(Unison)h(executable)f(is)h(to)g(build)0 1897 y(a)h(b)n(yteco)r(de)f
7006 +(v)n(ersion.)52 b(Y)-7 b(ou)34 b(need)f(\014rst)g(install)g(Windo)n(ws)
7007 +g(v)n(ersion)e(of)i(the)h(OCaml)e(compiler)h(\(v)n(ersion)f(3.04)f(or)i
7008 +(later,)0 1996 y(a)n(v)-5 b(ailable)26 b(from)i Fk(http://caml.inr)o
7009 +(ia.)o(fr)o Fn(\).)k(Then)27 b(grab)g(a)g(cop)n(y)g(of)g(Unison)h
7010 +(sources)e(and)h(t)n(yp)r(e)305 2162 y Fk(make)42 b(UISTYLE=text)d
7011 +(NATIVE=false)125 2328 y Fn(to)27 b(compile)g(the)h(b)n(yteco)r(de.)37
7012 +b(The)28 b(result)f(should)g(b)r(e)h(an)g(executable)f(\014le)h(called)
7013 +f Fk(unison.exe)p Fn(.)0 2544 y Fl(Nativ)m(e)j(v)m(ersion:)83
7014 +b Fn(T)-7 b(o)25 b(build)i(a)e(more)h(e\016cien)n(t,)g(nativ)n(e)g(v)n
7015 +(ersion)e(of)i(Unison)g(on)g(Windo)n(ws,)g(y)n(ou)f(can)g(c)n(ho)r(ose)
7016 +g(b)r(et)n(w)n(een)0 2644 y(t)n(w)n(o)30 b(options.)45
7017 +b(Both)30 b(options)g(require)f(the)i(OCaml)f(distribution)h(v)n
7018 +(ersion)e(3.04)g(as)h(w)n(ell)g(as)g(the)h(Cygwin)f(la)n(y)n(er,)f
7019 +(whic)n(h)0 2743 y(pro)n(vides)e(certain)h(GNU)h(to)r(ols.)39
7020 +b(The)29 b(t)n(w)n(o)f(options)g(di\013er)g(in)h(the)g(C)g(compiler)f
7021 +(emplo)n(y)n(ed:)37 b(MS)29 b(Visual)g(C++)e(\(MSV)n(C\))0
7022 +2843 y(vs.)g(Cygwin)g(GNU)i(C.)125 2943 y(The)e(tradeo\013)6
7023 +b(?)125 3109 y Fj(\017)41 b Fn(Only)27 b(the)h(MSV)n(C)g(option)f(can)g
7024 +(pro)r(duce)g(statically)g(link)n(ed)h(Unison)f(executable.)125
7025 +3275 y Fj(\017)41 b Fn(The)27 b(Cygwin)g(GNU)i(C)e(option)h(requires)e
7026 +(only)h(free)g(soft)n(w)n(are.)125 3441 y(The)h(\014les)h(\\INST)-7
7027 +b(ALL.win32-msv)n(c")27 b(and)h(\\INST)-7 b(ALL.win32-cygwin-gn)n(uc")
7028 +26 b(describ)r(e)i(the)h(building)g(pro)r(cedures)0 3540
7029 +y(for)e(the)h(resp)r(ectiv)n(e)f(options.)0 3756 y Fl(2.5.3)94
7030 +b(Installation)31 b(Options)0 3909 y Fn(The)d Fk(Makefile)c
7031 +Fn(in)j(the)h(distribution)g(includes)f(sev)n(eral)f(switc)n(hes)h
7032 +(that)h(can)f(b)r(e)h(used)f(to)h(con)n(trol)e(ho)n(w)h(Unison)g(is)g
7033 +(built.)0 4009 y(Here)g(are)g(the)h(most)f(useful)h(ones:)125
7034 +4175 y Fj(\017)41 b Fn(Building)24 b(with)h Fk(NATIVE=true)20
7035 +b Fn(uses)k(the)g(nativ)n(e-co)r(de)g(OCaml)f(compiler,)i(yielding)f
7036 +(an)g(executable)g(that)h(will)f(run)208 4275 y(quite)j(a)h(bit)g
7037 +(faster.)36 b(W)-7 b(e)28 b(use)f(this)h(for)f(building)h(distribution)
7038 +g(v)n(ersions.)125 4441 y Fj(\017)41 b Fn(Building)27
7039 +b(with)h Fk(make)42 b(DEBUGGING=true)22 b Fn(generates)k(debugging)h
7040 +(sym)n(b)r(ols.)125 4607 y Fj(\017)41 b Fn(Building)33
7041 +b(with)h Fk(make)42 b(STATIC=true)29 b Fn(generates)j(a)h(\(mostly\))h
7042 +(statically)f(link)n(ed)g(executable.)54 b(W)-7 b(e)34
7043 +b(use)g(this)g(for)208 4706 y(building)27 b(distribution)h(v)n
7044 +(ersions,)e(for)h(p)r(ortabilit)n(y)-7 b(.)1929 5589
7045 +y(8)p eop
7046 +%%Page: 9 9
7047 +9 8 bop 0 83 a Fm(3)135 b(T)-11 b(utorial)0 281 y Fh(3.1)112
7048 +b(Preliminaries)0 435 y Fn(Unison)28 b(can)f(b)r(e)h(used)f(with)h
7049 +(either)g(of)f(t)n(w)n(o)g(user)g(in)n(terfaces:)101
7050 +601 y(1.)42 b(a)27 b(straigh)n(tforw)n(ard)d(textual)k(in)n(terface)f
7051 +(and)101 767 y(2.)42 b(a)27 b(more)g(sophisticated)g(graphical)f(in)n
7052 +(terface)0 933 y(The)21 b(textual)h(in)n(terface)e(is)i(more)e(con)n(v)
7053 +n(enien)n(t)g(for)h(running)g(from)g(scripts)g(and)g(w)n(orks)e(on)i
7054 +(dum)n(b)h(terminals;)h(the)f(graphical)0 1032 y(in)n(terface)27
7055 +b(is)g(b)r(etter)h(for)f(most)h(in)n(teractiv)n(e)e(use.)37
7056 +b(F)-7 b(or)27 b(this)h(tutorial,)f(y)n(ou)g(can)g(use)g(either.)125
7057 +1132 y(The)j(command-line)g(argumen)n(ts)f(to)h(b)r(oth)g(v)n(ersions)f
7058 +(are)g(iden)n(tical.)45 b(The)30 b(graphical)f(v)n(ersion)g(can)h(b)r
7059 +(e)g(run)g(directly)0 1232 y(b)n(y)i(clic)n(king)f(on)h(its)g(icon,)h
7060 +(but)f(this)g(requires)f(a)h(little)g(set-up)g(\(see)g(Section)g(5.18)f
7061 +([Clic)n(k-starting)f(Unison]\).)50 b(F)-7 b(or)32 b(this)0
7062 +1331 y(tutorial,)27 b(w)n(e)g(assume)g(that)h(y)n(ou're)e(starting)h
7063 +(it)h(from)f(the)h(command)g(line.)125 1431 y(Unison)i(can)f(sync)n
7064 +(hronize)g(\014les)h(and)g(directories)e(on)i(a)g(single)f(mac)n(hine,)
7065 +i(or)e(b)r(et)n(w)n(een)h(t)n(w)n(o)f(mac)n(hines)h(on)f(net)n(w)n
7066 +(ork.)0 1531 y(\(The)d(same)f(program)e(runs)i(on)g(b)r(oth)h(mac)n
7067 +(hines;)f(the)h(only)f(di\013erence)g(is)g(whic)n(h)h(one)f(is)g(resp)r
7068 +(onsible)g(for)f(displa)n(ying)h(the)0 1630 y(user)h(in)n(terface.\))36
7069 +b(If)27 b(y)n(ou're)e(only)h(in)n(terested)g(in)h(a)f(single-mac)n
7070 +(hine)f(setup,)i(then)g(let's)f(call)g(that)h(mac)n(hine)f(the)h
7071 +Fi(client)p Fn(.)37 b(If)0 1730 y(y)n(ou're)26 b(sync)n(hronizing)g(t)n
7072 +(w)n(o)h(mac)n(hines,)g(let's)h(call)f(them)h Fi(client)g
7073 +Fn(and)g Fi(server)p Fn(.)0 1962 y Fh(3.2)112 b(Lo)s(cal)38
7074 +b(Usage)0 2116 y Fn(Let's)28 b(get)f(the)h(clien)n(t)g(mac)n(hine)f
7075 +(set)g(up)h(\014rst,)g(and)f(see)g(ho)n(w)g(to)h(sync)n(hronize)e(t)n
7076 +(w)n(o)h(directories)f(on)h(a)g(single)g(mac)n(hine.)125
7077 +2215 y(F)-7 b(ollo)n(w)32 b(the)h(instructions)f(in)h(Section)g(2)g
7078 +([Installation])f(to)h(either)g(do)n(wnload)e(or)h(build)i(an)e
7079 +(executable)h(v)n(ersion)e(of)0 2315 y(Unison,)i(and)e(install)h(it)g
7080 +(somewhere)e(on)h(y)n(our)g(searc)n(h)f(path.)49 b(\(If)32
7081 +b(y)n(ou)f(just)h(w)n(an)n(t)f(to)h(use)f(the)h(textual)g(user)f(in)n
7082 +(terface,)0 2414 y(do)n(wnload)26 b(the)j(appropriate)d(textui)i
7083 +(binary)-7 b(.)36 b(If)29 b(y)n(ou)e(just)h(w)n(an)n(t)f(to)h(the)g
7084 +(graphical)e(in)n(terface|or)g(if)i(y)n(ou)f(will)h(use)g(b)r(oth)0
7085 +2514 y(in)n(terfaces)f([the)h(gtkui)f(binary)g(actually)g(has)g(b)r
7086 +(oth)h(compiled)g(in]|then)g(do)n(wnload)e(the)i(gtkui)g(binary)-7
7087 +b(.\))125 2614 y(Create)26 b(a)h(small)h(test)g(directory)e
7088 +Fk(a.tmp)g Fn(con)n(taining)g(a)h(couple)h(of)f(\014les)h(and/or)e(sub)
7089 +r(directories,)g(e.g.,)305 2780 y Fk(mkdir)42 b(a.tmp)305
7090 +2879 y(touch)g(a.tmp/a)e(a.tmp/b)305 2979 y(mkdir)i(a.tmp/d)305
7091 +3079 y(touch)g(a.tmp/d/f)125 3245 y Fn(Cop)n(y)26 b(this)i(directory)f
7092 +(to)g(b.tmp:)305 3411 y Fk(cp)43 b(-r)g(a.tmp)e(b.tmp)125
7093 +3577 y Fn(No)n(w)26 b(try)g(sync)n(hronizing)f Fk(a.tmp)g
7094 +Fn(and)h Fk(b.tmp)p Fn(.)35 b(\(Since)27 b(they)g(are)f(iden)n(tical,)g
7095 +(sync)n(hronizing)f(them)j(w)n(on't)e(propagate)0 3676
7096 +y(an)n(y)31 b(c)n(hanges,)h(but)g(Unison)g(will)g(remem)n(b)r(er)f(the)
7097 +h(curren)n(t)f(state)h(of)g(b)r(oth)g(directories)f(so)g(that)h(it)g
7098 +(will)g(b)r(e)g(able)g(to)g(tell)0 3776 y(next)c(time)g(what)f(has)h(c)
7099 +n(hanged.\))36 b(T)n(yp)r(e:)305 3942 y Fk(unison)41
7100 +b(a.tmp)h(b.tmp)125 4158 y Fi(T)-6 b(extual)29 b(Interfac)l(e:)208
7101 +4324 y Fn(Y)-7 b(ou)30 b(should)g(see)g(a)g(message)f(notifying)h(y)n
7102 +(ou)g(that)h(all)f(the)h(\014les)f(are)f(actually)h(equal)g(and)g(then)
7103 +h(get)f(returned)g(to)208 4424 y(the)e(command)f(line.)125
7104 +4639 y Fi(Gr)l(aphic)l(al)32 b(Interfac)l(e:)208 4805
7105 +y Fn(Y)-7 b(ou)36 b(should)h(get)f(a)g(big)g(empt)n(y)h(windo)n(w)f
7106 +(with)h(a)g(message)e(at)h(the)h(b)r(ottom)g(notifying)g(y)n(ou)e(that)
7107 +i(all)g(\014les)f(are)208 4905 y(iden)n(tical.)g(Cho)r(ose)27
7108 +b(the)h(Exit)f(item)h(from)g(the)g(File)g(men)n(u)f(to)h(get)f(bac)n(k)
7109 +g(to)g(the)h(command)f(line.)125 5071 y(Next,)h(mak)n(e)e(some)h(c)n
7110 +(hanges)g(in)g(a.tmp)h(and/or)e(b.tmp.)38 b(F)-7 b(or)27
7111 +b(example:)1929 5589 y(9)p eop
7112 +%%Page: 10 10
7113 +10 9 bop 349 83 a Fk(rm)42 b(a.tmp/a)349 183 y(echo)g("Hello")e(>)j
7114 +(a.tmp/b)349 282 y(echo)f("Hello")e(>)j(b.tmp/b)349 382
7115 +y(date)f(>)h(b.tmp/c)349 482 y(echo)f("Hi)g(there")f(>)i(a.tmp/d/h)349
7116 +581 y(echo)f("Hello)f(there")g(>)i(b.tmp/d/h)125 747
7117 +y Fn(Run)28 b(Unison)f(again:)305 913 y Fk(unison)41
7118 +b(a.tmp)h(b.tmp)125 1079 y Fn(This)28 b(time,)i(the)f(user)f(in)n
7119 +(terface)g(will)h(displa)n(y)f(only)h(the)g(\014les)g(that)g(ha)n(v)n
7120 +(e)e(c)n(hanged.)40 b(If)29 b(a)f(\014le)h(has)f(b)r(een)i(mo)r
7121 +(di\014ed)f(in)0 1179 y(just)d(one)g(replica,)f(then)h(it)g(will)g(b)r
7122 +(e)g(displa)n(y)n(ed)e(with)j(an)e(arro)n(w)e(indicating)j(the)g
7123 +(direction)f(that)h(the)g(c)n(hange)f(needs)g(to)h(b)r(e)0
7124 +1279 y(propagated.)35 b(F)-7 b(or)27 b(example,)741 1445
7125 +y Fk(<---)85 b(new)43 b(file)129 b(c)87 b([f])0 1611
7126 +y Fn(indicates)24 b(that)h(the)g(\014le)g Fk(c)g Fn(has)f(b)r(een)h(mo)
7127 +r(di\014ed)g(only)f(in)h(the)g(second)f(replica,)h(and)f(that)h(the)g
7128 +(default)g(action)f(is)h(therefore)0 1710 y(to)31 b(propagate)f(the)i
7129 +(new)g(v)n(ersion)e(to)h(the)h(\014rst)f(replica.)48
7130 +b(T)-7 b(o)31 b Fl(f)p Fn(ollw)h(Unison's)f(recommendation,)g(press)g
7131 +(the)h(\\f)6 b(")31 b(at)h(the)0 1810 y(prompt.)125 1910
7132 +y(If)e(b)r(oth)g(replicas)f(are)g(mo)r(di\014ed)h(and)g(their)g(con)n
7133 +(ten)n(ts)f(are)g(di\013eren)n(t,)i(then)f(the)g(c)n(hanges)f(are)g(in)
7134 +h(con\015ict:)41 b Fk(<-?->)28 b Fn(is)0 2009 y(displa)n(y)n(ed)f(to)g
7135 +(indicate)h(that)g(Unison)f(needs)g(guidance)g(on)h(whic)n(h)f(replica)
7136 +g(should)g(o)n(v)n(erride)f(the)i(other.)218 2175 y Fk(new)42
7137 +b(file)86 b(<-?->)f(new)42 b(file)129 b(d/h)86 b([])125
7138 +2341 y Fn(By)27 b(default,)h(neither)g(v)n(ersion)e(will)h(b)r(e)h
7139 +(propagated)e(and)i(b)r(oth)g(replicas)e(will)i(remain)f(as)g(they)h
7140 +(are.)125 2441 y(If)34 b(b)r(oth)h(replicas)e(ha)n(v)n(e)g(b)r(een)i
7141 +(mo)r(di\014ed)f(but)h(their)f(new)g(con)n(ten)n(ts)g(are)f(the)i(same)
7142 +e(\(as)h(with)h(the)f(\014le)h Fk(b)p Fn(\),)h(then)e(no)0
7143 +2540 y(propagation)25 b(is)j(necessary)e(and)h(nothing)h(is)f(sho)n
7144 +(wn.)36 b(Unison)28 b(simply)f(notes)h(that)g(the)g(\014le)f(is)h(up)g
7145 +(to)f(date.)125 2640 y(These)f(displa)n(y)g(con)n(v)n(en)n(tions)f(are)
7146 +h(used)h(b)n(y)g(b)r(oth)g(v)n(ersions)e(of)i(the)g(user)g(in)n
7147 +(terface.)36 b(The)26 b(only)h(di\013erence)g(lies)g(in)g(the)0
7148 +2740 y(w)n(a)n(y)f(in)i(whic)n(h)g(Unison's)f(default)h(actions)f(are)g
7149 +(either)g(accepted)g(or)g(o)n(v)n(erriden)f(b)n(y)h(the)h(user.)125
7150 +2889 y Fi(T)-6 b(extual)29 b(Interfac)l(e:)208 3055 y
7151 +Fn(The)e(status)h(of)g(eac)n(h)f(mo)r(di\014ed)h(\014le)g(is)f(displa)n
7152 +(y)n(ed,)g(in)h(turn.)38 b(When)28 b(the)g(copies)f(of)h(a)f(\014le)h
7153 +(in)g(the)g(t)n(w)n(o)f(replicas)g(are)208 3155 y(not)k(iden)n(tical,)h
7154 +(the)f(user)g(in)n(terface)g(will)g(ask)f(for)h(instructions)g(as)g(to)
7155 +g(ho)n(w)f(to)h(propagate)f(the)h(c)n(hange.)47 b(If)32
7156 +b(some)208 3254 y(default)e(action)g(is)h(indicated)f(\(b)n(y)h(an)f
7157 +(arro)n(w\),)f(y)n(ou)h(can)g(simply)g(press)g(Return)g(to)h(go)e(on)h
7158 +(to)h(the)f(next)h(c)n(hanged)208 3354 y(\014le.)51 b(If)33
7159 +b(y)n(ou)f(w)n(an)n(t)g(to)g(do)g(something)g(di\013eren)n(t)h(with)g
7160 +(this)g(\014le,)h(press)d(\\)p Fk(<)p Fn(")g(or)h(\\)p
7161 +Fk(>)p Fn(")f(to)h(force)g(the)h(c)n(hange)e(to)i(b)r(e)208
7162 +3454 y(propagated)e(from)i(righ)n(t)g(to)g(left)i(or)d(from)h(left)h
7163 +(to)g(righ)n(t,)g(or)e(else)i(press)e(\\)p Fk(/)p Fn(")g(to)i(skip)f
7164 +(this)h(\014le)f(and)h(lea)n(v)n(e)e(b)r(oth)208 3553
7165 +y(replicas)24 b(alone.)36 b(When)26 b(it)h(reac)n(hes)d(the)i(end)g(of)
7166 +g(the)g(list)h(of)e(mo)r(di\014ed)i(\014les,)f(Unison)g(will)g(ask)f(y)
7167 +n(ou)g(one)g(more)h(time)208 3653 y(whether)h(it)h(should)f(pro)r(ceed)
7168 +g(with)h(the)g(up)r(dates)g(that)g(ha)n(v)n(e)f(b)r(een)h(selected.)208
7169 +3786 y(When)35 b(Unison)g(stops)f(to)h(w)n(ait)f(for)h(input)h(from)e
7170 +(the)h(user,)i(pressing)c(\\)p Fk(?)p Fn(")h(will)h(alw)n(a)n(ys)e(giv)
7171 +n(e)h(a)g(list)i(of)e(p)r(ossible)208 3885 y(resp)r(onses)26
7172 +b(and)h(their)h(meanings.)125 4101 y Fi(Gr)l(aphic)l(al)k(Interfac)l
7173 +(e:)208 4267 y Fn(The)27 b(main)h(windo)n(w)g(sho)n(ws)e(all)i(the)g
7174 +(\014les)g(that)g(ha)n(v)n(e)f(b)r(een)h(mo)r(di\014ed)g(in)g(either)g
7175 +Fk(a.tmp)e Fn(or)h Fk(b.tmp)p Fn(.)35 b(T)-7 b(o)28 b(o)n(v)n(erride)d
7176 +(a)208 4367 y(default)30 b(action)g(\(or)g(to)g(select)h(an)f(action)g
7177 +(in)g(the)h(case)f(when)g(there)g(is)h(no)f(default\),)i(\014rst)e
7178 +(select)g(the)h(\014le,)g(either)208 4467 y(b)n(y)d(clic)n(king)f(on)h
7179 +(its)h(name)f(or)f(b)n(y)h(using)g(the)h(up-)f(and)g(do)n(wn-arro)n(w)e
7180 +(k)n(eys.)38 b(Then)28 b(press)g(either)g(the)h(left-arro)n(w)d(or)208
7181 +4566 y(\\)p Fk(<)p Fn(")k(k)n(ey)h(\(to)h(cause)f(the)i(v)n(ersion)d
7182 +(in)i(a.tmp)g(to)g(propagate)e(to)i(b.tmp\))g(or)f(the)i(righ)n(t-arro)
7183 +n(w)28 b(or)j(\\)p Fk(>)p Fn(")g(k)n(ey)g(\(whic)n(h)208
7184 +4666 y(mak)n(es)26 b(the)i(b.tmp)h(v)n(ersion)d(o)n(v)n(erride)f
7185 +(a.tmp\).)208 4799 y(Ev)n(ery)h(k)n(eyb)r(oard)g(command)h(can)h(also)e
7186 +(b)r(e)i(in)n(v)n(ok)n(ed)f(from)g(the)h(men)n(us)g(at)g(the)g(top)g
7187 +(of)f(the)i(user)e(in)n(terface.)36 b(\(Con-)208 4898
7188 +y(v)n(ersely)-7 b(,)26 b(eac)n(h)h(men)n(u)g(item)h(is)g(annotated)f
7189 +(with)h(its)g(k)n(eyb)r(oard)e(equiv)-5 b(alen)n(t,)27
7190 +b(if)h(it)g(has)f(one.\))208 5031 y(When)21 b(y)n(ou)g(are)f
7191 +(satis\014ed)h(with)h(the)g(directions)e(for)h(the)h(propagation)d(of)i
7192 +(c)n(hanges)f(as)g(sho)n(wn)h(in)h(the)f(main)h(windo)n(w,)208
7193 +5131 y(clic)n(k)33 b(the)h(\\Go")f(button)h(to)g(set)g(them)g(in)g
7194 +(motion.)56 b(A)34 b(c)n(hec)n(k)f(sign)g(will)h(b)r(e)h(displa)n(y)n
7195 +(ed)d(next)i(to)g(eac)n(h)f(\014lename)208 5230 y(when)27
7196 +b(the)h(\014le)g(has)f(b)r(een)h(dealt)g(with.)1908 5589
7197 +y(10)p eop
7198 +%%Page: 11 11
7199 +11 10 bop 0 83 a Fh(3.3)112 b(Remote)37 b(Usage)0 236
7200 +y Fn(Next,)28 b(w)n(e'll)f(get)h(Unison)f(set)h(up)g(to)f(sync)n
7201 +(hronize)f(replicas)h(on)g(t)n(w)n(o)g(di\013eren)n(t)h(mac)n(hines.)
7202 +125 336 y(F)-7 b(ollo)n(w)28 b(the)h(instructions)g(in)g(the)g
7203 +(Installation)g(section)f(to)h(do)n(wnload)f(or)g(build)h(an)g
7204 +(executable)g(v)n(ersion)e(of)i(Unison)0 436 y(on)d(the)g(serv)n(er)e
7205 +(mac)n(hine,)i(and)g(install)g(it)h(somewhere)e(on)g(y)n(our)g(searc)n
7206 +(h)g(path.)36 b(\(It)27 b(do)r(esn't)f(matter)g(whether)g(y)n(ou)f
7207 +(install)0 535 y(the)35 b(textual)f(or)f(graphical)g(v)n(ersion,)i
7208 +(since)f(the)g(cop)n(y)g(of)g(Unison)g(on)g(the)h(serv)n(er)e(do)r
7209 +(esn't)h(need)g(to)h(displa)n(y)e(an)n(y)h(user)0 635
7210 +y(in)n(terface)27 b(at)g(all.\))125 734 y(It)j(is)g(imp)r(ortan)n(t)f
7211 +(that)i(the)f(v)n(ersion)f(of)h(Unison)f(installed)h(on)g(the)h(serv)n
7212 +(er)d(mac)n(hine)h(is)h(the)h(same)e(as)g(the)i(v)n(ersion)d(of)0
7213 +834 y(Unison)23 b(on)g(the)h(clien)n(t)f(mac)n(hine.)35
7214 +b(But)24 b(some)e(\015exibilit)n(y)i(on)f(the)g(v)n(ersion)f(of)h
7215 +(Unison)g(at)h(the)f(clien)n(t)h(side)f(can)g(b)r(e)g(ac)n(hiev)n(ed)0
7216 +934 y(b)n(y)k(using)h(the)g Fk(-addversionno)22 b Fn(option;)27
7217 +b(see)g(Section)h(5.4)f([Preferences].)125 1033 y(No)n(w)e(there)h(is)f
7218 +(a)h(decision)f(to)h(b)r(e)h(made.)36 b(Unison)25 b(pro)n(vides)g(t)n
7219 +(w)n(o)g(metho)r(ds)h(for)g(comm)n(unicating)f(b)r(et)n(w)n(een)h(the)g
7220 +(clien)n(t)0 1133 y(and)h(the)h(serv)n(er:)125 1290 y
7221 +Fj(\017)41 b Fi(R)l(emote)29 b(shel)t(l)i(metho)l(d)p
7222 +Fn(:)37 b(T)-7 b(o)28 b(use)f(this)h(metho)r(d,)g(y)n(ou)f(m)n(ust)g
7223 +(ha)n(v)n(e)g(some)g(w)n(a)n(y)f(of)h(in)n(v)n(oking)g(remote)f
7224 +(commands)h(on)208 1390 y(the)k(serv)n(er)f(from)h(the)g(clien)n(t's)h
7225 +(command)f(line,)h(using)f(a)g(facilit)n(y)g(suc)n(h)g(as)g
7226 +Fk(ssh)f Fn(or)h Fk(rsh)p Fn(.)47 b(This)31 b(metho)r(d)h(is)f(more)208
7227 +1489 y(con)n(v)n(enien)n(t)26 b(\(since)i(there)g(is)g(no)f(need)h(to)g
7228 +(man)n(ually)f(start)g(a)g(\\unison)g(serv)n(er")f(pro)r(cess)h(on)g
7229 +(the)h(serv)n(er\))f(and)g(also)208 1589 y(more)f(secure)h(\(esp)r
7230 +(ecially)g(if)i(y)n(ou)d(use)i Fk(ssh)p Fn(\).)125 1750
7231 +y Fj(\017)41 b Fi(So)l(cket)29 b(metho)l(d)p Fn(:)37
7232 +b(This)27 b(metho)r(d)g(requires)f(only)g(that)h(y)n(ou)f(can)h(get)f
7233 +(TCP)h(pac)n(k)n(ets)e(from)i(the)g(clien)n(t)g(to)g(the)g(serv)n(er)
7234 +208 1850 y(and)g(bac)n(k.)36 b(A)28 b(draconian)e(\014rew)n(all)g(can)i
7235 +(prev)n(en)n(t)e(this,)i(but)h(otherwise)d(it)i(should)g(w)n(ork)e(an)n
7236 +(ywhere.)125 2007 y(Decide)21 b(whic)n(h)f(of)h(these)g(y)n(ou)f(w)n
7237 +(an)n(t)g(to)g(try)-7 b(,)22 b(and)f(con)n(tin)n(ue)f(with)h(Section)g
7238 +(3.4)e([Remote)i(Shell)g(Metho)r(d])g(or)f(Section)h(3.5)0
7239 +2106 y([So)r(c)n(k)n(et)27 b(Metho)r(d],)h(as)f(appropriate.)0
7240 +2337 y Fh(3.4)112 b(Remote)37 b(Shell)f(Metho)s(d)0 2490
7241 +y Fn(The)25 b(standard)g(remote)f(shell)i(facilit)n(y)f(on)g(Unix)g
7242 +(systems)g(is)h Fk(rsh)p Fn(.)34 b(A)26 b(drop-in)f(replacemen)n(t)f
7243 +(for)h Fk(rsh)f Fn(is)h Fk(ssh)p Fn(,)g(whic)n(h)g(pro-)0
7244 +2590 y(vides)18 b(the)h(same)f(functionalit)n(y)g(but)h(m)n(uc)n(h)f(b)
7245 +r(etter)h(securit)n(y)-7 b(.)33 b(\(Ssh)19 b(is)f(a)n(v)-5
7246 +b(ailable)17 b(from)h Fk(ftp://ftp.cs.hut)o(.fi)o(/p)o(ub/)o(ss)o(h/)o
7247 +Fn(;)0 2689 y(up-to-date)k(binaries)f(for)h(some)g(arc)n(hitectures)f
7248 +(can)h(also)g(b)r(e)g(found)h(at)f Fk(ftp://ftp.faqs.or)o(g/s)o(sh)o
7249 +(/co)o(nt)o(ri)o(b)p Fn(.)29 b(See)23 b(sec-)0 2789 y(tion)i(A.2)f(for)
7250 +g(installation)g(instructions)g(for)g(the)h(Windo)n(ws)g(v)n(ersion.\))
7251 +34 b(Both)25 b Fk(rsh)e Fn(and)i Fk(ssh)e Fn(require)g(some)h(co)r
7252 +(ordination)0 2889 y(b)r(et)n(w)n(een)33 b(the)g(clien)n(t)f(and)h
7253 +(serv)n(er)d(mac)n(hines)i(to)h(establish)f(that)h(the)g(clien)n(t)f
7254 +(is)h(allo)n(w)n(ed)e(to)h(in)n(v)n(ok)n(e)f(commands)h(on)h(the)0
7255 +2988 y(serv)n(er;)24 b(please)h(refer)g(to)g(the)h Fk(rsh)e
7256 +Fn(or)h Fk(ssh)f Fn(do)r(cumen)n(tation)h(for)g(information)g(on)g(ho)n
7257 +(w)g(to)g(set)g(this)h(up.)37 b(The)25 b(examples)g(in)0
7258 +3088 y(this)j(section)f(use)h Fk(ssh)p Fn(,)e(but)i(y)n(ou)f(can)g
7259 +(substitute)i Fk(rsh)d Fn(for)h Fk(ssh)g Fn(if)h(y)n(ou)e(wish.)125
7260 +3188 y(First,)h(test)h(that)g(w)n(e)f(can)g(in)n(v)n(ok)n(e)f(Unison)i
7261 +(on)f(the)h(serv)n(er)e(from)h(the)h(clien)n(t.)37 b(T)n(yping)349
7262 +3345 y Fk(ssh)42 b Fb(remotehostname)52 b Fk(unison)41
7263 +b(-version)0 3502 y Fn(should)27 b(prin)n(t)h(the)g(same)f(v)n(ersion)f
7264 +(information)h(as)g(running)349 3658 y Fk(unison)41 b(-version)125
7265 +3815 y Fn(lo)r(cally)26 b(on)h(the)h(clien)n(t.)37 b(If)28
7266 +b(remote)f(execution)g(fails,)g(then)h(either)f(something)g(is)g(wrong)
7267 +f(with)i(y)n(our)e(ssh)h(setup)h(\(e.g.,)0 3915 y(\\p)r(ermission)36
7268 +b(denied"\))h(or)f(else)h(the)g(searc)n(h)e(path)j(that's)f(b)r(eing)g
7269 +(used)g(when)g(executing)g(commands)f(on)h(the)g(serv)n(er)0
7270 +4015 y(do)r(esn't)28 b(con)n(tain)f(the)h Fk(unison)d
7271 +Fn(executable)i(\(e.g.,)h(\\command)e(not)i(found"\).)125
7272 +4114 y(Create)e(a)h(test)h(directory)f Fk(a.tmp)e Fn(in)j(y)n(our)e
7273 +(home)i(directory)e(on)h(the)h(clien)n(t)g(mac)n(hine.)125
7274 +4214 y(T)-7 b(est)27 b(that)h(the)g(lo)r(cal)f(unison)g(clien)n(t)h
7275 +(can)f(start)g(and)h(connect)f(to)h(the)g(remote)f(serv)n(er.)35
7276 +b(T)n(yp)r(e)436 4371 y Fk(unison)41 b(-testServer)e(a.tmp)j(ssh://)p
7277 +Fb(remotehos)o(tn)o(ame)8 b Fk(/a.tmp)125 4528 y Fn(No)n(w)27
7278 +b(cd)g(to)h(y)n(our)e(home)i(directory)e(and)h(t)n(yp)r(e:)436
7279 +4685 y Fk(unison)41 b(a.tmp)g(ssh://remotehostn)o(ame)o(/a)o(.tm)o(p)
7280 +125 4842 y Fn(The)23 b(result)g(should)f(b)r(e)i(that)f(the)h(en)n
7281 +(tire)f(directory)f Fk(a.tmp)f Fn(is)i(propagated)e(from)i(the)g(clien)
7282 +n(t)h(to)f(y)n(our)e(home)i(directory)0 4941 y(on)k(the)h(serv)n(er.)
7283 +125 5041 y(After)h(\014nishing)f(the)h(\014rst)g(sync)n(hronization,)e
7284 +(c)n(hange)g(a)i(few)g(\014les)f(and)h(try)f(sync)n(hronizing)f(again.)
7285 +39 b(Y)-7 b(ou)29 b(should)f(see)0 5141 y(similar)f(results)g(as)g(in)h
7286 +(the)g(lo)r(cal)f(case.)125 5240 y(If)h(y)n(our)e(user)h(name)g(on)g
7287 +(the)h(serv)n(er)e(is)h(not)h(the)g(same)f(as)g(on)g(the)h(clien)n(t,)g
7288 +(y)n(ou)e(need)i(to)f(sp)r(ecify)h(it)g(on)g(the)f(command)0
7289 +5340 y(line:)1908 5589 y(11)p eop
7290 +%%Page: 12 12
7291 +12 11 bop 436 83 a Fk(unison)41 b(a.tmp)g(ssh://username@re)o(mot)o(eh)
7292 +o(ost)o(na)o(me)o(/a.)o(tm)o(p)0 249 y Fi(Notes:)125
7293 +415 y Fj(\017)g Fn(If)26 b(y)n(ou)f(w)n(an)n(t)g(to)g(put)i
7294 +Fk(a.tmp)c Fn(some)j(place)f(other)g(than)h(y)n(our)e(home)i(directory)
7295 +e(on)i(the)g(remote)f(host,)h(y)n(ou)f(can)g(giv)n(e)208
7296 +515 y(an)31 b(absolute)h(path)g(for)f(it)i(b)n(y)e(adding)h(an)g(extra)
7297 +f(slash)g(b)r(et)n(w)n(een)h Fk(remotehostname)26 b Fn(and)32
7298 +b(the)h(b)r(eginning)f(of)g(the)208 614 y(path:)643 814
7299 +y Fk(unison)42 b(a.tmp)f(ssh://remotehost)o(nam)o(e/)o(/ab)o(so)o(lu)o
7300 +(te/)o(pa)o(th/)o(to)o(/a)o(.tm)o(p)125 1013 y Fj(\017)g
7301 +Fn(Y)-7 b(ou)27 b(can)h(giv)n(e)f(an)g(explicit)i(path)f(for)f(the)h
7302 +Fk(unison)e Fn(executable)h(on)h(the)g(serv)n(er)e(b)n(y)i(using)f(the)
7303 +h(command-line)g(op-)208 1112 y(tion)34 b Fk(-servercmd)39
7304 +b(/full/path/name/)o(of/)o(un)o(iso)o(n)28 b Fn(or)33
7305 +b(adding)g Fk(servercmd=/full/p)o(ath)o(/n)o(ame)o(/o)o(f/)o(uni)o(so)o
7306 +(n)208 1212 y Fn(to)28 b(y)n(our)f(pro\014le)g(\(see)h(Section)g(5.5)g
7307 +([Pro\014le]\).)37 b(Similarly)-7 b(,)28 b(y)n(ou)g(can)g(sp)r(ecify)g
7308 +(a)g(explicit)g(path)h(for)e(the)i Fk(rsh)e Fn(or)g Fk(ssh)208
7309 +1312 y Fn(program)e(using)i(the)h(option)g Fk(-rshcmd)c
7310 +Fn(or)j Fk(-sshcmd)p Fn(.)0 1544 y Fh(3.5)112 b(So)s(c)m(k)m(et)38
7311 +b(Metho)s(d)0 1697 y Fn(T)-7 b(o)34 b(run)g(Unison)g(o)n(v)n(er)e(a)i
7312 +(so)r(c)n(k)n(et)f(connection,)i(y)n(ou)f(m)n(ust)g(start)g(a)f(Unison)
7313 +h(\\daemon")f(pro)r(cess)g(on)h(the)g(serv)n(er.)55 b(This)0
7314 +1797 y(pro)r(cess)27 b(runs)h(con)n(tin)n(uously)-7 b(,)27
7315 +b(w)n(aiting)g(for)h(connections)f(o)n(v)n(er)f(a)i(giv)n(en)f(so)r(c)n
7316 +(k)n(et)g(from)h(clien)n(t)g(mac)n(hines)f(running)h(Unison)0
7317 +1897 y(and)f(pro)r(cessing)g(their)g(requests)g(in)h(turn.)208
7318 +2079 y Fl(W)-8 b(arning:)45 b Fn(The)32 b(so)r(c)n(k)n(et)g(metho)r(d)g
7319 +(is)g(insecure:)46 b(not)32 b(only)g(are)f(the)i(texts)f(of)h(y)n(our)e
7320 +(c)n(hanges)f(transmitted)208 2179 y(o)n(v)n(er)f(the)k(net)n(w)n(ork)d
7321 +(in)i(unprotected)f(form,)i(it)f(is)g(also)e(p)r(ossible)i(for)f(an)n
7322 +(y)n(one)f(in)i(the)g(w)n(orld)f(to)g(connect)h(to)208
7323 +2279 y(the)26 b(serv)n(er)f(pro)r(cess)g(and)h(read)f(out)i(the)f(con)n
7324 +(ten)n(ts)g(of)g(y)n(our)f(\014lesystem!)36 b(\(Of)27
7325 +b(course,)e(to)h(do)g(this)h(they)f(m)n(ust)208 2378
7326 +y(understand)d(the)h(proto)r(col)e(that)i(Unison)f(uses)g(to)h(comm)n
7327 +(unicate)f(b)r(et)n(w)n(een)g(clien)n(t)h(and)f(serv)n(er,)g(but)h(all)
7328 +f(they)208 2478 y(need)k(for)g(this)h(is)g(a)f(cop)n(y)g(of)g(the)h
7329 +(Unison)g(sources.\))125 2660 y(T)-7 b(o)27 b(start)g(the)h(daemon,)f
7330 +(t)n(yp)r(e)305 2826 y Fk(unison)41 b(-socket)g(NNNN)125
7331 +2993 y Fn(on)23 b(the)g(serv)n(er)f(mac)n(hine,)i(where)e
7332 +Fk(NNNN)g Fn(is)h(the)h(so)r(c)n(k)n(et)e(n)n(um)n(b)r(er)h(that)h(the)
7333 +g(daemon)e(should)h(listen)h(on)f(for)g(connections)0
7334 +3092 y(from)f(clien)n(ts.)35 b(\()p Fk(NNNN)21 b Fn(can)h(b)r(e)h(an)n
7335 +(y)e(large)g(n)n(um)n(b)r(er)h(that)h(is)f(not)g(b)r(eing)h(used)f(b)n
7336 +(y)g(some)g(other)f(program;)h(if)30 b Fk(NNNN)20 b Fn(is)j(already)0
7337 +3192 y(in)30 b(use,)h(Unison)f(will)h(exit)f(with)g(an)g(error)f
7338 +(message.\))43 b(Note)30 b(that)h(paths)f(sp)r(eci\014ed)g(b)n(y)g(the)
7339 +g(clien)n(t)h(will)f(b)r(e)h(in)n(terpreted)0 3291 y(relativ)n(e)f(to)g
7340 +(the)h(directory)f(in)h(whic)n(h)g(y)n(ou)e(start)i(the)g(serv)n(er)e
7341 +(pro)r(cess;)i(this)g(b)r(eha)n(vior)e(is)i(di\013eren)n(t)g(from)f
7342 +(the)h(ssh)g(case,)0 3391 y(where)c(the)h(path)g(is)f(relativ)n(e)g(to)
7343 +g(y)n(our)f(home)i(directory)e(on)h(the)h(serv)n(er.)125
7344 +3491 y(Create)e(a)h(test)h(directory)f Fk(a.tmp)e Fn(in)j(y)n(our)e
7345 +(home)i(directory)e(on)h(the)h(clien)n(t)g(mac)n(hine.)37
7346 +b(No)n(w)27 b(t)n(yp)r(e:)305 3657 y Fk(unison)41 b(a.tmp)h(socket://)p
7347 +Fb(remoteh)o(os)o(tn)o(ame)8 b Fk(:NNNN/a.tmp)0 3823
7348 +y Fn(The)37 b(result)f(should)g(b)r(e)h(that)g(the)g(en)n(tire)f
7349 +(directory)f Fk(a.tmp)f Fn(is)j(propagated)d(from)i(the)h(clien)n(t)g
7350 +(to)f(the)h(serv)n(er)e(\()p Fk(a.tmp)0 3922 y Fn(will)g(b)r(e)g
7351 +(created)f(on)h(the)g(serv)n(er)e(in)i(the)g(directory)f(that)h(the)g
7352 +(serv)n(er)e(w)n(as)h(started)g(from\).)59 b(After)35
7353 +b(\014nishing)g(the)g(\014rst)0 4022 y(sync)n(hronization,)22
7354 +b(c)n(hange)h(a)g(few)g(\014les)h(and)f(try)g(sync)n(hronizing)f
7355 +(again.)34 b(Y)-7 b(ou)24 b(should)f(see)g(similar)g(results)f(as)h(in)
7356 +h(the)g(lo)r(cal)0 4122 y(case.)0 4354 y Fh(3.6)112 b(Using)37
7357 +b(Unison)h(for)f(All)f(Y)-9 b(our)36 b(Files)0 4507 y
7358 +Fn(Once)j(y)n(ou)g(are)f(comfortable)h(with)h(the)g(basic)e(op)r
7359 +(eration)h(of)g(Unison,)k(y)n(ou)38 b(ma)n(y)h(\014nd)h(y)n(ourself)e
7360 +(w)n(an)n(ting)h(to)g(use)h(it)0 4607 y(regularly)26
7361 +b(to)h(sync)n(hronize)f(y)n(our)h(commonly)g(used)g(\014les.)37
7362 +b(There)27 b(are)g(sev)n(eral)e(p)r(ossible)j(w)n(a)n(ys)e(of)h(going)g
7363 +(ab)r(out)g(this:)101 4790 y(1.)42 b(Sync)n(hronize)31
7364 +b(y)n(our)f(whole)i(home)g(directory)-7 b(,)32 b(using)g(the)h(Ignore)d
7365 +(facilit)n(y)i(\(see)g(Section)h(5.12)d([Ignore]\))i(to)g(a)n(v)n(oid)
7366 +208 4889 y(sync)n(hronizing)25 b(temp)r(orary)i(\014les)g(and)h(things)
7367 +f(that)h(only)f(b)r(elong)h(on)f(one)g(host.)101 5055
7368 +y(2.)42 b(Create)28 b(a)i(sub)r(directory)e(called)i
7369 +Fk(shared)d Fn(\(or)i Fk(current)p Fn(,)f(or)h(whatev)n(er\))f(in)i(y)n
7370 +(our)f(home)g(directory)g(on)g(eac)n(h)g(host,)208 5155
7371 +y(and)e(put)h(all)g(the)f(\014les)h(y)n(ou)f(w)n(an)n(t)g(to)g(sync)n
7372 +(hronize)f(in)n(to)i(this)g(directory)-7 b(.)1908 5589
7373 +y(12)p eop
7374 +%%Page: 13 13
7375 +13 12 bop 101 83 a Fn(3.)42 b(Create)28 b(a)i(sub)r(directory)e(called)
7376 +i Fk(shared)d Fn(\(or)i Fk(current)p Fn(,)f(or)h(whatev)n(er\))f(in)i
7377 +(y)n(our)f(home)g(directory)g(on)g(eac)n(h)g(host,)208
7378 +183 y(and)22 b(put)i Fi(links)h(to)e Fn(all)g(the)g(\014les)g(y)n(ou)f
7379 +(w)n(an)n(t)g(to)h(sync)n(hronize)e(in)n(to)i(this)g(directory)-7
7380 +b(.)34 b(Use)23 b(the)g Fk(follow)d Fn(preference)i(\(see)208
7381 +282 y(Section)27 b(5.13)f([Sym)n(b)r(olic)i(Links]\))g(to)f(mak)n(e)g
7382 +(sure)g(that)h(all)f(these)h(links)f(are)g(treated)g(transparen)n(tly)f
7383 +(b)n(y)h(Unison.)101 448 y(4.)42 b(Mak)n(e)29 b(y)n(our)g(home)h
7384 +(directory)f(the)i(ro)r(ot)e(of)h(the)h(sync)n(hronization,)e(but)i
7385 +(tell)g(Unison)f(to)g(sync)n(hronize)f(only)h(some)208
7386 +548 y(of)g(the)h(\014les)f(and)g(sub)r(directories)f(within)j(it.)45
7387 +b(This)31 b(can)f(b)r(e)g(accomplished)g(b)n(y)g(using)g(the)h
7388 +Fk(-path)d Fn(switc)n(h)j(on)f(the)208 648 y(command)d(line:)513
7389 +847 y Fk(unison)41 b(/home/)p Fb(username)52 b Fk(ssh://)p
7390 +Fb(remotehost)8 b Fk(//home/)p Fb(username)52 b Fk(-path)41
7391 +b(shared)208 1046 y Fn(The)27 b Fk(-path)e Fn(option)i(can)g(b)r(e)h
7392 +(used)f(as)g(man)n(y)g(times)g(as)g(needed,)h(to)f(sync)n(hronize)f
7393 +(sev)n(eral)f(\014les)j(or)e(sub)r(directories:)513 1245
7394 +y Fk(unison)41 b(/home/)p Fb(username)52 b Fk(ssh://)p
7395 +Fb(remotehost)8 b Fk(//home/)p Fb(username)52 b Fk(\\)643
7396 +1345 y(-path)42 b(shared)f(\\)643 1445 y(-path)h(pub)g(\\)643
7397 +1544 y(-path)g(.netscape/bookma)o(rk)o(s.h)o(tm)o(l)208
7398 +1743 y Fn(These)32 b Fk(-path)g Fn(argumen)n(ts)f(can)i(also)f(b)r(e)i
7399 +(put)g(in)f(y)n(our)f(preference)h(\014le.)53 b(See)34
7400 +b(Section)f(5.4)f([Preferences])g(for)g(an)208 1843 y(example.)125
7401 +2026 y(When)f(y)n(ou)e(sync)n(hronize)g(a)i(large)e(directory)g
7402 +(structure)h(\(e.g.)46 b(y)n(our)29 b(home)h(directory\))g(for)g(the)h
7403 +(\014rst)f(time,)i(Unison)0 2125 y(will)g(need)h(to)f(sp)r(end)g(a)g
7404 +(lot)g(of)g(time)h(w)n(alking)e(o)n(v)n(er)f(all)i(the)h(\014les)f(and)
7405 +g(building)g(its)h(in)n(ternal)e(data)h(structures.)50
7406 +b(Y)-7 b(ou'll)0 2225 y(probably)32 b(sa)n(v)n(e)f(time)i(if)g(y)n(ou)f
7407 +(start)h(o\013)f(fo)r(cusing)h(Unison's)f(atten)n(tion)h(on)g(just)g(a)
7408 +f(subset)h(of)g(y)n(our)e(\014les,)j(b)n(y)f(including)0
7409 +2325 y(the)26 b(option)f Fk(-path)41 b Fi(some/smal)t(l/sub)l(dir)l(e)l
7410 +(ctory)29 b Fn(on)c(the)h(command)f(line.)36 b(When)26
7411 +b(this)g(is)f(w)n(orking)e(to)j(y)n(our)e(satisfaction,)0
7412 +2424 y(tak)n(e)j(a)n(w)n(a)n(y)e(the)j Fk(-path)e Fn(option)h(and)h(go)
7413 +e(get)i(lunc)n(h)g(while)f(Unison)h(w)n(orks.)125 2524
7414 +y(If)h(y)n(our)f(replicas)g(are)g(large)f(and)i(at)g(least)f(one)h(of)g
7415 +(them)g(is)g(on)g(a)f(Windo)n(ws)h(system,)g(y)n(ou)f(ma)n(y)h(\014nd)g
7416 +(that)g(Unison's)0 2623 y(default)d(metho)r(d)f(for)g(detecting)g(c)n
7417 +(hanges)f(\(whic)n(h)h(in)n(v)n(olv)n(es)e(scanning)i(the)g(full)h(con)
7418 +n(ten)n(ts)f(of)g(ev)n(ery)e(\014le)j(on)f(ev)n(ery)e(sync|)0
7419 +2723 y(the)i(only)g(completely)g(safe)f(w)n(a)n(y)g(to)g(do)h(it)g
7420 +(under)g(Windo)n(ws\))g(is)g(to)r(o)f(slo)n(w.)35 b(In)26
7421 +b(this)f(case,)f(y)n(ou)g(ma)n(y)h(b)r(e)g(in)n(terested)g(in)g(the)0
7422 +2823 y Fk(fastcheck)f Fn(preference,)j(do)r(cumen)n(ted)h(in)g(Section)
7423 +f(5.17)f([F)-7 b(ast)28 b(Up)r(date)g(Chec)n(king].)125
7424 +2922 y(Most)33 b(p)r(eople)g(\014nd)h(that)g(they)g(only)f(need)h(to)f
7425 +(main)n(tain)g(a)g(pro\014le)g(\(or)g(pro\014les\))g(on)g(one)h(of)f
7426 +(the)h(hosts)f(that)h(they)0 3022 y(sync)n(hronize,)27
7427 +b(since)i(Unison)f(is)h(alw)n(a)n(ys)d(initiated)j(from)g(this)g(host.)
7428 +39 b(\(F)-7 b(or)28 b(example,)h(if)g(y)n(ou're)e(sync)n(hronizing)g(a)
7429 +h(laptop)0 3122 y(with)33 b(a)e(\014leserv)n(er,)h(y)n(ou'll)f
7430 +(probably)g(alw)n(a)n(ys)f(run)i(Unison)g(on)g(the)g(laptop.\))51
7431 +b(This)32 b(is)g(a)f(bit)i(di\013eren)n(t)f(from)g(the)g(usual)0
7432 +3221 y(situation)27 b(with)h(asymmetric)f(mirroring)f(programs)f(lik)n
7433 +(e)i Fk(rdist)p Fn(,)f(where)h(the)h(mirroring)d(op)r(eration)i(t)n
7434 +(ypically)g(needs)g(to)0 3321 y(b)r(e)d(initiated)g(from)f(the)h(mac)n
7435 +(hine)e(with)i(the)g(most)f(recen)n(t)g(c)n(hanges.)34
7436 +b(Section)24 b(5.5)e([Pro\014le])g(co)n(v)n(ers)g(the)h(syn)n(tax)g(of)
7437 +g(Unison)0 3421 y(pro\014les,)k(together)f(with)j(some)e(sample)g
7438 +(pro\014les.)0 3653 y Fh(3.7)112 b(Going)37 b(F)-9 b(urther)0
7439 +3806 y Fn(On-line)27 b(do)r(cumen)n(tation)h(for)f(the)h(v)-5
7440 +b(arious)26 b(features)h(of)g(Unison)h(can)f(b)r(e)h(obtained)g(either)
7441 +f(b)n(y)g(t)n(yping)349 3972 y Fk(unison)41 b(-doc)h(topics)0
7442 +4138 y Fn(at)26 b(the)g(command)f(line,)i(or)d(b)n(y)i(selecting)f(the)
7443 +h(Help)h(men)n(u)f(in)g(the)g(graphical)e(user)h(in)n(terface.)36
7444 +b(The)25 b(on-line)h(information)0 4238 y(is)h(essen)n(tially)g(iden)n
7445 +(tical)g(to)h(this)g(man)n(ual.)125 4337 y(There)f(are)f(t)n(w)n(o)h
7446 +(email)g(lists)h(for)f(users)g(of)g(unison.)37 b(Visit)208
7447 +4504 y Fk(http://www.cis.)o(upe)o(nn)o(.e)o(du/)o Fj(\030)p
7448 +Fk(b)o(cpi)o(er)o(ce)o(/un)o(is)o(on/)o(do)o(wnl)o(oa)o(d.)o(htm)o(l)0
7449 +4670 y Fn(for)27 b(more)g(details.)1908 5589 y(13)p eop
7450 +%%Page: 14 14
7451 +14 13 bop 0 83 a Fm(4)135 b(Basic)45 b(Concepts)0 265
7452 +y Fn(Unison)22 b(deals)g(in)h(a)f(few)h(straigh)n(tforw)n(ard)d
7453 +(concepts.)34 b(\(A)24 b(more)d(mathematical)h(dev)n(elopmen)n(t)g(of)h
7454 +(these)f(concepts)h(can)f(b)r(e)0 364 y(found)g(in)h(\\)p
7455 +Fi(What)h(is)h(a)g(File)h(Synchr)l(onizer?)p Fn(")36
7456 +b(\(h)n(ttp://www.cis.up)r(enn.edu/)p Fj(\030)p Fn(b)r(cpierce/pap)r
7457 +(ers/snc-mobicom.ps.gz\))0 464 y(b)n(y)21 b(Sundar)g(Balasubramaniam)e
7458 +(and)i(Benjamin)g(Pierce)g([MobiCom)g(1998].)33 b(A)21
7459 +b(more)g(up-to-date)f(v)n(ersion)g(can)h(b)r(e)h(found)0
7460 +564 y(in)28 b(a)f(recen)n(t)g(set)h(of)f(slides)h(\(h)n
7461 +(ttp://www.cis.up)r(enn.edu/)p Fj(\030)p Fn(b)r(cpierce/pap)r
7462 +(ers/snc-tacs-2001O)o(ct.ps\).\))0 793 y Fh(4.1)112 b(Ro)s(ots)0
7463 +946 y Fn(A)26 b(replica's)f Fi(r)l(o)l(ot)h Fn(tells)f(Unison)h(where)f
7464 +(to)h(\014nd)g(a)f(set)h(of)g(\014les)f(to)h(b)r(e)g(sync)n(hronized,)f
7465 +(either)h(on)f(the)h(lo)r(cal)f(mac)n(hine)h(or)e(on)0
7466 +1046 y(a)j(remote)g(host.)37 b(F)-7 b(or)27 b(example,)262
7467 +1196 y Fb(relative/path/o)o(f/)o(roo)o(t)0 1346 y Fn(sp)r(eci\014es)g
7468 +(a)h(lo)r(cal)f(ro)r(ot)f(relativ)n(e)h(to)g(the)h(directory)f(where)g
7469 +(Unison)g(is)h(started,)f(while)262 1497 y Fk(/)p Fb(absolute/path/)o
7470 +(of)o(/ro)o(ot)0 1647 y Fn(sp)r(eci\014es)h(a)h(ro)r(ot)e(relativ)n(e)h
7471 +(to)g(the)h(top)g(of)f(the)h(lo)r(cal)f(\014lesystem,)h(indep)r(enden)n
7472 +(t)g(of)g(where)f(Unison)g(is)h(running.)39 b(Remote)0
7473 +1746 y(ro)r(ots)27 b(can)g(b)r(egin)g(with)i Fk(ssh://)p
7474 +Fn(,)c Fk(rsh://)g Fn(to)i(indicate)h(that)g(the)g(remote)f(serv)n(er)f
7475 +(should)h(b)r(e)h(started)f(with)h(rsh)f(or)g(ssh:)262
7476 +1897 y Fk(ssh://)p Fb(remotehos)o(t)8 b Fk(//)p Fb(absolute/path/o)o
7477 +(f/)o(roo)o(t)262 1996 y Fk(rsh://)p Fb(user)i Fk(@)p
7478 +Fb(remotehost)g Fk(/)p Fb(relative/path/)o(of/)o(ro)o(ot)0
7479 +2147 y Fn(If)28 b(the)g(remote)f(serv)n(er)f(is)h(already)f(running)i
7480 +(\(in)g(the)g(so)r(c)n(k)n(et)e(mo)r(de\),)i(then)g(the)g(syn)n(tax)262
7481 +2297 y Fk(socket://)p Fb(remote)o(ho)o(st)8 b Fk(:)p
7482 +Fb(portnum)j Fk(//)p Fb(absolute/path/o)o(f/)o(ro)o(ot)262
7483 +2397 y Fk(socket://)p Fb(remote)o(ho)o(st)d Fk(:)p Fb(portnum)j
7484 +Fk(/)p Fb(relative/path/of)o(/r)o(oo)o(t)0 2547 y Fn(is)27
7485 +b(used)h(to)g(sp)r(ecify)f(the)h(hostname)f(and)h(the)g(p)r(ort)f(that)
7486 +h(the)g(clien)n(t)g(Unison)f(should)h(use)f(to)h(con)n(tact)f(it.)125
7487 +2647 y(The)g(syn)n(tax)g(for)g(ro)r(ots)f(is)i(based)f(on)g(that)h(of)g
7488 +(URIs)g(\(describ)r(ed)f(in)h(RF)n(C)g(2396\).)35 b(The)28
7489 +b(full)g(grammar)e(is:)87 2797 y Fb(replica)55 b Fk(::=)43
7490 +b([)p Fb(protocol)10 b Fk(:]//[)p Fb(user)h Fk(@][)p
7491 +Fb(host)h Fk(][:)p Fb(port)f Fk(][/)p Fb(path)h Fk(])479
7492 +2897 y(|)87 b Fb(path)87 3096 y(protocol)55 b Fk(::=)42
7493 +b(file)523 3195 y(|)87 b(socket)523 3295 y(|)g(ssh)523
7494 +3395 y(|)g(rsh)87 3594 y Fb(user)57 b Fk(::=)42 b([-_a-zA-Z0-9]+)87
7495 +3793 y Fb(host)57 b Fk(::=)42 b([-_a-zA-Z0-9.]+)87 3992
7496 +y Fb(port)57 b Fk(::=)42 b([0-9]+)0 4143 y Fn(When)35
7497 +b Fk(path)e Fn(is)h(giv)n(en)g(without)g(an)n(y)g(proto)r(col)f
7498 +(pre\014x,)j(the)f(proto)r(col)e(is)h(assumed)g(to)g(b)r(e)h
7499 +Fk(file:)p Fn(.)55 b(Under)34 b(Windo)n(ws,)0 4242 y(it)e(is)g(p)r
7500 +(ossible)f(to)h(sync)n(hronize)e(with)i(a)g(remote)f(directory)f(using)
7501 +i(the)g Fk(file:)d Fn(proto)r(col)i(o)n(v)n(er)f(the)i(Windo)n(ws)f
7502 +(Net)n(w)n(ork)0 4342 y(Neigh)n(b)r(orho)r(o)r(d.)36
7503 +b(F)-7 b(or)27 b(example,)305 4492 y Fk(unison)41 b(foo)i
7504 +(//host/drive/ba)o(r)0 4643 y Fn(sync)n(hronizes)34 b(the)i(lo)r(cal)g
7505 +(directory)e Fk(foo)h Fn(with)h(the)g(directory)f Fk(drive:\\bar)d
7506 +Fn(on)j(the)h(mac)n(hine)g Fk(host)p Fn(,)g(pro)n(vided)f(that)0
7507 +4742 y Fk(host)23 b Fn(is)i(accessible)f(via)g(Net)n(w)n(ork)f(Neigh)n
7508 +(b)r(orho)r(o)r(d.)35 b(When)26 b(the)f Fk(file:)e Fn(proto)r(col)g(is)
7509 +i(used)g(in)g(this)g(w)n(a)n(y)-7 b(,)24 b(there)h(is)f(no)h(need)0
7510 +4842 y(for)31 b(a)h(Unison)g(serv)n(er)e(to)i(b)r(e)g(running)g(on)f
7511 +(the)i(remote)e(host.)50 b(\(Ho)n(w)n(ev)n(er,)31 b(running)h(Unison)g
7512 +(this)g(w)n(a)n(y)f(is)h(only)f(a)h(go)r(o)r(d)0 4941
7513 +y(idea)e(if)g(the)g(remote)f(host)h(is)g(reac)n(hed)e(b)n(y)i(a)f(v)n
7514 +(ery)g(fast)h(net)n(w)n(ork)e(connection,)i(since)g(the)g(full)g(con)n
7515 +(ten)n(ts)f(of)h(ev)n(ery)f(\014le)h(in)0 5041 y(the)e(remote)f
7516 +(replica)g(will)h(ha)n(v)n(e)e(to)h(b)r(e)h(transferred)f(to)g(the)h
7517 +(lo)r(cal)f(mac)n(hine)g(to)h(detect)g(up)r(dates.\))125
7518 +5141 y(The)18 b(names)g(of)h(ro)r(ots)e(are)h Fi(c)l(anonize)l(d)h
7519 +Fn(b)n(y)g(Unison)f(b)r(efore)g(it)h(uses)f(them)i(to)e(compute)h(the)g
7520 +(names)f(of)g(the)h(corresp)r(onding)0 5240 y(arc)n(hiv)n(e)i(\014les,)
7521 +j(so)f Fk(//saul//home/bcp)o(ie)o(rce)o(/c)o(om)o(mon)16
7522 +b Fn(and)23 b Fk(//saul.cis.upenn.)o(ed)o(u/c)o(om)o(mon)16
7523 +b Fn(will)24 b(b)r(e)f(recognized)f(as)0 5340 y(the)28
7524 +b(same)f(replica)g(under)g(di\013eren)n(t)h(names.)1908
7525 +5589 y(14)p eop
7526 +%%Page: 15 15
7527 +15 14 bop 0 83 a Fh(4.2)112 b(P)m(aths)0 236 y Fn(A)34
7528 +b Fi(p)l(ath)h Fn(refers)e(to)h(a)g(p)r(oin)n(t)g Fi(within)h
7529 +Fn(a)f(set)g(of)g(\014les)g(b)r(eing)g(sync)n(hronized;)i(it)f(is)f(sp)
7530 +r(eci\014ed)g(relativ)n(e)f(to)h(the)g(ro)r(ot)g(of)g(the)0
7531 +336 y(replica.)125 436 y(F)-7 b(ormally)g(,)28 b(a)g(path)g(is)h(just)g
7532 +(a)f(sequence)g(of)h(names,)f(separated)f(b)n(y)i Fk(/)p
7533 +Fn(.)39 b(Note)29 b(that)g(the)g(path)f(separator)f(c)n(haracter)f(is)0
7534 +535 y(alw)n(a)n(ys)18 b(a)i(forw)n(ard)e(slash,)j(no)e(matter)h(what)g
7535 +(op)r(erating)f(system)g(Unison)h(is)g(running)g(on.)34
7536 +b(F)-7 b(orw)n(ard)18 b(slashes)h(are)g(con)n(v)n(erted)0
7537 +635 y(to)j(bac)n(kslashes)e(as)i(necessary)e(when)j(paths)f(are)f(con)n
7538 +(v)n(erted)g(to)h(\014lenames)g(in)g(the)h(lo)r(cal)f(\014lesystem)g
7539 +(on)g(a)f(particular)g(host.)0 734 y(\(F)-7 b(or)18 b(example,)i(supp)r
7540 +(ose)f(that)g(w)n(e)f(run)h(Unison)f(on)h(a)f(Windo)n(ws)g(system,)i
7541 +(sync)n(hronizing)d(the)j(lo)r(cal)e(ro)r(ot)g Fk(c:\\pierce)d
7542 +Fn(with)0 834 y(the)26 b(ro)r(ot)f Fk(ssh://saul.cis.up)o(en)o(n.e)o
7543 +(du)o(/ho)o(me)o(/bc)o(pi)o(er)o(ce)20 b Fn(on)25 b(a)h(Unix)g(serv)n
7544 +(er.)34 b(Then)26 b(the)h(path)f Fk(current/todo.tx)o(t)0
7545 +934 y Fn(refers)j(to)h(the)h(\014le)f Fk(c:\\pierce\\current)o(\\to)o
7546 +(do)o(.t)o(xt)24 b Fn(on)30 b(the)g(clien)n(t)h(and)f
7547 +Fk(/home/bcpierce/c)o(ur)o(ren)o(t/)o(tod)o(o.)o(tx)o(t)24
7548 +b Fn(on)0 1033 y(the)k(serv)n(er.\))125 1133 y(The)36
7549 +b(empt)n(y)h(path)g(\(i.e.,)j(the)d(empt)n(y)g(sequence)f(of)h(names\))
7550 +g(denotes)f(the)h(whole)g(replica.)63 b(Unison)37 b(displa)n(ys)f(the)0
7551 +1233 y(empt)n(y)28 b(path)f(as)g(\\)p Fk([root])p Fn(.")125
7552 +1332 y(If)f Fk(p)g Fn(is)g(a)f(path)h(and)g Fk(q)g Fn(is)g(a)f(path)h
7553 +(b)r(eginning)g(with)h Fk(p)p Fn(,)f(then)g Fk(q)g Fn(is)g(said)g(to)f
7554 +(b)r(e)i(a)e Fi(desc)l(endant)i Fn(of)f Fk(p)p Fn(.)36
7555 +b(\(Eac)n(h)25 b(path)h(is)g(also)0 1432 y(a)h(descendan)n(t)g(of)h
7556 +(itself.\))0 1661 y Fh(4.3)112 b(What)38 b(is)e(an)j(Up)s(date?)0
7557 +1814 y Fn(The)30 b Fi(c)l(ontents)e Fn(of)i(a)f(path)h
7558 +Fk(p)f Fn(in)h(a)f(particular)f(replica)h(could)g(b)r(e)h(a)f(\014le,)i
7559 +(a)e(directory)-7 b(,)29 b(a)g(sym)n(b)r(olic)g(link,)h(or)f(absen)n(t)
7560 +g(\(if)h Fk(p)0 1914 y Fn(do)r(es)d(not)h(refer)f(to)g(an)n(ything)g
7561 +(at)h(all)f(in)h(that)g(replica\).)36 b(More)27 b(sp)r(eci\014cally:)
7562 +125 2066 y Fj(\017)41 b Fn(If)34 b Fk(p)f Fn(refers)f(to)i(an)f
7563 +(ordinary)f(\014le,)j(then)f(the)g(con)n(ten)n(ts)f(of)g
7564 +Fk(p)g Fn(are)g(the)h(actual)f(con)n(ten)n(ts)g(of)g(this)h(\014le)g
7565 +(\(a)f(string)g(of)208 2166 y(b)n(ytes\))27 b(plus)h(the)g(curren)n(t)f
7566 +(p)r(ermission)f(bits)i(of)g(the)g(\014le.)125 2325 y
7567 +Fj(\017)41 b Fn(If)24 b Fk(p)f Fn(refers)g(to)h(a)g(sym)n(b)r(olic)f
7568 +(link,)i(then)f(the)h(con)n(ten)n(ts)e(of)h Fk(p)f Fn(are)g(just)i(the)
7569 +f(string)f(sp)r(ecifying)h(where)g(the)g(link)g(p)r(oin)n(ts.)125
7570 +2484 y Fj(\017)41 b Fn(If)32 b Fk(p)f Fn(refers)g(to)g(a)g(directory)-7
7571 +b(,)32 b(then)g(the)g(con)n(ten)n(ts)f(of)g Fk(p)h Fn(are)e(just)i(the)
7572 +g(tok)n(en)g(\\DIRECTOR)-7 b(Y")30 b(plus)i(the)g(curren)n(t)208
7573 +2584 y(p)r(ermission)27 b(bits)g(of)h(the)g(directory)-7
7574 +b(.)125 2743 y Fj(\017)41 b Fn(If)28 b Fk(p)f Fn(do)r(es)g(not)h(refer)
7575 +f(to)g(an)n(ything)g(in)h(this)g(replica,)f(then)h(the)g(con)n(ten)n
7576 +(ts)f(of)g Fk(p)g Fn(are)g(the)h(tok)n(en)f(\\ABSENT.")0
7577 +2896 y(Unison)f(k)n(eeps)f(a)g(record)f(of)i(the)g(con)n(ten)n(ts)f(of)
7578 +g(eac)n(h)g(path)h(after)g(eac)n(h)e(successful)i(sync)n(hronization)e
7579 +(of)h(that)h(path)g(\(i.e.,)h(it)0 2995 y(remem)n(b)r(ers)g(the)h(con)n
7580 +(ten)n(ts)f(at)g(the)h(last)f(momen)n(t)h(when)g(they)f(w)n(ere)g(the)h
7581 +(same)f(in)h(the)g(t)n(w)n(o)f(replicas\).)125 3095 y(W)-7
7582 +b(e)27 b(sa)n(y)g(that)g(a)g(path)h(is)f Fi(up)l(date)l(d)h
7583 +Fn(\(in)g(some)f(replica\))g(if)h(its)f(curren)n(t)g(con)n(ten)n(ts)f
7584 +(are)h(di\013eren)n(t)g(from)g(its)h(con)n(ten)n(ts)f(the)0
7585 +3195 y(last)g(time)h(it)g(w)n(as)f(successfully)g(sync)n(hronized.)125
7586 +3294 y(\(What)34 b(Unison)f(actually)g(calculates)f(is)h(a)g(sligh)n(t)
7587 +g(appro)n(ximation)f(to)h(this)h(de\014nition;)j(see)c(Section)g(4.7)g
7588 +([Ca)n(v)n(eats)0 3394 y(and)27 b(Shortcomings].\))0
7589 +3623 y Fh(4.4)112 b(What)38 b(is)e(a)i(Con\015ict?)0
7590 +3776 y Fn(A)28 b(path)g(is)f(said)g(to)h(b)r(e)g Fi(c)l(on\015icting)g
7591 +Fn(if)101 3929 y(1.)42 b(it)28 b(has)f(b)r(een)h(up)r(dated)g(in)g(one)
7592 +f(replica,)101 4088 y(2.)42 b(it)28 b(or)e(an)n(y)h(of)h(its)f
7593 +(descendan)n(ts)g(has)g(b)r(een)h(up)r(dated)h(in)e(the)h(other)f
7594 +(replica,)g(and)101 4247 y(3.)42 b(its)27 b(con)n(ten)n(ts)g(in)h(the)g
7595 +(t)n(w)n(o)f(replicas)f(are)h(not)h(iden)n(tical.)0 4477
7596 +y Fh(4.5)112 b(Reconciliation)0 4630 y Fn(Unison)28 b(op)r(erates)e(in)
7597 +i(sev)n(eral)e(distinct)i(stages:)101 4782 y(1.)42 b(On)28
7598 +b(eac)n(h)g(host,)h(it)h(compares)d(its)i(arc)n(hiv)n(e)e(\014le)i
7599 +(\(whic)n(h)g(records)e(the)j(state)e(of)h(eac)n(h)f(path)h(in)g(the)h
7600 +(replica)e(when)h(it)208 4882 y(w)n(as)h(last)h(sync)n(hronized\))g
7601 +(with)h(the)f(curren)n(t)g(con)n(ten)n(ts)g(of)g(the)h(replica,)g(to)f
7602 +(determine)h(whic)n(h)f(paths)g(ha)n(v)n(e)g(b)r(een)208
7603 +4982 y(up)r(dated.)101 5141 y(2.)42 b(It)34 b(c)n(hec)n(ks)f(for)g
7604 +(\\false)g(con\015icts")g(|)h(paths)g(that)g(ha)n(v)n(e)f(b)r(een)h(up)
7605 +r(dated)h(on)e(b)r(oth)i(replicas,)f(but)h(whose)e(curren)n(t)208
7606 +5240 y(v)-5 b(alues)39 b(are)f(iden)n(tical.)72 b(These)39
7607 +b(paths)h(are)e(silen)n(tly)h(mark)n(ed)g(as)f(sync)n(hronized)g(in)i
7608 +(the)g(arc)n(hiv)n(e)e(\014les)h(in)h(b)r(oth)208 5340
7609 +y(replicas.)1908 5589 y(15)p eop
7610 +%%Page: 16 16
7611 +16 15 bop 101 83 a Fn(3.)42 b(It)31 b(displa)n(ys)g(all)g(the)h(up)r
7612 +(dated)g(paths)g(to)f(the)h(user.)48 b(F)-7 b(or)31 b(up)r(dates)h
7613 +(that)g(do)f(not)h(con\015ict,)g(it)g(suggests)e(a)i(default)208
7614 +183 y(action)27 b(\(propagating)f(the)i(new)g(con)n(ten)n(ts)f(from)g
7615 +(the)h(up)r(dated)h(replica)e(to)g(the)h(other\).)38
7616 +b(Con\015icting)27 b(up)r(dates)h(are)208 282 y(just)33
7617 +b(displa)n(y)n(ed.)52 b(The)32 b(user)h(is)f(giv)n(en)g(an)h(opp)r
7618 +(ortunit)n(y)f(to)h(examine)f(the)i(curren)n(t)e(state)g(of)h
7619 +(a\013airs,)g(c)n(hange)f(the)208 382 y(default)c(actions)e(for)h
7620 +(noncon\015icting)h(up)r(dates,)f(and)h(c)n(ho)r(ose)e(actions)h(for)g
7621 +(con\015icting)g(up)r(dates.)101 548 y(4.)42 b(It)27
7622 +b(p)r(erforms)g(the)g(selected)g(actions,)g(one)g(at)g(a)g(time.)37
7623 +b(Eac)n(h)26 b(action)h(is)g(p)r(erformed)g(b)n(y)g(\014rst)g
7624 +(transferring)e(the)j(new)208 648 y(con)n(ten)n(ts)e(to)i(a)f(temp)r
7625 +(orary)f(\014le)i(on)g(the)g(receiving)e(host,)h(then)i(atomically)d
7626 +(mo)n(ving)h(them)h(in)n(to)f(place.)101 814 y(5.)42
7627 +b(It)27 b(up)r(dates)h(its)g(arc)n(hiv)n(e)e(\014les)h(to)h(re\015ect)f
7628 +(the)h(new)g(state)f(of)h(the)g(replicas.)0 1046 y Fh(4.6)112
7629 +b(In)m(v)-6 b(arian)m(ts)0 1199 y Fn(Giv)n(en)30 b(the)h(imp)r(ortance)
7630 +f(and)g(delicacy)g(of)h(the)g(job)f(that)h(it)g(p)r(erforms,)f(it)h(is)
7631 +g(imp)r(ortan)n(t)f(to)g(understand)g(b)r(oth)h(what)f(a)0
7632 +1299 y(sync)n(hronizer)e(do)r(es)h(under)g(normal)g(conditions)g(and)g
7633 +(what)h(can)f(happ)r(en)h(under)f(un)n(usual)g(conditions)g(suc)n(h)g
7634 +(as)g(system)0 1399 y(crashes)d(and)i(comm)n(unication)e(failures.)125
7635 +1498 y(Unison)33 b(is)h(careful)f(to)h(protect)f(b)r(oth)i(its)f(in)n
7636 +(ternal)f(state)g(and)h(the)g(state)g(of)g(the)g(replicas)e(at)i(ev)n
7637 +(ery)f(p)r(oin)n(t)h(in)g(this)0 1598 y(pro)r(cess.)i(Sp)r
7638 +(eci\014cally)-7 b(,)27 b(the)h(follo)n(wing)f(guaran)n(tees)e(are)i
7639 +(enforced:)125 1764 y Fj(\017)41 b Fn(A)n(t)30 b(ev)n(ery)f(momen)n(t,)
7640 +h(eac)n(h)f(path)h(in)h(eac)n(h)e(replica)g(has)g(either)h(\(1\))g(its)
7641 +h Fi(original)h Fn(con)n(ten)n(ts)d(\(i.e.,)i(no)f(c)n(hange)f(at)g
7642 +(all)208 1863 y(has)e(b)r(een)i(made)g(to)f(this)h(path\),)g(or)e
7643 +(\(2\))i(its)f Fi(c)l(orr)l(e)l(ct)h Fn(\014nal)f(con)n(ten)n(ts)g
7644 +(\(i.e.,)h(the)g(v)-5 b(alue)28 b(that)h(the)g(user)e(exp)r(ected)i(to)
7645 +208 1963 y(b)r(e)f(propagated)d(from)j(the)g(other)f(replica\).)125
7646 +2129 y Fj(\017)41 b Fn(A)n(t)32 b(ev)n(ery)e(momen)n(t,)j(the)f
7647 +(information)f(stored)g(on)h(disk)f(ab)r(out)h(Unison's)g(priv)-5
7648 +b(ate)31 b(state)h(can)f(b)r(e)h(either)g(\(1\))g(un-)208
7649 +2229 y(c)n(hanged,)26 b(or)h(\(2\))h(up)r(dated)g(to)f(re\015ect)h
7650 +(those)f(paths)g(that)h(ha)n(v)n(e)f(b)r(een)h(successfully)f(sync)n
7651 +(hronized.)0 2395 y(The)h(upshot)f(is)h(that)g(it)g(is)f(safe)g(to)h
7652 +(in)n(terrupt)f(Unison)h(at)f(an)n(y)g(time,)h(either)g(man)n(ually)e
7653 +(or)h(acciden)n(tally)-7 b(.)125 2494 y(If)29 b(an)g(in)n(terruption)g
7654 +(happ)r(ens)g(while)g(it)h(is)f(propagating)e(up)r(dates,)i(then)h
7655 +(there)f(ma)n(y)g(b)r(e)g(some)g(paths)g(for)f(whic)n(h)h(an)0
7656 +2594 y(up)r(date)f(has)f(b)r(een)h(propagated)e(but)i(whic)n(h)g(ha)n
7657 +(v)n(e)e(not)i(b)r(een)g(mark)n(ed)e(as)h(sync)n(hronized)f(in)i
7658 +(Unison's)g(arc)n(hiv)n(es.)35 b(This)27 b(is)0 2694
7659 +y(no)k(problem:)44 b(the)32 b(next)f(time)h(Unison)f(runs,)h(it)g(will)
7660 +f(detect)h(c)n(hanges)e(to)h(these)h(paths)f(in)h(b)r(oth)f(replicas,)h
7661 +(notice)f(that)0 2793 y(the)25 b(con)n(ten)n(ts)f(are)g(no)n(w)g
7662 +(equal,)h(and)f(mark)g(the)h(paths)g(as)f(successfully)g(up)r(dated)i
7663 +(when)f(it)g(writes)f(bac)n(k)g(its)h(priv)-5 b(ate)24
7664 +b(state)0 2893 y(at)j(the)h(end)g(of)g(this)g(run.)125
7665 +2993 y(If)21 b(Unison)h(is)f(in)n(terrupted,)h(it)g(ma)n(y)f(sometimes)
7666 +g(lea)n(v)n(e)f(temp)r(orary)g(w)n(orking)g(\014les)h(\(with)h(su\016x)
7667 +g Fk(.tmp)p Fn(\))e(in)h(the)h(replicas.)0 3092 y(It)34
7668 +b(is)g(safe)g(to)f(delete)i(these)f(\014les.)55 b(Also,)36
7669 +b(if)e(the)g(\(deprecated\))g Fk(backups)d Fn(\015ag)i(is)h(set,)i
7670 +(Unison)e(will)g(lea)n(v)n(e)e(around)h(old)0 3192 y(v)n(ersions)25
7671 +b(of)i(\014les,)f(with)i(names)e(lik)n(e)g Fk(file.0.unison.bak)o
7672 +Fn(.)31 b(These)26 b(can)h(b)r(e)g(deleted)g(safely)-7
7673 +b(,)26 b(when)h(they)g(are)f(no)g(longer)0 3291 y(w)n(an)n(ted.)125
7674 +3391 y(Unison)d(is)h(not)g(b)r(othered)g(b)n(y)f(clo)r(c)n(k)h(sk)n(ew)
7675 +f(b)r(et)n(w)n(een)h(the)g(di\013eren)n(t)g(hosts)f(on)h(whic)n(h)g(it)
7676 +g(is)g(running.)35 b(It)24 b(only)g(p)r(erforms)0 3491
7677 +y(comparisons)33 b(b)r(et)n(w)n(een)i(timestamps)g(obtained)f(from)h
7678 +(the)g(same)g(host,)h(and)f(the)g(only)g(assumption)f(it)h(mak)n(es)f
7679 +(ab)r(out)0 3590 y(them)28 b(is)g(that)g(the)g(clo)r(c)n(k)e(on)i(eac)n
7680 +(h)e(system)i(alw)n(a)n(ys)e(runs)h(forw)n(ard.)125 3690
7681 +y(If)g(Unison)g(\014nds)h(that)g(its)f(arc)n(hiv)n(e)f(\014les)h(ha)n
7682 +(v)n(e)f(b)r(een)i(deleted)f(\(or)g(that)h(the)f(arc)n(hiv)n(e)f
7683 +(format)h(has)f(c)n(hanged)h(and)g(they)0 3790 y(cannot)k(b)r(e)i
7684 +(read,)f(or)f(that)h(they)g(don't)g(exist)g(b)r(ecause)f(this)i(is)e
7685 +(the)i(\014rst)e(run)h(of)g(Unison)g(on)f(these)h(particular)f(ro)r
7686 +(ots\),)0 3889 y(it)e(tak)n(es)e(a)h(conserv)-5 b(ativ)n(e)27
7687 +b(approac)n(h:)37 b(it)29 b(b)r(eha)n(v)n(es)e(as)h(though)g(the)h
7688 +(replicas)e(had)i(b)r(oth)g(b)r(een)g(completely)f(empt)n(y)g(at)h(the)
7689 +0 3989 y(p)r(oin)n(t)23 b(of)g(the)h(last)e(sync)n(hronization.)34
7690 +b(The)23 b(e\013ect)g(of)g(this)g(is)g(that,)i(on)d(the)i(\014rst)f
7691 +(run,)g(\014les)g(that)h(exist)e(in)i(only)e(one)h(replica)0
7692 +4088 y(will)34 b(b)r(e)g(propagated)e(to)h(the)i(other,)f(while)g
7693 +(\014les)g(that)g(exist)f(in)h(b)r(oth)g(replicas)f(but)h(are)f
7694 +(unequal)g(will)h(b)r(e)g(mark)n(ed)f(as)0 4188 y(con\015icting.)125
7695 +4288 y(T)-7 b(ouc)n(hing)22 b(a)h(\014le)g(without)h(c)n(hanging)e(its)
7696 +h(con)n(ten)n(ts)g(should)g(nev)n(er)f(a\013ect)h(Unison's)g(b)r(eha)n
7697 +(vior.)35 b(\(On)23 b(Unix,)h(it)g(uses)f(\014le)0 4387
7698 +y(mo)r(dtimes)30 b(for)f(a)g(quic)n(k)g(\014rst)g(pass)f(to)i(tell)f
7699 +(whic)n(h)h(\014les)f(ha)n(v)n(e)f(de\014nitely)i Fi(not)f
7700 +Fn(c)n(hanged;)h(then)f(for)g(eac)n(h)g(\014le)g(that)h(migh)n(t)0
7701 +4487 y(ha)n(v)n(e)f(c)n(hanged)g(it)i(computes)f(a)g(\014ngerprin)n(t)f
7702 +(of)h(the)h(\014le's)f(con)n(ten)n(ts)g(and)g(compares)f(it)h(against)g
7703 +(the)g(last-sync)n(hronized)0 4587 y(con)n(ten)n(ts.\))125
7704 +4686 y(It)h(is)g(safe)f(to)h(\\brain)n(w)n(ash")d(Unison)j(b)n(y)f
7705 +(deleting)h(its)g(arc)n(hiv)n(e)e(\014les)i Fi(on)i(b)l(oth)g(r)l
7706 +(eplic)l(as)p Fn(.)49 b(The)30 b(next)i(time)f(it)g(runs,)h(it)0
7707 +4786 y(will)c(assume)f(that)h(all)f(the)h(\014les)f(it)h(sees)f(in)h
7708 +(the)g(replicas)f(are)f(new.)125 4885 y(It)21 b(is)h(safe)f(to)g(mo)r
7709 +(dify)h(\014les)f(while)h(Unison)g(is)f(w)n(orking.)33
7710 +b(If)22 b(Unison)f(disco)n(v)n(ers)f(that)h(it)h(has)f(propagated)f(an)
7711 +h(out-of-date)0 4985 y(c)n(hange,)28 b(or)g(that)h(the)g(\014le)g(it)g
7712 +(is)g(up)r(dating)g(has)f(c)n(hanged)g(on)g(the)i(target)d(replica,)i
7713 +(it)g(will)g(signal)f(a)g(failure)h(for)f(that)h(\014le.)0
7714 +5085 y(Run)f(Unison)g(again)e(to)h(propagate)f(the)i(latest)g(c)n
7715 +(hange.)125 5184 y(Changes)e(to)i(the)h(ignore)d(patterns)i(from)f(the)
7716 +i(user)e(in)n(terface)g(\(e.g.,)h(using)g(the)g(`i')h(k)n(ey\))e(are)g
7717 +(immediately)h(re\015ected)0 5284 y(in)g(the)g(curren)n(t)f(pro\014le.)
7718 +1908 5589 y(16)p eop
7719 +%%Page: 17 17
7720 +17 16 bop 0 83 a Fh(4.7)112 b(Ca)m(v)m(eats)38 b(and)h(Shortcomings)0
7721 +236 y Fn(Here)30 b(are)g(some)g(things)h(to)f(b)r(e)h(careful)f(of)h
7722 +(when)g(using)f(Unison.)46 b(A)31 b(complete)g(list)g(of)f(bugs)h(can)f
7723 +(b)r(e)h(found)g(in)g(the)g(\014le)0 336 y(BUGS.txt)d(in)g(the)g
7724 +(source)f(distribution.)125 519 y Fj(\017)41 b Fn(In)33
7725 +b(the)g(in)n(terests)f(of)h(sp)r(eed,)h(the)f(up)r(date)g(detection)g
7726 +(algorithm)f(ma)n(y)g(\(dep)r(ending)h(on)g(whic)n(h)g(OS)f(arc)n
7727 +(hitecture)208 618 y(that)27 b(y)n(ou)e(run)i(Unison)g(on\))f(actually)
7728 +g(use)h(an)f(appro)n(ximation)f(to)i(the)g(de\014nition)g(giv)n(en)f
7729 +(in)h(Section)f(4.3)g([What)h(is)208 718 y(an)g(Up)r(date?].)208
7730 +851 y(In)g(particular,)f(the)h(Unix)h(implemen)n(tation)f(do)r(es)g
7731 +(not)g(compare)f(the)h(actual)g(con)n(ten)n(ts)f(of)h(\014les)g(to)g
7732 +(their)g(previous)208 950 y(con)n(ten)n(ts,)g(but)h(simply)g(lo)r(oks)f
7733 +(at)g(eac)n(h)g(\014le's)h(ino)r(de)g(n)n(um)n(b)r(er)f(and)h(mo)r
7734 +(dtime;)g(if)g(neither)g(of)g(these)g(ha)n(v)n(e)e(c)n(hanged,)208
7735 +1050 y(then)i(it)g(concludes)f(that)h(the)g(\014le)f(has)g(not)h(b)r
7736 +(een)g(c)n(hanged.)208 1183 y(Under)34 b(normal)f(circumstances,)j
7737 +(this)e(appro)n(ximation)f(is)h(safe,)i(in)f(the)f(sense)g(that)h(it)g
7738 +(ma)n(y)f(sometimes)g(detect)208 1282 y(\\false)h(up)r(dates")g(will)h
7739 +(nev)n(er)f(miss)h(a)f(real)g(one.)61 b(Ho)n(w)n(ev)n(er,)36
7740 +b(it)g(is)g(p)r(ossible)f(to)h(fo)r(ol)g(it,)i(for)e(example)f(b)n(y)g
7741 +(using)208 1382 y Fk(retouch)24 b Fn(to)k(c)n(hange)e(a)h(\014le's)h
7742 +(mo)r(dtime)g(bac)n(k)f(to)g(a)h(time)g(in)g(the)g(past.)125
7743 +1548 y Fj(\017)41 b Fn(If)25 b(y)n(ou)f(sync)n(hronize)f(b)r(et)n(w)n
7744 +(een)i(a)f(single-user)f(\014lesystem)i(and)g(a)f(shared)g(Unix)h(serv)
7745 +n(er,)f(y)n(ou)g(should)g(pa)n(y)g(atten)n(tion)208 1648
7746 +y(to)32 b(y)n(our)g(p)r(ermission)g(bits:)48 b(b)n(y)32
7747 +b(default,)j(Unison)e(will)g(sync)n(hronize)e(p)r(ermissions)h(v)n
7748 +(erbatim,)i(whic)n(h)e(ma)n(y)g(lea)n(v)n(e)208 1747
7749 +y(group-writable)25 b(\014les)j(on)f(the)h(serv)n(er)e(that)i(could)f
7750 +(b)r(e)h(written)g(o)n(v)n(er)e(b)n(y)h(a)g(lot)h(of)f(p)r(eople.)208
7751 +1880 y(Y)-7 b(ou)26 b(can)g(con)n(trol)f(this)h(b)n(y)g(setting)h(y)n
7752 +(our)e Fk(umask)f Fn(on)i(b)r(oth)g(computers)g(to)g(something)g(lik)n
7753 +(e)g(022,)f(masking)g(out)i(the)208 1980 y(\\w)n(orld)f(write")h(and)g
7754 +(\\group)f(write")h(p)r(ermission)g(bits.)125 2146 y
7755 +Fj(\017)41 b Fn(The)22 b(graphical)f(user)h(in)n(terface)g(is)g(curren)
7756 +n(tly)g(single-threaded.)34 b(This)22 b(means)g(that)h(if)g(Unison)g
7757 +(is)f(p)r(erforming)g(some)208 2245 y(long-running)g(op)r(eration,)h
7758 +(the)h(displa)n(y)f(will)g(not)h(b)r(e)g(repain)n(ted)f(un)n(til)h(it)f
7759 +(\014nishes.)36 b(W)-7 b(e)24 b(recommend)f(not)g(trying)g(to)208
7760 +2345 y(do)k(an)n(ything)f(with)i(the)g(user)f(in)n(terface)g(while)g
7761 +(Unison)h(is)f(in)h(the)g(middle)g(of)f(detecting)h(c)n(hanges)e(or)g
7762 +(propagating)208 2445 y(\014les.)125 2611 y Fj(\017)41
7763 +b Fn(Unison)27 b(do)r(es)g(not)h(curren)n(tly)f(understand)g(hard)g
7764 +(links.)1908 5589 y(17)p eop
7765 +%%Page: 18 18
7766 +18 17 bop 0 83 a Fm(5)135 b(Reference)0 265 y Fn(This)28
7767 +b(section)f(co)n(v)n(ers)e(the)j(features)f(of)h(Unison)f(in)h(detail.)
7768 +0 494 y Fh(5.1)112 b(Running)37 b(Unison)0 647 y Fn(There)27
7769 +b(are)g(sev)n(eral)e(w)n(a)n(ys)i(to)g(start)g(Unison.)125
7770 +797 y Fj(\017)41 b Fn(T)n(yping)d(\\)p Fk(unison)i Fb(profile)12
7771 +b Fn(")38 b(on)h(the)g(command)g(line.)70 b(Unison)39
7772 +b(will)g(lo)r(ok)f(for)h(a)f(\014le)h Fb(profile)p Fk(.prf)c
7773 +Fn(in)k(the)208 896 y Fk(.unison)27 b Fn(directory)-7
7774 +b(.)44 b(If)31 b(this)g(\014le)g(do)r(es)f(not)g(sp)r(ecify)h(a)f(pair)
7775 +g(of)g(ro)r(ots,)h(Unison)f(will)h(prompt)f(for)g(them)h(and)f(add)208
7776 +996 y(them)e(to)f(the)h(information)f(sp)r(eci\014ed)h(b)n(y)f(the)h
7777 +(pro\014le.)125 1154 y Fj(\017)41 b Fn(T)n(yping)18 b(\\)p
7778 +Fk(unison)41 b Fb(profile)55 b(root1)h(root2)12 b Fn(")19
7779 +b(on)g(the)h(command)e(line.)35 b(In)19 b(this)h(case,)g(Unison)f(will)
7780 +g(use)g Fb(profile)12 b Fn(,)208 1254 y(whic)n(h)27 b(should)g(not)h
7781 +(con)n(tain)f(an)n(y)g Fk(root)f Fn(directiv)n(es.)125
7782 +1411 y Fj(\017)41 b Fn(T)n(yping)32 b(\\)p Fk(unison)41
7783 +b Fb(root1)56 b(root2)12 b Fn(")33 b(on)g(the)h(command)f(line.)54
7784 +b(This)33 b(has)g(the)h(same)e(e\013ect)i(as)f(t)n(yping)g(\\)p
7785 +Fk(unison)208 1511 y(default)40 b Fb(root1)56 b(root2)13
7786 +b Fn(.")125 1669 y Fj(\017)41 b Fn(T)n(yping)24 b(just)i(\\)p
7787 +Fk(unison)p Fn(")21 b(\(or)k(in)n(v)n(oking)e(Unison)i(b)n(y)g(clic)n
7788 +(king)f(on)h(a)g(desktop)f(icon\).)36 b(In)26 b(this)f(case,)g(Unison)g
7789 +(will)g(ask)208 1769 y(for)i(the)h(pro\014le)f(to)g(use)g(for)h(sync)n
7790 +(hronization)d(\(or)i(create)g(a)g(new)h(one,)f(if)h(necessary\).)0
7791 +1998 y Fh(5.2)112 b(The)38 b Fq(.unison)h Fh(Directory)0
7792 +2151 y Fn(Unison)f(stores)g(a)g(v)-5 b(ariet)n(y)37 b(of)h(information)
7793 +g(in)h(a)f(priv)-5 b(ate)38 b(directory)f(on)h(eac)n(h)g(host.)69
7794 +b(If)39 b(the)g(en)n(vironmen)n(t)e(v)-5 b(ariable)0
7795 +2250 y Fk(UNISON)28 b Fn(is)i(de\014ned,)i(then)f(its)g(v)-5
7796 +b(alue)30 b(will)h(b)r(e)f(used)h(as)f(the)h(name)f(of)g(this)h
7797 +(directory)-7 b(.)44 b(If)31 b Fk(UNISON)d Fn(is)j(not)f(de\014ned,)i
7798 +(then)0 2350 y(the)k(name)g(of)g(the)g(directory)f(dep)r(ends)i(on)e
7799 +(whic)n(h)h(op)r(erating)f(system)h(y)n(ou)f(are)g(using.)62
7800 +b(In)36 b(Unix,)j(the)d(default)g(is)g(to)0 2450 y(use)c
7801 +Fk($HOME/.unison)p Fn(.)47 b(In)33 b(Windo)n(ws,)g(if)g(the)g(en)n
7802 +(vironmen)n(t)f(v)-5 b(ariable)31 b Fk(USERPROFILE)e
7803 +Fn(is)j(de\014ned,)i(then)f(the)g(directory)0 2549 y(will)27
7804 +b(b)r(e)f Fk($USERPROFILE)p Fj(n)p Fk(.uni)o(son)o Fn(;)21
7805 +b(otherwise)26 b(if)g Fk(HOME)f Fn(is)i(de\014ned,)g(it)f(will)h(b)r(e)
7806 +g Fk($HOME)p Fj(n)p Fk(.unison)p Fn(;)21 b(otherwise,)26
7807 +b(it)h(will)g(b)r(e)0 2649 y Fk(c:)p Fj(n)p Fk(.unison)p
7808 +Fn(.)125 2749 y(The)19 b(arc)n(hiv)n(e)e(\014le)j(for)e(eac)n(h)h
7809 +(replica)f(is)h(found)h(in)f(the)h Fk(.unison)c Fn(directory)i(on)h
7810 +(that)g(replica's)g(host.)33 b(Pro\014les)18 b(\(describ)r(ed)0
7811 +2848 y(b)r(elo)n(w\))28 b(are)e(alw)n(a)n(ys)g(tak)n(en)h(from)g(the)h
7812 +Fk(.unison)d Fn(directory)h(on)h(the)h(clien)n(t)g(host.)125
7813 +2948 y(Note)f(that)h(Unison)g(main)n(tains)f(a)g(completely)g
7814 +(di\013eren)n(t)h(set)f(of)h(arc)n(hiv)n(e)e(\014les)h(for)g(eac)n(h)g
7815 +(pair)g(of)h(ro)r(ots.)125 3047 y(W)-7 b(e)26 b(do)g(not)g(recommend)g
7816 +(sync)n(hronizing)e(the)j(whole)f Fk(.unison)d Fn(directory)-7
7817 +b(,)25 b(as)h(this)g(will)h(in)n(v)n(olv)n(e)e(frequen)n(t)h(propaga-)0
7818 +3147 y(tion)f(of)g(large)f(arc)n(hiv)n(e)g(\014les.)36
7819 +b(It)25 b(should)g(b)r(e)h(safe)f(to)g(do)g(it,)h(though,)f(if)h(y)n
7820 +(ou)e(really)h(w)n(an)n(t)f(to.)36 b(\(Sync)n(hronizing)24
7821 +b(the)i(pro\014le)0 3247 y(\014les)i(in)f(the)h Fk(.unison)d
7822 +Fn(directory)h(is)i(de\014nitely)g(OK.\))0 3476 y Fh(5.3)112
7823 +b(Arc)m(hiv)m(e)36 b(Files)0 3629 y Fn(The)28 b(name)f(of)h(the)g(arc)n
7824 +(hiv)n(e)d(\014le)j(on)g(eac)n(h)e(replica)h(is)h(calculated)f(from)125
7825 +3779 y Fj(\017)41 b Fn(the)e Fi(c)l(anonic)l(al)j(names)e
7826 +Fn(of)f(all)h(the)g(hosts)f(\(short)g(names)g(lik)n(e)g
7827 +Fk(saul)f Fn(are)g(con)n(v)n(erted)g(in)n(to)h(full)i(addresses)c(lik)n
7828 +(e)208 3878 y Fk(saul.cis.upenn.)o(edu)o Fn(\),)125 4036
7829 +y Fj(\017)k Fn(the)25 b(paths)h(to)f(the)h(replicas)f(on)g(all)g(the)h
7830 +(hosts)f(\(again,)g(relativ)n(e)g(pathnames,)g(sym)n(b)r(olic)g(links,)
7831 +h(etc.)g(are)f(con)n(v)n(erted)208 4136 y(in)n(to)i(full,)h(absolute)f
7832 +(paths\),)h(and)125 4294 y Fj(\017)41 b Fn(an)28 b(in)n(ternal)g(v)n
7833 +(ersion)g(n)n(um)n(b)r(er)g(that)h(is)g(c)n(hanged)f(whenev)n(er)g(a)g
7834 +(new)h(Unison)g(release)e(c)n(hanges)g(the)j(format)e(of)h(the)208
7835 +4393 y(information)d(stored)h(in)h(the)g(arc)n(hiv)n(e.)0
7836 +4543 y(This)h(metho)r(d)h(should)f(w)n(ork)f(w)n(ell)i(for)e(most)i
7837 +(users.)41 b(Ho)n(w)n(ev)n(er,)28 b(it)i(is)f(o)r(ccasionally)f(useful)
7838 +h(to)h(c)n(hange)e(the)i(w)n(a)n(y)e(arc)n(hiv)n(e)0
7839 +4643 y(names)f(are)g(generated.)35 b(Unison)28 b(pro)n(vides)e(t)n(w)n
7840 +(o)h(w)n(a)n(ys)f(of)i(doing)f(this.)125 4742 y(The)j(function)i(that)f
7841 +(\014nds)g(the)g(canonical)e(hostname)i(of)f(the)h(lo)r(cal)g(host)f
7842 +(\(whic)n(h)h(is)g(used,)g(for)g(example,)g(in)g(calcu-)0
7843 +4842 y(lating)d(the)g(name)g(of)g(the)h(arc)n(hiv)n(e)d(\014le)i(used)g
7844 +(to)g(remem)n(b)r(er)g(whic)n(h)g(\014les)g(ha)n(v)n(e)f(b)r(een)h
7845 +(sync)n(hronized\))f(normally)g(uses)h(the)0 4941 y Fk(gethostname)c
7846 +Fn(op)r(erating)k(system)g(call.)40 b(Ho)n(w)n(ev)n(er,)27
7847 +b(if)i(the)g(en)n(vironmen)n(t)f(v)-5 b(ariable)27 b
7848 +Fk(UNISONLOCALHOSTNA)o(ME)22 b Fn(is)29 b(set,)g(its)0
7849 +5041 y(v)-5 b(alue)25 b(will)h(b)r(e)g(used)f(instead.)36
7850 +b(This)26 b(mak)n(es)e(it)i(easier)e(to)h(use)h(Unison)f(in)h
7851 +(situations)f(where)f(a)h(mac)n(hine's)g(name)g(c)n(hanges)0
7852 +5141 y(frequen)n(tly)i(\(e.g.,)h(b)r(ecause)f(it)h(is)g(a)f(laptop)g
7853 +(and)g(gets)h(mo)n(v)n(ed)e(around)h(a)g(lot\).)125 5240
7854 +y(A)22 b(more)g(p)r(o)n(w)n(erful)f(w)n(a)n(y)g(of)h(c)n(hanging)f(arc)
7855 +n(hiv)n(e)g(names)h(is)g(pro)n(vided)f(b)n(y)h(the)h
7856 +Fk(rootalias)18 b Fn(preference.)35 b(The)22 b(preference)0
7857 +5340 y(\014le)28 b(ma)n(y)f(con)n(tain)g(an)n(y)f(n)n(um)n(b)r(er)i(of)
7858 +f(lines)h(of)f(the)h(form:)1908 5589 y(18)p eop
7859 +%%Page: 19 19
7860 +19 18 bop 174 83 a Fk(rootalias)40 b(=)j(//)p Fb(hostnameA)10
7861 +b Fk(//)p Fb(path-to-replica)o(A)52 b Fk(->)43 b(//)p
7862 +Fb(hostnameB)9 b Fk(//)p Fb(path-to-replica)o(B)0 249
7863 +y Fn(When)21 b(calculating)f(the)h(name)g(of)g(the)g(arc)n(hiv)n(e)e
7864 +(\014les)i(for)f(a)g(giv)n(en)g(pair)g(of)h(ro)r(ots,)g(Unison)g
7865 +(replaces)f(an)n(y)g(ro)r(ot)g(that)h(matc)n(hes)0 349
7866 +y(the)28 b(left-hand)g(side)f(of)h(an)n(y)f(ro)r(otalias)e(rule)j(b)n
7867 +(y)f(the)h(corresp)r(onding)e(righ)n(t-hand)g(side.)125
7868 +448 y(So,)h(if)h(y)n(ou)f(need)h(to)f(relo)r(cate)g(a)g(ro)r(ot)g(on)g
7869 +(one)g(of)h(the)g(hosts,)f(y)n(ou)g(can)g(add)g(a)g(rule)h(of)f(the)h
7870 +(form:)174 614 y Fk(rootalias)40 b(=)j(//)p Fb(new-hostname)9
7871 +b Fk(//)p Fb(new-path)54 b Fk(->)43 b(//)p Fb(old-hostname)8
7872 +b Fk(//)p Fb(old-path)125 780 y Fi(Warning)p Fn(:)44
7873 +b(The)31 b Fk(rootalias)c Fn(option)k(is)g(dangerous)e(and)i(should)g
7874 +(only)g(b)r(e)g(used)g(if)h(y)n(ou)e(are)g(sure)h(y)n(ou)f(kno)n(w)g
7875 +(what)0 880 y(y)n(ou're)e(doing.)41 b(In)29 b(particular,)g(it)g
7876 +(should)g(only)g(b)r(e)h(used)f(if)h(y)n(ou)e(are)g(p)r(ositiv)n(e)h
7877 +(that)h(either)f(\(1\))g(b)r(oth)h(the)f(original)f(ro)r(ot)0
7878 +980 y(and)36 b(the)h(new)g(alias)e(refer)h(to)h(the)g(same)f(set)g(of)h
7879 +(\014les,)h(or)e(\(2\))h(the)g(\014les)f(ha)n(v)n(e)f(b)r(een)i(relo)r
7880 +(cated)f(so)g(that)h(the)g(original)0 1079 y(name)31
7881 +b(is)f(no)n(w)h(in)n(v)-5 b(alid)31 b(and)f(will)h(nev)n(er)f(b)r(e)i
7882 +(used)f(again.)45 b(\(If)32 b(the)f(original)e(ro)r(ot)h(and)h(the)g
7883 +(alias)f(refer)h(to)f(di\013eren)n(t)h(sets)0 1179 y(of)c(\014les,)f
7884 +(Unison's)h(up)r(date)g(detector)f(could)h(get)f(confused.\))37
7885 +b(After)27 b(in)n(tro)r(ducing)f(a)g(new)h Fk(rootalias)p
7886 +Fn(,)c(it)28 b(is)e(a)g(go)r(o)r(d)g(idea)0 1279 y(to)j(run)h(Unison)f
7887 +(a)h(few)g(times)f(in)n(teractiv)n(ely)g(\(with)h(the)g
7888 +Fk(batch)e Fn(\015ag)h(o\013,)h(etc.\))43 b(and)30 b(carefully)f(c)n
7889 +(hec)n(k)f(that)i(things)g(lo)r(ok)0 1378 y(reasonable|in)c
7890 +(particular,)g(that)i(up)r(date)g(detection)g(is)f(w)n(orking)f(as)h
7891 +(exp)r(ected.)0 1611 y Fh(5.4)112 b(Preferences)0 1764
7892 +y Fn(Man)n(y)27 b(details)g(of)h(Unison's)f(b)r(eha)n(vior)f(are)h
7893 +(con\014gurable)f(b)n(y)h(user-settable)g(\\preferences.")125
7894 +1863 y(Some)32 b(preferences)f(are)h(b)r(o)r(olean-v)-5
7895 +b(alued;)34 b(these)e(are)f(often)i(called)f Fi(\015ags)p
7896 +Fn(.)52 b(Others)32 b(tak)n(e)f(n)n(umeric)h(or)g(string)g(argu-)0
7897 +1963 y(men)n(ts,)37 b(indicated)e(in)h(the)f(preferences)f(list)h(b)n
7898 +(y)g Fk(n)g Fn(or)f Fk(xxx)p Fn(.)58 b(Most)35 b(of)g(the)g(string)g
7899 +(preferences)f(can)g(b)r(e)i(giv)n(en)e(sev)n(eral)0
7900 +2063 y(times;)28 b(the)g(argumen)n(ts)e(are)h(accum)n(ulated)g(in)n(to)
7901 +g(a)g(list)h(in)n(ternally)-7 b(.)125 2162 y(There)26
7902 +b(are)h(t)n(w)n(o)g(w)n(a)n(ys)f(to)h(set)g(the)h(v)-5
7903 +b(alues)27 b(of)h(preferences:)36 b(temp)r(orarily)-7
7904 +b(,)26 b(b)n(y)h(pro)n(viding)f(command-line)h(argumen)n(ts)0
7905 +2262 y(to)e(a)h(particular)e(run)h(of)h(Unison,)g(or)e(p)r(ermanen)n
7906 +(tly)-7 b(,)26 b(b)n(y)f(adding)h(commands)f(to)g(a)g
7907 +Fi(pr)l(o\014le)i Fn(in)e(the)h Fk(.unison)d Fn(directory)h(on)0
7908 +2362 y(the)g(clien)n(t)g(host.)36 b(The)24 b(order)e(of)i(preferences)f
7909 +(\(either)h(on)g(the)g(command)g(line)g(or)f(in)h(preference)f
7910 +(\014les\))h(is)g(not)g(signi\014can)n(t.)125 2461 y(T)-7
7911 +b(o)25 b(set)h(the)g(v)-5 b(alue)25 b(of)h(a)f(preference)g
7912 +Fk(p)g Fn(from)h(the)g(command)f(line,)h(add)g(an)f(argumen)n(t)g
7913 +Fk(-p)g Fn(\(for)g(a)h(b)r(o)r(olean)f(\015ag\))g(or)g
7914 +Fk(-p)0 2561 y(n)i Fn(or)g Fk(-p)43 b(xxx)26 b Fn(\(for)h(a)g(n)n
7915 +(umeric)g(or)g(string)g(preference\))g(an)n(ywhere)f(on)h(the)h
7916 +(command)f(line.)37 b(There)27 b(is)h(curren)n(tly)e(no)h(w)n(a)n(y)0
7917 +2660 y(to)g(set)h(a)f(b)r(o)r(olean)g(\015ag)f(to)i Fk(false)d
7918 +Fn(on)i(the)h(command)f(line)h(\(all)g(the)f(b)r(o)r(olean)g
7919 +(preferences)g(default)h(to)f Fk(false)p Fn(,)f(so)g(this)i(is)0
7920 +2760 y(only)j(a)g(restriction)f(if)i(y)n(ou'v)n(e)e(set)i(one)e(to)i
7921 +Fk(true)e Fn(in)h(y)n(our)f(pro\014le)h(and)g(w)n(an)n(t)g(to)g(reset)g
7922 +(it)h(temp)r(orarily)e(to)h Fk(false)e Fn(from)0 2860
7923 +y(the)f(command)f(line\).)125 2959 y(Here)g(are)f(all)i(the)g
7924 +(preferences)e(supp)r(orted)i(b)n(y)f(Unison.)37 b(\(This)28
7925 +b(list)f(can)h(b)r(e)g(obtained)f(b)n(y)g(t)n(yping)h
7926 +Fk(unison)41 b(-help)p Fn(.\))208 3125 y Fk(Usage:)g(unison)g
7927 +([options])382 3225 y(or)i(unison)e(root1)g(root2)h([options])382
7928 +3325 y(or)h(unison)e(profilename)e([options])208 3524
7929 +y(Options:)295 3624 y(-addprefsto)g(xxx)216 b(file)42
7930 +b(to)h(add)f(new)h(prefs)e(to)295 3723 y(-addversionno)299
7931 +b(add)43 b(version)d(number)i(to)g(name)g(of)h(unison)e(executable)f
7932 +(on)i(server)295 3823 y(-auto)651 b(automatically)39
7933 +b(accept)i(default)f(actions)295 3922 y(-backup)g(xxx)391
7934 +b(add)43 b(a)g(regexp)e(to)i(the)f(backup)f(list)295
7935 +4022 y(-backups)519 b(keep)42 b(backup)f(copies)h(of)g(files)g
7936 +(\(deprecated:)c(use)43 b('backup'\))295 4122 y(-batch)607
7937 +b(batch)42 b(mode:)f(ask)i(no)g(questions)c(at)k(all)295
7938 +4221 y(-contactquietly)255 b(Suppress)40 b(the)j('contacting)c(server')
7939 +h(message)h(during)g(startup)295 4321 y(-debug)g(xxx)434
7940 +b(debug)42 b(module)f(xxx)h(\('all')g(->)g(everything,)d('verbose')h
7941 +(->)j(more\))295 4421 y(-doc)f(xxx)521 b(show)42 b(documentation)d
7942 +(\('-doc)i(topics')f(lists)i(topics\))295 4520 y(-dumbtty)519
7943 +b(do)43 b(not)g(try)f(to)h(change)e(terminal)f(settings)g(in)j(text)f
7944 +(UI)295 4620 y(-editor)e(xxx)391 b(command)41 b(for)h(displaying)e(the)
7945 +i(output)f(of)i(the)f(merge)g(program)295 4719 y(-fastcheck)d(xxx)260
7946 +b(do)43 b(fast)f(update)f(detection)f(\(`true',)g(`false',)h(or)h
7947 +(`default'\))295 4819 y(-follow)e(xxx)391 b(add)43 b(a)g(regexp)e(to)i
7948 +(the)f(follow)f(list)295 4919 y(-force)g(xxx)434 b(force)42
7949 +b(changes)f(from)h(this)g(replica)e(to)j(the)f(other)295
7950 +5018 y(-group)607 b(synchronize)39 b(group)295 5118 y(-height)h(n)479
7951 +b(height)42 b(\(in)g(lines\))f(of)i(main)f(window)f(in)i(graphical)c
7952 +(interface)295 5218 y(-ignore)h(xxx)391 b(add)43 b(a)g(regexp)e(to)i
7953 +(the)f(ignore)f(list)295 5317 y(-ignorecase)387 b(ignore)42
7954 +b(upper/lowercase)37 b(spelling)j(of)j(filenames)1908
7955 +5589 y Fn(19)p eop
7956 +%%Page: 20 20
7957 +20 19 bop 295 83 a Fk(-ignorenot)39 b(xxx)260 b(add)43
7958 +b(a)g(regexp)e(to)i(the)f(ignorenot)e(list)295 183 y(-key)i(xxx)521
7959 +b(define)42 b(a)h(keyboard)d(shortcut)g(for)j(this)f(profile)295
7960 +282 y(-killserver)387 b(kill)42 b(server)f(when)h(done)g(\(even)g(when)
7961 +g(using)f(sockets\))295 382 y(-label)g(xxx)434 b(provide)41
7962 +b(a)i(descriptive)c(string)i(label)h(for)g(this)g(profile)295
7963 +482 y(-log)695 b(record)42 b(actions)e(in)j(file)f(specified)e(by)j
7964 +(logfile)d(preference)295 581 y(-logfile)g(xxx)347 b(Log)43
7965 +b(file)f(name)295 681 y(-maxbackups)d(n)304 b(number)42
7966 +b(of)g(backed)f(up)i(versions)d(of)j(a)g(file)295 780
7967 +y(-merge)e(xxx)434 b(command)41 b(for)h(merging)f(conflicting)e(files)
7968 +295 880 y(-merge2)h(xxx)391 b(command)41 b(for)h(merging)f(files)h
7969 +(\(when)f(no)i(common)e(version)g(exists\))295 980 y(-numericids)387
7970 +b(don't)42 b(map)g(uid/gid)f(values)g(by)i(user/group)c(names)295
7971 +1079 y(-owner)607 b(synchronize)39 b(owner)295 1179 y(-path)i(xxx)478
7972 +b(path)42 b(to)h(synchronize)295 1279 y(-perms)e(n)522
7973 +b(part)42 b(of)h(the)f(permissions)e(which)h(is)i(synchronized)295
7974 +1378 y(-prefer)d(xxx)391 b(choose)42 b(this)f(replica's)f(version)h
7975 +(for)h(conflicting)d(changes)295 1478 y(-root)i(xxx)478
7976 +b(root)42 b(of)h(a)g(replica)295 1577 y(-rootalias)c(xxx)260
7977 +b(Register)41 b(alias)g(for)i(canonical)c(root)j(names)295
7978 +1677 y(-rshargs)e(xxx)347 b(other)42 b(arguments)e(\(if)i(any\))g(for)g
7979 +(remote)g(shell)f(command)295 1777 y(-rshcmd)f(xxx)391
7980 +b(path)42 b(to)h(the)f(rsh)h(executable)295 1876 y(-servercmd)c(xxx)260
7981 +b(name)42 b(of)h(unison)e(executable)f(on)i(remote)g(server)295
7982 +1976 y(-silent)563 b(print)42 b(nothing)f(\(except)f(error)i
7983 +(messages\))295 2076 y(-socket)e(xxx)391 b(act)43 b(as)g(a)g(server)e
7984 +(on)i(a)g(socket)295 2175 y(-sortbysize)387 b(list)42
7985 +b(changed)f(files)h(by)g(size,)g(not)g(name)295 2275
7986 +y(-sortfirst)d(xxx)260 b(add)43 b(a)g(regexp)e(to)i(the)f(sortfirst)e
7987 +(list)295 2374 y(-sortlast)g(xxx)303 b(add)43 b(a)g(regexp)e(to)i(the)f
7988 +(sortlast)e(list)295 2474 y(-sortnewfirst)299 b(list)42
7989 +b(new)h(before)e(changed)g(files)295 2574 y(-sshcmd)f(xxx)391
7990 +b(path)42 b(to)h(the)f(ssh)h(executable)295 2673 y(-statusdepth)38
7991 +b(n)261 b(status)42 b(display)e(depth)i(for)g(local)g(files)295
7992 +2773 y(-terse)607 b(suppress)41 b(status)g(messages)295
7993 +2873 y(-testserver)387 b(exit)42 b(immediately)d(after)j(the)g
7994 +(connection)e(to)i(the)h(server)295 2972 y(-times)607
7995 +b(synchronize)39 b(modification)g(times)295 3072 y(-ui)j(xxx)565
7996 +b(select)42 b(user)f(interface)f(\('text')h(or)i('graphic'\))295
7997 +3171 y(-version)519 b(print)42 b(version)f(and)h(exit)295
7998 +3271 y(-xferbycopying)255 b(optimize)41 b(transfers)f(using)h(local)h
7999 +(copies,)e(if)j(possible)0 3437 y Fn(Here,)32 b(in)f(more)g(detail,)h
8000 +(are)e(what)h(they)g(do.)48 b(Man)n(y)30 b(are)h(discussed)f(in)i(ev)n
8001 +(en)e(greater)g(detail)h(in)g(other)g(sections)g(of)g(the)0
8002 +3537 y(man)n(ual.)0 3703 y Fl(addprefsto)h Fk(xxx)40
8003 +b Fn(By)27 b(default,)g(new)g(preferences)f(added)h(b)n(y)f(Unison)h
8004 +(\(e.g.,)g(new)g Fk(ignore)d Fn(clauses\))i(will)i(b)r(e)f(app)r(ended)
8005 +208 3802 y(to)e(whatev)n(er)g(preference)g(\014le)h(Unison)g(w)n(as)f
8006 +(told)h(to)g(load)f(at)h(the)g(b)r(eginning)g(of)g(the)g(run.)36
8007 +b(Setting)27 b(the)f(preference)208 3902 y Fk(addprefsto)39
8008 +b Fb(filename)g Fn(mak)n(es)26 b(Unison)55 b(add)28 b(new)g
8009 +(preferences)e(to)i(the)g(\014le)f(named)h Fb(filename)39
8010 +b Fn(instead.)0 4068 y Fl(addv)m(ersionno)73 b Fn(When)31
8011 +b(this)f(\015ag)e(is)i(set)g(to)f Fk(true)p Fn(,)g(Unison)g(will)h(use)
8012 +g Fk(unison-)p Fb(currentv)o(ers)o(io)o(nnu)o(mb)o(er)38
8013 +b Fn(instead)29 b(of)208 4168 y(just)38 b Fk(unison)d
8014 +Fn(as)h(the)i(remote)f(serv)n(er)f(command.)66 b(This)37
8015 +b(allo)n(ws)f(m)n(ultiple)i(binaries)f(for)g(di\013eren)n(t)g(v)n
8016 +(ersions)f(of)208 4267 y(unison)d(to)g(co)r(exist)g(con)n(v)n(enien)n
8017 +(tly)g(on)g(the)h(same)f(serv)n(er:)47 b(whic)n(hev)n(er)32
8018 +b(v)n(ersion)g(is)h(run)h(on)f(the)h(clien)n(t,)h(the)f(same)208
8019 +4367 y(v)n(ersion)26 b(will)h(b)r(e)h(selected)g(on)f(the)h(serv)n(er.)
8020 +0 4533 y Fl(auto)74 b Fn(When)27 b(set)g(to)g Fk(true)p
8021 +Fn(,)f(this)h(\015ag)f(causes)g(the)i(user)e(in)n(terface)g(to)h(skip)g
8022 +(asking)f(for)g(con\014rmations)g(except)h(for)g(non-)208
8023 +4633 y(con\015icting)g(c)n(hanges.)35 b(\(More)27 b(precisely)-7
8024 +b(,)27 b(when)h(the)f(user)g(in)n(terface)g(is)h(done)f(setting)g(the)h
8025 +(propagation)e(direction)208 4732 y(for)35 b(one)h(en)n(try)f(and)h(is)
8026 +g(ab)r(out)g(to)g(mo)n(v)n(e)f(to)h(the)h(next,)h(it)f(will)f(skip)g(o)
8027 +n(v)n(er)f(all)g(non-con\015icting)h(en)n(tries)f(and)h(go)208
8028 +4832 y(directly)27 b(to)g(the)h(next)g(con\015ict.\))0
8029 +4998 y Fl(bac)m(kup)34 b Fk(xxx)40 b Fn(Including)d(the)g(preference)f
8030 +Fk(-backup)41 b Fb(pathspec)48 b Fn(causes)35 b(Unison)i(to)g(mak)n(e)f
8031 +(bac)n(k)g(up)h(for)f(eac)n(h)g(path)208 5098 y(that)28
8032 +b(matc)n(hes)g Fb(pathspec)11 b Fn(.)40 b(More)28 b(precisely)-7
8033 +b(,)28 b(for)g(eac)n(h)g(path)h(that)f(matc)n(hes)g(this)h
8034 +Fb(pathspec)11 b Fn(,)29 b(Unison)g(will)g(k)n(eep)208
8035 +5197 y(sev)n(eral)20 b(old)j(v)n(ersions)e(of)h(a)g(\014le)h(as)f(a)g
8036 +(bac)n(kup)g(whenev)n(er)g(a)g(c)n(hange)f(is)i(propagated.)33
8037 +b(These)22 b(bac)n(kup)g(\014les)h(are)f(left)h(in)208
8038 +5297 y(the)k(directory)f(sp)r(eci\014ed)i(b)n(y)f(the)g(en)n(vironmen)n
8039 +(t)g(v)-5 b(ariable)26 b Fk(UNISONBACKUPDIR)21 b Fn(\()p
8040 +Fk(.unison/backup/)g Fn(b)n(y)27 b(default\).)1908 5589
8041 +y(20)p eop
8042 +%%Page: 21 21
8043 +21 20 bop 208 83 a Fn(The)38 b(new)n(est)f(bac)n(k)n(ed)g(up)h(cop)n(y)
8044 +f(willha)n(v)n(e)g(the)h(same)g(name)f(as)h(the)g(original;)j(older)d
8045 +(v)n(ersions)e(will)i(b)r(e)g(named)208 183 y(with)31
8046 +b(extensions)f Fk(.n.unibck)p Fn(.)44 b(The)31 b(n)n(um)n(b)r(er)g(of)g
8047 +(v)n(ersions)e(that)i(are)f(k)n(ept)h(is)g(determined)g(b)n(y)g(the)g
8048 +Fk(maxbackups)208 282 y Fn(preference.)208 415 y(The)c(syn)n(tax)g(of)
8049 +34 b Fb(pathspec)39 b Fn(is)27 b(describ)r(ed)h(in)f(Section)h(5.11)e
8050 +([P)n(ath)h(Sp)r(eci\014cation].)0 581 y Fl(bac)m(kups)75
8051 +b Fn(When)28 b(this)g(\015ag)f(is)g Fk(true)p Fn(,)f(Unison)i(will)f(k)
8052 +n(eep)h(the)g(old)f(v)n(ersion)f(of)h(a)h(\014le)f(as)g(a)g(bac)n(kup)g
8053 +(whenev)n(er)g(a)g(c)n(hange)208 681 y(is)35 b(propagated.)58
8054 +b(These)35 b(bac)n(kup)g(\014les)g(are)f(left)i(in)g(the)f(same)g
8055 +(directory)-7 b(,)36 b(with)g(extension)f Fk(.bak)p Fn(.)58
8056 +b(This)36 b(\015ag)e(is)208 780 y(probably)26 b(less)h(useful)h(for)f
8057 +(most)h(users)e(than)i(the)56 b(t)28 b(bac)n(kup)f(\015ag.)0
8058 +946 y Fl(batc)m(h)75 b Fn(When)25 b(this)g(is)f(set)h(to)g
8059 +Fk(true)p Fn(,)e(the)i(user)f(in)n(terface)g(will)h(ask)f(no)h
8060 +(questions)f(at)g(all.)36 b(Non-con\015icting)24 b(c)n(hanges)f(will)
8061 +208 1046 y(b)r(e)28 b(propagated;)d(con\015icts)j(will)g(b)r(e)g(skipp)
8062 +r(ed.)0 1212 y Fl(con)m(tactquietly)75 b Fn(If)27 b(this)g(\015ag)f(is)
8063 +g(set,)h(Unison)f(will)h(skip)g(displa)n(ying)e(the)i(`Con)n(tacting)f
8064 +(serv)n(er')f(windo)n(w)h(\(whic)n(h)h(some)208 1312
8065 +y(users)f(\014nd)i(anno)n(ying\))f(during)g(startup.)0
8066 +1478 y Fl(debug)k Fk(xxx)41 b Fn(This)e(preference)f(is)h(used)g(to)g
8067 +(mak)n(e)f(Unison)h(prin)n(t)g(v)-5 b(arious)38 b(sorts)g(of)h
8068 +(information)g(ab)r(out)g(what)g(it)g(is)208 1577 y(doing)30
8069 +b(in)n(ternally)g(on)g(the)h(standard)f(error)f(stream.)46
8070 +b(It)31 b(can)f(b)r(e)i(used)e(man)n(y)h(times,)g(eac)n(h)f(time)i
8071 +(with)f(the)g(name)208 1677 y(of)j(a)g(mo)r(dule)g(for)g(whic)n(h)h
8072 +(debugging)e(information)h(should)g(b)r(e)g(prin)n(ted.)58
8073 +b(P)n(ossible)32 b(argumen)n(ts)h(for)h Fk(debug)e Fn(can)208
8074 +1777 y(b)r(e)h(found)h(b)n(y)f(lo)r(oking)f(for)h(calls)g(to)g
8075 +Fk(Util.debug)c Fn(in)34 b(the)g(sources)d(\(using,)k(e.g.,)g
8076 +Fk(grep)p Fn(\).)52 b(Setting)34 b Fk(-debug)41 b(all)208
8077 +1876 y Fn(causes)31 b(information)h(from)h Fi(al)t(l)h
8078 +Fn(mo)r(dules)e(to)h(b)r(e)g(prin)n(ted)g(\(this)g(mo)r(de)g(of)f
8079 +(usage)g(is)g(the)i(\014rst)e(one)g(to)h(try)-7 b(,)34
8080 +b(if)f(y)n(ou)208 1976 y(are)25 b(trying)i(to)g(understand)f(something)
8081 +g(that)i(Unison)e(seems)h(to)g(b)r(e)g(doing)f(wrong\);)g
8082 +Fk(-debug)42 b(verbose)24 b Fn(turns)i(on)208 2076 y(some)g(additional)
8083 +h(debugging)f(output)i(from)f(some)g(mo)r(dules)g(\(e.g.,)g(it)h(will)g
8084 +(sho)n(w)e(exactly)h(what)g(b)n(ytes)g(are)f(b)r(eing)208
8085 +2175 y(sen)n(t)h(across)f(the)i(net)n(w)n(ork\).)0 2341
8086 +y Fl(di\013)j Fk(xxx)40 b Fn(This)d(preference)f(can)g(b)r(e)h(used)f
8087 +(to)h(con)n(trol)e(the)i(name)g(\(and)f(command-line)g(argumen)n(ts\))g
8088 +(of)g(the)h(system)208 2441 y(utilit)n(y)e(used)g(to)g(generate)f
8089 +(displa)n(ys)g(of)h(\014le)g(di\013erences.)60 b(The)35
8090 +b(default)g(is)g(`)p Fk(diff)p Fn('.)58 b(The)35 b(di\013)h(program)d
8091 +(should)208 2540 y(exp)r(ect)27 b(t)n(w)n(o)g(\014le)h(names)f(as)g
8092 +(argumen)n(ts)0 2707 y Fl(do)s(c)32 b Fk(xxx)40 b Fn(The)24
8093 +b(command-line)g(argumen)n(t)f Fk(-doc)42 b Fb(secname)36
8094 +b Fn(causes)23 b(unison)h(to)g(displa)n(y)g(section)g
8095 +Fb(secname)36 b Fn(of)24 b(the)h(man-)208 2806 y(ual)h(on)h(the)g
8096 +(standard)f(output)h(and)g(then)g(exit.)37 b(Use)27 b
8097 +Fk(-doc)42 b(all)25 b Fn(to)i(displa)n(y)f(the)h(whole)g(man)n(ual,)f
8098 +(whic)n(h)h(includes)208 2906 y(exactly)18 b(the)i(same)f(information)g
8099 +(as)g(the)h(prin)n(ted)f(and)h(HTML)g(man)n(uals,)g(mo)r(dulo)f
8100 +(formatting.)34 b(Use)20 b Fk(-doc)41 b(topics)208 3005
8101 +y Fn(to)27 b(obtain)g(a)h(list)f(of)h(the)g(names)f(of)h(the)g(v)-5
8102 +b(arious)26 b(sections)h(that)h(can)f(b)r(e)h(prin)n(ted.)0
8103 +3171 y Fl(dum)m(btt)m(y)73 b Fn(When)33 b(set)g(to)f
8104 +Fk(true)p Fn(,)g(this)h(\015ag)f(mak)n(es)f(the)i(text)g(mo)r(de)f
8105 +(user)g(in)n(terface)g(a)n(v)n(oid)f(trying)h(to)g(c)n(hange)f(an)n(y)h
8106 +(of)208 3271 y(the)26 b(terminal)f(settings.)36 b(\(Normally)-7
8107 +b(,)26 b(Unison)g(puts)g(the)g(terminal)f(in)h(`ra)n(w)f(mo)r(de',)h
8108 +(so)g(that)g(it)g(can)f(do)h(things)f(lik)n(e)208 3371
8109 +y(o)n(v)n(erwriting)e(the)j(curren)n(t)e(line.\))37 b(This)25
8110 +b(is)h(useful,)g(for)f(example,)h(when)f(Unison)h(runs)f(in)h(a)f
8111 +(shell)g(inside)h(of)f(Emacs.)208 3504 y(When)j Fk(dumbtty)e
8112 +Fn(is)i(set,)g(commands)g(to)g(the)g(user)g(in)n(terface)f(need)i(to)f
8113 +(b)r(e)g(follo)n(w)n(ed)f(b)n(y)h(a)g(carriage)e(return)h(b)r(efore)208
8114 +3603 y(Unison)g(will)h(execute)f(them.)38 b(\(When)28
8115 +b(it)g(is)g(o\013,)f(Unison)h(recognizes)e(k)n(eystrok)n(es)f(as)i(so)r
8116 +(on)g(as)g(they)g(are)g(t)n(yp)r(ed.\))208 3736 y(This)g(preference)g
8117 +(has)g(no)g(e\013ect)h(on)g(the)g(graphical)e(user)h(in)n(terface.)0
8118 +3902 y Fl(editor)k Fk(xxx)41 b Fn(This)24 b(preference)h(is)f(used)h
8119 +(when)g(unison)g(w)n(an)n(ts)f(to)h(displa)n(y)f(the)h(output)h(of)f
8120 +(the)g(merge)f(program)f(when)i(its)208 4002 y(return)i(v)-5
8121 +b(alue)29 b(is)f(not)g(0.)39 b(User)28 b(c)n(hanges)e(the)j(\014le)g
8122 +(as)e(he)i(w)n(an)n(ts)e(and)h(then)h(sa)n(v)n(e)e(it,)i(unison)f(will)
8123 +g(tak)n(e)g(this)h(v)n(ersion)208 4101 y(for)e(the)h(sync)n
8124 +(hronisation.)34 b(By)28 b(default)g(the)g(v)-5 b(alue)27
8125 +b(is)h(`emacs'.)0 4267 y Fl(fastc)m(hec)m(k)34 b Fk(xxx)40
8126 +b Fn(When)d(this)f(preference)f(is)h(set)g(to)g Fk(true)p
8127 +Fn(,)h(Unison)f(will)g(use)g(\014le)g(creation)f(times)h(as)f(`pseudo)h
8128 +(ino)r(de)208 4367 y(n)n(um)n(b)r(ers')28 b(when)g(scanning)g(replicas)
8129 +g(for)g(up)r(dates,)h(instead)f(of)h(reading)e(the)i(full)g(con)n(ten)n
8130 +(ts)f(of)h(ev)n(ery)e(\014le.)40 b(Under)208 4467 y(Windo)n(ws,)26
8131 +b(this)h(ma)n(y)f(cause)g(Unison)g(to)h(miss)f(propagating)f(an)h(up)r
8132 +(date)h(if)g(the)g(create)f(time,)h(mo)r(di\014cation)g(time,)208
8133 +4566 y(and)e(length)g(of)h(the)g(\014le)f(are)g(all)g(unc)n(hanged)f(b)
8134 +n(y)h(the)h(up)r(date)g(\(this)g(is)f(not)h(easy)e(to)i(ac)n(hiev)n(e,)
8135 +e(but)i(it)g(can)f(b)r(e)h(done\).)208 4666 y(Ho)n(w)n(ev)n(er,)32
8136 +b(Unison)i(will)f(nev)n(er)f Fi(overwrite)j Fn(suc)n(h)e(an)g(up)r
8137 +(date)h(with)f(a)g(c)n(hange)f(from)h(the)h(other)f(replica,)h(since)f
8138 +(it)208 4765 y(alw)n(a)n(ys)c(do)r(es)i(a)f(safe)h(c)n(hec)n(k)f(for)h
8139 +(up)r(dates)h(just)f(b)r(efore)g(propagating)e(a)i(c)n(hange.)46
8140 +b(Th)n(us,)32 b(it)g(is)f(reasonable)e(to)i(use)208 4865
8141 +y(this)j(switc)n(h)f(under)h(Windo)n(ws)f(most)h(of)g(the)g(time)g(and)
8142 +g(o)r(ccasionally)e(run)i(Unison)f(once)h(with)g Fk(fastcheck)c
8143 +Fn(set)208 4965 y(to)j Fk(false)p Fn(,)g(if)g(y)n(ou)g(are)f(w)n
8144 +(orried)g(that)i(Unison)f(ma)n(y)g(ha)n(v)n(e)f(o)n(v)n(erlo)r(ok)n(ed)
8145 +e(an)j(up)r(date.)55 b(The)33 b(default)h(v)-5 b(alue)33
8146 +b(of)h(the)208 5064 y(preference)e(is)g Fk(auto)p Fn(,)h(whic)n(h)g
8147 +(causes)f(Unison)g(to)h(use)g(fast)g(c)n(hec)n(king)e(on)i(Unix)g
8148 +(replicas)f(\(where)g(it)i(is)f(safe\))f(and)208 5164
8149 +y(slo)n(w)25 b(c)n(hec)n(king)g(on)i(Windo)n(ws)f(replicas.)35
8150 +b(F)-7 b(or)26 b(bac)n(kw)n(ard)f(compatibilit)n(y)-7
8151 +b(,)26 b Fk(yes)p Fn(,)g Fk(no)p Fn(,)g(and)g Fk(default)e
8152 +Fn(can)i(b)r(e)h(used)g(in)208 5264 y(place)g(of)g Fk(true)p
8153 +Fn(,)f Fk(false)p Fn(,)g(and)h Fk(auto)p Fn(.)36 b(See)27
8154 +b(Section)h(5.17)e([F)-7 b(ast)28 b(Chec)n(king])f(for)g(more)f
8155 +(information.)1908 5589 y(21)p eop
8156 +%%Page: 22 22
8157 +22 21 bop 0 83 a Fl(follo)m(w)31 b Fk(xxx)40 b Fn(Including)d(the)h
8158 +(preference)e Fk(-follow)41 b Fb(pathspec)48 b Fn(causes)36
8159 +b(Unison)h(to)g(treat)f(sym)n(b)r(olic)h(links)g(matc)n(hing)208
8160 +183 y Fb(pathspec)e Fn(as)23 b(`in)n(visible')h(and)g(b)r(eha)n(v)n(e)f
8161 +(as)g(if)i(the)f(ob)5 b(ject)24 b(p)r(oin)n(ted)g(to)g(b)n(y)f(the)i
8162 +(link)f(had)g(app)r(eared)f(literally)g(at)h(this)208
8163 +282 y(p)r(osition)29 b(in)g(the)h(replica.)41 b(See)30
8164 +b(Section)f(5.13)f([Sym)n(b)r(olic)i(Links])f(for)g(more)f(details.)42
8165 +b(The)29 b(syn)n(tax)g(of)36 b Fb(pathspec>)208 382 y
8166 +Fn(is)27 b(describ)r(ed)g(in)h(Section)g(5.11)e([P)n(ath)h(Sp)r
8167 +(eci\014cation].)0 548 y Fl(force)32 b Fk(xxx)41 b Fn(Including)18
8168 +b(the)h(preference)e Fk(-force)41 b Fb(root)32 b Fn(causes)17
8169 +b(Unison)h(to)h(resolv)n(e)d(all)i(di\013erences)g(\(ev)n(en)g
8170 +(non-con\015icting)208 648 y(c)n(hanges\))k(in)i(fa)n(v)n(or)e(of)30
8171 +b Fb(root)13 b Fn(.)36 b(This)23 b(e\013ectiv)n(ely)h(c)n(hanges)e
8172 +(Unison)i(from)f(a)g(sync)n(hronizer)f(in)n(to)h(a)h(mirroring)d
8173 +(utilit)n(y)-7 b(.)208 780 y(Y)g(ou)23 b(can)h(also)e(sp)r(ecify)i
8174 +Fk(-force)42 b(newer)21 b Fn(\(or)j Fk(-force)41 b(older)p
8175 +Fn(\))22 b(to)h(force)g(Unison)h(to)g(c)n(ho)r(ose)e(the)i(\014le)g
8176 +(with)h(the)f(later)208 880 y(\(earlier\))i(mo)r(dtime.)38
8177 +b(In)28 b(this)f(case,)g(the)h Fk(-times)d Fn(preference)i(m)n(ust)h
8178 +(also)e(b)r(e)i(enabled.)208 1013 y(This)f(preference)g(should)g(b)r(e)
8179 +h(used)g(only)f(if)h(y)n(ou)f(are)g Fi(sur)l(e)g Fn(y)n(ou)g(kno)n(w)f
8180 +(what)i(y)n(ou)f(are)f(doing!)0 1179 y Fl(group)73 b
8181 +Fn(When)26 b(this)f(\015ag)g(is)g(set)g(to)g Fk(true)p
8182 +Fn(,)f(the)h(group)f(attributes)h(of)g(the)h(\014les)f(are)f(sync)n
8183 +(hronized.)34 b(Whether)26 b(the)f(group)208 1279 y(names)i(or)f(the)i
8184 +(group)f(iden)n(ti\014ers)g(are)g(sync)n(hronizeddep)r(ends)f(on)i(the)
8185 +f(preference)g Fk(numerids)p Fn(.)0 1445 y Fl(heigh)m(t)k
8186 +Fk(n)85 b Fn(Used)28 b(to)f(set)h(the)g(heigh)n(t)f(\(in)h(lines\))g
8187 +(of)g(the)g(main)f(windo)n(w)g(in)h(the)g(graphical)e(user)h(in)n
8188 +(terface.)0 1611 y Fl(ignore)k Fk(xxx)40 b Fn(Including)f(the)g
8189 +(preference)g Fk(-ignore)h Fb(pathspec)50 b Fn(causes)38
8190 +b(Unison)h(to)g(completely)f(ignore)g(paths)h(that)208
8191 +1710 y(matc)n(h)27 b Fb(pathspec)40 b Fn(\(as)28 b(w)n(ell)f(as)h
8192 +(their)g(c)n(hildren\).)38 b(This)28 b(is)g(useful)h(for)f(a)n(v)n
8193 +(oiding)e(sync)n(hronizing)g(temp)r(orary)h(\014les,)208
8194 +1810 y(ob)5 b(ject)25 b(\014les,)h(etc.)36 b(The)26 b(syn)n(tax)f(of)32
8195 +b Fb(pathspec)37 b Fn(is)25 b(describ)r(ed)h(in)g(Section)f(5.11)g([P)n
8196 +(ath)g(Sp)r(eci\014cation],)h(and)f(further)208 1910
8197 +y(details)i(on)g(ignoring)f(paths)i(is)f(found)h(in)g(Section)g(5.12)e
8198 +([Ignoring)g(P)n(aths].)0 2076 y Fl(ignorecase)73 b Fn(When)29
8199 +b(set)f(to)g Fk(true)p Fn(,)f(this)i(\015ag)f(causes)f(Unison)h(to)g
8200 +(use)h(the)f(Windo)n(ws)g(seman)n(tics)g(for)g(capitalization)f(of)208
8201 +2175 y(\014lenames|i.e.,)36 b(\014les)f(in)g(the)g(t)n(w)n(o)f
8202 +(replicas)f(whose)h(names)h(di\013er)g(in)g(\(upp)r(er-)f(and)h(lo)n(w)
8203 +n(er-case\))d(`sp)r(elling')j(are)208 2275 y(treated)29
8204 +b(as)f(the)i(same)f(\014le.)43 b(This)29 b(\015ag)g(is)g(set)h
8205 +(automatically)e(when)i(either)f(host)g(is)h(running)f(Windo)n(ws.)42
8206 +b(In)30 b(rare)208 2374 y(circumstances)d(it)i(is)g(also)f(useful)h(to)
8207 +g(set)f(it)i(man)n(ually)d(\(e.g.)41 b(when)29 b(running)f(Unison)h(on)
8208 +f(a)h(Unix)g(system)f(with)h(a)208 2474 y(F)-9 b(A)i(T)28
8209 +b([Windo)n(ws])f(v)n(olume)g(moun)n(ted\).)0 2640 y Fl(ignorenot)k
8210 +Fk(xxx)40 b Fn(This)c(preference)f(o)n(v)n(errides)e(the)j(preference)f
8211 +Fk(ignore)p Fn(.)59 b(It)36 b(giv)n(es)f(a)g(list)h(of)g(patterns)f
8212 +(\(in)i(the)f(same)208 2740 y(format)f(as)h Fk(ignore)p
8213 +Fn(\))e(for)i(paths)h(that)f(should)g(de\014nitely)h
8214 +Fi(not)f Fn(b)r(e)h(ignored,)h(whether)e(or)g(not)g(they)h(happ)r(en)f
8215 +(to)208 2839 y(matc)n(h)27 b(one)g(of)h(the)g Fk(ignore)d
8216 +Fn(patterns.)208 2972 y(Note)39 b(that)g(the)g(seman)n(tics)g(of)78
8217 +b(t)39 b(ignore)f(and)h Fk(ignorenot)c Fn(is)k(a)g(little)g(coun)n
8218 +(ter-in)n(tuitiv)n(e.)70 b(When)40 b(detecting)208 3072
8219 +y(up)r(dates,)22 b(Unison)f(examines)g(paths)g(in)g(depth-\014rst)g
8220 +(order,)g(starting)f(from)h(the)g(ro)r(ots)f(of)h(the)h(replicas)e(and)
8221 +h(w)n(orking)208 3171 y(do)n(wn)n(w)n(ards.)43 b(Before)29
8222 +b(examining)h(eac)n(h)g(path,)h(it)g(c)n(hec)n(ks)e(whether)h(it)h
8223 +(matc)n(hes)61 b(t)30 b(ignore)g(and)g(do)r(es)g(not)g(matc)n(h)208
8224 +3271 y(t)j(ignorenot;)i(in)e(this)h(case)e(it)h(skips)g(this)h(path)f
8225 +Fi(and)i(al)t(l)h(its)f(desc)l(endants)p Fn(.)54 b(This)33
8226 +b(means)g(that,)i(if)e(some)g(paren)n(t)208 3371 y(of)28
8227 +b(a)g(giv)n(en)g(path)g(matc)n(hes)g(an)g Fk(ignore)e
8228 +Fn(pattern,)j(then)f(it)h(will)g(b)r(e)g(skipp)r(ed)f(ev)n(en)g(if)h
8229 +(the)g(path)g(itself)g(matc)n(hes)e(an)208 3470 y Fk(ignorenot)17
8230 +b Fn(pattern.)35 b(In)22 b(particular,)f(putting)i Fk(ignore)41
8231 +b(=)i(Path)f(*)21 b Fn(in)h(y)n(our)e(pro\014le)h(and)h(then)g(using)43
8232 +b(t)21 b(ignorenot)208 3570 y(to)g(select)h(particular)f(paths)h(to)f
8233 +(b)r(e)i(sync)n(hronized)d(will)i(not)g(w)n(ork.)34 b(Instead,)23
8234 +b(y)n(ou)e(should)g(use)h(the)h Fk(path)d Fn(preference)208
8235 +3670 y(to)27 b(c)n(ho)r(ose)f(particular)h(paths)g(to)h(sync)n
8236 +(hronize.)0 3836 y Fl(k)m(ey)33 b Fk(xxx)40 b Fn(Used)29
8237 +b(in)g(a)g(pro\014le)f(to)h(de\014ne)h(a)e(n)n(umeric)h(k)n(ey)f
8238 +(\(0-9\))h(that)g(can)g(b)r(e)g(used)g(in)h(the)f(graphical)e(user)i
8239 +(in)n(terface)f(to)208 3935 y(switc)n(h)f(immediately)h(to)f(this)h
8240 +(pro\014le.)0 4101 y Fl(killserv)m(er)73 b Fn(When)30
8241 +b(set)g(to)g Fk(true)p Fn(,)f(this)h(\015ag)f(causes)g(Unison)h(to)f
8242 +(kill)h(the)h(remote)e(serv)n(er)f(pro)r(cess)h(when)h(the)g(sync)n
8243 +(hro-)208 4201 y(nization)24 b(is)g(\014nished.)36 b(This)25
8244 +b(b)r(eha)n(vior)e(is)h(the)h(default)g(for)f Fk(ssh)f
8245 +Fn(connections,)h(so)g(this)h(preference)e(is)i(not)f(normally)208
8246 +4301 y(needed)f(when)g(running)f(o)n(v)n(er)g Fk(ssh)p
8247 +Fn(;)h(it)g(is)g(pro)n(vided)f(so)h(that)g(so)r(c)n(k)n(et-mo)r(de)e
8248 +(serv)n(ers)g(can)i(b)r(e)g(killed)g(o\013)g(after)g(a)g(single)208
8249 +4400 y(run)k(of)h(Unison,)f(rather)g(than)h(w)n(aiting)e(to)i(accept)f
8250 +(future)h(connections.)36 b(\(Some)28 b(users)f(prefer)g(to)g(start)g
8251 +(a)h(remote)208 4500 y(so)r(c)n(k)n(et)e(serv)n(er)g(for)h(eac)n(h)g
8252 +(run)g(of)h(Unison,)f(rather)g(than)h(lea)n(ving)e(one)h(running)g(all)
8253 +h(the)g(time.\))0 4666 y Fl(lab)s(el)j Fk(xxx)40 b Fn(Used)25
8254 +b(in)g(a)f(pro\014le)g(to)h(pro)n(vide)e(a)h(descriptiv)n(e)g(string)g
8255 +(do)r(cumen)n(ting)h(its)g(settings.)35 b(\(This)25 b(is)g(useful)g
8256 +(for)f(users)208 4765 y(that)37 b(switc)n(h)f(b)r(et)n(w)n(een)h(sev)n
8257 +(eral)e(pro\014les,)j(esp)r(ecially)f(using)f(the)h(`fast)g(switc)n(h')
8258 +g(feature)g(of)f(the)h(graphical)f(user)208 4865 y(in)n(terface.\))0
8259 +5031 y Fl(log)72 b Fn(When)28 b(this)g(\015ag)f(is)h(set,)f(Unison)h
8260 +(will)g(log)e(all)i(c)n(hanges)e(to)h(the)h(\014lesystems)g(on)f(a)g
8261 +(\014le.)0 5197 y Fl(log\014le)j Fk(xxx)40 b Fn(By)26
8262 +b(default,)h(logging)d(messages)h(will)h(b)r(e)g(app)r(ended)g(to)g
8263 +(the)h(\014le)f Fk(unison.log)c Fn(in)k(y)n(our)f(HOME)g(directory)-7
8264 +b(.)208 5297 y(Set)28 b(this)f(preference)g(if)h(y)n(ou)f(prefer)g
8265 +(another)g(\014le.)1908 5589 y(22)p eop
8266 +%%Page: 23 23
8267 +23 22 bop 0 83 a Fl(maxbac)m(kups)33 b Fk(n)84 b Fn(This)31
8268 +b(preference)f(sp)r(eci\014es)h(the)h(n)n(um)n(b)r(er)e(of)h(bac)n(kup)
8269 +f(v)n(ersions)g(that)h(will)g(b)r(e)g(k)n(ept)g(b)n(y)g(unison,)h(for)
8270 +208 183 y(eac)n(h)26 b(path)i(that)g(matc)n(hes)f(the)h(predicate)f
8271 +Fk(backup)p Fn(.)34 b(The)28 b(default)g(is)g(2.)0 347
8272 +y Fl(merge)i Fk(xxx)40 b Fn(This)28 b(preference)e(can)h(b)r(e)h(used)g
8273 +(to)f(run)g(a)g(merge)g(program)e(whic)n(h)j(will)g(create)e(a)h(new)h
8274 +(v)n(ersion)e(of)h(the)h(\014le)208 447 y(with)d(the)h(last)f(bac)n
8275 +(kup)g(and)g(the)h(b)r(oth)f(replicas.)35 b(This)26 b(new)f(v)n(ersion)
8276 +f(will)h(b)r(e)h(used)f(for)g(the)h(sync)n(hronization.)34
8277 +b(See)208 546 y(Section)27 b(5.8)g([Merging)f(Con\015icting)i(V)-7
8278 +b(ersions])26 b(for)h(further)h(detail.)0 711 y Fl(merge2)i
8279 +Fk(xxx)40 b Fn(This)25 b(preference)f(can)g(b)r(e)h(used)g(to)g(run)g
8280 +(a)f(merge)g(program)f(whic)n(h)h(will)h(create)f(a)h(new)g(v)n(ersion)
8281 +e(of)i(the)g(\014le)208 810 y(with)g(the)h(last)f(bac)n(kup)g(and)g
8282 +(the)h(b)r(oth)f(replicas.)35 b(This)26 b(new)f(v)n(ersion)f(will)h(b)r
8283 +(e)h(used)f(for)g(the)h(sync)n(hronization.)34 b(See)208
8284 +910 y(Section)27 b(5.8)g([Merging)f(Con\015icting)i(V)-7
8285 +b(ersions])26 b(for)h(further)h(detail.)0 1074 y Fl(n)m(umericids)72
8286 +b Fn(When)28 b(this)h(\015ag)e(is)h(set)g(to)g Fk(true)p
8287 +Fn(,)f(groups)g(and)h(users)f(are)g(sync)n(hronized)g(n)n(umerically)-7
8288 +b(,)27 b(rather)g(than)h(b)n(y)208 1174 y(name.)208 1306
8289 +y(The)20 b(sp)r(ecial)h(uid)f(0)h(and)f(the)h(sp)r(ecial)f(group)g(0)g
8290 +(are)g(nev)n(er)f(mapp)r(ed)i(via)f(user/group)f(names)h(ev)n(en)g(if)h
8291 +(this)g(preference)208 1405 y(is)27 b(not)h(set.)0 1570
8292 +y Fl(o)m(wner)73 b Fn(When)25 b(this)f(\015ag)f(is)g(set)h(to)f
8293 +Fk(true)p Fn(,)g(the)h(o)n(wner)f(attributes)g(of)h(the)g(\014les)f
8294 +(are)g(sync)n(hronized.)34 b(Whether)24 b(the)g(o)n(wner)208
8295 +1669 y(names)j(or)f(the)i(o)n(wner)f(iden)n(ti\014ers)g(are)g(sync)n
8296 +(hronizeddep)r(ends)f(on)h(the)h(preference)f(extttn)n(umerids.)0
8297 +1834 y Fl(path)32 b Fk(xxx)41 b Fn(When)35 b(no)g Fk(path)f
8298 +Fn(preference)g(is)h(giv)n(en,)h(Unison)f(will)h(simply)f(sync)n
8299 +(hronize)f(the)h(t)n(w)n(o)f(en)n(tire)h(replicas,)h(b)r(e-)208
8300 +1933 y(ginning)g(from)h(the)g(giv)n(en)g(pair)f(of)h(ro)r(ots.)64
8301 +b(If)38 b(one)f(or)f(more)g Fk(path)f Fn(preferences)i(are)f(giv)n(en,)
8302 +i(then)g(Unison)f(will)208 2033 y(sync)n(hronize)e(only)h(these)h
8303 +(paths)g(and)f(their)h(c)n(hildren.)64 b(\(This)37 b(is)g(useful)g(for)
8304 +g(doing)f(a)g(fast)h(sync)n(h)f(of)h(just)g(one)208 2133
8305 +y(directory)-7 b(,)41 b(for)e(example.\))74 b(Note)40
8306 +b(that)g Fk(path)e Fn(preferences)h(are)f(in)n(tepreted)i
8307 +(literally|they)f(are)g(not)h(regular)208 2232 y(expressions.)0
8308 +2396 y Fl(p)s(erms)30 b Fk(n)85 b Fn(The)32 b(in)n(teger)g(v)-5
8309 +b(alue)33 b(of)f(this)i(preference)d(is)i(a)f(mask)h(indicating)f(whic)
8310 +n(h)h(p)r(ermission)f(bits)h(should)f(b)r(e)i(syn-)208
8311 +2496 y(c)n(hronized.)57 b(It)35 b(is)g(set)g(b)n(y)f(default)i(to)e(0)p
8312 +Fa(o)p Fn(1777:)50 b(all)34 b(bits)h(but)h(the)f(set-uid)g(and)f
8313 +(set-gid)h(bits)g(are)f(sync)n(hronised)208 2596 y(\(sync)n(hronizing)
8314 +23 b(theses)h(latter)g(bits)h(can)f(b)r(e)h(a)f(securit)n(y)f
8315 +(hazard\).)35 b(If)25 b(y)n(ou)f(w)n(an)n(t)g(to)g(sync)n(hronize)f
8316 +(all)h(bits,)i(y)n(ou)d(can)208 2695 y(set)k(the)h(v)-5
8317 +b(alue)28 b(of)f(this)h(preference)f(to)g Fj(\000)p Fn(1.)0
8318 +2860 y Fl(prefer)32 b Fk(xxx)40 b Fn(Including)d(the)g(preference)f
8319 +Fk(-prefer)41 b Fb(root)49 b Fn(causes)36 b(Unison)h(alw)n(a)n(ys)d(to)
8320 +j(resolv)n(e)e(con\015icts)h(in)h(fa)n(v)n(or)e(of)208
8321 +2959 y Fb(root)12 b Fn(,)27 b(rather)d(than)i(asking)f(for)g(guidance)g
8322 +(from)g(the)h(user.)36 b(\(The)26 b(syn)n(tax)f(of)32
8323 +b Fb(root)38 b Fn(is)26 b(the)g(same)f(as)g(for)h(the)g
8324 +Fk(root)208 3059 y Fn(preference,)g(plus)i(the)g(sp)r(ecial)f(v)-5
8325 +b(alues)28 b Fk(newer)d Fn(and)j Fk(older)p Fn(.\))208
8326 +3191 y(This)f(preference)g(should)g(b)r(e)h(used)g(only)f(if)h(y)n(ou)f
8327 +(are)g Fi(sur)l(e)g Fn(y)n(ou)g(kno)n(w)f(what)i(y)n(ou)f(are)f(doing!)
8328 +0 3355 y Fl(ro)s(ot)31 b Fk(xxx)41 b Fn(Eac)n(h)20 b(use)h(of)g(this)g
8329 +(preference)f(names)h(the)h(ro)r(ot)e(of)h(one)g(of)g(the)g(replicas)f
8330 +(for)h(Unison)g(to)g(sync)n(hronize.)33 b(Exactly)208
8331 +3455 y(t)n(w)n(o)24 b(ro)r(ots)g(are)h(needed,)h(so)e(normal)h(mo)r
8332 +(des)g(of)g(usage)f(are)h(either)g(to)g(giv)n(e)f(t)n(w)n(o)h(v)-5
8333 +b(alues)25 b(for)g Fk(root)f Fn(in)h(the)h(pro\014le,)f(or)208
8334 +3554 y(to)30 b(giv)n(e)g(no)g(v)-5 b(alues)30 b(in)h(the)g(pro\014le)f
8335 +(and)h(pro)n(vide)e(t)n(w)n(o)h(on)g(the)h(command)f(line.)47
8336 +b(Details)30 b(of)h(the)g(syn)n(tax)f(of)g(ro)r(ots)208
8337 +3654 y(can)d(b)r(e)h(found)g(in)g(Section)f(4.1)g([Ro)r(ots].)208
8338 +3786 y(The)h(t)n(w)n(o)g(ro)r(ots)f(can)i(b)r(e)g(giv)n(en)e(in)i
8339 +(either)g(order;)e(Unison)i(will)g(sort)e(them)i(in)n(to)g(a)f
8340 +(canonical)f(order)g(b)r(efore)i(doing)208 3886 y(an)n(ything)k(else.)
8341 +55 b(It)34 b(also)e(tries)i(to)f(`canonize')g(the)i(mac)n(hine)e(names)
8342 +g(and)h(paths)f(that)h(app)r(ear)f(in)h(the)g(ro)r(ots,)h(so)208
8343 +3985 y(that,)25 b(if)f(Unison)h(is)f(in)n(v)n(ok)n(ed)e(later)i(with)g
8344 +(a)g(sligh)n(tly)g(di\013eren)n(t)g(name)g(for)g(the)g(same)g(ro)r(ot,)
8345 +g(it)h(will)f(b)r(e)h(able)e(to)i(lo)r(cate)208 4085
8346 +y(the)j(correct)e(arc)n(hiv)n(es.)0 4249 y Fl(ro)s(otalias)31
8347 +b Fk(xxx)40 b Fn(When)28 b(calculating)e(the)h(name)g(of)f(the)i(arc)n
8348 +(hiv)n(e)d(\014les)i(for)f(a)g(giv)n(en)g(pair)h(of)f(ro)r(ots,)g
8349 +(Unison)h(replaces)f(an)n(y)208 4349 y(ro)r(ots)g(matc)n(hing)h(the)h
8350 +(left-hand)g(side)g(of)f(an)n(y)g(ro)r(otalias)f(rule)h(b)n(y)g(the)h
8351 +(corresp)r(onding)e(righ)n(t-hand)g(side.)0 4513 y Fl(rshargs)32
8352 +b Fk(xxx)40 b Fn(The)33 b(string)g(v)-5 b(alue)33 b(of)g(this)h
8353 +(preference)e(will)h(b)r(e)h(passed)e(as)h(additional)f(argumen)n(ts)g
8354 +(\(b)r(esides)i(the)f(host)208 4613 y(name)26 b(and)f(the)i(name)f(of)g
8355 +(the)h(Unison)f(executable)f(on)h(the)h(remote)e(system\))i(to)f(the)g
8356 +Fk(ssh)f Fn(or)g Fk(rsh)g Fn(command)h(used)208 4712
8357 +y(to)32 b(in)n(v)n(ok)n(e)f(the)h(remote)g(serv)n(er.)50
8358 +b(\(This)32 b(option)g(is)h(used)f(for)g(passing)f(argumen)n(ts)g(to)i
8359 +(b)r(oth)f Fk(rsh)g Fn(or)f Fk(ssh)p Fn(|that's)208 4812
8360 +y(wh)n(y)c(its)h(name)f(is)g Fk(rshargs)e Fn(rather)i(than)g
8361 +Fk(sshargs)p Fn(.\))0 4976 y Fl(rshcmd)k Fk(xxx)40 b
8362 +Fn(This)26 b(preference)f(can)g(b)r(e)i(used)f(to)f(explicitly)h(set)g
8363 +(the)g(name)g(of)g(the)g(rsh)f(executable)h(\(e.g.,)g(giving)f(a)g
8364 +(full)208 5076 y(path)i(name\),)h(if)g(necessary)-7 b(.)0
8365 +5240 y Fl(serv)m(ercmd)31 b Fk(xxx)41 b Fn(This)35 b(preference)g(can)g
8366 +(b)r(e)h(used)g(to)f(explicitly)h(set)f(the)h(name)f(of)h(the)g(Unison)
8367 +f(executable)g(on)h(the)208 5340 y(remote)27 b(serv)n(er)e(\(e.g.,)j
8368 +(giving)f(a)g(full)h(path)g(name\),)g(if)g(necessary)-7
8369 +b(.)1908 5589 y(23)p eop
8370 +%%Page: 24 24
8371 +24 23 bop 0 83 a Fl(silen)m(t)72 b Fn(When)25 b(this)g(preference)f(is)
8372 +h(set)f(to)h Fk(true)p Fn(,)e(the)i(textual)g(user)f(in)n(terface)g
8373 +(will)h(prin)n(t)f(nothing)h(at)f(all,)h(except)g(in)g(the)208
8374 +183 y(case)h(of)i(errors.)35 b(Setting)29 b Fk(silent)c
8375 +Fn(to)i(true)h(automatically)e(sets)i(the)g Fk(batch)d
8376 +Fn(preference)i(to)h Fk(true)p Fn(.)0 349 y Fl(sortb)m(ysize)73
8377 +b Fn(When)25 b(this)f(\015ag)f(is)g(set,)i(the)f(user)f(in)n(terface)g
8378 +(will)h(list)g(c)n(hanged)f(\014les)g(b)n(y)h(size)f(\(smallest)h
8379 +(\014rst\))f(rather)g(than)208 448 y(b)n(y)j(name.)37
8380 +b(This)26 b(is)h(useful,)h(for)e(example,)h(for)f(sync)n(hronizing)f(o)
8381 +n(v)n(er)g(slo)n(w)h(links,)h(since)g(it)g(puts)g(v)n(ery)f(large)f
8382 +(\014les)i(at)208 548 y(the)h(end)f(of)h(the)g(list)g(where)f(they)h
8383 +(will)f(not)h(prev)n(en)n(t)f(smaller)f(\014les)i(from)f(b)r(eing)h
8384 +(transferred)e(quic)n(kly)-7 b(.)208 681 y(This)24 b(preference)f(\(as)
8385 +h(w)n(ell)g(as)f(the)i(other)e(sorting)g(\015ags,)h(but)h(not)f(the)h
8386 +(sorting)e(preferences)g(that)h(require)g(patterns)208
8387 +780 y(as)34 b(argumen)n(ts\))g(can)h(b)r(e)g(set)g(in)n(teractiv)n(ely)
8388 +f(and)h(temp)r(orarily)f(using)g(the)i('Sort')e(men)n(u)i(in)f(the)g
8389 +(graphical)f(user)208 880 y(in)n(terface.)0 1046 y Fl(sort\014rst)e
8390 +Fk(xxx)40 b Fn(Eac)n(h)32 b(argumen)n(t)g(to)h Fk(sortfirst)d
8391 +Fn(is)j(a)g(pattern)g Fb(pathspec)11 b Fn(,)35 b(whic)n(h)e(describ)r
8392 +(es)g(a)g(set)g(of)g(paths.)54 b(Files)208 1146 y(matc)n(hing)32
8393 +b(an)n(y)h(of)g(these)g(patterns)g(will)g(b)r(e)h(listed)f(\014rst)g
8394 +(in)h(the)f(user)g(in)n(terface.)53 b(The)33 b(syn)n(tax)f(of)40
8395 +b Fb(pathspec)k Fn(is)208 1245 y(describ)r(ed)27 b(in)h(Section)f(5.11)
8396 +g([P)n(ath)f(Sp)r(eci\014cation].)0 1411 y Fl(sortlast)31
8397 +b Fk(xxx)41 b Fn(Similar)33 b(to)g Fk(sortfirst)p Fn(,)f(except)h(that)
8398 +h(\014les)f(matc)n(hing)g(one)h(of)f(these)h(patterns)f(will)h(b)r(e)f
8399 +(listed)h(at)g(the)208 1511 y(v)n(ery)26 b(end.)0 1677
8400 +y Fl(sortnew\014rst)73 b Fn(When)33 b(this)f(\015ag)f(is)h(set,)h(the)f
8401 +(user)g(in)n(terface)f(will)h(list)h(newly)e(created)h(\014les)g(b)r
8402 +(efore)f(all)h(others.)49 b(This)208 1777 y(is)34 b(useful,)i(for)e
8403 +(example,)i(for)e(c)n(hec)n(king)f(that)h(newly)h(created)e(\014les)i
8404 +(are)e(not)h(`junk',)j(i.e.,)f(ones)e(that)h(should)f(b)r(e)208
8405 +1876 y(ignored)26 b(or)h(deleted)h(rather)e(than)i(sync)n(hronized.)0
8406 +2042 y Fl(sshcmd)i Fk(xxx)40 b Fn(This)26 b(preference)g(can)f(b)r(e)h
8407 +(used)g(to)g(explicitly)g(set)g(the)g(name)g(of)g(the)g(ssh)g
8408 +(executable)g(\(e.g.,)g(giving)f(a)g(full)208 2142 y(path)i(name\),)h
8409 +(if)g(necessary)-7 b(.)0 2308 y Fl(ssh)m(v)m(ersion)31
8410 +b Fk(xxx)41 b Fn(This)31 b(preference)f(can)h(b)r(e)g(used)g(to)g(con)n
8411 +(trol)f(whic)n(h)h(v)n(ersion)e(of)i(ssh)g(should)g(b)r(e)g(used)g(to)g
8412 +(connect)g(to)208 2408 y(the)c(serv)n(er.)35 b(Legal)26
8413 +b(v)-5 b(alues)26 b(are)g(1)h(and)f(2,)h(whic)n(h)g(will)g(cause)f
8414 +(unison)h(to)g(try)f(to)h(use)g Fk(ssh1)e Fn(or)p Fk(ssh2)g
8415 +Fn(instead)i(of)f(just)208 2507 y Fk(ssh)i Fn(to)i(in)n(v)n(ok)n(e)e
8416 +(ssh.)43 b(The)29 b(default)i(v)-5 b(alue)29 b(is)h(empt)n(y)-7
8417 +b(,)30 b(whic)n(h)g(will)g(mak)n(e)f(unison)g(use)h(whatev)n(er)e(v)n
8418 +(ersion)g(of)i(ssh)f(is)208 2607 y(installed)e(as)g(the)h(default)g
8419 +(`ssh')f(command.)0 2773 y Fl(statusdepth)32 b Fk(n)85
8420 +b Fn(This)28 b(preference)g(suppresses)g(the)h(displa)n(y)f(of)g
8421 +(status)h(messages)e(during)h(up)r(date)h(detection)g(on)g(the)208
8422 +2873 y(lo)r(cal)g(mac)n(hine)g(for)h(paths)f(deep)r(er)h(than)g(the)g
8423 +(sp)r(eci\014ed)h(cuto\013.)44 b(\(Displa)n(ying)29 b(to)r(o)h(man)n(y)
8424 +f(lo)r(cal)g(status)h(messages)208 2972 y(can)d(slo)n(w)f(do)n(wn)h(up)
8425 +r(date)i(detection)e(somewhat.\))0 3138 y Fl(terse)73
8426 +b Fn(When)28 b(this)g(preference)f(is)g(set)h(to)f Fk(true)p
8427 +Fn(,)f(the)i(user)f(in)n(terface)g(will)h(not)g(prin)n(t)f(status)h
8428 +(messages.)0 3304 y Fl(testserv)m(er)74 b Fn(Setting)23
8429 +b(this)g(\015ag)g(on)f(the)i(command)e(line)i(causes)e(Unison)h(to)g
8430 +(attempt)g(to)g(connect)g(to)g(the)g(remote)g(serv)n(er)208
8431 +3404 y(and,)31 b(if)g(successful,)g(prin)n(t)f(a)g(message)f(and)h
8432 +(immediately)h(exit.)45 b(Useful)31 b(for)f(debugging)g(installation)g
8433 +(problems.)208 3504 y(Should)d(not)h(b)r(e)g(set)f(in)h(preference)f
8434 +(\014les.)0 3670 y Fl(times)71 b Fn(When)28 b(this)g(\015ag)f(is)g(set)
8435 +h(to)f Fk(true)p Fn(,)f(\014le)i(mo)r(di\014cation)g(times)f(\(but)i
8436 +(not)f(directory)e(mo)r(dtimes\))i(are)f(propagated.)0
8437 +3836 y Fl(ui)k Fk(xxx)41 b Fn(This)30 b(preference)g(selects)g(either)h
8438 +(the)f(graphical)f(or)h(the)h(textual)g(user)f(in)n(terface.)45
8439 +b(Legal)29 b(v)-5 b(alues)30 b(are)g Fk(graphic)208 3935
8440 +y Fn(or)c Fk(text)p Fn(.)208 4068 y(If)32 b(the)g(Unison)f(executable)h
8441 +(w)n(as)e(compiled)i(with)g(only)f(a)h(textual)f(in)n(terface,)h(this)g
8442 +(option)g(has)f(no)g(e\013ect.)50 b(\(The)208 4168 y(pre-compiled)26
8443 +b(binaries)h(are)g(all)g(compiled)g(with)i(b)r(oth)f(in)n(terfaces)e(a)
8444 +n(v)-5 b(ailable.\))0 4334 y Fl(v)m(ersion)73 b Fn(Prin)n(t)27
8445 +b(the)g(curren)n(t)g(v)n(ersion)e(n)n(um)n(b)r(er)j(and)f(exit.)37
8446 +b(\(This)27 b(option)g(only)g(mak)n(es)f(sense)h(on)g(the)h(command)f
8447 +(line.\))0 4500 y Fl(xferb)m(ycop)m(ying)75 b Fn(When)31
8448 +b(this)g(preference)f(is)h(set,)g(Unison)g(will)f(try)h(to)f(a)n(v)n
8449 +(oid)f(transferring)g(\014le)i(con)n(ten)n(ts)f(across)f(the)208
8450 +4599 y(net)n(w)n(ork)23 b(b)n(y)h(recognizing)f(when)h(a)g(\014le)h
8451 +(with)g(the)g(required)f(con)n(ten)n(ts)g(already)f(exists)h(in)h(the)f
8452 +(target)g(replica.)35 b(This)208 4699 y(usually)27 b(allo)n(ws)f
8453 +(\014le)i(mo)n(v)n(es)e(to)h(b)r(e)h(propagated)e(v)n(ery)h(quic)n(kly)
8454 +-7 b(.)36 b(The)28 b(default)g(v)-5 b(alue)27 b(is)h(exttttrue.)1908
8455 +5589 y(24)p eop
8456 +%%Page: 25 25
8457 +25 24 bop 0 83 a Fh(5.5)112 b(Pro\014les)0 236 y Fn(A)20
8458 +b Fi(pr)l(o\014le)g Fn(is)f(a)h(text)f(\014le)h(that)g(sp)r(eci\014es)f
8459 +(p)r(ermanen)n(t)g(settings)h(for)f(ro)r(ots,)h(paths,)h(ignore)d
8460 +(patterns,)j(and)e(other)g(preferences,)0 336 y(so)28
8461 +b(that)h(they)g(do)f(not)h(need)g(to)f(b)r(e)h(t)n(yp)r(ed)g(at)g(the)g
8462 +(command)f(line)h(ev)n(ery)e(time)i(Unison)g(is)f(run.)40
8463 +b(Pro\014les)27 b(should)i(reside)0 436 y(in)j(the)g
8464 +Fk(.unison)d Fn(directory)h(on)i(the)g(clien)n(t)g(mac)n(hine.)49
8465 +b(If)32 b(Unison)f(is)h(started)f(with)h(just)h(one)e(argumen)n(t)g
8466 +Fb(name)44 b Fn(on)32 b(the)0 535 y(command)38 b(line,)i(it)f(lo)r(oks)
8467 +e(for)g(a)h(pro\014le)f(called)h Fb(name)13 b Fk(.prf)36
8468 +b Fn(in)i(the)h Fk(.unison)c Fn(directory)-7 b(.)67 b(If)38
8469 +b(it)h(is)e(started)h(with)g(no)0 635 y(argumen)n(ts,)32
8470 +b(it)g(scans)f(the)h Fk(.unison)d Fn(directory)i(for)g(\014les)h(whose)
8471 +f(names)h(end)g(in)g Fk(.prf)f Fn(and)g(o\013ers)g(a)h(men)n(u)g(\(pro)
8472 +n(vided)0 734 y(that)g(the)g(Unison)f(executable)g(is)g(compiled)h
8473 +(with)g(the)g(graphical)d(user)i(in)n(terface\).)48 b(If)32
8474 +b(a)f(\014le)h(named)f Fk(default.prf)c Fn(is)0 834 y(found,)h(its)g
8475 +(settings)f(will)h(b)r(e)g(o\013ered)f(as)g(the)h(default)g(c)n
8476 +(hoices.)125 934 y(T)-7 b(o)27 b(set)g(the)h(v)-5 b(alue)28
8477 +b(of)f(a)h(preference)e Fk(p)i Fn(p)r(ermanen)n(tly)-7
8478 +b(,)27 b(add)g(to)h(the)g(appropriate)e(pro\014le)h(a)g(line)h(of)f
8479 +(the)h(form)349 1100 y Fk(p)43 b(=)g(true)125 1266 y
8480 +Fn(for)27 b(a)g(b)r(o)r(olean)g(\015ag)g(or)349 1432
8481 +y Fk(p)43 b(=)g(<value>)125 1598 y Fn(for)27 b(a)g(preference)g(of)g
8482 +(an)n(y)g(other)g(t)n(yp)r(e.)125 1697 y(Whitespaces)i(around)f
8483 +Fk(p)i Fn(and)f Fk(xxx)g Fn(are)f(ignored.)42 b(A)30
8484 +b(pro\014le)f(ma)n(y)g(also)g(include)h(blank)f(lines,)h(and)g(lines)f
8485 +(b)r(eginning)0 1797 y(with)f Fk(#)p Fn(;)f(b)r(oth)h(kinds)g(of)g
8486 +(lines)f(are)g(ignored.)125 1897 y(When)i(Unison)g(starts,)f(it)i
8487 +(\014rst)e(reads)g(the)h(pro\014le)f(and)h(then)h(the)f(command)f
8488 +(line,)i(so)e(command-line)h(options)f(will)0 1996 y(o)n(v)n(erride)d
8489 +(settings)j(from)f(the)h(pro\014le.)125 2096 y(Pro\014les)e(ma)n(y)h
8490 +(also)g(include)h(lines)g(of)g(the)g(form)g Fk(include)40
8491 +b Fb(name)13 b Fn(,)28 b(whic)n(h)g(will)g(cause)f(the)i(\014le)f
8492 +Fb(name)41 b Fn(\(or)27 b Fb(name)13 b Fk(.prf)p Fn(,)0
8493 +2196 y(if)40 b Fb(name)47 b Fn(do)r(es)33 b(not)g(exist)g(in)h(the)g
8494 +Fk(.unison)c Fn(directory\))j(to)g(b)r(e)h(read)e(at)i(the)f(p)r(oin)n
8495 +(t,)i(and)f(included)f(as)g(if)h(its)g(con)n(ten)n(ts,)0
8496 +2295 y(instead)27 b(of)h(the)g Fk(include)d Fn(line,)i(w)n(as)g(part)g
8497 +(of)h(the)g(pro\014le.)36 b(Include)28 b(lines)f(allo)n(ws)f(settings)i
8498 +(common)f(to)g(sev)n(eral)f(pro\014les)0 2395 y(to)h(b)r(e)h(stored)f
8499 +(in)h(one)f(place.)125 2494 y(A)c(pro\014le)g(ma)n(y)f(include)i(a)f
8500 +(preference)f(`)p Fk(label)42 b(=)h Fb(desc)13 b Fn(')23
8501 +b(to)g(pro)n(vide)f(a)h(description)g(of)g(the)g(options)g(selected)g
8502 +(in)h(this)0 2594 y(pro\014le.)35 b(The)26 b(string)g
8503 +Fb(desc)38 b Fn(is)26 b(listed)f(along)g(with)h(the)g(pro\014le)e(name)
8504 +i(in)f(the)h(pro\014le)f(selection)g(dialog,)g(and)g(displa)n(y)n(ed)g
8505 +(in)0 2694 y(the)j(top-righ)n(t)e(corner)h(of)g(the)h(main)g(Unison)f
8506 +(windo)n(w)g(in)h(the)g(graphical)e(user)h(in)n(terface.)125
8507 +2793 y(The)37 b(graphical)f(user-in)n(terface)g(also)g(supp)r(orts)h
8508 +(one-k)n(ey)g(shortcuts)f(for)h(commonly)g(used)h(pro\014les.)66
8509 +b(If)38 b(a)f(pro\014le)0 2893 y(con)n(tains)25 b(a)g(preference)h(of)f
8510 +(the)i(form)e(`)p Fk(key)43 b(=)g Fb(n)14 b Fn(',)26
8511 +b(where)g Fb(n)40 b Fn(is)26 b(a)f(single)h(digit,)g(then)g(pressing)f
8512 +(this)h(digit)g(k)n(ey)g(will)g(cause)0 2993 y(Unison)i(to)g
8513 +(immediately)g(switc)n(h)f(to)h(this)g(pro\014le)g(and)f(b)r(egin)h
8514 +(sync)n(hronization)e(again)h(from)g(scratc)n(h.)37 b(In)28
8515 +b(this)g(case,)f(all)0 3092 y(actions)g(that)h(ha)n(v)n(e)e(b)r(een)i
8516 +(selected)g(for)f(a)g(set)g(of)h(c)n(hanges)e(curren)n(tly)h(b)r(eing)h
8517 +(displa)n(y)n(ed)e(will)i(b)r(e)g(discarded.)0 3325 y
8518 +Fh(5.6)112 b(Sample)37 b(Pro\014les)0 3478 y Fl(5.6.1)94
8519 +b(A)32 b(Minimal)d(Pro\014le)0 3631 y Fn(Here)e(is)h(a)f(v)n(ery)f
8520 +(minimal)i(pro\014le)f(\014le,)h(suc)n(h)f(as)g(migh)n(t)h(b)r(e)g
8521 +(found)g(in)f Fk(.unison/default.p)o(rf)p Fn(:)174 3797
8522 +y Fk(#)44 b(Roots)d(of)i(the)f(synchronization)174 3897
8523 +y(root)g(=)h(/home/bcpierce)174 3996 y(root)f(=)h(ssh://saul//home/)o
8524 +(bcp)o(ie)o(rce)174 4196 y(#)h(Paths)d(to)i(synchronize)174
8525 +4295 y(path)f(=)h(current)174 4395 y(path)f(=)h(common)174
8526 +4495 y(path)f(=)h(.netscape/bookmar)o(ks.)o(ht)o(ml)0
8527 +4710 y Fl(5.6.2)94 b(A)32 b(Basic)g(Pro\014le)0 4864
8528 +y Fn(Here)27 b(is)h(a)f(more)g(sophisticated)g(pro\014le,)g
8529 +(illustrating)g(some)g(other)g(useful)h(features.)174
8530 +5030 y Fk(#)44 b(Roots)d(of)i(the)f(synchronization)174
8531 +5129 y(root)g(=)h(/home/bcpierce)174 5229 y(root)f(=)h
8532 +(ssh://saul//home/)o(bcp)o(ie)o(rce)1908 5589 y Fn(25)p
8533 +eop
8534 +%%Page: 26 26
8535 +26 25 bop 174 83 a Fk(#)44 b(Paths)d(to)i(synchronize)174
8536 +183 y(path)f(=)h(current)174 282 y(path)f(=)h(common)174
8537 +382 y(path)f(=)h(.netscape/bookmar)o(ks.)o(ht)o(ml)174
8538 +581 y(#)h(Some)d(regexps)g(specifying)f(names)h(and)h(paths)g(to)h
8539 +(ignore)174 681 y(ignore)e(=)j(Name)e(temp.*)174 780
8540 +y(ignore)f(=)j(Name)e(*~)174 880 y(ignore)f(=)j(Name)e(.*~)174
8541 +980 y(ignore)f(=)j(Path)e(*/pilot/backup/)o(Arc)o(hi)o(ve)o(_*)174
8542 +1079 y(ignore)f(=)j(Name)e(*.o)174 1179 y(ignore)f(=)j(Name)e(*.tmp)174
8543 +1378 y(#)i(Window)d(height)174 1478 y(height)g(=)j(37)174
8544 +1677 y(#)g(Keep)d(a)j(backup)d(copy)h(of)g(the)h(entire)e(replica)174
8545 +1777 y(backup)g(=)j(Name)e(*)174 1976 y(#)i(Use)e(this)g(command)e(for)
8546 +j(displaying)c(diffs)174 2076 y(diff)j(=)h(diff)f(-y)h(-W)g(79)g
8547 +(--suppress-comm)o(on-)o(li)o(nes)174 2275 y(#)h(Log)e(actions)f(to)h
8548 +(the)h(terminal)174 2374 y(log)g(=)g(true)0 2590 y Fl(5.6.3)94
8549 +b(A)32 b(P)m(o)m(w)m(er-User)h(Pro\014le)0 2743 y Fn(When)d(Unison)g
8550 +(is)f(used)h(with)g(large)e(replicas,)h(it)h(is)f(often)h(con)n(v)n
8551 +(enien)n(t)f(to)g(b)r(e)h(able)f(to)h(sync)n(hronize)e(just)i(a)f(part)
8552 +g(of)h(the)0 2843 y(replicas)20 b(on)g(a)g(giv)n(en)g(run)h(\(this)g
8553 +(sa)n(v)n(es)e(the)i(time)g(of)g(detecting)g(up)r(dates)g(in)f(the)i
8554 +(other)e(parts\).)34 b(This)20 b(can)h(b)r(e)g(accomplished)0
8555 +2943 y(b)n(y)30 b(splitting)i(up)f(the)g(pro\014le)f(in)n(to)g(sev)n
8556 +(eral)f(parts)h(|)h(a)g(common)f(part)g(con)n(taining)g(most)g(of)h
8557 +(the)g(preference)f(settings,)0 3042 y(plus)g(one)g(\\top-lev)n(el")f
8558 +(\014le)h(for)g(eac)n(h)g(set)g(of)g(paths)h(that)f(need)h(to)f(b)r(e)h
8559 +(sync)n(hronized.)43 b(\(The)31 b Fk(include)d Fn(mec)n(hanism)h(can)0
8560 +3142 y(also)e(b)r(e)h(used)f(to)h(allo)n(w)e(the)i(same)f(set)h(of)f
8561 +(preference)g(settings)g(to)h(b)r(e)g(used)f(with)h(di\013eren)n(t)g
8562 +(ro)r(ots.\))125 3242 y(The)23 b(collection)g(of)h(pro\014les)f
8563 +(implemen)n(ting)h(this)g(sc)n(heme)f(migh)n(t)h(lo)r(ok)f(as)g(follo)n
8564 +(ws.)34 b(The)24 b(\014le)g Fk(default.prf)19 b Fn(is)24
8565 +b(empt)n(y)0 3341 y(except)k(for)f(an)g Fk(include)e
8566 +Fn(directiv)n(e:)174 3507 y Fk(#)44 b(Include)c(the)j(contents)d(of)j
8567 +(the)f(file)g(common)174 3607 y(include)f(common)125
8568 +3773 y Fn(Note)31 b(that)g(the)h(name)f(of)g(the)g(common)g(\014le)g
8569 +(is)g Fk(common)p Fn(,)f(not)h Fk(common.prf)p Fn(;)e(this)i(prev)n(en)
8570 +n(ts)f(Unison)h(from)g(o\013ering)0 3873 y Fk(common)25
8571 +b Fn(as)i(one)g(of)h(the)g(list)g(of)f(pro\014les)g(in)h(the)g(op)r
8572 +(ening)f(dialog)g(\(in)h(the)g(graphical)e(UI\).)125
8573 +3972 y(The)h(\014le)h Fk(common)d Fn(con)n(tains)i(the)h(real)e
8574 +(preferences:)174 4138 y Fk(#)44 b(\(...)d(other)h(preferences)d(...\))
8575 +174 4337 y(#)44 b(If)e(any)h(new)f(preferences)d(are)j(added)g(by)h
8576 +(Unison)e(\(e.g.)g('ignore')174 4437 y(#)j(preferences)39
8577 +b(added)i(via)h(the)h(graphical)d(UI\),)i(then)f(store)h(them)g(in)h
8578 +(the)174 4537 y(#)h(file)d('common')g(rathen)g(than)h(in)h(the)f
8579 +(top-level)e(preference)f(file)174 4636 y(addprefsto)h(=)j(common)174
8580 +4836 y(#)h(regexps)c(specifying)g(names)h(and)i(paths)e(to)i(ignore)174
8581 +4935 y(ignore)e(=)j(Name)e(temp.*)174 5035 y(ignore)f(=)j(Name)e(*~)174
8582 +5135 y(ignore)f(=)j(Name)e(.*~)174 5234 y(ignore)f(=)j(Path)e
8583 +(*/pilot/backup/)o(Arc)o(hi)o(ve)o(_*)174 5334 y(ignore)f(=)j(Name)e
8584 +(*.o)1908 5589 y Fn(26)p eop
8585 +%%Page: 27 27
8586 +27 26 bop 174 83 a Fk(ignore)41 b(=)j(Name)e(*.tmp)125
8587 +245 y Fn(Note)30 b(that)h(there)f(are)g(no)g Fk(path)f
8588 +Fn(preferences)g(in)i Fk(common)p Fn(.)43 b(This)30 b(means)g(that,)i
8589 +(when)e(w)n(e)g(in)n(v)n(ok)n(e)f(Unison)i(with)g(the)0
8590 +345 y(default)d(pro\014le)f(\(e.g.,)h(b)n(y)f(t)n(yping)g(')p
8591 +Fk(unison)42 b(default)p Fn(')25 b(or)h(just)j(')p Fk(unison)p
8592 +Fn(')c(on)i(the)h(command)g(line\),)g(the)g(whole)f(replicas)0
8593 +444 y(will)g(b)r(e)h(sync)n(hronized.)35 b(\(If)27 b(w)n(e)g
8594 +Fi(never)g Fn(w)n(an)n(t)g(to)f(sync)n(hronize)g(the)h(whole)g
8595 +(replicas,)f(then)h Fk(default.prf)c Fn(w)n(ould)j(instead)0
8596 +544 y(include)i(settings)f(for)g(all)h(the)g(paths)f(that)h(are)f
8597 +(usually)g(sync)n(hronized.\))125 644 y(T)-7 b(o)28 b(sync)n(hronize)g
8598 +(just)h(part)g(of)g(the)g(replicas,)g(Unison)f(is)h(in)n(v)n(ok)n(ed)f
8599 +(with)h(an)g(alternate)f(preference)h(\014le|e.g.,)g(doing)0
8600 +743 y(')p Fk(unison)41 b(papers)p Fn(',)25 b(where)j(the)g(preference)e
8601 +(\014le)i Fk(papers.prf)c Fn(con)n(tains)174 905 y Fk(path)42
8602 +b(=)h(current/papers)174 1005 y(path)f(=)h(older/papers)174
8603 +1105 y(include)e(common)125 1267 y Fn(causes)26 b(Unison)i(to)f(sync)n
8604 +(hronize)f(just)i(the)g(sub)r(directories)f Fk(current/papers)22
8605 +b Fn(and)27 b Fk(older/papers)p Fn(.)125 1367 y(The)d
8606 +Fk(key)f Fn(preference)h(can)g(b)r(e)h(used)g(in)f(com)n(bination)g
8607 +(with)h(the)g(graphical)e(UI)i(to)f(quic)n(kly)g(switc)n(h)g(b)r(et)n
8608 +(w)n(een)h(di\013eren)n(t)0 1466 y(sets)i(of)h(paths.)37
8609 +b(F)-7 b(or)27 b(example,)g(if)h(the)g(\014le)g Fk(mail.prf)c
8610 +Fn(con)n(tains)174 1628 y Fk(path)42 b(=)h(Mail)174 1728
8611 +y(batch)f(=)h(true)174 1828 y(key)g(=)g(2)174 1927 y(include)e(common)
8612 +125 2089 y Fn(then)30 b(pressing)e(2)h(will)h(cause)f(Unison)h(to)f(lo)
8613 +r(ok)g(for)g(up)r(dates)h(in)g(the)g Fk(Mail)e Fn(sub)r(directory)h
8614 +(and)g(\(b)r(ecause)h(the)g Fk(batch)0 2189 y Fn(\015ag)d(is)g(set\))h
8615 +(immediately)g(propagate)e(an)n(y)g(that)i(it)g(\014nds.)0
8616 +2421 y Fh(5.7)112 b(Keeping)37 b(Bac)m(kups)0 2574 y
8617 +Fn(Unison)27 b(can)f(main)n(tain)g(full)i(bac)n(kups)e(of)h(the)g
8618 +(last-sync)n(hronized)d(v)n(ersions)h(of)i(some)f(of)h(the)g(\014les)g
8619 +(in)g(eac)n(h)f(replica;)g(these)0 2673 y(function)34
8620 +b(b)r(oth)g(as)f(bac)n(kups)g(in)h(the)g(usual)g(sense)f(and)g(as)h
8621 +(the)g(\\common)e(v)n(ersion")g(when)i(in)n(v)n(oking)e(external)h
8622 +(merge)0 2773 y(programs.)125 2873 y(The)d(bac)n(k)n(ed)e(up)j(\014les)
8623 +e(are)g(stored)h(in)g(a)f(directory)g Fk(~/.unison/backup)23
8624 +b Fn(on)30 b(eac)n(h)f(host.)44 b(The)30 b(name)g(of)g(this)g(direc-)0
8625 +2972 y(tory)f(can)g(b)r(e)h(c)n(hanged)e(b)n(y)h(setting)h(the)g(en)n
8626 +(vironmen)n(t)e(v)-5 b(ariable)29 b Fk(UNISONBACKUPDIR)o
8627 +Fn(.)24 b(Files)30 b(are)e(added)h(to)h(the)g(bac)n(kup)0
8628 +3072 y(directory)c(whenev)n(er)h(unison)g(up)r(dates)h(its)g(arc)n(hiv)
8629 +n(e.)35 b(This)28 b(means)f(that)125 3234 y Fj(\017)41
8630 +b Fn(When)25 b(unison)g(reconstructs)f(its)i(arc)n(hiv)n(e)d(from)i
8631 +(scratc)n(h)f(\(e.g.,)i(b)r(ecause)e(of)i(an)e(upgrade,)h(or)f(b)r
8632 +(ecause)h(the)h(arc)n(hiv)n(e)208 3334 y(\014les)h(ha)n(v)n(e)f(b)r
8633 +(een)i(man)n(ually)f(deleted\),)i(all)e(\014les)g(will)h(b)r(e)g(bac)n
8634 +(k)n(ed)f(up.)125 3498 y Fj(\017)41 b Fn(Otherwise,)26
8635 +b(eac)n(h)h(\014le)h(will)g(b)r(e)g(bac)n(k)n(ed)e(up)i(the)g(\014rst)f
8636 +(time)i(unison)e(propagates)e(an)j(up)r(date)g(for)f(it.)0
8637 +3660 y(It)j(is)f(safe)g(to)g(man)n(ually)g(delete)g(\014les)g(from)g
8638 +(the)h(bac)n(kup)f(directory)f(\(or)h(to)g(thro)n(w)g(a)n(w)n(a)n(y)e
8639 +(the)j(directory)e(itself)6 b(\).)43 b(Before)0 3760
8640 +y(unison)30 b(uses)g(an)n(y)f(of)h(these)g(\014les)g(for)g(an)n(ything)
8641 +f(imp)r(ortan)n(t,)i(it)f(c)n(hec)n(ks)f(that)i(its)f(\014ngerprin)n(t)
8642 +f(matc)n(hes)h(the)g(one)g(that)h(it)0 3859 y(exp)r(ects.)125
8643 +3959 y(The)i(preference)g Fk(backup)e Fn(con)n(trols)h(whic)n(h)i
8644 +(\014les)f(are)g(actually)g(bac)n(k)n(ed)f(up:)49 b(for)33
8645 +b(example,)i(giving)e(the)h(preference)0 4059 y(`)p Fk(backup)41
8646 +b(=)i(Path)f(*)p Fn(')24 b(causes)g(bac)n(king)f(up)i(of)f(all)g
8647 +(\014les.)36 b(The)24 b(preference)g Fk(backupversions)19
8648 +b Fn(con)n(trols)j(ho)n(w)i(man)n(y)g(previ-)0 4158 y(ous)g(v)n
8649 +(ersions)f(of)h(eac)n(h)g(\014le)g(are)g(k)n(ept.)35
8650 +b(The)25 b(default)g(is)f(v)-5 b(alue)24 b(2)g(\(i.e.,)i(the)f(last)f
8651 +(sync)n(hronized)f(v)n(ersion)g(plus)h(one)g(bac)n(kup\).)0
8652 +4258 y(F)-7 b(or)27 b(bac)n(kw)n(ard)f(compatibilit)n(y)-7
8653 +b(,)27 b(the)h Fk(backups)d Fn(preference)i(is)g(also)g(still)g(supp)r
8654 +(orted,)h(but)g Fk(backup)d Fn(is)j(no)n(w)f(preferred.)0
8655 +4489 y Fh(5.8)112 b(Merging)37 b(Con\015icting)f(V)-9
8656 +b(ersions)0 4643 y Fn(Both)26 b(user)g(in)n(terfaces)g(o\013er)g(a)g
8657 +(`merge')g(command)g(that)h(can)f(b)r(e)h(used)g(to)f(in)n(teractiv)n
8658 +(ely)f(merge)h(con\015icting)g(v)n(ersions)f(of)0 4742
8659 +y(a)i(\014le.)37 b(It)28 b(is)g(in)n(v)n(ok)n(ed)e(b)n(y)h(selecting)g
8660 +(a)g(con\015icting)h(\014le)f(and)h(pressing)e(`)p Fk(m)p
8661 +Fn('.)125 4842 y(The)c(actual)f(merging)g(is)h(p)r(erformed)g(b)n(y)g
8662 +(an)g(external)f(program.)33 b(The)22 b(preferences)f
8663 +Fk(merge)f Fn(and)i Fk(merge2)e Fn(con)n(trol)h(ho)n(w)0
8664 +4941 y(this)h(program)e(is)i(in)n(v)n(ok)n(ed.)34 b(If)22
8665 +b(a)g(bac)n(kup)f(exists)h(for)f(this)h(\014le)g(\(see)g(the)h
8666 +Fk(backup)c Fn(preference\),)k(then)f(the)h Fk(merge)d
8667 +Fn(preference)0 5041 y(is)32 b(used)g(for)g(this)g(purp)r(ose;)i
8668 +(otherwise)e Fk(merge2)d Fn(is)j(used.)51 b(In)32 b(b)r(oth)h(cases,)f
8669 +(the)h(v)-5 b(alue)32 b(of)g(the)h(preference)e(should)h(b)r(e)g(a)0
8670 +5141 y(string)i(represen)n(ting)f(the)i(command)g(that)g(should)f(b)r
8671 +(e)h(passed)f(to)h(a)f(shell)g(to)h(in)n(v)n(ok)n(e)e(the)i(merge)f
8672 +(program.)56 b(Within)0 5240 y(this)28 b(string,)f(the)h(sp)r(ecial)f
8673 +(substrings)g Fk(CURRENT1)p Fn(,)e Fk(CURRENT2)p Fn(,)f
8674 +Fk(NEW)p Fn(,)j(and)g Fk(OLD)g Fn(ma)n(y)g(app)r(ear)g(at)g(an)n(y)g(p)
8675 +r(oin)n(t.)37 b(Unison)28 b(will)0 5340 y(substitute)g(these)g
8676 +(substrings)f(as)g(follo)n(ws)f(b)r(efore)h(in)n(v)n(oking)g(the)h
8677 +(command:)1908 5589 y(27)p eop
8678 +%%Page: 28 28
8679 +28 27 bop 125 83 a Fj(\017)41 b Fk(CURRENT1)24 b Fn(is)j(replaced)g(b)n
8680 +(y)g(the)h(name)g(of)f(the)h(lo)r(cal)f(cop)n(y)g(of)h(the)g(\014le;)
8681 +125 249 y Fj(\017)41 b Fk(CURRENT2)26 b Fn(is)k(replaced)g(b)n(y)g(the)
8682 +g(name)g(of)g(a)g(temp)r(orary)f(\014le,)i(in)n(to)f(whic)n(h)g(the)g
8683 +(con)n(ten)n(ts)g(of)g(the)g(remote)g(cop)n(y)f(of)208
8684 +349 y(the)f(\014le)f(ha)n(v)n(e)g(b)r(een)h(transferred)e(b)n(y)h
8685 +(Unison)h(prior)e(to)i(p)r(erforming)e(the)i(merge;)125
8686 +515 y Fj(\017)41 b Fk(NEW)19 b Fn(is)i(replaced)f(b)n(y)g(the)i(name)e
8687 +(of)h(a)f(temp)r(orary)g(\014le)h(that)g(Unison)g(exp)r(ects)g(to)f(b)r
8688 +(e)h(written)g(b)n(y)g(the)g(merge)f(program)208 614
8689 +y(when)27 b(it)h(\014nishes,)g(giving)f(the)h(desired)f(new)g(con)n
8690 +(ten)n(ts)g(of)h(the)g(\014le;)g(and)125 780 y Fj(\017)41
8691 +b Fk(OLD)28 b Fn(is)i(replaced)e(b)n(y)i(the)g(name)f(of)h(the)g(bac)n
8692 +(k)n(ed)f(up)h(cop)n(y)f(of)g(the)h(original)e(v)n(ersion)h(of)g(the)h
8693 +(\014le)g(\(i.e.,)h(its)f(state)f(at)208 880 y(the)f(end)h(of)g(the)g
8694 +(last)f(successful)g(run)g(of)h(Unison\),)g(if)g(one)f(exists.)39
8695 +b(Substitution)30 b(of)e Fk(OLD)f Fn(applies)i(only)f(to)g
8696 +Fk(merge)p Fn(,)208 980 y(not)f Fk(merge2)p Fn(\).)0
8697 +1146 y(F)-7 b(or)27 b(example,)g(on)h(Unix)f(systems)h(setting)f(the)h
8698 +Fk(merge)e Fn(preference)h(to)131 1312 y Fk(merge)41
8699 +b(=)i(diff3)f(-m)h(CURRENT1)d(OLD)i(CURRENT2)f(>)i(NEW)0
8700 +1478 y Fn(will)21 b(tell)g(Unison)g(to)g(use)f(the)h(external)f
8701 +Fk(diff3)f Fn(program)g(for)h(merging.)34 b(A)21 b(large)e(n)n(um)n(b)r
8702 +(er)i(of)g(external)f(merging)f(programs)0 1577 y(are)27
8703 +b(a)n(v)-5 b(ailable.)35 b(F)-7 b(or)27 b(example,)g
8704 +Fk(emacs)f Fn(users)h(ma)n(y)g(\014nd)h(the)g(follo)n(wing)e(settings)i
8705 +(con)n(v)n(enien)n(t:)174 1743 y Fk(merge2)41 b(=)j(emacs)d(-q)i
8706 +(--eval)e('\(ediff-merge-fi)o(les)c("CURRENT1")i("CURRENT2")654
8707 +1843 y(nil)j("NEW"\)')174 1943 y(merge)g(=)h(emacs)f(-q)g(--eval)f
8708 +('\(ediff-merge-fil)o(es-)o(wi)o(th)o(-an)o(ce)o(sto)o(r)654
8709 +2042 y("CURRENT1")e("CURRENT2")h("OLD")h(nil)i("NEW"\)')0
8710 +2208 y Fn(\(These)21 b(commands)e(are)h(displa)n(y)n(ed)f(here)h(on)h
8711 +(t)n(w)n(o)e(lines)i(to)f(a)n(v)n(oid)f(running)h(o\013)h(the)g(edge)f
8712 +(of)g(the)h(page.)34 b(In)21 b(y)n(our)e(preference)0
8713 +2308 y(\014le,)28 b(eac)n(h)f(command)g(should)g(b)r(e)h(written)g(on)f
8714 +(a)h(single)f(line.\))125 2408 y(If)34 b(the)g(external)e(program)g
8715 +(exits)h(without)h(lea)n(ving)f(an)n(y)f(\014le)i(at)g(the)g(path)f
8716 +Fk(NEW)p Fn(,)g(Unison)g(considers)g(the)h(merge)e(to)0
8717 +2507 y(ha)n(v)n(e)24 b(failed.)37 b(If)26 b(the)g(merge)e(program)g
8718 +(writes)h(a)g(\014le)h(called)f Fk(NEW)f Fn(but)i(exits)g(with)g(a)f
8719 +(non-zero)f(status)h(co)r(de,)h(then)g(Unison)0 2607
8720 +y(considers)e(the)h(merge)f(to)h(ha)n(v)n(e)f(succeeded)h(but)h(to)f
8721 +(ha)n(v)n(e)f(generated)g(con\015icts.)35 b(In)26 b(this)f(case,)g(it)g
8722 +(attempts)h(to)f(in)n(v)n(ok)n(e)e(an)0 2707 y(external)28
8723 +b(editor)g(so)f(that)i(the)g(user)f(can)g(resolv)n(e)e(the)j
8724 +(con\015icts.)39 b(The)29 b(v)-5 b(alue)28 b(of)h(the)g
8725 +Fk(editor)d Fn(preference)h(con)n(trols)g(what)0 2806
8726 +y(editor)g(is)h(in)n(v)n(ok)n(ed)e(b)n(y)h(Unison.)37
8727 +b(The)27 b(default)h(is)g Fk(emacs)p Fn(.)208 2989 y
8728 +Fi(Ple)l(ase)37 b(send)f(us)g(suggestions)g(for)i(other)e(useful)h
8729 +(values)f(of)h(the)g Fk(merge2)d Fi(and)i Fk(merge)f
8730 +Fi(pr)l(efer)l(enc)l(es|we'd)208 3088 y(like)30 b(to)g(give)h(sever)l
8731 +(al)f(examples)h(in)f(the)g(manual.\))0 3321 y Fh(5.9)112
8732 +b(The)38 b(User)g(In)m(terface)0 3474 y Fn(Both)27 b(the)h(textual)f
8733 +(and)g(the)h(graphical)e(user)g(in)n(terfaces)h(are)f(in)n(tended)i(to)
8734 +f(b)r(e)g(mostly)g(self-explanatory)-7 b(.)35 b(Here)27
8735 +b(are)f(just)0 3574 y(a)h(few)h(tric)n(ks:)125 3740 y
8736 +Fj(\017)41 b Fn(By)25 b(default,)i(when)f(running)g(on)f(Unix)h(the)h
8737 +(textual)f(user)f(in)n(terface)g(will)h(try)g(to)g(put)g(the)g
8738 +(terminal)g(in)n(to)g(the)g(\\ra)n(w)208 3839 y(mo)r(de")i(so)g(that)h
8739 +(it)g(reads)e(the)i(input)g(a)g(c)n(haracter)d(at)i(a)h(time)g(rather)e
8740 +(than)i(a)f(line)h(at)f(a)h(time.)40 b(\(This)29 b(means)f(y)n(ou)208
8741 +3939 y(can)e(t)n(yp)r(e)i(just)g(the)g(single)e(k)n(eystrok)n(e)g(\\)p
8742 +Fk(>)p Fn(")g(to)h(tell)h(Unison)f(to)g(propagate)e(a)i(\014le)h(from)f
8743 +(left)h(to)f(righ)n(t,)g(rather)f(than)208 4039 y(\\)p
8744 +Fk(>)g Fn(En)n(ter."\))208 4171 y(There)j(are)g(some)h(situations,)g
8745 +(though,)h(where)e(this)i(will)f(not)g(w)n(ork)f(|)h(for)g(example,)g
8746 +(when)g(Unison)g(is)g(running)208 4271 y(in)24 b(a)h(shell)f(windo)n(w)
8747 +g(inside)h(Emacs.)35 b(Setting)25 b(the)g Fk(dumbtty)d
8748 +Fn(preference)h(will)i(force)f(Unison)h(to)f(lea)n(v)n(e)f(the)i
8749 +(terminal)208 4371 y(alone)h(and)i(pro)r(cess)e(input)j(a)e(line)h(at)f
8750 +(a)g(time.)0 4603 y Fh(5.10)112 b(Exit)36 b(co)s(de)0
8751 +4756 y Fn(When)c(running)e(in)i(the)f(textual)g(mo)r(de,)i(Unison)e
8752 +(returns)f(an)h(exit)g(status,)h(whic)n(h)f(describ)r(es)f(whether,)i
8753 +(and)f(at)g(whic)n(h)0 4856 y(lev)n(el,)k(the)e(sync)n(hronization)f(w)
8754 +n(as)h(successful.)54 b(The)34 b(exit)f(status)h(could)f(b)r(e)h
8755 +(useful)g(when)f(Unison)h(is)f(in)n(v)n(ok)n(ed)f(from)h(a)0
8756 +4956 y(script.)k(Curren)n(tly)-7 b(,)26 b(there)i(are)e(four)i(p)r
8757 +(ossible)f(v)-5 b(alues)27 b(for)g(the)h(exit)g(status:)125
8758 +5122 y(0)41 b(:)c(successful)27 b(sync)n(hronization;)f(ev)n(erything)g
8759 +(is)h(up-to-date)g(no)n(w.)125 5288 y(1)41 b(:)c(some)27
8760 +b(\014les)g(w)n(ere)g(skipp)r(ed,)h(but)g(all)f(\014le)h(transfers)e(w)
8761 +n(ere)h(successful.)1908 5589 y(28)p eop
8762 +%%Page: 29 29
8763 +29 28 bop 125 83 a Fn(2)41 b(:)c(non-fatal)26 b(failures)h(o)r(ccurred)
8764 +g(during)g(\014le)h(transfer.)125 249 y(3)41 b(:)c(a)27
8765 +b(fatal)g(error)f(o)r(ccurred,)g(or)h(the)h(execution)f(w)n(as)g(in)n
8766 +(terrupted.)125 415 y(The)g(graphical)f(in)n(terface)h(do)r(es)g(not)h
8767 +(return)f(an)n(y)g(useful)h(information)f(through)g(the)h(exit)f
8768 +(status.)0 648 y Fh(5.11)112 b(P)m(ath)37 b(sp)s(eci\014cation)0
8769 +801 y Fn(Sev)n(eral)31 b(Unison)h(preferences)f(\(e.g.,)i
8770 +Fk(ignore)p Fn(/)p Fk(ignorenot)o Fn(,)28 b Fk(follow)p
8771 +Fn(,)j Fk(sortfirst)p Fn(/)p Fk(sortl)o(ast)o Fn(,)d
8772 +Fk(backup)p Fn(\))i(sp)r(ecify)i(indi-)0 900 y(vidual)26
8773 +b(paths)g(or)f(sets)h(of)g(paths.)37 b(These)25 b(preferences)h(share)f
8774 +(a)g(common)h(syn)n(tax)f(based)h(on)g(regular-expressions.)32
8775 +b(Eac)n(h)0 1000 y(preference)26 b(is)g(asso)r(ciated)f(with)i(a)f
8776 +(list)h(of)g(path)f(patterns;)h(the)g(paths)f(sp)r(eci\014ed)h(are)e
8777 +(those)h(that)h(matc)n(h)f(an)n(y)g(one)g(of)h(the)0
8778 +1100 y(path)h(pattern.)125 1282 y Fj(\017)41 b Fn(P)n(attern)32
8779 +b(preferences)h(can)h(b)r(e)g(giv)n(en)g(on)f(the)i(command)e(line,)j
8780 +(or,)f(more)e(often,)j(stored)d(in)h(pro\014les,)h(using)f(the)208
8781 +1382 y(same)27 b(syn)n(tax)f(as)h(other)g(preferences.)36
8782 +b(F)-7 b(or)27 b(example,)g(a)g(pro\014le)g(line)h(of)g(the)g(form)774
8783 +1581 y Fk(ignore)41 b(=)i Fb(pattern)208 1780 y Fn(adds)27
8784 +b Fb(pattern)39 b Fn(to)27 b(the)h(list)g(of)g(patterns)f(to)g(b)r(e)h
8785 +(ignored.)125 1946 y Fj(\017)41 b Fn(Eac)n(h)e Fb(pattern)52
8786 +b Fn(can)41 b(ha)n(v)n(e)e(one)h(of)h(three)g(forms.)75
8787 +b(The)41 b(most)f(general)g(form)g(is)h(a)f(P)n(osix)f(extended)i
8788 +(regular)208 2046 y(expression)32 b(in)n(tro)r(duced)i(b)n(y)g(the)g(k)
8789 +n(eyw)n(ord)e Fk(Regex)p Fn(.)54 b(\(The)35 b(collating)e(sequences)g
8790 +(and)h(c)n(haracter)e(classes)g(of)i(full)208 2146 y(P)n(osix)26
8791 +b(regexps)g(are)g(not)i(curren)n(tly)f(supp)r(orted\).)949
8792 +2345 y Fk(Regex)41 b Fb(regexp)208 2544 y Fn(F)-7 b(or)27
8793 +b(con)n(v)n(enience,)f(t)n(w)n(o)h(other)g(st)n(yles)g(of)g(pattern)h
8794 +(are)e(also)h(recognized:)949 2743 y Fk(Name)41 b Fb(name)208
8795 +2943 y Fn(matc)n(hes)27 b(an)n(y)f(path)i(in)g(whic)n(h)g(the)f(last)h
8796 +(comp)r(onen)n(t)f(matc)n(hes)g Fb(name)13 b Fn(,)28
8797 +b(while)949 3142 y Fk(Path)41 b Fb(path)208 3341 y Fn(matc)n(hes)24
8798 +b(exactly)h(the)g(path)g Fb(path)13 b Fn(.)36 b(The)26
8799 +b Fb(name)38 b Fn(and)25 b Fb(path)38 b Fn(argumen)n(ts)23
8800 +b(of)i(the)h(latter)f(forms)f(of)h(patterns)g(are)f Fi(not)208
8801 +3441 y Fn(regular)h(expressions.)36 b(Instead,)27 b(standard)g
8802 +(\\globbing")e(con)n(v)n(en)n(tions)h(can)h(b)r(e)h(used)g(in)g
8803 +Fb(name)40 b Fn(and)28 b Fb(path)12 b Fn(:)301 3607 y
8804 +Fl({)41 b Fn(a)27 b Fk(?)h Fn(matc)n(hes)f(an)n(y)f(single)i(c)n
8805 +(haracter)d(except)j Fk(/)301 3740 y Fl({)41 b Fn(a)27
8806 +b Fk(*)h Fn(matc)n(hes)f(an)n(y)f(sequence)i(of)f(c)n(haracters)e(not)j
8807 +(including)g Fk(/)301 3873 y Fl({)41 b Fk([xyz])26 b
8808 +Fn(matc)n(hes)h(an)n(y)g(c)n(haracter)e(from)i(the)h(set)g
8809 +Fj(f)p Fk(x)o Fa(;)14 b Fk(y)p Fa(;)g Fk(z)p Fj(g)301
8810 +4005 y Fl({)41 b Fk({a,bb,ccc})24 b Fn(matc)n(hes)j(an)n(y)g(one)g(of)g
8811 +Fk(a)p Fn(,)h Fk(bb)p Fn(,)f(or)f Fk(ccc)p Fn(.)125 4171
8812 +y Fj(\017)41 b Fn(The)26 b(path)g(separator)d(in)j(path)g(patterns)g
8813 +(is)g(alw)n(a)n(ys)e(the)i(forw)n(ard-slash)d(c)n(haracter)h(\\/")g(|)i
8814 +(ev)n(en)g(when)g(the)g(clien)n(t)208 4271 y(or)f(serv)n(er)f(is)i
8815 +(running)g(under)g(Windo)n(ws,)g(where)g(the)g(normal)g(separator)d(c)n
8816 +(haracter)h(is)j(a)e(bac)n(kslash.)35 b(This)26 b(mak)n(es)208
8817 +4371 y(it)i(p)r(ossible)f(to)g(use)h(the)g(same)f(set)g(of)h(path)g
8818 +(patterns)f(for)g(b)r(oth)h(Unix)g(and)f(Windo)n(ws)g(\014le)h
8819 +(systems.)125 4553 y(Some)f(examples)g(of)g(path)h(patterns)f(app)r
8820 +(ear)g(in)h(Section)f(5.12)g([Ignoring)f(P)n(aths].)1908
8821 +5589 y(29)p eop
8822 +%%Page: 30 30
8823 +30 29 bop 0 83 a Fh(5.12)112 b(Ignoring)37 b(P)m(aths)0
8824 +236 y Fn(Most)23 b(users)f(of)g(Unison)h(will)g(\014nd)h(that)f(their)g
8825 +(replicas)e(con)n(tain)h(lots)h(of)g(\014les)g(that)g(they)g(don't)g
8826 +(ev)n(er)f(w)n(an)n(t)g(to)h(sync)n(hronize)0 336 y(|)k(temp)r(orary)f
8827 +(\014les,)h(v)n(ery)f(large)g(\014les,)h(old)g(stu\013,)h(arc)n
8828 +(hitecture-sp)r(eci\014c)d(binaries,)i(etc.)36 b(They)27
8829 +b(can)g(instruct)g(Unison)g(to)0 436 y(ignore)f(these)i(paths)f(using)h
8830 +(patterns)f(in)n(tro)r(duced)g(in)h(Section)g(5.11)e([P)n(ath)h(P)n
8831 +(atterns].)125 535 y(F)-7 b(or)23 b(example,)i(the)g(follo)n(wing)e
8832 +(pattern)h(will)h(mak)n(e)e(Unison)h(ignore)f(an)n(y)h(path)h(con)n
8833 +(taining)e(the)i(name)f Fk(CVS)f Fn(or)g(a)h(name)0 635
8834 +y(ending)k(in)f Fk(.cmo)p Fn(:)567 801 y Fk(ignore)41
8835 +b(=)i(Name)f({CVS,*.cmo})125 967 y Fn(The)27 b(next)h(pattern)f(mak)n
8836 +(es)g(Unison)g(ignore)g(the)h(path)f Fk(a/b)p Fn(:)567
8837 +1133 y Fk(ignore)41 b(=)i(Path)f(a/b)125 1299 y Fn(This)26
8838 +b(pattern)h(mak)n(es)f(Unison)h(ignore)e(an)n(y)i(path)g(b)r(eginning)f
8839 +(with)i Fk(a/b)e Fn(and)g(ending)h(with)h(a)e(name)h(ending)g(b)n(y)f
8840 +Fk(.ml)p Fn(.)567 1465 y Fk(ignore)41 b(=)i(Regex)e(a/b/.*\\.ml)125
8841 +1631 y Fn(Note)e(that)g(regular)e(expression)h(patterns)g(are)g(\\anc)n
8842 +(hored":)58 b(they)39 b(m)n(ust)g(matc)n(h)g(the)g(whole)g(path,)j(not)
8843 +d(just)g(a)0 1731 y(substring)27 b(of)g(the)h(path.)125
8844 +1830 y(Here)f(are)f(a)i(few)f(extra)g(p)r(oin)n(ts)h(regarding)d(the)j
8845 +Fk(ignore)d Fn(preference.)125 1996 y Fj(\017)41 b Fn(If)28
8846 +b(a)f(directory)f(is)i(ignored,)e(all)h(its)h(descenden)n(ts)f(will)h
8847 +(b)r(e)g(to)r(o.)125 2162 y Fj(\017)41 b Fn(The)34 b(user)h(in)n
8848 +(terface)f(pro)n(vides)f(some)i(con)n(v)n(enien)n(t)e(commands)i(for)f
8849 +(adding)g(new)h(patterns)g(to)g(b)r(e)g(ignored.)57 b(T)-7
8850 +b(o)208 2262 y(ignore)31 b(a)h(particular)f(\014le,)j(select)f(it)g
8851 +(and)f(press)g(\\)p Fk(i)p Fn(".)50 b(T)-7 b(o)33 b(ignore)e(all)h
8852 +(\014les)h(with)g(the)g(same)f(extension,)h(select)g(it)208
8853 +2362 y(and)c(press)g(\\)p Fk(E)p Fn(")f(\(with)j(the)f(shift)g(k)n
8854 +(ey\).)43 b(T)-7 b(o)30 b(ignore)e(all)h(\014les)h(with)g(the)g(same)g
8855 +(name,)g(no)f(matter)h(what)f(directory)208 2461 y(they)e(app)r(ear)g
8856 +(in,)h(select)f(it)h(and)g(press)e(\\)p Fk(N)p Fn(".)h(These)g(new)g
8857 +(patterns)h(b)r(ecome)f(p)r(ermanen)n(t:)37 b(they)27
8858 +b(are)g(immediately)208 2561 y(added)g(to)g(the)h(curren)n(t)f
8859 +(pro\014le)g(on)g(disk.)125 2727 y Fj(\017)41 b Fn(If)c(y)n(ou)f(use)g
8860 +(the)i Fk(include)c Fn(directiv)n(e)i(to)g(include)i(a)e(common)g
8861 +(collection)g(of)h(preferences)f(in)h(sev)n(eral)e(top-lev)n(el)208
8862 +2827 y(preference)26 b(\014les,)h(y)n(ou)g(will)g(probably)f(also)g(w)n
8863 +(an)n(t)h(to)g(set)g(the)g Fk(addprefsto)c Fn(preference)k(to)g(the)g
8864 +(name)g(of)g(this)h(\014le.)208 2926 y(This)h(will)g(cause)f(an)n(y)h
8865 +(new)g(ignore)e(patterns)i(that)h(y)n(ou)e(add)h(from)f(inside)i
8866 +(Unison)f(to)g(b)r(e)g(app)r(ended)h(to)e(this)i(\014le,)208
8867 +3026 y(instead)d(of)h(whic)n(hev)n(er)e(top-lev)n(el)h(preference)f
8868 +(\014le)i(y)n(ou)f(started)g(Unison)h(with.)125 3192
8869 +y Fj(\017)41 b Fn(Ignore)21 b(patterns)i(can)f(also)g(b)r(e)i(sp)r
8870 +(eci\014ed)f(on)g(the)g(command)g(line,)h(if)f(y)n(ou)g(lik)n(e)f
8871 +(\(this)i(is)f(probably)f(not)h(v)n(ery)e(useful\),)208
8872 +3291 y(using)27 b(an)g(option)g(lik)n(e)h Fk(-ignore)40
8873 +b('Name)i(temp.txt')p Fn(.)0 3524 y Fh(5.13)112 b(Sym)m(b)s(olic)36
8874 +b(Links)0 3677 y Fn(Ordinarily)-7 b(,)23 b(Unison)h(treats)f(sym)n(b)r
8875 +(olic)g(links)h(in)g(Unix)g(replicas)e(as)i(\\opaque":)33
8876 +b(it)24 b(considers)e(the)i(con)n(ten)n(ts)f(of)h(the)g(link)g(to)0
8877 +3777 y(b)r(e)29 b(just)g(the)f(string)g(sp)r(ecifying)g(where)g(the)h
8878 +(link)f(p)r(oin)n(ts,)h(and)f(it)h(will)f(propagate)f(c)n(hanges)g(in)h
8879 +(this)h(string)f(to)g(the)h(other)0 3876 y(replica.)125
8880 +3976 y(It)j(is)g(sometimes)g(useful)g(to)g(treat)g(a)g(sym)n(b)r(olic)g
8881 +(link)g(\\transparen)n(tly)-7 b(,")31 b(acting)g(as)h(though)g(whatev)n
8882 +(er)f(it)h(p)r(oin)n(ts)g(to)0 4076 y(w)n(ere)25 b(ph)n(ysically)g
8883 +Fi(in)h Fn(the)h(replica)e(at)h(the)g(p)r(oin)n(t)g(where)g(the)g(sym)n
8884 +(b)r(olic)f(link)i(app)r(ears.)35 b(T)-7 b(o)25 b(tell)i(Unison)f(to)g
8885 +(treat)f(a)h(link)g(in)0 4175 y(this)i(manner,)f(add)g(a)h(line)f(of)h
8886 +(the)g(form)567 4341 y Fk(follow)41 b(=)i Fb(pathspec)0
8887 +4507 y Fn(to)27 b(the)h(pro\014le,)f(where)g Fb(pathspec)39
8888 +b Fn(is)28 b(a)f(path)h(pattern)f(as)g(describ)r(ed)g(in)h(Section)g
8889 +(5.11)e([P)n(ath)h(P)n(atterns].)125 4607 y(Windo)n(ws)d(\014le)h
8890 +(systems)g(do)f(not)h(supp)r(ort)g(sym)n(b)r(olic)f(links;)i(Unison)f
8891 +(will)g(refuse)f(to)h(propagate)e(an)i(opaque)f(sym)n(b)r(olic)0
8892 +4707 y(link)i(from)g(Unix)h(to)f(Windo)n(ws)g(and)g(\015ag)g(the)g
8893 +(path)h(as)e(erroneous.)35 b(When)27 b(a)f(Unix)g(replica)g(is)g(to)g
8894 +(b)r(e)h(sync)n(hronized)e(with)0 4806 y(a)i(Windo)n(ws)g(system,)h
8895 +(all)f(sym)n(b)r(olic)g(links)h(should)f(matc)n(h)g(either)h(an)f
8896 +Fk(ignore)e Fn(pattern)j(or)f(a)g Fk(follow)e Fn(pattern.)1908
8897 +5589 y(30)p eop
8898 +%%Page: 31 31
8899 +31 30 bop 0 83 a Fh(5.14)112 b(P)m(ermissions)0 236 y
8900 +Fn(Sync)n(hronizing)29 b(the)i(p)r(ermission)f(bits)h(of)g(\014les)g
8901 +(is)f(sligh)n(tly)g(tric)n(ky)g(when)h(t)n(w)n(o)f(di\013eren)n(t)h
8902 +(\014lesytems)f(are)g(in)n(v)n(olv)n(ed)f(\(e.g.,)0 336
8903 +y(when)f(sync)n(hronizing)e(a)h(Windo)n(ws)g(clien)n(t)h(and)f(a)g
8904 +(Unix)h(serv)n(er\).)36 b(In)27 b(detail,)h(here's)f(ho)n(w)g(it)h(w)n
8905 +(orks:)125 502 y Fj(\017)41 b Fn(When)35 b(the)g(p)r(ermission)g(bits)g
8906 +(of)g(an)g(existing)f(\014le)h(or)f(directory)g(are)g(c)n(hanged,)i
8907 +(the)f(v)-5 b(alues)35 b(of)g(those)g(bits)g(that)208
8908 +602 y(mak)n(e)26 b(sense)i(on)f Fi(b)l(oth)h Fn(op)r(erating)f(systems)
8909 +g(will)h(b)r(e)g(propagated)e(to)i(the)g(other)f(replica.)36
8910 +b(The)28 b(other)f(bits)h(will)g(not)208 701 y(b)r(e)g(c)n(hanged.)125
8911 +867 y Fj(\017)41 b Fn(When)32 b(a)e(newly)i(created)e(\014le)i(is)f
8912 +(propagated)f(to)h(a)g(remote)g(replica,)g(the)h(p)r(ermission)f(bits)h
8913 +(that)f(mak)n(e)g(sense)g(in)208 967 y(b)r(oth)23 b(op)r(erating)f
8914 +(systems)g(are)g(also)g(propagated.)34 b(The)23 b(v)-5
8915 +b(alues)22 b(of)h(the)g(other)g(bits)g(are)f(set)h(to)g(default)g(v)-5
8916 +b(alues)23 b(\(they)208 1066 y(are)j(tak)n(en)h(from)g(the)h(curren)n
8917 +(t)f(umask,)g(if)h(the)g(receiving)f(host)g(is)h(a)f(Unix)h(system\).)
8918 +125 1233 y Fj(\017)41 b Fn(F)-7 b(or)27 b(securit)n(y)f(reasons,)g(the)
8919 +i(Unix)g Fk(setuid)d Fn(and)j Fk(setgid)d Fn(bits)j(are)e(not)i
8920 +(propagated.)125 1399 y Fj(\017)41 b Fn(The)28 b(Unix)g(o)n(wner)e(and)
8921 +i(group)f(ids)h(are)f(not)h(propagated.)36 b(\(What)28
8922 +b(w)n(ould)g(this)g(mean,)g(in)g(general?\))37 b(All)28
8923 +b(\014les)g(are)208 1498 y(created)e(with)i(the)g(o)n(wner)f(and)g
8924 +(group)g(of)g(the)h(serv)n(er)e(pro)r(cess.)0 1731 y
8925 +Fh(5.15)112 b(Cross-Platform)36 b(Sync)m(hronization)0
8926 +1884 y Fn(If)28 b(y)n(ou)f(use)g(Unison)g(to)h(sync)n(hronize)e
8927 +(\014les)h(b)r(et)n(w)n(een)h(Windo)n(ws)f(and)g(Unix)h(systems,)f
8928 +(there)h(are)e(a)h(few)h(sp)r(ecial)f(issues)g(to)0 1983
8929 +y(b)r(e)h(a)n(w)n(are)d(of.)125 2083 y Fl(Case)44 b(con\015icts.)72
8930 +b Fn(In)39 b(Unix,)j(\014lenames)d(are)f(case)h(sensitiv)n(e:)59
8931 +b Fk(foo)38 b Fn(and)h Fk(FOO)f Fn(can)h(refer)f(to)h(di\013eren)n(t)g
8932 +(\014les.)72 b(In)0 2183 y(Windo)n(ws,)30 b(on)f(the)g(other)g(hand,)h
8933 +(\014lenames)f(are)g(not)g(case)g(sensitiv)n(e:)40 b
8934 +Fk(foo)28 b Fn(and)h Fk(FOO)f Fn(can)h(only)g(refer)g(to)g(the)h(same)f
8935 +(\014le.)0 2282 y(This)j(means)h(that)f(a)g(Unix)h Fk(foo)f
8936 +Fn(and)g Fk(FOO)f Fn(cannot)h(b)r(e)h(sync)n(hronized)e(on)n(to)h(a)g
8937 +(Windo)n(ws)g(system)h(|)f(Windo)n(ws)g(w)n(on't)0 2382
8938 +y(allo)n(w)26 b(t)n(w)n(o)h(di\013eren)n(t)g(\014les)h(to)f(ha)n(v)n(e)
8939 +f(the)i(\\same")e(name.)36 b(Unison)27 b(detects)h(this)g(situation)f
8940 +(for)g(y)n(ou,)f(and)i(rep)r(orts)e(that)i(it)0 2482
8941 +y(cannot)f(sync)n(hronize)f(the)i(\014les.)125 2581 y(Y)-7
8942 +b(ou)32 b(can)h(deal)f(with)i(a)e(case)g(con\015ict)h(in)g(a)g(couple)f
8943 +(of)h(w)n(a)n(ys.)51 b(If)33 b(y)n(ou)f(need)h(to)g(ha)n(v)n(e)f(b)r
8944 +(oth)h(\014les)g(on)f(the)h(Windo)n(ws)0 2681 y(system,)27
8945 +b(y)n(our)g(only)g(c)n(hoice)g(is)g(to)h(rename)f(one)g(of)h(the)g
8946 +(Unix)g(\014les)f(to)h(a)n(v)n(oid)e(the)i(case)f(con\015ict,)h(and)f
8947 +(re-sync)n(hronize.)35 b(If)0 2780 y(y)n(ou)29 b(don't)i(need)f(the)h
8948 +(\014les)f(on)g(the)h(Windo)n(ws)e(system,)i(y)n(ou)f(can)f(simply)i
8949 +(disregard)d(Unison's)i(w)n(arning)f(message,)g(and)0
8950 +2880 y(go)e(ahead)g(with)h(the)g(sync)n(hronization;)f(Unison)g(w)n
8951 +(on't)h(touc)n(h)f(those)h(\014les.)37 b(If)28 b(y)n(ou)g(don't)f(w)n
8952 +(an)n(t)h(to)f(see)h(the)g(w)n(arning)e(on)0 2980 y(eac)n(h)h(sync)n
8953 +(hronization,)f(y)n(ou)g(can)i(tell)g(Unison)f(to)h(ignore)e(the)i
8954 +(\014les)f(\(see)h(Section)f(5.12)g([Ignore]\).)125 3079
8955 +y Fl(Illegal)36 b(\014lenames.)50 b Fn(Unix)33 b(allo)n(ws)f(some)g
8956 +(\014lenames)g(that)h(are)f(illegal)g(in)h(Windo)n(ws.)53
8957 +b(F)-7 b(or)32 b(example,)h(colons)f(\(`:'\))0 3179 y(are)g(not)h(allo)
8958 +n(w)n(ed)f(in)i(Windo)n(ws)e(\014lenames,)j(but)e(they)h(are)e(legal)g
8959 +(in)i(Unix)f(\014lenames.)53 b(This)33 b(means)g(that)h(a)e(Unix)i
8960 +(\014le)0 3279 y Fk(foo:bar)27 b Fn(can't)j(b)r(e)g(sync)n(hronized)e
8961 +(to)i(a)f(Windo)n(ws)h(system.)43 b(As)30 b(with)g(case)f(con\015icts,)
8962 +h(Unison)g(detects)g(this)g(situation)0 3378 y(for)c(y)n(ou,)g(and)g(y)
8963 +n(ou)g(ha)n(v)n(e)g(the)h(same)f(options:)35 b(y)n(ou)26
8964 +b(can)g(either)h(rename)f(the)h(Unix)f(\014le)h(and)g(re-sync)n
8965 +(hronize,)d(or)i(y)n(ou)f(can)0 3478 y(ignore)h(it.)0
8966 +3710 y Fh(5.16)112 b(Slo)m(w)37 b(Links)0 3864 y Fn(Unison)28
8967 +b(is)f(built)h(to)g(run)f(w)n(ell)h(ev)n(en)f(o)n(v)n(er)e(relativ)n
8968 +(ely)i(slo)n(w)f(links)i(suc)n(h)f(as)g(mo)r(dems)h(and)f(DSL)h
8969 +(connections.)125 3963 y(Unison)h(uses)f(the)i(\\rsync)e(proto)r(col")f
8970 +(designed)i(b)n(y)g(Andrew)g(T)-7 b(ridgell)29 b(and)g(P)n(aul)f(Mac)n
8971 +(k)n(erras)e(to)j(greatly)f(sp)r(eed)i(up)0 4063 y(transfers)36
8972 +b(of)h(large)f(\014les)i(in)f(whic)n(h)h(only)f(small)g(c)n(hanges)f
8973 +(ha)n(v)n(e)g(b)r(een)i(made.)66 b(More)36 b(information)h(ab)r(out)g
8974 +(the)h(rsync)0 4162 y(proto)r(col)26 b(can)i(b)r(e)g(found)g(at)f(the)h
8975 +(rsync)f(w)n(eb)g(site)h(\()p Fk(http://samba.anu)o(.ed)o(u.)o(au/)o
8976 +(rs)o(yn)o(c/)p Fn(\).)125 4262 y(If)h(y)n(ou)f(are)f(using)i(Unison)f
8977 +(with)i Fk(ssh)p Fn(,)e(y)n(ou)g(ma)n(y)g(get)g(some)g(sp)r(eed)h
8978 +(impro)n(v)n(emen)n(t)f(b)n(y)g(enabling)g Fk(ssh)p Fn('s)g
8979 +(compression)0 4362 y(feature.)61 b(Do)35 b(this)h(b)n(y)g(adding)f
8980 +(the)h(option)f(\\)p Fk(-rshargs)40 b(-C)p Fn(")35 b(to)g(the)h
8981 +(command)f(line)h(or)f(\\)p Fk(rshargs)40 b(=)j(-C)p
8982 +Fn(")35 b(to)g(y)n(our)0 4461 y(pro\014le.)0 4694 y Fh(5.17)112
8983 +b(F)-9 b(ast)38 b(Up)s(date)g(Detection)0 4847 y Fn(If)22
8984 +b(y)n(our)e(replicas)h(are)f(large)g(and)i(at)f(least)g(one)g(of)h
8985 +(them)g(is)f(on)g(a)g(Windo)n(ws)h(system,)g(y)n(ou)f(ma)n(y)g(\014nd)h
8986 +(that)f(Unison's)h(default)0 4947 y(metho)r(d)i(for)g(detecting)g(c)n
8987 +(hanges)f(\(whic)n(h)h(in)n(v)n(olv)n(es)e(scanning)h(the)h(full)h(con)
8988 +n(ten)n(ts)e(of)h(ev)n(ery)f(\014le)h(on)g(ev)n(ery)f(sync|the)g(only)0
8989 +5046 y(completely)34 b(safe)f(w)n(a)n(y)g(to)g(do)h(it)g(under)g(Windo)
8990 +n(ws\))f(is)h(to)r(o)g(slo)n(w.)54 b(Unison)34 b(pro)n(vides)e(a)i
8991 +(preference)f Fk(fastcheck)d Fn(that,)0 5146 y(when)i(set)f(to)h
8992 +Fk(yes)p Fn(,)f(causes)g(it)g(to)h(use)f(\014le)h(creation)e(times)i
8993 +(as)f('pseudo)g(ino)r(de)h(n)n(um)n(b)r(ers')f(when)g(scanning)g
8994 +(replicas)g(for)0 5245 y(up)r(dates,)d(instead)f(of)h(reading)e(the)i
8995 +(full)h(con)n(ten)n(ts)d(of)i(ev)n(ery)e(\014le.)1908
8996 +5589 y(31)p eop
8997 +%%Page: 32 32
8998 +32 31 bop 125 83 a Fn(When)23 b Fk(fastcheck)c Fn(is)k(set)g(to)g
8999 +Fk(no)p Fn(,)g(Unison)g(will)g(p)r(erform)f(slo)n(w)g(c)n(hec)n
9000 +(king|re-scanning)e(the)j(con)n(ten)n(ts)f(of)h(eac)n(h)f(\014le)h(on)0
9001 +183 y(eac)n(h)j(sync)n(hronization|on)f(all)h(replicas.)36
9002 +b(When)27 b Fk(fastcheck)c Fn(is)k(set)f(to)h Fk(default)d
9003 +Fn(\(whic)n(h,)j(naturally)-7 b(,)26 b(is)h(the)g(default\),)0
9004 +282 y(Unison)h(will)f(use)h(fast)f(c)n(hec)n(ks)g(on)g(Unix)h(replicas)
9005 +f(and)g(slo)n(w)g(c)n(hec)n(ks)f(on)h(Windo)n(ws)h(replicas.)125
9006 +382 y(This)23 b(strategy)g(ma)n(y)g(cause)g(Unison)h(to)g(miss)f
9007 +(propagating)f(an)h(up)r(date)i(if)f(the)g(create)f(time,)i(mo)r
9008 +(di\014cation)f(time,)h(and)0 482 y(length)h(of)f(the)h(\014le)f(are)g
9009 +(all)g(unc)n(hanged)g(b)n(y)g(the)h(up)r(date)g(\(this)g(is)f(not)g
9010 +(easy)g(to)g(ac)n(hiev)n(e,)g(but)h(it)g(can)f(b)r(e)h(done\).)36
9011 +b(Ho)n(w)n(ev)n(er,)0 581 y(Unison)26 b(will)g(nev)n(er)g
9012 +Fi(overwrite)h Fn(suc)n(h)f(an)g(up)r(date)g(with)h(a)f(c)n(hange)f
9013 +(from)g(the)i(other)f(replica,)f(since)h(it)h(alw)n(a)n(ys)d(do)r(es)i
9014 +(a)f(safe)0 681 y(c)n(hec)n(k)32 b(for)g(up)r(dates)h(just)g(b)r(efore)
9015 +g(propagating)d(a)j(c)n(hange.)51 b(Th)n(us,)33 b(it)g(is)g(reasonable)
9016 +e(to)h(use)h(this)g(switc)n(h)g(most)f(of)h(the)0 780
9017 +y(time)c(and)f(o)r(ccasionally)f(run)h(Unison)h(once)f(with)h
9018 +Fk(fastcheck)24 b Fn(set)29 b(to)f Fk(no)p Fn(,)g(if)h(y)n(ou)f(are)f
9019 +(w)n(orried)g(that)i(Unison)f(ma)n(y)g(ha)n(v)n(e)0 880
9020 +y(o)n(v)n(erlo)r(ok)n(ed)d(an)i(up)r(date.)0 1112 y Fh(5.18)112
9021 +b(Clic)m(k-starting)35 b(Unison)0 1266 y Fn(On)h(Windo)n(ws)h(NT/2k)e
9022 +(systems,)k(the)e(graphical)e(v)n(ersion)g(of)h(Unison)h(can)f(b)r(e)h
9023 +(in)n(v)n(ok)n(ed)e(directly)h(b)n(y)h(clic)n(king)f(on)g(its)0
9024 +1365 y(icon.)52 b(On)33 b(Windo)n(ws)g(95/98)d(systems,)k(clic)n
9025 +(k-starting)d(also)h(w)n(orks,)g Fi(as)j(long)h(as)e(you)h(ar)l(e)g
9026 +(not)g(using)f(ssh)p Fn(.)53 b(Due)34 b(to)e(an)0 1465
9027 +y(incompatibilit)n(y)d(with)h(o)r(caml)f(and)g(Windo)n(ws)g(95/98)e
9028 +(that)j(is)f(not)h(under)f(our)g(con)n(trol,)f(y)n(ou)h(m)n(ust)g
9029 +(start)g(Unison)g(from)0 1565 y(a)e(DOS)h(windo)n(w)f(in)h(Windo)n(ws)f
9030 +(95/98)e(if)j(y)n(ou)f(w)n(an)n(t)g(to)h(use)f(ssh.)125
9031 +1664 y(When)c(y)n(ou)f(clic)n(k)g(on)g(the)h(Unison)g(icon,)g(t)n(w)n
9032 +(o)f(windo)n(ws)g(will)h(b)r(e)g(created:)34 b(Unison's)22
9033 +b(regular)f(windo)n(w,)i(plus)g(a)f(console)0 1764 y(windo)n(w,)j(whic)
9034 +n(h)g(is)g(used)g(only)g(for)g(giving)f(y)n(our)g(passw)n(ord)f(to)i
9035 +(ssh)g(\(if)h(y)n(ou)e(do)h(not)g(use)g(ssh)g(to)g(connect,)g(y)n(ou)g
9036 +(can)f(ignore)0 1863 y(this)g(windo)n(w\).)36 b(When)24
9037 +b(y)n(our)f(passw)n(ord)e(is)j(requested,)g(y)n(ou'll)f(need)h(to)g
9038 +(activ)-5 b(ate)24 b(the)g(console)e(windo)n(w)i(\(e.g.,)g(b)n(y)g
9039 +(clic)n(king)0 1963 y(in)k(it\))g(b)r(efore)f(t)n(yping.)36
9040 +b(If)28 b(y)n(ou)f(start)f(Unison)i(from)f(a)g(DOS)g(windo)n(w,)g
9041 +(Unison's)g(regular)f(windo)n(w)h(will)g(app)r(ear)g(and)g(y)n(ou)0
9042 +2063 y(will)h(t)n(yp)r(e)g(y)n(our)e(passw)n(ord)g(in)h(the)h(DOS)g
9043 +(windo)n(w)f(y)n(ou)g(w)n(ere)g(using.)125 2162 y(T)-7
9044 +b(o)29 b(use)g(Unison)g(in)h(this)f(mo)r(de,)h(y)n(ou)f(m)n(ust)g
9045 +(\014rst)h(create)e(a)h(pro\014le)g(\(see)g(Section)g(5.5)g
9046 +([Pro\014le]\).)41 b(Use)30 b(y)n(our)e(fa)n(v)n(orite)0
9047 +2262 y(editor)f(for)g(this.)1908 5589 y(32)p eop
9048 +%%Page: 33 33
9049 +33 32 bop 0 83 a Fm(6)135 b(Advice)0 281 y Fh(6.1)112
9050 +b(F)-9 b(requen)m(tly)37 b(Ask)m(ed)h(Questions)0 435
9051 +y Fn(\(See)28 b(Section)f(6.2)g([Common)g(Problems])g(and)g(Section)h
9052 +(6.3)e([Tips)i(and)g(T)-7 b(ric)n(ks])26 b(for)h(further)h
9053 +(suggestions.\))125 604 y Fj(\017)41 b Fi(What)30 b(ar)l(e)g(the)g
9054 +(di\013er)l(enc)l(es)g(b)l(etwe)l(en)f(Unison)h(and)g(rsync?)208
9055 +735 y Fn(Rsync)37 b(is)g(a)g(mirroring)f(to)r(ol;)42
9056 +b(Unison)c(is)f(a)g(sync)n(hronizer.)65 b(That)38 b(is,)i(rsync)c
9057 +(needs)i(to)f(b)r(e)h(told)g(\\this)f(replica)208 834
9058 +y(con)n(tains)24 b(the)h(true)g(v)n(ersions)e(of)i(all)g(the)g
9059 +(\014les;)h(please)f(mak)n(e)f(the)h(other)g(replica)f(lo)r(ok)g
9060 +(exactly)h(the)g(same.")35 b(Unison)208 934 y(is)26 b(capable)g(of)h
9061 +(recognizing)e(up)r(dates)i(in)g(b)r(oth)g(replicas)f(and)h(deciding)g
9062 +(whic)n(h)f(w)n(a)n(y)g(they)h(should)g(b)r(e)g(propagated.)208
9063 +1064 y(Both)h(Unison)h(and)f(rsync)g(use)h(the)g(so-called)e(\\rsync)h
9064 +(algorithm,")f(b)n(y)i(Andrew)g(T)-7 b(ridgell)28 b(and)g(P)n(aul)g
9065 +(Mac)n(k)n(erras,)208 1164 y(for)23 b(p)r(erforming)g(up)r(dates.)36
9066 +b(This)24 b(algorithm)f(streamlines)g(up)r(dates)h(in)h(small)e(parts)h
9067 +(of)g(large)e(\014les)i(b)n(y)g(transferring)208 1263
9068 +y(only)j(the)h(parts)f(that)g(ha)n(v)n(e)g(c)n(hanged.)125
9069 +1424 y Fj(\017)41 b Fi(What)30 b(ar)l(e)g(the)g(di\013er)l(enc)l(es)g
9070 +(b)l(etwe)l(en)f(Unison)h(and)g(CVS?)208 1555 y Fn(Both)g(CVS)g(and)g
9071 +(Unison)g(can)g(b)r(e)h(used)f(to)g(k)n(eep)g(a)f(remote)h(replica)f
9072 +(of)i(a)e(directory)g(structure)h(up)g(to)g(date)h(with)208
9073 +1654 y(a)39 b(cen)n(tral)f(rep)r(ository)-7 b(.)71 b(Both)39
9074 +b(are)g(capable)g(of)g(propagating)e(up)r(dates)j(in)g(b)r(oth)g
9075 +(directions)f(and)g(recognizing)208 1754 y(con\015icting)27
9076 +b(up)r(dates.)37 b(Both)27 b(use)h(the)g(rsync)f(proto)r(col)f(for)h
9077 +(\014le)h(transfer.)208 1884 y(Unison's)36 b(main)i(adv)-5
9078 +b(an)n(tage)35 b(is)i(b)r(eing)h(somewhat)e(more)h(automatic)f(and)h
9079 +(easier)f(to)h(use,)j(esp)r(ecially)d(on)g(large)208
9080 +1984 y(groups)28 b(of)h(\014les.)43 b(CVS)30 b(requires)e(man)n(ual)h
9081 +(noti\014cation)g(whenev)n(er)g(\014les)g(are)g(added)g(or)g(deleted.)
9082 +43 b(Mo)n(ving)29 b(\014les)g(is)208 2083 y(a)e(bit)h(tric)n(ky)-7
9083 +b(.)36 b(And)28 b(if)g(y)n(ou)f(decide)h(to)f(mo)n(v)n(e)g(a)g
9084 +(directory)-7 b(...)36 b(w)n(ell,)27 b(hea)n(v)n(en)g(help)g(y)n(ou.)
9085 +208 2214 y(CVS,)c(on)f(the)h(other)f(hand,)i(is)e(a)g(full-blo)n(wn)h
9086 +(v)n(ersion)e(con)n(trol)g(system,)i(and)g(it)g(has)f
9087 +Fi(lots)h Fn(of)f(other)g(features)g(\(v)n(ersion)208
9088 +2313 y(history)-7 b(,)26 b(m)n(ultiple)j(branc)n(hes,)d(etc.\))37
9089 +b(that)28 b(Unison)g(\(whic)n(h)g(is)f(just)h(a)f(\014le)h(sync)n
9090 +(hronizer\))e(do)r(esn't)i(ha)n(v)n(e.)125 2474 y Fj(\017)41
9091 +b Fi(Is)31 b(it)g(OK)g(to)h(mount)f(my)g(r)l(emote)h(\014lesystem)f
9092 +(using)g(NFS)g(and)h(run)f(unison)g(lo)l(c)l(al)t(ly,)j(or)e(should)h
9093 +(I)e(run)g(a)h(r)l(emote)208 2574 y(server)e(pr)l(o)l(c)l(ess?)208
9094 +2704 y Fn(NFS-moun)n(ting)d(the)g(replicas)f(is)h(\014ne,)g(as)g(long)f
9095 +(as)g(the)i(lo)r(cal)e(net)n(w)n(ork)g(is)h(fast)g(enough.)36
9096 +b(Unison)27 b(needs)f(to)h(read)f(a)208 2804 y(lot)j(of)h(\014les)f
9097 +(\(in)h(particular,)f(it)h(needs)g(to)f(c)n(hec)n(k)g(the)h(last-mo)r
9098 +(di\014ed)f(time)h(of)g(ev)n(ery)e(\014le)i(in)f(the)h(rep)r(ository)e
9099 +(ev)n(ery)208 2903 y(time)g(it)g(runs\),)f(so)g(if)h(the)g(link)g
9100 +(bandwidth)g(is)g(lo)n(w)e(then)j(running)e(a)g(remote)g(serv)n(er)f
9101 +(is)h(m)n(uc)n(h)h(b)r(etter.)125 3064 y Fj(\017)41 b
9102 +Fi(When)27 b(I)f(run)h(Unison)f(on)h(Windows,)i(it)e(cr)l(e)l(ates)g
9103 +(two)g(di\013er)l(ent)g(windows,)i(the)e(main)g(user)g(interfac)l(e)h
9104 +(and)f(a)g(blank)208 3164 y(c)l(onsole)j(window.)40 b(Is)30
9105 +b(ther)l(e)g(any)g(way)g(to)g(get)g(rid)g(of)h(the)f(se)l(c)l(ond)g
9106 +(one?)208 3294 y Fn(The)f(extra)g(console)f(windo)n(w)h(is)g(there)h
9107 +(for)f(ssh)g(to)g(use)h(to)f(get)g(y)n(our)f(passw)n(ord.)41
9108 +b(Unfortunately)-7 b(,)30 b(in)g(the)g(presen)n(t)208
9109 +3394 y(v)n(ersion)c(of)h(unison)h(the)g(windo)n(w)f(will)g(app)r(ear)g
9110 +(whether)h(y)n(ou're)e(using)h(ssh)g(or)g(not.)208 3524
9111 +y(Karl)17 b(Mo)r(erder)i(con)n(tributed)f(some)h(scripts)g(that)g(he)g
9112 +(uses)g(to)g(mak)n(e)f(the)i(command)f(windo)n(w)f(a)h(bit)h(more)e
9113 +(attractiv)n(e.)208 3623 y(He)29 b(starts)g(unison)g(from)g(a)g
9114 +(shortcut)g(to)g(a)g Fk(.cmd)f Fn(\014le.)42 b(This)30
9115 +b(lets)f(him)h(con)n(trol)e(the)i(attributes)f(of)h(the)f(command)208
9116 +3723 y(windo)n(w,)h(making)f(it)i(small)f(and)g(gra)n(y)e(and)i(cen)n
9117 +(tering)f(the)i(passphrase)d(request.)44 b(His)30 b(scripts)f(can)h(b)r
9118 +(e)h(found)f(at)208 3823 y Fk(http://www.cis.)o(upe)o(nn)o(.e)o(du/)o
9119 +Fj(\030)p Fk(b)o(cpi)o(er)o(ce)o(/un)o(is)o(on/)o(do)o(wnl)o(oa)o(d/)o
9120 +(res)o(ou)o(rce)o(s/)o(ka)o(rls)o(-w)o(inh)o(ax)o(.zi)o(p)p
9121 +Fn(.)208 3953 y(It)c(is)g(also)f(p)r(ossible)h(to)g(get)f(rid)h(of)g
9122 +(the)h(windo)n(w)e(en)n(tirely)h(\(for)g(users)f(that)h(only)g(w)n(an)n
9123 +(t)f(so)r(c)n(k)n(et)g(mo)r(de)i(connections\))208 4053
9124 +y(b)n(y)22 b(pla)n(ying)g(games)f(with)j(icons.)34 b(If)24
9125 +b(y)n(ou)e(mak)n(e)g(a)g(sym)n(b)r(olic)g(link)h(to)g(the)g
9126 +(executable,)g(y)n(ou)f(can)h(edit)g(the)g(prop)r(erties)208
9127 +4152 y(b)r(o)n(x)28 b(to)h(mak)n(e)f(this)h(windo)n(w)g(come)g(up)g
9128 +(iconic.)41 b(That)29 b(w)n(a)n(y)e(when)i(y)n(ou)g(clic)n(k)f(on)h
9129 +(the)g(link,)h(y)n(ou)e(seem)h(to)g(just)g(get)208 4252
9130 +y(a)e(unison)g(windo)n(w)g(\(except)h(on)f(the)h(task)f(bar,)g(where)g
9131 +(the)h(text)g(windo)n(w)f(sho)n(ws\).)125 4413 y Fj(\017)41
9132 +b Fi(Wil)t(l)27 b(unison)g(b)l(ehave)h(c)l(orr)l(e)l(ctly)f(if)h(use)l
9133 +(d)e(tr)l(ansitively?)39 b(That)27 b(is,)i(if)e(I)g(synchr)l(onize)h(b)
9134 +l(oth)f(b)l(etwe)l(en)f Fk(host1:dir)d Fi(and)208 4512
9135 +y Fk(host2:dir)28 b Fi(and)33 b(b)l(etwe)l(en)f Fk(host2:dir)c
9136 +Fi(and)33 b Fk(host3:dir)28 b Fi(at)k(di\013er)l(ent)h(times?)46
9137 +b(A)n(r)l(e)32 b(ther)l(e)g(any)g(pr)l(oblems)i(if)f(the)208
9138 +4612 y(\\c)l(onne)l(ctivity)c(gr)l(aph")i(has)g(lo)l(ops?)208
9139 +4742 y Fn(This)f(mo)r(de)h(of)f(usage)f(will)i(w)n(ork)e(\014ne.)46
9140 +b(As)30 b(far)g(as)g(eac)n(h)g(\\host)f(pair")h(is)g(concerned,)g
9141 +(\014lesystem)h(up)r(dates)f(made)208 4842 y(b)n(y)d(Unison)h(when)g
9142 +(sync)n(hronizing)f(an)n(y)g(other)g(pairs)g(of)h(hosts)g(are)f
9143 +(exactly)g(the)h(same)g(as)f(ordinary)f(user)h(c)n(hanges)208
9144 +4941 y(to)j(the)h(\014lesystem.)45 b(So)30 b(if)h(a)f(\014le)h(started)
9145 +f(out)g(ha)n(ving)g(b)r(een)g(mo)r(di\014ed)h(on)f(just)i(one)e(mac)n
9146 +(hine,)g(then)h(ev)n(ery)f(time)208 5041 y(Unison)25
9147 +b(is)g(run)g(on)h(a)f(pair)f(of)i(hosts)f(where)f(one)i(has)e(heard)h
9148 +(ab)r(out)g(the)h(c)n(hange)e(and)i(the)g(other)e(hasn't)i(will)f
9149 +(result)208 5141 y(in)g(the)h(c)n(hange)e(b)r(eing)h(propagated)f(to)h
9150 +(the)h(other)e(host.)36 b(Running)26 b(unison)f(b)r(et)n(w)n(een)g(mac)
9151 +n(hines)g(where)g(b)r(oth)g(ha)n(v)n(e)208 5240 y(already)j(heard)g(ab)
9152 +r(out)i(the)g(c)n(hange)e(will)i(lea)n(v)n(e)e(that)i(\014le)g(alone.)
9153 +42 b(So,)30 b(no)f(matter)h(what)f(the)h(connectivit)n(y)f(graph)208
9154 +5340 y(lo)r(oks)d(lik)n(e)g(\(as)h(long)g(as)f(it)i(is)f(not)g
9155 +(partitioned\),)g(ev)n(en)n(tually)f(ev)n(ery)n(one)f(will)i(agree)f
9156 +(on)h(the)g(new)g(v)-5 b(alue)27 b(of)g(the)h(\014le.)1908
9157 +5589 y(33)p eop
9158 +%%Page: 34 34
9159 +34 33 bop 208 83 a Fn(The)31 b(only)f(thing)i(to)e(b)r(e)i(careful)e
9160 +(of)h(is)g(c)n(hanging)f(the)h(\014le)h Fi(again)g Fn(on)f(the)g
9161 +(\014rst)g(mac)n(hine)g(\(or,)g(in)g(fact,)h(an)n(y)f(other)208
9162 +183 y(mac)n(hine\))21 b(b)r(efore)g(all)g(the)h(mac)n(hines)f(ha)n(v)n
9163 +(e)f(heard)h(ab)r(out)g(the)h(\014rst)f(c)n(hange)f({)h(this)h(can)f
9164 +(result)g(in)h(Unison)f(rep)r(orting)208 282 y(con\015icting)27
9165 +b(c)n(hanges)f(to)h(the)h(\014le,)g(whic)n(h)g(y)n(ou'll)f(then)h(ha)n
9166 +(v)n(e)e(to)i(resolv)n(e)e(b)n(y)h(hand.)125 447 y Fj(\017)41
9167 +b Fi(What)30 b(wil)t(l)h(happ)l(en)g(if)f(I)g(try)g(to)f(synchr)l
9168 +(onize)i(a)f(sp)l(e)l(cial)h(\014le)f(\(e.g.,)i(something)e(in)g
9169 +Fk(/dev)p Fi(,)e Fk(/proc)p Fi(,)g(etc.\)?)208 579 y
9170 +Fn(Unison)19 b(will)h(refuse)f(to)g(sync)n(hronize)f(suc)n(h)h
9171 +(\014les.)34 b(It)20 b(only)f(understands)g(ordinary)e(\014les,)k
9172 +(directories,)f(and)f(symlinks.)125 743 y Fj(\017)41
9173 +b Fi(Is)29 b(it)h(OK)f(to)h(run)f(sever)l(al)h(c)l(opies)i(of)e(Unison)
9174 +g(c)l(oncurr)l(ently?)208 875 y Fn(Unison)f(is)g(built)h(to)g(handle)f
9175 +(this)h(case,)f(but)h(this)f(functionalit)n(y)h(has)f(not)g(b)r(een)h
9176 +(extensiv)n(ely)f(tested.)42 b(Keep)29 b(y)n(our)208
9177 +975 y(ey)n(es)d(op)r(en.)125 1139 y Fj(\017)41 b Fi(What)29
9178 +b(wil)t(l)h(happ)l(en)g(if)g(I)f(do)h(a)f(lo)l(c)l(al)h(\(or)f(NFS,)g
9179 +(etc.\))38 b(sync)29 b(and)h(some)f(\014le)g(happ)l(ens)h(to)f(b)l(e)g
9180 +(p)l(art)g(of)h(b)l(oth)f(r)l(eplic)l(as?)208 1271 y
9181 +Fn(It)c(will)g(lo)r(ok)f(to)h(Unison)g(as)f(though)h(someb)r(o)r(dy)f
9182 +(else)h(has)g(b)r(een)g(mo)r(difying)g(the)g(\014les)g(it)h(is)e
9183 +(trying)h(to)g(sync)n(hronize,)208 1371 y(and)i(it)h(will)g(fail)g
9184 +(\(safely\))f(on)g(these)h(\014les.)125 1535 y Fj(\017)41
9185 +b Fi(What)31 b(happ)l(ens)i(if)g(Unison)e(gets)h(kil)t(le)l(d)h(while)g
9186 +(it)f(is)g(working?)45 b(Do)32 b(I)f(have)i(to)e(kil)t(l)i(it)f(nic)l
9187 +(ely,)h(or)f(c)l(an)g(I)f(use)h Fk(kill)208 1635 y(-9)p
9188 +Fi(?)47 b(What)33 b(if)g(the)g(network)h(go)l(es)f(down)g(during)g(a)h
9189 +(synchr)l(onization?)49 b(What)33 b(if)h(one)f(machine)h(cr)l(ashes)g
9190 +(but)e(the)208 1734 y(other)e(ke)l(eps)g(running?)208
9191 +1866 y Fn(Don't)e(w)n(orry;)d(b)r(e)j(happ)n(y)-7 b(.)37
9192 +b(See)27 b(Section)h(4.6)f([In)n(v)-5 b(arian)n(ts].)125
9193 +2031 y Fj(\017)41 b Fi(What)27 b(ab)l(out)h(r)l(ac)l(e)f(c)l(onditions)
9194 +i(when)f(b)l(oth)g(Unison)f(and)h(some)g(other)g(pr)l(o)l(gr)l(am)g(or)
9195 +g(user)f(ar)l(e)h(b)l(oth)g(trying)f(to)h(write)208 2130
9196 +y(to)h(a)h(\014le)g(at)g(exactly)g(the)g(same)g(moment?)208
9197 +2262 y Fn(Unison)41 b(w)n(orks)e(hard)h(to)h(mak)n(e)g(these)g(\\windo)
9198 +n(ws)e(of)i(danger")f(as)g(short)h(as)f(p)r(ossible,)k(but)e(they)f
9199 +(cannot)g(b)r(e)208 2362 y(eliminated)27 b(completely)-7
9200 +b(.)125 2527 y Fj(\017)41 b Fi(The)30 b(Unix)f(\014le)h(lo)l(cking)h
9201 +(me)l(chanism)g(do)l(esn)-8 b('t)29 b(work)i(very)f(wel)t(l)h(under)e
9202 +(NFS.)h(Is)g(this)g(a)g(pr)l(oblem)h(for)g(Unison?)208
9203 +2659 y Fn(No.)125 2823 y Fj(\017)41 b Fi(On)31 b(Windows)j(systems,)f
9204 +(it)g(lo)l(oks)g(like)h(the)f Fk(root)e Fi(pr)l(efer)l(enc)l(es)i(ar)l
9205 +(e)g(sp)l(e)l(ci\014e)l(d)g(using)f(b)l(ackslashes,)k(but)c
9206 +Fk(path)e Fi(and)208 2923 y Fk(ignore)d Fi(pr)l(efer)l(enc)l(es)j(ar)l
9207 +(e)g(sp)l(e)l(ci\014e)l(d)h(with)f(forwar)l(d)i(slashes.)39
9208 +b(What's)31 b(up)e(with)i(that?)208 3055 y Fn(Unison)g(uses)g(t)n(w)n
9209 +(o)f(sorts)g(of)h(paths:)44 b(nativ)n(e)31 b(\014lesystem)g(paths,)h
9210 +(whic)n(h)f(use)g(the)h(syn)n(tax)e(of)i(the)f(host)g(\014lesystem,)208
9211 +3154 y(and)j(\\p)r(ortable")g(paths)g(relativ)n(e)g(to)h(the)g(ro)r
9212 +(ots)f(of)h(the)g(replicas,)h(whic)n(h)e(alw)n(a)n(ys)f(use)i(/)g(to)f
9213 +(separate)g(the)h(path)208 3254 y(comp)r(onen)n(ts.)h(Ro)r(ots)27
9214 +b(are)g(nativ)n(e)g(\014lesystem)g(paths;)h(the)g(others)e(are)h(ro)r
9215 +(ot-relativ)n(e.)0 3486 y Fh(6.2)112 b(Common)37 b(Problems)0
9216 +3639 y Fn(If)28 b(y)n(ou're)e(ha)n(ving)h(problems)g(with)h(Unison,)f
9217 +(the)h(suggestions)e(in)i(this)g(section)f(ma)n(y)g(help.)125
9218 +3738 y(A)22 b(general)e(recommendation)g(is)i(that,)h(if)g(y)n(ou'v)n
9219 +(e)d(gotten)h(in)n(to)h(a)f(state)h(y)n(ou)e(don't)i(understand,)h
9220 +(deleting)f(the)g(arc)n(hiv)n(e)0 3838 y(\014les)j(on)g(b)r(oth)g
9221 +(replicas)f(\(\014les)h(with)h(names)e(lik)n(e)h Fk(arNNNNNNNNNNNNNN)o
9222 +(N)19 b Fn(in)25 b(the)h Fk(.unison)c Fn(directory\))i(will)h(return)g
9223 +(y)n(ou)f(to)0 3938 y(a)h(blank)g(slate.)36 b(If)25 b(the)h(replicas)e
9224 +(are)g(iden)n(tical,)i(then)g(deleting)f(the)h(arc)n(hiv)n(es)d(is)i
9225 +(alw)n(a)n(ys)f(safe.)35 b(If)26 b(they)g(are)e(not)h(iden)n(tical,)0
9226 +4037 y(then)k(deleting)g(the)g(arc)n(hiv)n(es)d(will)j(cause)f(all)g
9227 +(\014les)h(that)f(exist)h(on)f(one)g(side)h(but)g(not)g(the)g(other)e
9228 +(to)i(b)r(e)g(copied,)f(and)h(will)0 4137 y(rep)r(ort)e(con\015icts)g
9229 +(for)g(all)h(non-iden)n(tical)e(\014les)i(that)g(do)f(exist)h(on)f(b)r
9230 +(oth)h(sides.)125 4237 y(\(If)23 b(y)n(ou)f(think)i(the)f(b)r(eha)n
9231 +(vior)f(y)n(ou're)g(observing)f(is)i(an)g(actual)f(bug,)i(then)g(y)n
9232 +(ou)e(migh)n(t)h(consider)f Fi(moving)i Fn(the)f(arc)n(hiv)n(es)0
9233 +4336 y(to)33 b(somewhere)e(else)i(instead)f(of)h(deleting)f(them,)j(so)
9234 +d(that)h(y)n(ou)f(can)g(try)h(to)f(replicate)g(the)i(bad)e(b)r(eha)n
9235 +(vior)f(and)i(tell)g(us)0 4436 y(what)28 b(more)e(clearly)h(happ)r
9236 +(ened.\))125 4614 y Fj(\017)41 b Fi(The)33 b(text)f(mo)l(de)h(user)g
9237 +(interfac)l(e)g(fails)h(with)g(\\)p Fk(Uncaught)40 b(exception)g
9238 +(Sys_blocked_io)p Fi(")26 b(when)33 b(running)f(over)208
9239 +4714 y(ssh2.)208 4846 y Fn(The)20 b(problem)h(here)f(is)g(that)h(ssh2)f
9240 +(puts)h(its)g(standard)f(\014le)h(descriptors)e(in)n(to)i(non-blo)r(c)n
9241 +(king)e(mo)r(de.)35 b(But)21 b(unison)f(and)208 4946
9242 +y(ssh)27 b(share)f(the)i(same)f(stderr)g(\(so)g(that)h(error)e
9243 +(messages)g(from)h(the)h(serv)n(er)e(are)g(displa)n(y)n(ed\),)h(and)g
9244 +(the)h(non)n(blo)r(c)n(king)208 5045 y(setting)34 b(in)n(terferes)g
9245 +(with)i(Unison's)e(in)n(teraction)g(with)h(the)h(user.)57
9246 +b(This)35 b(can)g(b)r(e)g(corrected)e(b)n(y)i(redirecting)f(the)208
9247 +5145 y(stderr)26 b(when)i(in)n(v)n(oking)e(Unison:)425
9248 +5340 y Fk(unison)42 b(-ui)g(text)g(<other)f(args>)g(2>/dev/tty)1908
9249 +5589 y Fn(34)p eop
9250 +%%Page: 35 35
9251 +35 34 bop 208 83 a Fn(\(The)23 b(redirection)g(syn)n(tax)f(is)h(a)g
9252 +(bit)h(shell-sp)r(eci\014c.)35 b(On)23 b(some)g(shells,)h(e.g.,)g(csh)f
9253 +(and)g(tcsh,)h(y)n(ou)f(ma)n(y)g(need)g(to)g(write)338
9254 +278 y Fk(unison)41 b(-ui)i(text)f(<other)f(args>)85 b(>)43
9255 +b(&)g(/dev/tty)208 473 y Fn(instead.\))125 637 y Fj(\017)e
9256 +Fi(What)30 b(do)l(es)g(the)g(fol)t(lowing)i(me)l(an?)382
9257 +832 y Fk(Propagating)39 b(updates)i([accounting/fed)o(scw)o(h3)o(qt2)o
9258 +(00)o(0.)o(wb3)o(])382 931 y(failed:)g(error)g(in)i(renaming)d
9259 +(locally:)382 1031 y(/DANGER.README:)d(permission)j(denied)208
9260 +1226 y Fn(It)19 b(means)g(that)h(unison)f(is)g(ha)n(ving)g(trouble)g
9261 +(creating)f(the)i(temp)r(orary)e(\014le)i(D)n(ANGER.README,)g(whic)n(h)
9262 +f(it)h(uses)f(as)208 1326 y(a)f("commit)g(log")f(for)g(op)r(erations)h
9263 +(\(suc)n(h)g(as)g(renaming)f(its)h(temp)r(orary)g(\014le)g
9264 +Fk(accounting/fedscw)o(h3)o(qt)o(200)o(0.)o(wb3)o(.u)o(ni)o(son)o(.t)o
9265 +(mp)208 1425 y Fn(to)25 b(the)i(real)e(lo)r(cation)g
9266 +Fk(accounting/fedscw)o(h3)o(qt2)o(00)o(0.)o(wb3)o Fn(\))c(that)26
9267 +b(ma)n(y)f(lea)n(v)n(e)g(the)h(\014lesystem)g(in)g(a)g(bad)g(state)g
9268 +(if)208 1525 y(they)k(are)f(in)n(terrupted)i(in)f(the)h(middle.)45
9269 +b(This)31 b(is)f(prett)n(y)g(unlik)n(ely)-7 b(,)31 b(since)f(the)h
9270 +(rename)e(op)r(eration)h(happ)r(ens)g(fast,)208 1624
9271 +y(but)j(it)h(is)e(p)r(ossible;)k(if)d(it)h(happ)r(ens,)g(the)f(commit)h
9272 +(log)e(will)h(b)r(e)g(left)h(around)e(and)h(Unison)g(will)g(notice)g
9273 +(\(and)g(tell)208 1724 y(y)n(ou\))27 b(the)h(next)f(time)i(it)f(runs)f
9274 +(that)h(the)g(consistency)e(of)i(that)g(\014le)g(needs)f(to)h(b)r(e)g
9275 +(c)n(hec)n(k)n(ed.)208 1856 y(The)38 b(sp)r(eci\014c)g(problem)g(here)g
9276 +(is)g(that)h(Unison)f(is)g(trying)g(to)g(create)f(D)n(ANGER.README)i
9277 +(in)g(the)f(directory)208 1956 y(sp)r(eci\014ed)c(b)n(y)g(y)n(our)f
9278 +(HOME)h(en)n(vironmen)n(t)g(v)-5 b(ariable,)35 b(whic)n(h)f(seems)g(to)
9279 +g(b)r(e)h(set)f(to)h(/,)g(where)f(y)n(ou)g(do)g(not)g(ha)n(v)n(e)208
9280 +2055 y(write)27 b(p)r(ermission.)125 2220 y Fj(\017)41
9281 +b Fi(The)30 b(c)l(ommand)h(line)425 2414 y Fk(unison)42
9282 +b(work)g(ssh://remote.dc)o(s.)o(ed.)o(ac)o(.uk)o(/w)o(ork)208
9283 +2609 y Fi(fails,)33 b(with)g(\\)p Fk(fatal)41 b(error:)85
9284 +b(could)41 b(not)h(connect)f(to)i(server.)p Fi(")d(But)31
9285 +b(when)h(I)g(c)l(onne)l(ct)f(dir)l(e)l(ctly)h(with)g
9286 +Fk(ssh)208 2709 y(remote.dcs.ed.a)o(c.u)o(k/)o(wo)o(rk)p
9287 +Fi(,)22 b(I)28 b(se)l(e)g(that)g(my)g Fk(PATH)e Fi(variable)k(is)f(c)l
9288 +(orr)l(e)l(ctly)f(set,)h(and)f(the)g(unison)g(exe)l(cutable)g(is)208
9289 +2808 y(found.)208 2940 y Fn(In)33 b(the)h(\014rst)f(case,)h(Unison)f
9290 +(is)g(using)g Fk(ssh)f Fn(to)h(execute)g(a)g(command,)h(and)f(in)h(the)
9291 +g(second,)g(it)f(is)g(giving)g(y)n(ou)f(an)208 3040 y(in)n(teractiv)n
9292 +(e)21 b(remote)h(shell.)35 b(Under)23 b(some)f(ssh)g(con\014gurations,)
9293 +g(these)h(t)n(w)n(o)f(use)g(di\013eren)n(t)h(startup)g(sequences.)34
9294 +b(Y)-7 b(ou)208 3140 y(can)27 b(test)h(whether)f(this)h(is)g(the)f
9295 +(problem)h(here)f(b)n(y)g(trying,)g(e.g.,)382 3335 y
9296 +Fk(ssh)42 b(remote.dcs.ed.ac.)o(uk)37 b('echo)k($PATH')208
9297 +3529 y Fn(and)27 b(seeing)g(whether)g(y)n(our)g Fk(PATH)f
9298 +Fn(is)h(the)h(same)f(as)g(when)h(y)n(ou)f(do)382 3724
9299 +y Fk(ssh)42 b(remote.dcs.ed.ac.)o(uk)382 3824 y([give)f(password)g(and)
9300 +h(wait)g(for)g(connection])382 3923 y(echo)g($PATH)208
9301 +4118 y Fn(This)26 b(seems)f(to)h(b)r(e)h(con)n(trolled)e(b)n(y)h(the)g
9302 +(con\014guration)f(of)h(ssh,)g(but)h(w)n(e)f(ha)n(v)n(e)f(not)h
9303 +(understo)r(o)r(d)f(all)h(the)h(details|if)208 4218 y(someone)f(do)r
9304 +(es,)h(please)g(let)h(us)g(kno)n(w.)125 4382 y Fj(\017)41
9305 +b Fi(I'm)30 b(having)h(tr)l(ouble)e(getting)h(unison)f(working)i(with)g
9306 +(op)l(enssh)f(under)g(Windows.)39 b(A)n(ny)30 b(suggestions?)208
9307 +4514 y Fn(An)n(ton)n(y)d(Courtney)g(con)n(tributed)g(the)h(follo)n
9308 +(wing)e(commen)n(t.)390 4678 y(I)38 b(ran)f(in)h(to)f(some)g
9309 +(di\016culties)i(trying)e(to)g(use)h(this)g(ssh)f(clien)n(t)h(with)g
9310 +(Unison,)i(and)e(trac)n(k)n(ed)e(do)n(wn)390 4778 y(at)h(least)f(one)g
9311 +(of)h(the)g(problems.)63 b(I)37 b(though)n(t)f(I'd)h(share)e(m)n(y)i
9312 +(exp)r(eriences,)h(and)e(pro)n(vide)g(a)g('kno)n(wn)390
9313 +4878 y(go)r(o)r(d')24 b(solution)h(for)f(other)g(users)g(who)g(migh)n
9314 +(t)h(w)n(an)n(t)f(to)g(use)h(this)g(Windo)n(ws)f(/)g(Unison)h(/)f(ssh)h
9315 +(/)f(Cygwin)390 4977 y(com)n(bination.)390 5093 y(If)c(y)n(ou)e(launc)n
9316 +(h)h(Unison)h(from)f(bash,)h(it)g(fails)f(\(at)h(least)e(for)h(me\).)35
9317 +b(Running)19 b Fk(unison_win32-gtku)o(i.e)o(xe)o Fn(,)390
9318 +5192 y(I)28 b(get)f(a)g(dialog)g(b)r(o)n(x)g(that)h(reads:)739
9319 +5340 y Fk(Fatal)41 b(error:)h(Error)f(in)i(checkServer:)38
9320 +b(Broken)k(pipe)f([read\(\)])1908 5589 y Fn(35)p eop
9321 +%%Page: 36 36
9322 +36 35 bop 390 83 a Fn(and)28 b(a)f(message)f(is)h(prin)n(ted)h(to)f
9323 +(stderr)g(in)h(the)g(bash)f(windo)n(w)g(that)h(reads:)739
9324 +228 y Fk(ssh:)42 b(unison_win32-gtk)o(ui)o(.ex)o(e:)37
9325 +b(no)43 b(address)d(associated)g(with)i(hostname.)390
9326 +374 y Fn(My)31 b(guess)g(is)g(that)g(this)h(is)f(caused)g(b)n(y)g(some)
9327 +f(incompatibilit)n(y)i(b)r(et)n(w)n(een)f(the)g(Ocaml)g(Win32)g
9328 +(library)390 473 y(routines)c(and)h(Cygwin)f(with)h(regard)e(to)h
9329 +(setting)h(up)g(argv[])e(for)h(c)n(hild)g(pro)r(cesses.)208
9330 +635 y(The)g(solution)g(is)h(to)f(launc)n(h)g(Unison)h(from)f(a)g(DOS)h
9331 +(command)f(prompt)h(instead;)f(or)g(see)g(section)g(5.18.)125
9332 +797 y Fj(\017)41 b Fi(When)34 b(I)g(use)g(ssh)h(to)f(lo)l(g)h(into)f
9333 +(the)g(server,)j(everything)e(lo)l(oks)g(\014ne)f(\(and)h(I)f(c)l(an)g
9334 +(se)l(e)h(the)f(Unison)g(binary)h(in)g(my)208 897 y(p)l(ath\).)k(But)29
9335 +b(when)h(I)g(do)h(')p Fk(ssh)42 b(<server>)f(unison)p
9336 +Fi(')27 b(it)j(fails.)40 b(Why?)208 1028 y Fn([Thanks)27
9337 +b(to)g(Nic)n(k)g(Phillips)h(for)f(the)h(follo)n(wing)e(explanation.])
9338 +208 1159 y(It's)33 b(simple.)53 b(If)33 b(y)n(ou)f(start)h(ssh,)h(en)n
9339 +(ter)e(y)n(our)g(passw)n(ord)f(etc.)53 b(and)33 b(then)h(end)f(up)g(in)
9340 +g(a)g(shell,)h(y)n(ou)e(ha)n(v)n(e)g(a)h(login)208 1258
9341 +y(shell.)208 1389 y(If)28 b(y)n(ou)e(do)i("ssh)f(m)n(yhost.com)f
9342 +(unison")h(then)h(unison)g(is)f(not)h(run)f(in)h(a)f(login)g(shell.)208
9343 +1520 y(This)36 b(means)g(that)g(di\013eren)n(t)h(shell)f(init)h
9344 +(scripts)e(are)h(used,)i(and)e(most)g(p)r(eople)h(seem)f(to)g(ha)n(v)n
9345 +(e)f(their)h(shell)g(init)208 1619 y(scripts)27 b(set)g(up)h(all)f
9346 +(wrong.)208 1750 y(With)33 b(bash,)g(for)f(example,)i(y)n(our)d
9347 +Fk(.bash_profile)c Fi(only)33 b Fn(gets)f(used)h(if)g(y)n(ou)f(start)g
9348 +(a)g(login)f(shell.)52 b(This)33 b(usually)208 1850 y(means)28
9349 +b(that)h(y)n(ou'v)n(e)e(logged)g(in)i(on)g(the)g(system)f(console,)g
9350 +(on)h(a)f(terminal,)h(or)e(remotely)-7 b(.)40 b(If)29
9351 +b(y)n(ou)f(start)g(an)g(xterm)208 1949 y(from)j(the)g(command)g(line)h
9352 +(y)n(ou)e(w)n(on't)i(get)f(a)g(login)f(shell)i(in)f(it.)49
9353 +b(If)32 b(y)n(ou)e(start)h(a)g(command)g(remotely)g(from)g(the)208
9354 +2049 y(ssh)26 b(or)g(rsh)g(command)h(line)g(y)n(ou)f(also)g(w)n(on't)h
9355 +(get)f(a)h(login)f(shell)h(to)g(run)f(it)i(in)f(\(this)g(is)g(of)g
9356 +(course)e(a)i(Go)r(o)r(d)g(Thing)f({)208 2149 y(y)n(ou)h(ma)n(y)g(w)n
9357 +(an)n(t)g(to)h(run)g(in)n(teractiv)n(e)e(commands)h(from)h(it,)g(for)g
9358 +(example)f(to)h(ask)f(what)h(t)n(yp)r(e)g(of)g(terminal)f(they're)208
9359 +2248 y(using)g(to)r(da)n(y\).)208 2379 y(If)k(p)r(eople)g(insist)h(on)f
9360 +(setting)g(their)g Fk(PATH)f Fn(in)h(their)g Fk(.bash_profile)p
9361 +Fn(,)c(then)32 b(they)f(should)g(probably)f(do)h(at)g(least)208
9362 +2479 y(one)c(of)g(the)h(follo)n(wing:)284 2641 y(1.)41
9363 +b(stop)28 b(it;)284 2769 y(2.)41 b(read)27 b(the)h(bash)f(man)n(ual,)g
9364 +(section)g("INV)n(OCA)-7 b(TION";)284 2898 y(3.)41 b(set)28
9365 +b(their)f(path)h(in)g(their)g Fk(.bashrc)p Fn(;)284 3027
9366 +y(4.)41 b(get)28 b(their)f(sysadmin)g(to)h(set)f(a)g(sensible)h
9367 +(system-wide)f(default)h(path;)284 3156 y(5.)41 b(source)27
9368 +b(their)g Fk(.bash_profile)22 b Fn(from)28 b(their)f
9369 +Fk(.bashrc)e Fn(...)208 3318 y(It's)i(prett)n(y)h(similar)e(for)h(most)
9370 +h(shells.)125 3480 y Fj(\017)41 b Fi(Unison)30 b(cr)l(ashes)g(with)h
9371 +(an)f(\\out)g(of)h(memory")f(err)l(or)h(when)f(use)l(d)g(to)g(synchr)l
9372 +(onize)h(r)l(e)l(al)t(ly)g(huge)g(dir)l(e)l(ctories)g(\(e.g.,)208
9373 +3579 y(with)f(hundr)l(e)l(ds)g(of)g(thousands)h(of)f(\014les\).)208
9374 +3710 y Fn(Y)-7 b(ou)28 b(ma)n(y)g(need)g(to)g(increase)f(y)n(our)g
9375 +(maxim)n(um)h(stac)n(k)g(size.)39 b(On)28 b(Lin)n(ux)g(and)g(Solaris)f
9376 +(systems,)h(for)g(example,)g(y)n(ou)208 3810 y(can)f(do)g(this)h(using)
9377 +f(the)h Fk(ulimit)d Fn(command)j(\(see)f(the)h Fk(bash)e
9378 +Fn(do)r(cumen)n(tation)h(for)g(details\).)125 3972 y
9379 +Fj(\017)41 b Fi(Unison)29 b(se)l(ems)h(to)g(b)l(e)f(unable)h(to)g(c)l
9380 +(opy)h(a)f(single)g(r)l(e)l(al)t(ly)h(huge)f(\014le.)39
9381 +b(I)30 b(get)f(something)i(like)g(this:)382 4161 y Fk(Error)41
9382 +b(in)i(querying)d(file)i(information:)382 4260 y(Value)f(too)i(large)e
9383 +(for)i(defined)d(data)i(type)g([lstat\(...\)])208 4449
9384 +y Fn(This)26 b(is)g(a)f(limitation)i(in)f(the)g(OCaml)g(in)n(terface)f
9385 +(to)h(the)h(Unix)f(system)g(calls.)36 b(\(The)26 b(problem)g(is)g(that)
9386 +g(the)h(OCaml)208 4549 y(library)i(uses)i(32-bit)f(in)n(tegers)g(to)h
9387 +(represen)n(t)e(\014le)j(p)r(ositions.)46 b(The)31 b(maximal)g(p)r
9388 +(ositiv)n(e)f('in)n(t')i(in)f(OCaml)f(is)h(ab)r(out)208
9389 +4649 y(2.1E9.)42 b(W)-7 b(e)31 b(hop)r(e)f(that)g(the)h(OCaml)e(team)h
9390 +(will)h(someda)n(y)e(pro)n(vide)f(an)i(alternativ)n(e)f(in)n(terface)h
9391 +(that)g(uses)g(64-bit)208 4748 y(in)n(tegers.)125 4910
9392 +y Fj(\017)41 b Fi(Why)30 b(do)l(es)g(unison)g(run)f(so)h(slow)t(ly)h
9393 +(the)f(\014rst)f(time)h(I)f(start)h(it?)208 5041 y Fn(On)i(the)i
9394 +(\014rst)e(sync)n(hronization,)h(unison)f(do)r(esn't)i(ha)n(v)n(e)d(an)
9395 +n(y)i(\\memory")e(of)i(what)g(y)n(our)e(replicas)h(used)h(to)g(lo)r(ok)
9396 +208 5141 y(lik)n(e,)h(so)f(it)g(has)g(to)g(go)g(through,)h
9397 +(\014ngerprin)n(t)e(ev)n(ery)g(\014le,)j(transfer)d(the)i(\014ngerprin)
9398 +n(ts)e(across)f(the)j(net)n(w)n(ork,)f(and)208 5240 y(compare)27
9399 +b(them)h(to)g(what's)g(on)g(the)h(other)f(side.)38 b(Ha)n(ving)28
9400 +b(done)g(this)g(once,)g(it)h(stashes)e(a)n(w)n(a)n(y)g(the)h
9401 +(information)g(so)208 5340 y(that)f(in)h(future)g(runs)f(almost)g(all)h
9402 +(of)f(the)h(w)n(ork)e(can)i(b)r(e)g(done)f(lo)r(cally)g(on)g(eac)n(h)g
9403 +(side.)1908 5589 y(36)p eop
9404 +%%Page: 37 37
9405 +37 36 bop 125 83 a Fj(\017)41 b Fi(I)32 b(c)l(an)-8 b('t)32
9406 +b(se)l(em)h(to)f(override)i(the)f(p)l(aths)g(sele)l(cte)l(d)g(in)g(the)
9407 +f(pr)l(o\014le)i(by)f(using)f(a)h Fk(-path)d Fi(ar)l(gument)i(on)h(the)
9408 +f(c)l(ommand)208 183 y(line.)208 315 y Fn(Righ)n(t:)39
9409 +b(the)29 b Fk(path)e Fn(preference)h(is)g(additiv)n(e)h(\(eac)n(h)f
9410 +(use)h(adds)f(an)g(en)n(try)h(to)f(the)h(list)g(of)g(paths)g(within)g
9411 +(the)g(replicas)208 415 y(that)d(Unison)g(will)h(try)f(to)g(sync)n
9412 +(hronize\),)f(and)h(there)h(is)f(no)g(w)n(a)n(y)f(to)h(remo)n(v)n(e)e
9413 +(en)n(tries)i(once)g(they)g(ha)n(v)n(e)f(gotten)h(in)n(to)208
9414 +515 y(this)i(list.)37 b(The)28 b(solution)f(is)g(to)h(split)g(y)n(our)e
9415 +(preference)h(\014le)h(in)n(to)f(di\013eren)n(t)h(\\top-lev)n(el")e
9416 +(\014les)h(con)n(taining)g(di\013eren)n(t)208 614 y(sets)32
9417 +b(of)h Fk(path)e Fn(preferences)g(and)i(mak)n(e)f(them)h(all)g(include)
9418 +g(a)f(common)g(preference)g(\014le)h(to)f(a)n(v)n(oid)g(rep)r(eating)g
9419 +(the)208 714 y(non-path)27 b(preferences.)36 b(See)27
9420 +b(Section)h(5.6)e([Pro\014le)h(Examples])f(for)h(a)h(complete)f
9421 +(example.)125 880 y Fj(\017)41 b Fi(I)29 b(c)l(an)-8
9422 +b('t)28 b(se)l(em)h(to)g(override)i(the)e(r)l(o)l(ots)g(sele)l(cte)l(d)
9423 +h(in)f(the)g(pr)l(o\014le)h(by)f(listing)h(the)f(r)l(o)l(ots)g(on)g
9424 +(the)g(c)l(ommand)h(line.)39 b(I)29 b(get)208 980 y(\\F)-6
9425 +b(atal)29 b(err)l(or:)40 b(Wr)l(ong)29 b(numb)l(er)g(of)i(r)l(o)l(ots)e
9426 +(\(2)h(exp)l(e)l(cte)l(d;)h(4)f(pr)l(ovide)l(d\).")208
9427 +1112 y Fn(Ro)r(ots)20 b(should)h(b)r(e)h(pro)n(vided)e
9428 +Fi(either)i Fn(in)g(the)f(preference)g(\014le)g Fi(or)h
9429 +Fn(on)f(the)g(command)g(line,)i(not)e(b)r(oth.)35 b(See)22
9430 +b(Section)f(5.6)208 1212 y([Pro\014le)26 b(Examples])g(for)i(further)f
9431 +(advice.)125 1378 y Fj(\017)41 b Fi(I)29 b(am)h(trying)g(to)g(c)l
9432 +(ompile)h(unison)f(2.7.7)i(using)d(OCaml)h(3.04.)41 b(I)30
9433 +b(get)f(\\V)-6 b(alues)29 b(do)i(not)e(match")h(err)l(or.)208
9434 +1511 y Fn(Unison)36 b(2.7.7)f(compiles)h(with)g(Ocaml)g(3.02.)62
9435 +b(Later)35 b(v)n(ersions)g(of)h(OCaml,)i(include)e(v)n(ersion)f(3.04,)i
9436 +(require)e(b)n(y)208 1611 y(default)44 b(all)g(parameter)f(lab)r(els)h
9437 +(for)g(function)h(calls)f(if)g(they)h(are)e(declared)h(in)g(the)h(in)n
9438 +(terface.)86 b(Adding)45 b(the)208 1710 y(compilation)c(option)i(\\)p
9439 +Fk(-nolabels)p Fn(")37 b(\(b)n(y)43 b(inserting)f(a)g(line)g(\\)p
9440 +Fk(CAMLFLAGS+=-nola)o(be)o(ls)o Fn(")36 b(to)43 b(the)g(\014le)f(named)
9441 +208 1810 y(\\)p Fk(Makefile.OCaml)o Fn("\))33 b(should)38
9442 +b(solv)n(e)f(the)i(problem.)69 b(T)-7 b(o)38 b(compile)h(the)g
9443 +(graphical)d(user)i(in)n(terface)g(for)g(Unison)208 1910
9444 +y(2.7.7,)26 b(use)h(LablGtk)h(1.1.2)e(instead)i(of)f(LablGtk)h(1.1.3.)0
9445 +2142 y Fh(6.3)112 b(T)-9 b(ric)m(ks)36 b(and)j(Tips)125
9446 +2295 y Fj(\017)i Fi(Is)29 b(it)h(p)l(ossible)h(to)f(run)f(Unison)h(fr)l
9447 +(om)g Fk(inetd)d Fi(\(the)j(Unix)f(internet)g(servic)l(es)i(daemon\)?)
9448 +208 2428 y Fn(W)-7 b(e)35 b(ha)n(v)n(en't)f(tried)i(this)f(ourselv)n
9449 +(es,)g(but)h(T)-7 b(ob)n(y)34 b(Johnson)g(has)h(con)n(tributed)g(a)f
9450 +(detailed)i(c)n(hro)r(ot)e(min-HO)n(WTO)208 2528 y(describing)26
9451 +b(ho)n(w)h(to)h(do)f(it.)37 b(\(Y)-7 b(an)28 b(Seiner)g(wrote)e(an)i
9452 +(earlier)e(ho)n(wto,)h(on)g(whic)n(h)h(T)-7 b(ob)n(y's)26
9453 +b(is)i(based.\))125 2694 y Fj(\017)41 b Fi(Is)30 b(ther)l(e)h(a)h(way)f
9454 +(to)g(get)g(Unison)f(not)h(to)g(pr)l(ompt)g(me)g(for)h(a)f(p)l(asswor)l
9455 +(d)h(every)g(time)f(I)f(run)h(it)f(\(e.g.,)j(so)e(that)g(I)g(c)l(an)208
9456 +2793 y(run)d(it)i(every)h(half)g(hour)f(fr)l(om)g(a)h(shel)t(l)g
9457 +(script\)?)208 2926 y Fn(It's)26 b(actually)f Fk(ssh)g
9458 +Fn(that's)h(asking)f(for)g(the)h(passw)n(ord.)35 b(If)26
9459 +b(y)n(ou're)f(running)g(the)i(Unison)f(clien)n(t)g(on)f(a)h(Unix)g
9460 +(system,)208 3026 y(y)n(ou)g(should)i(c)n(hec)n(k)e(out)i(the)g
9461 +('ssh-agen)n(t')e(facilit)n(y)i(in)f(ssh.)37 b(If)28
9462 +b(y)n(ou)f(do)469 3225 y Fk(ssh-agent)40 b(bash)208 3424
9463 +y Fn(\(or)31 b Fk(ssh-agent)39 b(startx)p Fn(,)31 b(when)h(y)n(ou)e
9464 +(\014rst)i(log)f(in\))h(it)g(will)g(start)f(y)n(ou)g(a)g(shell)g(\(or)g
9465 +(an)h(X)g(Windo)n(ws)f(session\))g(in)208 3524 y(whic)n(h)24
9466 +b(all)h(pro)r(cesses)f(and)h(sub-pro)r(cesses)e(are)h(part)g(of)h(the)h
9467 +(same)e(ssh-authorization)f(group.)35 b(If,)26 b(inside)f(an)n(y)f
9468 +(shell)208 3624 y(b)r(elonging)32 b(to)h(this)h(authorization)d(group,)
9469 +j(y)n(ou)e(run)h(the)h Fk(ssh-add)c Fn(program,)j(it)g(will)h(prompt)f
9470 +(y)n(ou)f Fi(onc)l(e)i Fn(for)e(a)208 3723 y(passw)n(ord)e(and)h(then)i
9471 +(remem)n(b)r(er)e(it)h(for)g(the)g(duration)f(of)h(the)h(bash)e
9472 +(session.)49 b(Y)-7 b(ou)32 b(can)g(then)g(use)g(Unison)g(o)n(v)n(er)
9473 +208 3823 y Fk(ssh)p Fn(|or)25 b(ev)n(en)i(run)h(it)g(rep)r(eatedly)f
9474 +(from)g(a)g(shell)h(script|without)f(giving)g(y)n(our)g(passw)n(ord)e
9475 +(again.)208 3956 y(It)h(ma)n(y)f(also)h(b)r(e)g(p)r(ossible)g(to)g
9476 +(con\014gure)f Fk(ssh)g Fn(so)g(that)i(it)f(do)r(es)g(not)g(require)f
9477 +(an)n(y)h(passw)n(ord:)34 b(just)27 b(en)n(ter)e(an)h(empt)n(y)208
9478 +4055 y(passw)n(ord)35 b(when)j(y)n(ou)f(create)f(a)h(pair)g(of)h(k)n
9479 +(eys.)66 b(If)37 b(y)n(ou)g(think)h(it)g(is)g(safe)f(enough)g(to)g(k)n
9480 +(eep)g(y)n(our)g(priv)-5 b(ate)37 b(k)n(ey)208 4155 y(unencrypted)27
9481 +b(on)g(y)n(our)g(clien)n(t)h(mac)n(hine,)f(this)h(solution)f(should)g
9482 +(w)n(ork)f(ev)n(en)h(under)h(Windo)n(ws.)125 4321 y Fj(\017)41
9483 +b Fi(Is)25 b(ther)l(e)h(a)f(way,)j(under)d(Windows,)j(to)e(click-start)
9484 +g(Unison)f(and)h(make)g(it)f(synchr)l(onize)i(ac)l(c)l(or)l(ding)g(to)e
9485 +(a)h(p)l(articular)208 4421 y(pr)l(o\014le?)208 4553
9486 +y Fn(Greg)g(Sulliv)-5 b(an)28 b(sen)n(t)g(us)f(the)h(follo)n(wing)f
9487 +(useful)h(tric)n(k:)390 4736 y(In)39 b(order)e(to)h(mak)n(e)g(syncing)g
9488 +(a)g(particular)f(pro\014le)h(\\clic)n(k)-5 b(able")37
9489 +b(from)h(the)h(Win98)f(desktop,)j(when)390 4836 y(the)h(pro\014le)e
9490 +(uses)h Fk(ssh)p Fn(,)i(y)n(ou)d(need)i(to)f(create)f(a)g
9491 +Fk(.bat)g Fn(\014le)h(that)h(con)n(tains)e(nothing)h(but)g(\\)p
9492 +Fk(unison)390 4935 y(profile-name)p Fn(")27 b(\(assuming)k
9493 +Fk(unison.exe)d Fn(is)j(in)h(the)g Fk(PATH)p Fn(\).)f(I)h(\014rst)f
9494 +(tried)h(the)g(\\ob)n(vious")e(strategy)390 5035 y(of)e(creating)f(a)h
9495 +(shortcut)g(on)g(the)h(desktop)e(with)i(the)g(actual)e(command)h(line)h
9496 +(\\)p Fk(unison)40 b(profile)p Fn(,)26 b(but)390 5135
9497 +y(that)c(hangs.)34 b(The)22 b Fk(.bat)d Fn(\014le)j(tric)n(k)f(w)n
9498 +(orks,)g(though,)i(b)r(ecause)e(it)h(runs)f Fk(command.com)c
9499 +Fn(and)k(then)h(in)n(v)n(ok)n(es)390 5234 y(the)28 b
9500 +Fk(.bat)e Fn(\014le.)1908 5589 y(37)p eop
9501 +%%Page: 38 38
9502 +38 37 bop 125 83 a Fj(\017)41 b Fi(Can)30 b(Unison)f(b)l(e)h(use)l(d)g
9503 +(with)g(SSH's)f(p)l(ort)h(forwar)l(ding)i(fe)l(atur)l(es?)208
9504 +216 y Fn(Mark)26 b(Thomas)h(sa)n(ys)f(the)i(follo)n(wing)f(pro)r
9505 +(cedure)f(w)n(orks)g(for)h(him:)390 382 y(After)f(ha)n(ving)f(problems)
9506 +f(with)i(unison)g(spa)n(wning)e(a)h(command)g(line)h(ssh)f(in)h(Windo)n
9507 +(ws)f(I)h(noticed)f(that)390 482 y(unison)31 b(also)e(supp)r(orts)i(a)f
9508 +(so)r(c)n(k)n(et)g(mo)r(de)h(of)f(comm)n(unication)g(\(great)g(soft)n
9509 +(w)n(are!\))45 b(so)30 b(I)h(tried)f(the)i(p)r(ort)390
9510 +581 y(forw)n(arding)26 b(feature)h(of)h(ssh)f(using)g(a)g(graphical)f
9511 +(SSH)j(terminal)e(TTSSH:)545 714 y Fk(http://www.zip.co)o(m.a)o(u/)o
9512 +Fj(\030)p Fk(ro)o(ca)o(/t)o(tss)o(h.)o(htm)o(l)390 847
9513 +y Fn(T)-7 b(o)22 b(use)g(unison)g(I)h(start)e(TTSHH)i(with)g(p)r(ort)f
9514 +(forw)n(arding)e(enabled)j(and)f(login)f(to)h(the)h(Lin)n(ux)f(b)r(o)n
9515 +(x)g(where)390 946 y(the)33 b(unison)f(serv)n(er)e(\()p
9516 +Fk(unison)42 b(-socket)e(xxxx)p Fn(\))31 b(is)h(started)g
9517 +(automatically)-7 b(.)50 b(In)32 b(windo)n(ws)g(I)g(just)h(run)390
9518 +1046 y(unison)28 b(and)f(connect)g(to)h(lo)r(calhost)f(\()p
9519 +Fk(unison)41 b(socket://localho)o(st:)o(xx)o(xx)o(/)d(...)p
9520 +Fn(\))125 1212 y Fj(\017)j Fi(How)34 b(c)l(an)g(I)g(use)f(Unison)h(fr)l
9521 +(om)h(a)f(laptop)i(whose)f(hostname)f(changes)h(dep)l(ending)h(on)e
9522 +(wher)l(e)h(it)f(is)g(plugge)l(d)h(into)208 1312 y(the)29
9523 +b(network?)208 1445 y Fn(See)e(the)h(discussion)f(of)h(the)f
9524 +Fk(rootalias)d Fn(preference)j(in)h(Section)g(5.3)e([Arc)n(hiv)n(e)h
9525 +(Files].)125 1611 y Fj(\017)41 b Fi(It's)33 b(annoying)g(that)g(\(on)g
9526 +(Unix)g(systems\))f(I)h(have)i(to)d(typ)l(e)i(an)f(ssh)g(p)l(assphr)l
9527 +(ase)i(into)e(a)g(c)l(onsole)h(window,)i(r)l(ather)208
9528 +1710 y(than)29 b(b)l(eing)i(aske)l(d)f(for)h(it)f(in)f(a)i(dialo)l(g)g
9529 +(b)l(ox.)39 b(Is)29 b(ther)l(e)h(a)g(b)l(etter)g(way?)208
9530 +1843 y Fn(W)-7 b(e)28 b(ha)n(v)n(e)g(some)g(ideas)f(ab)r(out)i(ho)n(w)f
9531 +(this)g(migh)n(t)h(b)r(e)g(done)f(\(b)n(y)g(allo)r(cating)g(a)g(PTY)g
9532 +(and)g(using)g(it)h(to)g(talk)f(to)g(ssh\),)208 1943
9533 +y(but)e(w)n(e)f(ha)n(v)n(en't)f(implemen)n(ted)j(them)f(y)n(et.)35
9534 +b(If)26 b(y)n(ou'd)f(lik)n(e)g(to)h(ha)n(v)n(e)e(a)h(crac)n(k)f(at)h
9535 +(it,)h(w)n(e'd)g(b)r(e)g(glad)e(to)i(discuss)f(ideas)208
9536 +2042 y(and)i(incorp)r(orate)f(patc)n(hes.)208 2175 y(In)j(the)h(mean)n
9537 +(time,)h(tm)n(b)f(has)f(con)n(tributed)g(a)g(script)h(that)g(uses)f
9538 +Fk(expectk)e Fn(to)i(do)h(what's)f(needed.)44 b(It's)29
9539 +b(a)n(v)-5 b(ailable)208 2275 y(at)27 b Fk(http://www.cis.u)o(pen)o(n.)
9540 +o(edu)o(/)37 b(bcpierce/unison/d)o(ow)o(nlo)o(ad)o(/re)o(so)o(ur)o(ces)
9541 +o(/e)o(xpe)o(ct)o(k-)o(sta)o(rt)o(up)p Fn(.)1908 5589
9542 +y(38)p eop
9543 +%%Page: 39 39
9544 +39 38 bop 0 83 a Fm(A)134 b(Installing)46 b(Ssh)0 265
9545 +y Fn(Y)-7 b(our)37 b(lo)r(cal)f(host)h(will)h(need)f(just)h(an)f(ssh)g
9546 +(clien)n(t;)42 b(the)c(remote)f(host)g(needs)g(an)g(ssh)g(serv)n(er)e
9547 +(\(or)i(daemon\),)i(whic)n(h)e(is)0 364 y(a)n(v)-5 b(ailable)35
9548 +b(on)h(Unix)h(systems.)990 334 y Fg(2)1090 364 y Fn(Unison)f(is)h(kno)n
9549 +(wn)f(to)g(w)n(ork)f(with)i(ssh)f(v)n(ersion)f(1.2.27)f(\(Unix\))k(and)
9550 +e(v)n(ersion)f(1.2.14)0 464 y(\(Windo)n(ws\);)28 b(other)f(v)n(ersions)
9551 +f(ma)n(y)h(or)f(ma)n(y)h(not)h(w)n(ork.)0 697 y Fh(A.1)112
9552 +b(Unix)101 850 y Fn(1.)42 b(Install)27 b Fk(ssh)p Fn(.)243
9553 +1016 y(\(a\))41 b(Become)27 b(ro)r(ot.)37 b(\(If)28 b(y)n(ou)f(do)h
9554 +(not)g(ha)n(v)n(e)e(administrator)g(p)r(ermissions,)h(ask)g(y)n(our)g
9555 +(system)g(manager)g(to)g(install)390 1115 y(an)h(ssh)f(clien)n(t)h(and)
9556 +f(an)g(ssh)h(serv)n(er)d(for)i(y)n(ou)g(and)h(skip)f(this)h(section.\))
9557 +238 1248 y(\(b\))42 b(Do)n(wnload)27 b Fk(ssh-1.2.27.tar.g)o(z)21
9558 +b Fn(from)28 b Fk(ftp://ftp.ssh.c)o(om/)o(pu)o(b/s)o(sh)o(/)p
9559 +Fn(.)247 1381 y(\(c\))42 b(Install)28 b(it:)462 1514
9560 +y Fj(\017)41 b Fn(Unpac)n(k)28 b(the)g(arc)n(hiv)n(e)d(\()p
9561 +Fk(gunzip)42 b(ssh-1.2.27.tar.g)o(z)21 b Fn(and)28 b(then)g
9562 +Fk(tar)42 b(xvf)h(ssh-1.2.27.tar.)o(gz)p Fn(\).)462 1630
9563 +y Fj(\017)e Fn(follo)n(wing)27 b(instructions)g(in)h
9564 +Fk(INSTALL)p Fn(,)d(en)n(ter)i Fk(./configure)p Fn(,)c
9565 +Fk(make)p Fn(,)j(and)i Fk(make)42 b(install)p Fn(.)462
9566 +1746 y Fj(\017)f Fn(to)28 b(run)f(the)h(ssh)g(daemon:)597
9567 +1863 y Fl({)42 b Fn(\014nd)28 b(the)g(serv)n(er)d(daemon)i
9568 +Fk(sshd)f Fn(\(e.g.,)i Fk(/usr/local/sbin/)o(ssh)o(d)21
9569 +b Fn(on)28 b(RedHat-Lin)n(ux)f(systems\).)597 1979 y
9570 +Fl({)42 b Fn(put)34 b(its)g(full)h(pathname)e(in)i(the)f(system)g
9571 +(initialization)f(script)h(to)f(ha)n(v)n(e)g(it)h(run)g(at)g(startup)f
9572 +(\(this)687 2078 y(script)27 b(is)g(called)h Fk(/etc/rc.d/rc.sy)o(sin)o
9573 +(it)21 b Fn(on)27 b(RedHat-Lin)n(ux,)h(for)f(example\).)238
9574 +2211 y(\(d\))42 b(Once)25 b(a)f(serv)n(er)f(is)i(running)g(on)f(the)i
9575 +(remote)e(host)h(and)f(a)h(clien)n(t)g(is)g(a)n(v)-5
9576 +b(ailable)24 b(on)g(the)i(lo)r(cal)e(host,)h(y)n(ou)f(should)390
9577 +2311 y(b)r(e)39 b(able)f(to)g(connect)g(with)h(ssh)f(in)g(the)h(same)e
9578 +(w)n(a)n(y)g(as)h(with)g(rsh)g(\(e.g.,)j Fk(ssh)h(foobar)p
9579 +Fn(,)d(then)g(en)n(ter)e(y)n(our)390 2411 y(passw)n(ord\).)101
9580 +2577 y(2.)42 b(If)31 b(y)n(ou)e(lik)n(e,)i(y)n(ou)f(can)g(no)n(w)g(set)
9581 +h(up)f(ssh)h(so)e(that)i(y)n(ou)f(only)g(need)h(to)f(t)n(yp)r(e)h(y)n
9582 +(our)e(passw)n(ord)g(once)h(p)r(er)g(X)h(session,)208
9583 +2676 y(rather)f(than)h(ev)n(ery)f(time)i(y)n(ou)e(run)h(Unison)g
9584 +(\(this)h(is)f(not)g(necessary)e(for)i(using)g(ssh)g(with)g(Unison,)i
9585 +(but)e(it)h(sa)n(v)n(es)208 2776 y(t)n(yping\).)243 2942
9586 +y(\(a\))41 b(Build)28 b(y)n(our)e(k)n(eys)h(:)462 3075
9587 +y Fj(\017)41 b Fn(en)n(ter)28 b Fk(ssh-keygen)23 b Fn(and)28
9588 +b(t)n(yp)r(e)f(a)g(passphrase)f(as)h(required.)462 3191
9589 +y Fj(\017)41 b Fn(y)n(our)27 b(priv)-5 b(ate)28 b(k)n(ey)f(is)h(no)n(w)
9590 +g(in)g Fk(~/.ssh/identity)22 b Fn(\(this)29 b(\014le)f(m)n(ust)g
9591 +(remain)g(priv)-5 b(ate\))28 b(and)g(y)n(our)f(public)545
9592 +3291 y(k)n(ey)g(in)h Fk(~/.ssh/identity.p)o(ub)o Fn(.)238
9593 +3423 y(\(b\))42 b(Allo)n(w)27 b(user-mo)r(de)g(secure)g(connection.)462
9594 +3556 y Fj(\017)41 b Fn(app)r(end)26 b(con)n(ten)n(ts)e(of)h(the)g(lo)r
9595 +(cal)g(\014le)g Fk(~/.ssh/identity)o(.pu)o(b)19 b Fn(to)25
9596 +b(the)g(\014le)g Fk(~/.ssh/authorize)o(d_k)o(ey)o(s)545
9597 +3656 y Fn(on)j(the)g(remote)f(system.)462 3772 y Fj(\017)41
9598 +b Fn(T)-7 b(est)30 b(that)g(y)n(ou)e(can)h(connect)h(b)n(y)f(starting)f
9599 +Fk(ssh)h Fn(and)g(giving)g(the)h(passphrase)d(y)n(ou)i(just)h(c)n(hose)
9600 +e(instead)545 3872 y(of)g(y)n(our)e(remote)h(passw)n(ord.)247
9601 +4005 y(\(c\))42 b(Create)27 b(an)g(agen)n(t)g(to)g(manage)g(authen)n
9602 +(tication)g(for)g(y)n(ou)g(:)462 4137 y Fj(\017)41 b
9603 +Fn(start)29 b Fk(ssh-agent)c Fn(with)k(the)g(paren)n(t)f(program)e
9604 +(whose)i(c)n(hildren)g(will)h(b)r(e)g(gran)n(ted)f(automatic)g(connec-)
9605 +545 4237 y(tions)g(\(e.g.,)f Fk(ssh-agent)40 b(bash)26
9606 +b Fn(or)h Fk(ssh-agent)40 b(startx)p Fn(\).)462 4353
9607 +y Fj(\017)h Fn(en)n(ter)27 b Fk(ssh-add)e Fn(to)i(en)n(ter)f(y)n(our)g
9608 +(passphrase)g(and)h(enable)g(automatic)g(login)f(for)h(connections)f
9609 +(to)h(come.)462 4470 y Fj(\017)41 b Fn(y)n(ou)24 b(should)h(no)n(w)f(b)
9610 +r(e)h(able)f(to)g(run)h(Unison)f(using)h(SSH)g(without)g(giving)f(an)n
9611 +(y)g(passphrase)e(or)i(passw)n(ord.)462 4586 y Fj(\017)41
9612 +b Fn(to)19 b(kill)f(the)h(agen)n(t,)g(en)n(ter)f Fk(ssh-agent)40
9613 +b(-k)p Fn(,)20 b(or)d(simply)h(exit)h(the)g(program)d(y)n(ou)i(launc)n
9614 +(hed)g(using)g Fk(ssh-agent)p Fn(.)p 0 4657 1560 4 v
9615 +92 4711 a Ff(2)127 4734 y Fe(The)30 b(Cygwin)g(p)r(ort)f(\(Section)j
9616 +(A.2)d([Installing)g(Ssh)h(on)g(Windo)n(ws]\))g(of)f(op)r(enssh)h
9617 +(includes)g(a)g(ssh)f(serv)n(er)g(program)f(for)h(the)h(Windo)n(ws)0
9618 +4813 y(platform,)22 b(but)i(w)n(e)g(ha)n(v)n(e)h(not)f(y)n(et)h(tested)
9619 +g(Unison)f(with)f(this)h(ssh)f(serv)n(er.)1908 5589 y
9620 +Fn(39)p eop
9621 +%%Page: 40 40
9622 +40 39 bop 0 83 a Fh(A.2)112 b(Windo)m(ws)0 236 y Fn(Man)n(y)29
9623 +b(Windo)n(ws)f(implemen)n(tations)h(of)g(ssh)g(only)g(pro)n(vide)f
9624 +(graphical)g(in)n(terfaces,)g(but)i(Unison)f(requires)f(an)h(ssh)g
9625 +(clien)n(t)0 336 y(that)f(it)g(can)f(in)n(v)n(ok)n(e)f(with)i(a)f
9626 +(command-line)g(in)n(terface.)37 b(A)28 b(suitable)f(v)n(ersion)f(of)i
9627 +(ssh)f(can)g(b)r(e)h(installed)g(as)f(follo)n(ws.)101
9628 +515 y(1.)42 b(Do)n(wnload)26 b(an)h Fk(ssh)g Fn(executable.)208
9629 +647 y(W)-7 b(arning:)34 b(there)23 b(are)g(man)n(y)g(implemen)n
9630 +(tations)h(and)f(p)r(orts)h(of)f(ssh)h(for)f(Windo)n(ws,)h(and)f(not)h
9631 +(all)g(of)f(them)i(will)e(w)n(ork)208 746 y(with)28 b(Unison.)38
9632 +b(W)-7 b(e)28 b(ha)n(v)n(e)f(gotten)h(Unison)g(to)g(w)n(ork)e(with)j
9633 +(Cygwin's)e(p)r(ort)h(of)g(op)r(enssh,)g(and)f(w)n(e)h(suggest)f(y)n
9634 +(ou)g(use)208 846 y(that)g(one.)37 b(Here's)27 b(ho)n(w)g(to)g(install)
9635 +h(it:)243 1010 y(\(a\))41 b(First,)32 b(create)f(a)g(new)g(folder)g(on)
9636 +g(y)n(our)f(desktop)h(to)g(hold)g(temp)r(orary)f(installation)h
9637 +(\014les.)47 b(It)32 b(can)f(ha)n(v)n(e)f(an)n(y)390
9638 +1110 y(name)e(y)n(ou)e(lik)n(e,)i(but)g(in)g(these)f(instructions)h(w)n
9639 +(e'll)f(assume)g(that)h(y)n(ou)f(call)g(it)h Fk(Foo)p
9640 +Fn(.)238 1241 y(\(b\))42 b(Direct)36 b(y)n(our)e(w)n(eb)i(bro)n(wser)d
9641 +(to)j(www.cygwin.com,)h(and)e(clic)n(k)g(on)g(the)h(\\Install)f(no)n
9642 +(w!")60 b(link.)h(This)36 b(will)390 1341 y(do)n(wnload)28
9643 +b(a)g(\014le,)i Fk(setup.exe)p Fn(;)c(sa)n(v)n(e)h(it)j(in)f(the)g
9644 +(directory)f Fk(Foo)p Fn(.)40 b(The)29 b(\014le)g Fk(setup.exe)c
9645 +Fn(is)k(a)g(small)f(program)390 1440 y(that)g(will)g(do)n(wnload)e(the)
9646 +i(actual)f(install)h(\014les)f(from)h(the)g(In)n(ternet)f(when)h(y)n
9647 +(ou)f(run)g(it.)247 1572 y(\(c\))42 b(Start)34 b Fk(setup.exe)d
9648 +Fn(\(b)n(y)k(double-clic)n(king\).)56 b(This)35 b(brings)e(up)i(a)f
9649 +(series)f(of)i(dialogs)e(that)i(y)n(ou)e(will)i(ha)n(v)n(e)e(to)390
9650 +1671 y(go)f(through.)53 b(Select)33 b(\\Install)f(from)h(In)n(ternet.")
9651 +53 b(F)-7 b(or)32 b(\\Lo)r(cal)g(P)n(ac)n(k)-5 b(age)30
9652 +b(Directory")i(select)h(the)g(directory)390 1771 y Fk(Foo)p
9653 +Fn(.)i(F)-7 b(or)26 b(\\Select)g(install)g(ro)r(ot)f(directory")f(w)n
9654 +(e)i(recommend)f(that)i(y)n(ou)e(use)h(the)g(default,)h
9655 +Fk(C:\\cygwin)p Fn(.)33 b(The)390 1870 y(next)k(dialog)e(asks)h(y)n(ou)
9656 +g(to)g(select)h(the)g(w)n(a)n(y)e(that)i(y)n(ou)f(w)n(an)n(t)f(to)i
9657 +(connect)f(to)h(the)g(net)n(w)n(ork)e(to)h(do)n(wnload)390
9658 +1970 y(the)29 b(installation)g(\014les;)g(w)n(e)f(ha)n(v)n(e)g(used)h
9659 +(\\Use)f(IE5)g(Settings")g(successfully)-7 b(,)29 b(but)h(y)n(ou)e(ma)n
9660 +(y)g(need)h(to)f(mak)n(e)g(a)390 2070 y(di\013eren)n(t)k(selection)f
9661 +(dep)r(ending)h(on)g(y)n(our)e(net)n(w)n(orking)g(setup.)49
9662 +b(The)32 b(next)g(dialog)f(giv)n(es)f(a)h(list)h(of)g(mirrors;)390
9663 +2169 y(select)c(one)f(close)g(to)g(y)n(ou.)390 2285 y(Next)21
9664 +b(y)n(ou)f(are)g(ask)n(ed)f(to)h(select)h(whic)n(h)f(pac)n(k)-5
9665 +b(ages)19 b(to)i(install.)34 b(The)21 b(default)g(settings)f(in)h(this)
9666 +g(dialog)e(do)n(wnload)390 2384 y(a)34 b(lot)g(of)h(pac)n(k)-5
9667 +b(ages)32 b(that)j(are)e(not)h(strictly)g(necessary)f(to)h(run)g
9668 +(Unison)g(with)h(ssh.)57 b(If)35 b(y)n(ou)e(don't)i(w)n(an)n(t)e(to)390
9669 +2484 y(install)f(a)g(pac)n(k)-5 b(age,)31 b(clic)n(k)h(on)f(it)i(un)n
9670 +(til)f(\\skip")f(is)h(sho)n(wn.)49 b(F)-7 b(or)31 b(a)h(minim)n(um)h
9671 +(installation,)f(select)g(only)g(the)390 2584 y(pac)n(k)-5
9672 +b(ages)33 b(\\cygwin")h(and)h(\\op)r(enssh,")g(whic)n(h)g(come)g(to)g
9673 +(ab)r(out)f(1900KB;)f(the)i(full)h(installation)e(is)h(m)n(uc)n(h)390
9674 +2683 y(larger.)545 2822 y Fi(Note)27 b(that)h(you)f(ar)l(e)h(plan)f(to)
9675 +h(build)g(unison)e(using)h(the)h(fr)l(e)l(e)f(CygWin)h(GNU)f(C)h(c)l
9676 +(ompiler,)h(you)f(ne)l(e)l(d)545 2922 y(to)j(instal)t(l)g(essential)g
9677 +(development)h(p)l(ackages)g(such)e(as)h(\\gc)l(c",)g(\\make",)g
9678 +(\\\014leutil",)f(etc;)h(we)g(r)l(efer)545 3021 y(to)f(the)g(\014le)g
9679 +(\\INST)-6 b(ALL.win32-cygwin-gnuc")30 b(in)g(the)g(sour)l(c)l(e)f
9680 +(distribution)i(for)f(further)g(details.)390 3160 y Fn(After)c(the)f
9681 +(pac)n(k)-5 b(ages)23 b(are)h(do)n(wnloaded)g(and)h(installed,)h(the)f
9682 +(next)h(dialog)d(allo)n(ws)h(y)n(ou)g(to)h(c)n(ho)r(ose)f(whether)h(to)
9683 +390 3260 y(\\Create)h(Desktop)i(Icon")f(and)g(\\Add)h(to)f(Start)h(Men)
9684 +n(u.")36 b(Y)-7 b(ou)28 b(mak)n(e)e(the)i(call.)238 3391
9685 +y(\(d\))42 b(Y)-7 b(ou)28 b(can)f(no)n(w)g(delete)h(the)g(directory)e
9686 +Fk(Foo)h Fn(and)g(its)h(con)n(ten)n(ts.)101 3555 y(2.)42
9687 +b(Y)-7 b(ou)32 b(m)n(ust)h(set)g(the)h(en)n(vironmen)n(t)e(v)-5
9688 +b(ariables)31 b(HOME)i(and)f(P)-7 b(A)g(TH.)53 b(Ssh)33
9689 +b(will)g(create)f(a)h(directory)e Fk(.ssh)h Fn(in)h(the)208
9690 +3655 y(directory)23 b(giv)n(en)h(b)n(y)h(HOME,)f(so)g(that)h(it)h(has)e
9691 +(a)g(place)h(to)g(k)n(eep)f(data)g(lik)n(e)h(y)n(our)e(public)j(and)e
9692 +(priv)-5 b(ate)25 b(k)n(eys.)35 b(P)-7 b(A)g(TH)208 3755
9693 +y(m)n(ust)27 b(b)r(e)h(set)g(to)f(include)h(the)g(Cygwin)f
9694 +Fk(bin)g Fn(directory)-7 b(,)26 b(so)h(that)h(Unison)g(can)f(\014nd)h
9695 +(the)g(ssh)f(executable.)307 3919 y Fj(\017)41 b Fn(On)28
9696 +b(Windo)n(ws)f(95/98,)e(add)j(the)g(lines)565 4067 y
9697 +Fk(set)42 b(PATH=\045PATH\045;<SSH)o(DI)o(R>)565 4166
9698 +y(set)g(HOME=<HOMEDIR>)390 4314 y Fn(to)29 b(the)g(\014le)f
9699 +Fk(C:\\AUTOEXEC.BAT)p Fn(,)23 b(where)28 b Fk(<HOMEDIR>)d
9700 +Fn(is)j(the)h(directory)e(where)h(y)n(ou)g(w)n(an)n(t)g(ssh)g(to)g
9701 +(create)g(its)390 4414 y Fk(.ssh)h Fn(directory)-7 b(,)29
9702 +b(and)h Fk(<SSHDIR>)c Fn(is)k(the)g(directory)f(where)g(the)h
9703 +(executable)g Fk(ssh.exe)d Fn(is)j(stored;)g(if)g(y)n(ou'v)n(e)390
9704 +4514 y(installed)k(Cygwin)f(in)h(the)g(default)h(lo)r(cation,)f(this)g
9705 +(is)g Fk(C:\\cygwin\\bin)p Fn(.)50 b(Y)-7 b(ou)34 b(will)g(ha)n(v)n(e)e
9706 +(to)i(reb)r(o)r(ot)f(y)n(our)390 4613 y(computer)27 b(to)h(tak)n(e)f
9707 +(the)h(c)n(hanges)e(in)n(to)h(accoun)n(t.)307 4744 y
9708 +Fj(\017)41 b Fn(On)28 b(Windo)n(ws)f(NT/2k,)g(op)r(en)g(the)h(en)n
9709 +(vironmen)n(t)f(v)-5 b(ariables)26 b(dialog)h(b)r(o)n(x:)456
9710 +4876 y Fl({)41 b Fn(Windo)n(ws)28 b(NT:)g(My)f(Computer/Prop)r
9711 +(erties/En)n(vironmen)n(t)456 4991 y Fl({)41 b Fn(Windo)n(ws)28
9712 +b(2k:)36 b(My)28 b(Computer/Prop)r(erties/Adv)-5 b(anced/En)n(vironmen)
9713 +n(t)22 b(v)-5 b(ariables)390 5122 y(then)36 b(select)g(P)n(ath)e(and)h
9714 +(edit)h(its)g(v)-5 b(alue)35 b(b)n(y)h(app)r(ending)f
9715 +Fk(;<SSHDIR>)d Fn(to)j(it,)j(where)d Fk(<SSHDIR>)d Fn(is)k(the)f(full)
9716 +390 5222 y(name)29 b(of)g(the)h(directory)e(that)h(includes)h(the)f
9717 +(ssh)g(executable;)h(if)g(y)n(ou'v)n(e)e(installed)h(Cygwin)g(in)g(the)
9718 +h(default)390 5322 y(lo)r(cation,)d(this)h(is)g Fk(C:\\cygwin\\bin)p
9719 +Fn(.)1908 5589 y(40)p eop
9720 +%%Page: 41 41
9721 +41 40 bop 101 83 a Fn(3.)42 b(T)-7 b(est)27 b(ssh)g(from)h(a)f(DOS)h
9722 +(shell)f(b)n(y)h(t)n(yping)469 282 y Fk(ssh)42 b(<remote)f(host>)h(-l)g
9723 +(<login)f(name>)208 482 y Fn(Y)-7 b(ou)27 b(should)h(get)f(a)g(prompt)h
9724 +(for)f(y)n(our)f(passw)n(ord)g(on)h Fk(<remote)41 b(host>)p
9725 +Fn(,)25 b(follo)n(w)n(ed)i(b)n(y)g(a)g(w)n(orking)f(connection.)101
9726 +648 y(4.)42 b(Note)34 b(that)g Fk(ssh-keygen)c Fn(ma)n(y)j(not)h(w)n
9727 +(ork)f(\(fails)h(with)h(\\gethostname:)48 b(no)34 b(suc)n(h)g(\014le)g
9728 +(or)f(directory"\))g(on)h(some)208 747 y(systems.)i(This)28
9729 +b(is)f(OK:)g(y)n(ou)g(can)g(use)g(ssh)h(with)g(y)n(our)e(regular)g
9730 +(passw)n(ord)g(for)h(the)h(remote)f(system.)101 913 y(5.)42
9731 +b(Y)-7 b(ou)31 b(should)h(no)n(w)f(b)r(e)i(able)e(to)h(use)g(Unison)f
9732 +(with)i(an)e(ssh)h(connection.)49 b(If)32 b(y)n(ou)g(are)e(logged)h(in)
9733 +h(with)h(a)e(di\013eren)n(t)208 1013 y(user)d(name)h(on)h(the)f(lo)r
9734 +(cal)g(and)g(remote)g(hosts,)g(pro)n(vide)g(y)n(our)f(remote)g(user)h
9735 +(name)g(when)h(pro)n(viding)e(the)i(remote)208 1112 y(ro)r(ot)c
9736 +(\(i.e.,)i Fk(//username@host/p)o(ath)o(..)o(.)p Fn(\).)1908
9737 +5589 y(41)p eop
9738 +%%Page: 42 42
9739 +42 41 bop 0 83 a Fm(B)134 b(Changes)46 b(in)e(V)-11 b(ersion)45
9740 +b(2.9.1)0 265 y Fn(Changes)27 b(since)g(2.8.19:)125 431
9741 +y Fj(\017)41 b Fn(Fixed)27 b(a)h(bug)f(due)h(to)f(a)g(wrong)g
9742 +(assumption)125 597 y Fj(\017)41 b Fn(Changing)26 b(pro\014le)h(w)n
9743 +(orks)f(again)g(under)i(Windo)n(ws)125 763 y Fj(\017)41
9744 +b Fn(Fixed)27 b(a)h(bug)f(due)h(to)f(a)g(wrong)g(assumption)125
9745 +929 y Fj(\017)41 b Fn(\014xed)27 b(the)h(Mak)n(e\014le)0
9746 +1095 y(Changes)f(since)g(2.8.1:)125 1261 y Fj(\017)41
9747 +b Fn(Statistic)27 b(windo)n(w)h(\(transfer)f(rate,)f(amoun)n(t)i(of)f
9748 +(data)g(transferred\).)36 b([NB:)28 b(not)f(a)n(v)-5
9749 +b(ailable)27 b(Cygwin)g(v)n(ersion.])125 1427 y Fj(\017)41
9750 +b Fn(symlinks)27 b(w)n(orks)f(under)h(the)h(cygwin)f(v)n(ersion)f
9751 +(\(whic)n(h)i(is)g(dynamically)e(link)n(ed\).)125 1593
9752 +y Fj(\017)41 b Fn(File)29 b(mo)n(v)n(emen)n(t)g(hac)n(k:)40
9753 +b(Unison)29 b(no)n(w)g(tries)g(to)h(use)f(lo)r(cal)g(cop)n(y)f(instead)
9754 +i(of)f(transfer)g(for)g(mo)n(v)n(ed)f(or)h(copied)g(\014les.)208
9755 +1693 y(It)e(is)h(con)n(troled)e(b)n(y)i(a)f(b)r(o)r(olean)g(option)g
9756 +(\\xferb)n(ycop)n(ying".)125 1859 y Fj(\017)41 b Fn(Fixed)27
9757 +b(deadlo)r(c)n(k)g(when)h(sync)n(hronizing)e(b)r(et)n(w)n(een)h(Windo)n
9758 +(ws)g(and)h(Unix)125 2025 y Fj(\017)41 b Fn(Small)27
9759 +b(impro)n(v)n(emen)n(ts:)301 2191 y Fl({)41 b Fn(If)28
9760 +b(neither)g(the)390 2291 y(tt)g(USERPR)n(OFILE)f(nor)f(the)390
9761 +2390 y(tt)i(HOME)g(en)n(vironmen)n(t)e(v)-5 b(ariables)26
9762 +b(are)h(set,)h(then)g(Unison)f(will)h(put)g(its)g(temp)r(orary)f
9763 +(commit)g(log)g(\(called)390 2490 y(tt)h(D)n(ANGER.README\))h(in)n(to)e
9764 +(the)h(directory)e(named)i(b)n(y)f(the)390 2589 y(tt)h(UNISON)h(en)n
9765 +(vironmen)n(t)d(v)-5 b(ariable,)27 b(if)h(an)n(y;)f(otherwise)f(it)j
9766 +(will)e(use)390 2689 y(tt)h(C:.)301 2822 y Fl({)41 b
9767 +Fn(alternativ)n(e)27 b(set)g(of)h(v)-5 b(alues)27 b(for)g(fastc)n(hec)n
9768 +(k:)36 b(y)n(es)27 b(=)g(true;)h(no)f(=)g(false;)g(default)h(=)g(auto.)
9769 +301 2955 y Fl({)41 b Fn(-silen)n(t)27 b(implies)h(-con)n(tactquietly)
9770 +125 3121 y Fj(\017)41 b Fn(Source)26 b(co)r(de:)301 3287
9771 +y Fl({)41 b Fn(Co)r(de)28 b(reorganization)d(and)j(tidying.)37
9772 +b(\(Started)28 b(breaking)f(up)h(some)f(of)h(the)g(basic)f(utilit)n(y)i
9773 +(mo)r(dules)f(so)f(that)390 3386 y(the)h(non-unison-sp)r(eci\014c)f
9774 +(stu\013)h(can)f(b)r(e)h(made)g(a)n(v)-5 b(ailable)26
9775 +b(for)h(other)g(pro)5 b(jects.\))301 3519 y Fl({)41 b
9776 +Fn(sev)n(eral)26 b(Mak)n(e\014le)h(and)g(do)r(cs)g(c)n(hanges)g(\(for)g
9777 +(release\);)301 3652 y Fl({)41 b Fn(further)28 b(commen)n(ts)f(in)h
9778 +(\\up)r(date.ml";)301 3785 y Fl({)41 b Fn(connection)27
9779 +b(information)g(are)g(not)g(stored)g(in)h(global)f(v)-5
9780 +b(ariables)26 b(an)n(ymore.)0 3951 y(Changes)h(since)g(2.7.78:)125
9781 +4117 y Fj(\017)41 b Fn(Small)28 b(bug\014x)h(to)g(textual)g(user)f(in)n
9782 +(terface)g(under)h(Unix)g(\(to)g(a)n(v)n(oid)e(lea)n(ving)h(the)h
9783 +(terminal)g(in)g(a)f(bad)h(state)g(where)208 4217 y(it)f(w)n(ould)f
9784 +(not)g(ec)n(ho)g(inputs)h(after)g(Unison)f(exited\).)0
9785 +4383 y(Changes)g(since)g(2.7.39:)125 4549 y Fj(\017)41
9786 +b Fn(Impro)n(v)n(emen)n(ts)26 b(to)h(the)h(main)g(w)n(eb)f(page)g
9787 +(\(stable)g(and)h(b)r(eta)f(v)n(ersion)g(do)r(cs)g(are)f(no)n(w)h(b)r
9788 +(oth)h(accessible\).)125 4715 y Fj(\017)41 b Fn(User)27
9789 +b(man)n(ual)g(revised.)125 4881 y Fj(\017)41 b Fn(Added)28
9790 +b(some)f(new)g(preferences:)301 5047 y Fl({)41 b Fn(\\sshcmd")27
9791 +b(and)g(\\rshcmd")f(for)i(sp)r(ecifying)f(paths)h(to)f(ssh)g(and)h(rsh)
9792 +f(programs.)301 5180 y Fl({)41 b Fn(\\con)n(tactquietly")31
9793 +b(for)h(suppressing)g(the)h(\\con)n(tacting)e(serv)n(er")f(message)h
9794 +(during)h(Unison)h(startup)f(\(under)390 5279 y(the)c(graphical)e
9795 +(UI\).)1908 5589 y(42)p eop
9796 +%%Page: 43 43
9797 +43 42 bop 125 83 a Fj(\017)41 b Fn(Bug)27 b(\014xes:)301
9798 +246 y Fl({)41 b Fn(Fixed)33 b(small)g(bug)g(in)g(UI)h(that)f(neglected)
9799 +g(to)g(c)n(hange)f(the)h(displa)n(y)n(ed)f(column)h(headers)f(if)h
9800 +(loading)f(a)h(new)390 346 y(pro\014le)27 b(caused)g(the)h(ro)r(ots)f
9801 +(to)g(c)n(hange.)301 476 y Fl({)41 b Fn(Fixed)26 b(a)g(bug)f(that)h(w)n
9802 +(ould)g(put)g(the)g(text)g(UI)h(in)n(to)e(an)h(in\014nite)g(lo)r(op)g
9803 +(if)g(it)g(encoun)n(tered)f(a)g(con\015ict)h(when)g(run)390
9804 +576 y(in)i(batc)n(h)f(mo)r(de.)301 706 y Fl({)41 b Fn(Added)22
9805 +b(some)e(co)r(de)h(to)g(try)f(to)h(\014x)g(the)g(displa)n(y)g(of)f
9806 +(non-Ascii)h(c)n(haracters)e(in)i(\014lenames)f(on)h(Windo)n(ws)g
9807 +(systems)390 806 y(in)31 b(the)f(GTK)g(UI.)h(\(This)g(co)r(de)f(is)g
9808 +(curren)n(tly)f(un)n(tested|if)i(y)n(ou're)e(one)h(of)g(the)h(p)r
9809 +(eople)f(that)h(had)f(rep)r(orted)390 905 y(problems)21
9810 +b(with)h(displa)n(y)e(of)i(non-ascii)e(\014lenames,)i(w)n(e'd)f
9811 +(appreciate)f(kno)n(wing)h(if)g(this)h(actually)f(\014xes)g(things.\))
9812 +301 1036 y Fl({)41 b Fn(`)p Fk(-prefer/-force)d(newer)p
9813 +Fn(')20 b(w)n(orks)h(prop)r(erly)g(no)n(w.)34 b(\(The)23
9814 +b(bug)f(w)n(as)f(rep)r(orted)h(b)n(y)f(Sebastian)h(Urbaniak)f(and)390
9815 +1135 y(Sean)28 b(F)-7 b(ulton.\))125 1299 y Fj(\017)41
9816 +b Fn(User)27 b(in)n(terface)g(and)g(Unison)h(b)r(eha)n(vior:)301
9817 +1462 y Fl({)41 b Fn(Renamed)28 b(`Pro)r(ceed')e(to)i(`Go')f(in)h(the)g
9818 +(graphical)e(UI.)301 1592 y Fl({)41 b Fn(Added)28 b(exit)g(status)g
9819 +(for)f(the)h(textual)f(user)g(in)n(terface.)301 1722
9820 +y Fl({)41 b Fn(P)n(aths)31 b(that)i(are)e(not)i(sync)n(hronized)e(b)r
9821 +(ecause)g(of)i(con\015icts)f(or)f(errors)f(during)i(up)r(date)h
9822 +(detection)f(are)g(no)n(w)390 1822 y(noted)c(in)g(the)g(log)e(\014le.)
9823 +301 1952 y Fl({)41 b Fk([END])26 b Fn(messages)g(in)i(log)e(no)n(w)h
9824 +(use)h(a)f(briefer)g(format)301 2083 y Fl({)41 b Fn(Changed)27
9825 +b(the)h(text)g(UI)g(startup)f(sequence)g(so)g(that)390
9826 +2182 y(tt)h(./unison)f(-ui)h(text)g(will)g(use)f(the)h(default)g
9827 +(pro\014le)f(instead)h(of)f(failing.)301 2312 y Fl({)41
9828 +b Fn(Made)28 b(some)f(impro)n(v)n(emen)n(ts)f(to)h(the)h(error)e
9829 +(messages.)301 2443 y Fl({)41 b Fn(Added)28 b(some)f(debugging)g
9830 +(messages)f(to)h(remote.ml.)0 2606 y(Changes)g(since)g(2.7.7:)125
9831 +2767 y Fj(\017)41 b Fn(Incorp)r(orated,)25 b(once)g(again,)h(a)g(m)n
9832 +(ulti-threaded)g(transp)r(ort)f(sub-system.)36 b(It)27
9833 +b(transfers)e(sev)n(eral)f(\014les)j(at)f(the)h(same)208
9834 +2866 y(time,)41 b(thereb)n(y)d(making)g(m)n(uc)n(h)g(more)g(e\013ectiv)
9835 +n(e)g(use)g(of)g(a)n(v)-5 b(ailable)38 b(net)n(w)n(ork)f(bandwidth.)69
9836 +b(Unlik)n(e)39 b(the)g(earlier)208 2966 y(attempt,)c(this)e(time)h(w)n
9837 +(e)f(do)g(not)g(rely)g(on)f(the)i(nativ)n(e)f(thread)f(library)g(of)h
9838 +(OCaml.)53 b(Instead,)35 b(w)n(e)e(implemen)n(t)g(a)208
9839 +3066 y(ligh)n(t-w)n(eigh)n(t,)26 b(non-preemptiv)n(e)h(m)n(ulti-thread)
9840 +g(library)f(in)i(OCaml)f(directly)-7 b(.)37 b(This)27
9841 +b(v)n(ersion)f(app)r(ears)h(stable.)208 3197 y(Some)h(adjustmen)n(ts)g
9842 +(to)h(unison)f(are)g(made)g(to)g(accommo)r(date)g(the)g(m)n
9843 +(ulti-threaded)h(v)n(ersion.)38 b(These)28 b(include,)h(in)208
9844 +3297 y(particular,)d(c)n(hanges)g(to)i(the)g(user)e(in)n(terface)h(and)
9845 +h(logging,)e(for)h(example:)301 3460 y Fl({)41 b Fn(Tw)n(o)27
9846 +b(log)g(en)n(tries)g(for)g(eac)n(h)g(transferring)e(task,)i(one)h(for)f
9847 +(the)h(b)r(eginning,)f(one)h(for)f(the)h(end.)301 3590
9848 +y Fl({)41 b Fn(Suppressed)28 b(w)n(arning)f(messages)f(against)h(remo)n
9849 +(ving)g(temp)i(\014les)f(left)h(b)n(y)e(a)h(previous)f(unison)h(run,)g
9850 +(b)r(ecause)390 3690 y(w)n(arning)d(do)r(es)h(not)g(w)n(ork)f(nicely)h
9851 +(under)g(m)n(ulti-threading.)36 b(The)26 b(temp)h(\014le)g(names)e(are)
9852 +h(made)g(less)f(lik)n(ely)h(to)390 3790 y(coincide)h(with)i(the)f(name)
9853 +f(of)g(a)h(\014le)f(created)g(b)n(y)h(the)g(user.)36
9854 +b(They)27 b(tak)n(e)g(the)h(form)390 3889 y Fk(.#<filename>.<ser)o(ia)o
9855 +(l>.)o(un)o(is)o(on.)o(tm)o(p)p Fn(.)125 4053 y Fj(\017)41
9856 +b Fn(Added)31 b(a)f(new)g(command)g(to)h(the)f(GTK)h(user)e(in)n
9857 +(terface:)42 b(pressing)30 b('f)6 b(')31 b(causes)f(Unison)g(to)g
9858 +(start)g(a)g(new)h(up)r(date)208 4152 y(detection)21
9859 +b(phase,)h(using)f(as)f(paths)i Fi(just)e Fn(those)h(paths)g(that)h(ha)
9860 +n(v)n(e)e(b)r(een)i(detected)f(as)g(c)n(hanged)f(and)h(not)g(y)n(et)g
9861 +(mark)n(ed)208 4252 y(as)31 b(successfully)g(completed.)49
9862 +b(Use)32 b(this)g(command)g(to)f(quic)n(kly)g(restart)g(Unison)h(on)f
9863 +(just)i(the)f(set)f(of)h(paths)g(still)208 4352 y(needing)27
9864 +b(atten)n(tion)g(after)h(a)f(previous)f(run.)125 4515
9865 +y Fj(\017)41 b Fn(Made)34 b(the)h Fk(ignorecase)c Fn(preference)j
9866 +(user-visible,)i(and)f(c)n(hanged)f(the)h(initialization)g(co)r(de)f
9867 +(so)h(that)g(it)g(can)g(b)r(e)208 4615 y(man)n(ually)28
9868 +b(set)h(to)g(true,)h(ev)n(en)f(if)h(neither)f(host)g(is)g(running)g
9869 +(Windo)n(ws.)42 b(\(This)29 b(ma)n(y)g(b)r(e)g(useful,)i(e.g.,)e(when)g
9870 +(using)208 4714 y(Unison)e(running)g(on)h(a)f(Unix)h(system)f(with)h(a)
9871 +f(F)-9 b(A)i(T)28 b(v)n(olume)f(moun)n(ted.\))125 4878
9872 +y Fj(\017)41 b Fn(Small)27 b(impro)n(v)n(emen)n(ts)f(and)i(bug)f
9873 +(\014xes:)301 5041 y Fl({)41 b Fn(Errors)20 b(in)j(preference)f
9874 +(\014les)h(no)n(w)f(generate)f(fatal)i(errors)d(rather)i(than)h(w)n
9875 +(arnings)e(at)i(startup)f(time.)36 b(\(I.e.,)24 b(y)n(ou)390
9876 +5141 y(can't)i(go)f(on)h(from)g(them.\))37 b(Also,)26
9877 +b(w)n(e)g(\014xed)g(a)f(bug)h(that)g(w)n(as)f(prev)n(en)n(ting)g(these)
9878 +h(w)n(arnings)f(from)g(app)r(earing)390 5240 y(in)h(the)g(text)g(UI,)g
9879 +(so)f(some)g(users)g(who)g(ha)n(v)n(e)f(b)r(een)i(running)f(\(unsusp)r
9880 +(ectingly\))i(with)f(garbage)d(in)j(their)f(prefs)390
9881 +5340 y(\014les)j(ma)n(y)f(no)n(w)g(get)g(error)f(rep)r(orts.)1908
9882 +5589 y(43)p eop
9883 +%%Page: 44 44
9884 +44 43 bop 301 83 a Fl({)41 b Fn(Error)25 b(rep)r(orting)i(for)g
9885 +(preference)g(\014les)g(no)n(w)g(pro)n(vides)f(\014le)i(name)g(and)f
9886 +(line)h(n)n(um)n(b)r(er.)301 216 y Fl({)41 b Fn(More)21
9887 +b(in)n(telligible)i(message)d(in)j(the)f(case)g(of)g(iden)n(tical)g(c)n
9888 +(hange)f(to)h(the)g(same)g(\014les:)34 b(\\Nothing)21
9889 +b(to)h(do:)34 b(replicas)390 315 y(ha)n(v)n(e)27 b(b)r(een)h(c)n
9890 +(hanged)e(only)h(in)h(iden)n(tical)g(w)n(a)n(ys)e(since)h(last)g
9891 +(sync.")301 448 y Fl({)41 b Fn(Files)28 b(with)g(pre\014x)f('.#')h
9892 +(excluded)g(when)g(scanning)e(for)h(preference)g(\014les.)301
9893 +581 y Fl({)41 b Fn(Rsync)28 b(instructions)f(are)f(send)i(directly)f
9894 +(instead)h(of)f(\014rst)h(marshaled.)301 714 y Fl({)41
9895 +b Fn(W)-7 b(on't)29 b(try)g(forev)n(er)e(to)h(get)h(the)g(\014ngerprin)
9896 +n(t)e(of)i(a)f(con)n(tin)n(uously)g(c)n(hanging)f(\014le:)39
9897 +b(unison)29 b(will)g(giv)n(e)e(up)i(after)390 814 y(certain)e(n)n(um)n
9898 +(b)r(er)h(of)f(retries.)301 946 y Fl({)41 b Fn(Other)d(bug)g(\014xes,)j
9899 +(including)d(the)h(one)f(rep)r(orted)f(b)n(y)h(P)n(eter)f(Selinger)h
9900 +(\()p Fk(force=older)h(preference)34 b Fn(not)390 1046
9901 +y(w)n(orking\).)125 1212 y Fj(\017)41 b Fn(Compilation:)301
9902 +1378 y Fl({)g Fn(Upgraded)25 b(to)h(the)g(new)f(OCaml)g(3.04)g
9903 +(compiler,)g(with)h(the)g(LablGtk)g(1.2.3)e(library)g(\(patc)n(hed)i(v)
9904 +n(ersion)e(used)390 1478 y(for)j(compiling)g(under)h(Windo)n(ws\).)301
9905 +1611 y Fl({)41 b Fn(Added)35 b(the)f(option)g(to)f(compile)h(unison)g
9906 +(on)f(the)h(Windo)n(ws)g(platform)f(with)i(Cygwin)e(GNU)i(C)f
9907 +(compiler.)390 1710 y(This)28 b(option)f(only)g(supp)r(orts)g(building)
9908 +h(dynamically)f(link)n(ed)h(unison)f(executables.)0 1876
9909 +y(Changes)g(since)g(2.7.4:)125 2042 y Fj(\017)41 b Fn(Fixed)27
9910 +b(a)h(silly)f(\(but)h(debilitating\))h(bug)e(in)h(the)g(clien)n(t)f
9911 +(startup)h(sequence.)0 2208 y(Changes)f(since)g(2.7.1:)125
9912 +2374 y Fj(\017)41 b Fn(Added)33 b Fk(addprefsto)c Fn(preference,)k
9913 +(whic)n(h)g(\(when)g(set\))g(con)n(trols)f(whic)n(h)g(preference)g
9914 +(\014le)h(new)g(preferences)f(\(e.g.)208 2474 y(new)27
9915 +b(ignore)g(patterns\))g(are)g(added)g(to.)125 2640 y
9916 +Fj(\017)41 b Fn(Bug)27 b(\014x:)39 b(read)27 b(the)i(initial)g
9917 +(connection)e(header)h(one)g(b)n(yte)g(at)g(a)g(time,)h(so)f(that)h(w)n
9918 +(e)f(don't)g(blo)r(c)n(k)g(if)h(the)g(header)e(is)208
9919 +2740 y(shorter)f(than)h(exp)r(ected.)37 b(\(This)28 b(bug)f(did)h(not)g
9920 +(a\013ect)f(normal)g(op)r(eration)f(|)i(it)g(just)g(made)f(it)h(hard)f
9921 +(to)g(tell)h(when)208 2839 y(y)n(ou)23 b(w)n(ere)h(trying)f(to)i(use)f
9922 +(Unison)g(incorrectly)f(with)i(an)f(old)g(v)n(ersion)f(of)i(the)f(serv)
9923 +n(er,)g(since)g(it)h(w)n(ould)f(hang)f(instead)208 2939
9924 +y(of)k(giving)g(an)g(error)f(message.\))0 3105 y(Changes)h(since)g
9925 +(2.6.59:)125 3271 y Fj(\017)41 b Fn(Changed)27 b Fk(fastcheck)e
9926 +Fn(from)k(a)f(b)r(o)r(olean)g(to)g(a)g(string)g(preference.)39
9927 +b(Its)29 b(legal)e(v)-5 b(alues)29 b(are)e Fk(yes)h Fn(\(for)g(a)g
9928 +(fast)h(c)n(hec)n(k\),)208 3371 y Fk(no)f Fn(\(for)h(a)g(safe)f(c)n
9929 +(hec)n(k\),)h(or)g Fk(default)d Fn(\(for)j(a)g(fast)g(c)n(hec)n(k|whic)
9930 +n(h)f(also)g(happ)r(ens)h(to)g(b)r(e)h(safe|when)f(running)f(on)208
9931 +3470 y(Unix)f(and)h(a)f(safe)g(c)n(hec)n(k)g(when)h(on)f(Windo)n(ws\).)
9932 +37 b(The)28 b(default)g(is)f Fk(default)p Fn(.)125 3636
9933 +y Fj(\017)41 b Fn(Sev)n(eral)31 b(preferences)g(ha)n(v)n(e)g(b)r(een)i
9934 +(renamed)f(for)g(consistency)-7 b(.)50 b(All)33 b(preference)f(names)g
9935 +(are)f(no)n(w)h(sp)r(elled)g(out)h(in)208 3736 y(lo)n(w)n(ercase.)49
9936 +b(F)-7 b(or)32 b(bac)n(kw)n(ard)e(compatibilit)n(y)-7
9937 +b(,)34 b(the)f(old)f(names)g(still)h(w)n(ork,)f(but)i(they)e(are)g(not)
9938 +g(men)n(tioned)h(in)g(the)208 3836 y(man)n(ual)26 b(an)n(y)h(more.)125
9939 +4002 y Fj(\017)41 b Fn(The)25 b(temp)h(\014les)g(created)f(b)n(y)g(the)
9940 +h('di\013)6 b(')27 b(and)e('merge')g(commands)g(are)g(no)n(w)g(named)g
9941 +(b)n(y)g Fi(pr)l(e)p Fn(p)r(ending)i(a)e(new)h(pre\014x)208
9942 +4101 y(to)d(the)h(\014le)f(name,)h(rather)f(than)g(app)r(ending)h(a)f
9943 +(su\016x.)35 b(This)24 b(should)f(a)n(v)n(oid)f(confusing)h
9944 +(di\013/merge)g(programs)e(that)208 4201 y(dep)r(end)28
9945 +b(on)f(the)h(su\016x)g(to)f(guess)g(the)h(t)n(yp)r(e)g(of)f(the)h
9946 +(\014le)g(con)n(ten)n(ts.)125 4367 y Fj(\017)41 b Fn(W)-7
9947 +b(e)33 b(no)n(w)f(set)h(the)g(k)n(eepaliv)n(e)e(option)i(on)f(the)h
9948 +(serv)n(er)e(so)r(c)n(k)n(et,)i(to)g(mak)n(e)f(sure)g(that)h(the)h
9949 +(serv)n(er)d(times)i(out)f(if)i(the)208 4467 y(comm)n(unication)26
9950 +b(link)i(is)g(unexp)r(ectedly)g(brok)n(en.)125 4633 y
9951 +Fj(\017)41 b Fn(Bug)27 b(\014xes:)301 4799 y Fl({)41
9952 +b Fn(When)28 b(up)r(dating)g(small)f(\014les,)h(Unison)g(no)n(w)e
9953 +(closes)h(the)h(destination)f(\014le.)301 4932 y Fl({)41
9954 +b Fn(File)28 b(p)r(ermissions)f(are)f(prop)r(erly)h(up)r(dated)h(when)g
9955 +(the)g(\014le)g(is)f(b)r(ehind)i(a)e(follo)n(w)n(ed)f(link.)301
9956 +5064 y Fl({)41 b Fn(Sev)n(eral)26 b(other)h(small)h(\014xes.)0
9957 +5230 y(Changes)f(since)g(2.6.38:)1908 5589 y(44)p eop
9958 +%%Page: 45 45
9959 +45 44 bop 125 83 a Fj(\017)41 b Fn(Ma)5 b(jor)26 b(Windo)n(ws)h(p)r
9960 +(erformance)g(impro)n(v)n(emen)n(t!)208 214 y(W)-7 b(e'v)n(e)31
9961 +b(added)g(a)g(preference)g Fk(fastcheck)d Fn(that)k(mak)n(es)e(Unison)h
9962 +(lo)r(ok)g(only)g(at)h(a)f(\014le's)g(creation)f(time)i(and)g(last-)208
9963 +314 y(mo)r(di\014ed)e(time)h(to)f(c)n(hec)n(k)f(whether)h(it)h(has)e(c)
9964 +n(hanged.)44 b(This)30 b(should)g(result)g(in)g(a)g(h)n(uge)f(sp)r
9965 +(eedup)i(when)f(c)n(hec)n(king)208 413 y(for)d(up)r(dates)g(in)h(large)
9966 +e(replicas.)208 545 y(When)j(this)h(switc)n(h)f(is)g(set,)h(Unison)f
9967 +(will)h(use)f(\014le)g(creation)f(times)i(as)e('pseudo)h(ino)r(de)h(n)n
9968 +(um)n(b)r(ers')e(when)i(scanning)208 644 y(Windo)n(ws)24
9969 +b(replicas)f(for)h(up)r(dates,)i(instead)e(of)h(reading)e(the)i(full)g
9970 +(con)n(ten)n(ts)f(of)h(ev)n(ery)e(\014le.)36 b(This)24
9971 +b(ma)n(y)g(cause)g(Unison)208 744 y(to)37 b(miss)g(propagating)e(an)i
9972 +(up)r(date)h(if)g(the)g(create)e(time,)41 b(mo)r(di\014cation)c(time,)k
9973 +(and)c(length)g(of)h(the)f(\014le)h(are)e(all)208 844
9974 +y(unc)n(hanged)25 b(b)n(y)g(the)h(up)r(date)h(\(this)f(is)g(not)g(easy)
9975 +f(to)g(ac)n(hiev)n(e,)g(but)i(it)f(can)f(b)r(e)i(done\).)36
9976 +b(Ho)n(w)n(ev)n(er,)24 b(Unison)i(will)g(nev)n(er)208
9977 +943 y Fi(overwrite)32 b Fn(suc)n(h)g(an)f(up)r(date)h(with)g(a)f(c)n
9978 +(hange)g(from)g(the)h(other)f(replica,)g(since)h(it)g(alw)n(a)n(ys)d
9979 +(do)r(es)j(a)f(safe)g(c)n(hec)n(k)g(for)208 1043 y(up)r(dates)f(just)i
9980 +(b)r(efore)e(propagating)e(a)i(c)n(hange.)45 b(Th)n(us,)31
9981 +b(it)g(is)g(reasonable)d(to)j(use)f(this)h(switc)n(h)g(most)f(of)h(the)
9982 +g(time)208 1142 y(and)23 b(o)r(ccasionally)e(run)i(Unison)g(once)g
9983 +(with)g Fk(fastcheck)d Fn(set)j(to)g(false,)h(if)f(y)n(ou)g(are)f(w)n
9984 +(orried)f(that)j(Unison)f(ma)n(y)f(ha)n(v)n(e)208 1242
9985 +y(o)n(v)n(erlo)r(ok)n(ed)i(an)k(up)r(date.)208 1373 y(W)-7
9986 +b(arning:)34 b(This)23 b(c)n(hange)g(is)g(has)g(not)h(y)n(et)f(b)r(een)
9987 +h(thoroughly)e(\014eld-tested.)36 b(If)24 b(y)n(ou)e(set)i(the)g
9988 +Fk(fastcheck)c Fn(preference,)208 1473 y(pa)n(y)26 b(careful)h(atten)n
9989 +(tion)h(to)f(what)h(Unison)f(is)h(doing.)125 1636 y Fj(\017)41
9990 +b Fn(New)27 b(functionalit)n(y:)37 b(cen)n(tralized)27
9991 +b(bac)n(kups)g(and)g(merging)301 1798 y Fl({)41 b Fn(This)c(v)n(ersion)
9992 +f(incorp)r(orates)f(t)n(w)n(o)h(pieces)h(of)g(ma)5 b(jor)36
9993 +b(new)h(functionalit)n(y)-7 b(,)39 b(implemen)n(ted)f(b)n(y)f(Sylv)-5
9994 +b(ain)37 b(Ro)n(y)390 1898 y(during)f(a)g(summer)h(in)n(ternship)f(at)g
9995 +(P)n(enn:)54 b(a)36 b Fi(c)l(entr)l(alize)l(d)j(b)l(ackup)e
9996 +Fn(facilit)n(y)f(that)h(k)n(eeps)f(a)g(full)h(bac)n(kup)f(of)390
9997 +1998 y(\(selected)e(\014les)h(in\))f(eac)n(h)f(replica,)i(and)f(a)g
9998 +Fi(mer)l(ging)h Fn(feature)e(that)i(allo)n(ws)e(Unison)h(to)g(in)n(v)n
9999 +(ok)n(e)e(an)i(external)390 2097 y(\014le-merging)26
10000 +b(to)r(ol)i(to)f(resolv)n(e)f(con\015icting)h(c)n(hanges)g(to)g
10001 +(individual)h(\014les.)301 2227 y Fl({)41 b Fn(Cen)n(tralized)27
10002 +b(bac)n(kups:)462 2356 y Fj(\003)41 b Fn(Unison)28 b(no)n(w)g(main)n
10003 +(tains)f(full)i(bac)n(kups)e(of)h(the)h(last-sync)n(hronized)d(v)n
10004 +(ersions)g(of)i(\(some)g(of)6 b(\))28 b(the)h(\014les)f(in)545
10005 +2456 y(eac)n(h)e(replica;)f(these)h(function)h(b)r(oth)f(as)g(bac)n
10006 +(kups)f(in)h(the)g(usual)g(sense)g(and)f(as)h(the)g(\\common)f(v)n
10007 +(ersion")545 2555 y(when)j(in)n(v)n(oking)e(external)h(merge)g
10008 +(programs.)462 2670 y Fj(\003)41 b Fn(The)31 b(bac)n(k)n(ed)f(up)g
10009 +(\014les)h(are)f(stored)f(in)i(a)f(directory)60 b(/.unison/bac)n(kup)29
10010 +b(on)h(eac)n(h)g(host.)46 b(\(The)31 b(name)f(of)545
10011 +2770 y(this)e(directory)f(can)g(b)r(e)h(c)n(hanged)e(b)n(y)i(setting)f
10012 +(the)h(en)n(vironmen)n(t)f(v)-5 b(ariable)26 b Fk(UNISONBACKUPDIR)p
10013 +Fn(.\))462 2884 y Fj(\003)41 b Fn(The)h(predicate)f Fk(backup)e
10014 +Fn(con)n(trols)h(whic)n(h)h(\014les)h(are)e(actually)h(bac)n(k)n(ed)f
10015 +(up:)65 b(giving)41 b(the)h(preference)545 2984 y(')p
10016 +Fk(backup)g(=)h(Path)f(*)p Fn(')27 b(causes)g(bac)n(king)f(up)i(of)g
10017 +(all)f(\014les.)462 3098 y Fj(\003)41 b Fn(Files)35 b(are)e(added)i(to)
10018 +f(the)h(bac)n(kup)f(directory)f(whenev)n(er)g(unison)h(up)r(dates)h
10019 +(its)f(arc)n(hiv)n(e.)56 b(This)35 b(means)545 3198 y(that)622
10020 +3313 y Fj(\001)42 b Fn(When)21 b(unison)f(reconstructs)g(its)h(arc)n
10021 +(hiv)n(e)d(from)j(scratc)n(h)e(\(e.g.,)j(b)r(ecause)f(of)f(an)h
10022 +(upgrade,)g(or)e(b)r(ecause)687 3412 y(the)28 b(arc)n(hiv)n(e)d
10023 +(\014les)j(ha)n(v)n(e)e(b)r(een)i(man)n(ually)f(deleted\),)h(all)g
10024 +(\014les)f(will)h(b)r(e)g(bac)n(k)n(ed)f(up.)622 3527
10025 +y Fj(\001)42 b Fn(Otherwise,)26 b(eac)n(h)h(\014le)h(will)g(b)r(e)g
10026 +(bac)n(k)n(ed)e(up)i(the)g(\014rst)f(time)i(unison)e(propagates)e(an)j
10027 +(up)r(date)g(for)f(it.)462 3641 y Fj(\003)41 b Fn(The)33
10028 +b(preference)f Fk(backupversions)27 b Fn(con)n(trols)k(ho)n(w)h(man)n
10029 +(y)g(previous)g(v)n(ersions)f(of)i(eac)n(h)f(\014le)g(are)g(k)n(ept.)
10030 +545 3741 y(The)c(default)g(is)g(2)f(\(i.e.,)h(the)g(last)f(sync)n
10031 +(hronized)f(v)n(ersion)g(plus)i(one)f(bac)n(kup\).)462
10032 +3856 y Fj(\003)41 b Fn(F)-7 b(or)23 b(bac)n(kw)n(ard)e(compatibilit)n
10033 +(y)-7 b(,)24 b(the)g Fk(backups)c Fn(preference)i(is)i(also)e(still)h
10034 +(supp)r(orted,)h(but)g Fk(backup)d Fn(is)i(no)n(w)545
10035 +3955 y(preferred.)462 4070 y Fj(\003)41 b Fn(It)d(is)f(OK)f(to)h(man)n
10036 +(ually)f(delete)h(\014les)g(from)g(the)h(bac)n(kup)e(directory)g(\(or)g
10037 +(to)h(thro)n(w)f(a)n(w)n(a)n(y)f(the)j(direc-)545 4169
10038 +y(tory)32 b(itself)6 b(\).)52 b(Before)31 b(unison)h(uses)g(an)n(y)f
10039 +(of)h(these)g(\014les)h(for)e(an)n(ything)h(imp)r(ortan)n(t,)h(it)f(c)n
10040 +(hec)n(ks)f(that)i(its)545 4269 y(\014ngerprin)n(t)27
10041 +b(matc)n(hes)g(the)h(one)f(that)h(it)g(exp)r(ects.)301
10042 +4399 y Fl({)41 b Fn(Merging:)462 4528 y Fj(\003)g Fn(Both)29
10043 +b(user)g(in)n(terfaces)f(o\013er)g(a)h(new)g('merge')f(command,)h(in)n
10044 +(v)n(ok)n(ed)f(b)n(y)g(pressing)g('m')i(\(with)g(a)e(c)n(hanged)545
10045 +4628 y(\014le)g(selected\).)462 4742 y Fj(\003)41 b Fn(The)24
10046 +b(actual)g(merging)e(is)i(p)r(erformed)f(b)n(y)h(an)f(external)g
10047 +(program.)34 b(The)23 b(preferences)g Fk(merge)f Fn(and)h
10048 +Fk(merge2)545 4842 y Fn(con)n(trol)c(ho)n(w)g(this)h(program)d(is)j(in)
10049 +n(v)n(ok)n(ed.)33 b(If)20 b(a)f(bac)n(kup)g(exists)h(for)f(this)h
10050 +(\014le)g(\(see)f(the)h Fk(backup)e Fn(preference\),)545
10051 +4941 y(then)30 b(the)e Fk(merge)f Fn(preference)h(is)g(used)h(for)f
10052 +(this)h(purp)r(ose;)f(otherwise)g Fk(merge2)e Fn(is)j(used.)39
10053 +b(In)29 b(b)r(oth)g(cases,)545 5041 y(the)22 b(v)-5 b(alue)21
10054 +b(of)g(the)g(preference)f(should)h(b)r(e)g(a)g(string)f(represen)n
10055 +(ting)g(the)h(command)f(that)i(should)e(b)r(e)i(passed)545
10056 +5141 y(to)28 b(a)f(shell)h(to)f(in)n(v)n(ok)n(e)f(the)j(merge)d
10057 +(program.)35 b(Within)29 b(this)f(string,)f(the)h(sp)r(ecial)g
10058 +(substrings)e Fk(CURRENT1)p Fn(,)545 5240 y Fk(CURRENT2)p
10059 +Fn(,)33 b Fk(NEW)p Fn(,)g(and)h Fk(OLD)f Fn(ma)n(y)h(app)r(ear)f(at)h
10060 +(an)n(y)g(p)r(oin)n(t.)57 b(Unison)34 b(will)g(substitute)h(these)g(as)
10061 +e(follo)n(ws)545 5340 y(b)r(efore)28 b(in)n(v)n(oking)e(the)i(command:)
10062 +1908 5589 y(45)p eop
10063 +%%Page: 46 46
10064 +46 45 bop 622 83 a Fj(\001)42 b Fk(CURRENT1)24 b Fn(is)j(replaced)g(b)n
10065 +(y)g(the)h(name)g(of)f(the)h(lo)r(cal)f(cop)n(y)g(of)h(the)g(\014le;)
10066 +622 199 y Fj(\001)42 b Fk(CURRENT2)33 b Fn(is)j(replaced)f(b)n(y)h(the)
10067 +h(name)f(of)g(a)g(temp)r(orary)f(\014le,)k(in)n(to)d(whic)n(h)g(the)h
10068 +(con)n(ten)n(ts)e(of)i(the)687 298 y(remote)27 b(cop)n(y)f(of)i(the)g
10069 +(\014le)g(ha)n(v)n(e)e(b)r(een)i(transferred)e(b)n(y)i(Unison)f(prior)f
10070 +(to)i(p)r(erforming)f(the)h(merge;)622 414 y Fj(\001)42
10071 +b Fk(NEW)24 b Fn(is)i(replaced)f(b)n(y)g(the)h(name)g(of)g(a)f(temp)r
10072 +(orary)g(\014le)h(that)g(Unison)f(exp)r(ects)h(to)g(b)r(e)g(written)g
10073 +(b)n(y)g(the)687 513 y(merge)g(program)g(when)i(it)g(\014nishes,)f
10074 +(giving)g(the)h(desired)f(new)h(con)n(ten)n(ts)f(of)g(the)h(\014le;)g
10075 +(and)622 629 y Fj(\001)42 b Fk(OLD)25 b Fn(is)i(replaced)f(b)n(y)g(the)
10076 +i(name)e(of)h(the)g(bac)n(k)n(ed)f(up)h(cop)n(y)f(of)h(the)g(original)e
10077 +(v)n(ersion)h(of)g(the)i(\014le)f(\(i.e.,)687 728 y(its)34
10078 +b(state)g(at)g(the)h(end)g(of)f(the)h(last)f(successful)g(run)g(of)g
10079 +(Unison\),)i(if)f(one)f(exists)g(\(applies)g(only)g(to)687
10080 +828 y Fk(merge)p Fn(,)25 b(not)j Fk(merge2)p Fn(\).)545
10081 +944 y(F)-7 b(or)27 b(example,)h(on)f(Unix)h(systems)f(setting)h(the)g
10082 +Fk(merge)d Fn(preference)i(to)676 1059 y Fk(merge)42
10083 +b(=)h(diff3)e(-m)i(CURRENT1)d(OLD)j(CURRENT2)d(>)j(NEW)545
10084 +1175 y Fn(will)28 b(tell)g(Unison)g(to)f(use)h(the)g(external)e
10085 +Fk(diff3)g Fn(program)g(for)h(merging.)545 1274 y(A)k(large)e(n)n(um)n
10086 +(b)r(er)i(of)f(external)g(merging)f(programs)f(are)i(a)n(v)-5
10087 +b(ailable.)44 b(F)-7 b(or)30 b(example,)h Fk(emacs)d
10088 +Fn(users)i(ma)n(y)545 1374 y(\014nd)e(the)g(follo)n(wing)f(con)n(v)n
10089 +(enien)n(t:)720 1489 y Fk(merge2)41 b(=)i(emacs)f(-q)g(--eval)f
10090 +('\(ediff-merge-fil)o(es)c("CURRENT1")j("CURRENT2")1199
10091 +1589 y(nil)j("NEW"\)')720 1689 y(merge)e(=)i(emacs)f(-q)h(--eval)e
10092 +('\(ediff-merge-fi)o(le)o(s-w)o(it)o(h-a)o(nc)o(es)o(tor)1199
10093 +1788 y("CURRENT1")f("CURRENT2")f("OLD")j(nil)g("NEW"\)')545
10094 +1904 y Fn(\(These)29 b(commands)g(are)f(displa)n(y)n(ed)g(here)g(on)h
10095 +(t)n(w)n(o)f(lines)h(to)g(a)n(v)n(oid)e(running)i(o\013)g(the)g(edge)g
10096 +(of)g(the)g(page.)545 2004 y(In)f(y)n(our)f(preference)f(\014le,)i(eac)
10097 +n(h)f(should)g(b)r(e)h(written)g(on)f(a)h(single)f(line.\))462
10098 +2119 y Fj(\003)41 b Fn(If)30 b(the)g(external)f(program)e(exits)i
10099 +(without)h(lea)n(ving)e(an)n(y)h(\014le)g(at)h(the)f(path)h
10100 +Fk(NEW)p Fn(,)e(Unison)i(considers)e(the)545 2219 y(merge)35
10101 +b(to)g(ha)n(v)n(e)f(failed.)61 b(If)35 b(the)h(merge)f(program)e
10102 +(writes)i(a)g(\014le)g(called)g Fk(NEW)g Fn(but)g(exits)h(with)g(a)f
10103 +(non-)545 2318 y(zero)29 b(status)h(co)r(de,)h(then)f(Unison)g
10104 +(considers)f(the)h(merge)f(to)h(ha)n(v)n(e)f(succeeded)h(but)g(to)g(ha)
10105 +n(v)n(e)f(generated)545 2418 y(con\015icts.)48 b(In)32
10106 +b(this)g(case,)f(it)h(attempts)g(to)f(in)n(v)n(ok)n(e)f(an)h(external)f
10107 +(editor)h(so)g(that)g(the)h(user)f(can)g(resolv)n(e)545
10108 +2518 y(the)e(con\015icts.)40 b(The)28 b(v)-5 b(alue)28
10109 +b(of)h(the)g Fk(editor)d Fn(preference)h(con)n(trols)g(what)i(editor)f
10110 +(is)g(in)n(v)n(ok)n(ed)f(b)n(y)h(Unison.)545 2617 y(The)g(default)g(is)
10111 +g Fk(emacs)p Fn(.)462 2733 y Fj(\003)41 b Fn(Please)23
10112 +b(send)h(us)g(suggestions)e(for)h(other)h(useful)g(v)-5
10113 +b(alues)24 b(of)f(the)i Fk(merge2)c Fn(and)j Fk(merge)e
10114 +Fn(preferences)h({)g(w)n(e'd)545 2832 y(lik)n(e)28 b(to)f(giv)n(e)g
10115 +(sev)n(eral)f(examples)h(in)g(the)h(man)n(ual.)125 2996
10116 +y Fj(\017)41 b Fn(Smaller)27 b(c)n(hanges:)301 3161 y
10117 +Fl({)41 b Fn(When)26 b(one)e(preference)g(\014le)h(includes)g(another,)
10118 +f(unison)h(no)f(longer)g(adds)g(the)i(su\016x)e(')p Fk(.prf)p
10119 +Fn(')g(to)g(the)i(included)390 3261 y(\014le)c(b)n(y)f(default.)36
10120 +b(If)22 b(a)f(\014le)g(with)i(precisely)d(the)i(giv)n(en)f(name)g
10121 +(exists)g(in)h(the)g(.unison)g(directory)-7 b(,)21 b(it)h(will)g(b)r(e)
10122 +g(used;)390 3360 y(otherwise)32 b(Unison)g(will)h(add)f
10123 +Fk(.prf)p Fn(,)g(as)g(it)h(did)f(b)r(efore.)51 b(\(This)33
10124 +b(c)n(hange)e(means)h(that)h(included)g(preference)390
10125 +3460 y(\014les)e(can)f(b)r(e)g(named)h Fk(blah.include)25
10126 +b Fn(instead)30 b(of)h Fk(blah.prf)p Fn(,)d(so)h(that)i(unison)f(will)h
10127 +(not)f(o\013er)g(them)h(in)g(its)390 3559 y('c)n(ho)r(ose)c(a)g
10128 +(preference)g(\014le')g(dialog.\))301 3691 y Fl({)41
10129 +b Fn(F)-7 b(or)34 b(Lin)n(ux)g(systems,)i(w)n(e)e(no)n(w)g(o\013er)g(b)
10130 +r(oth)h(a)f(statically)g(link)n(ed)h(and)f(a)g(dynamically)g(link)n(ed)
10131 +g(executable.)390 3790 y(The)d(static)g(one)g(is)g(larger,)f(but)h
10132 +(will)h(probably)e(run)g(on)h(more)f(systems,)i(since)f(it)g(do)r
10133 +(esn't)g(dep)r(end)h(on)f(the)390 3890 y(same)c(v)n(ersions)f(of)i
10134 +(dynamically)e(link)n(ed)i(library)e(mo)r(dules)i(b)r(eing)f(a)n(v)-5
10135 +b(ailable.)301 4021 y Fl({)41 b Fn(Fixed)34 b(the)f Fk(force)e
10136 +Fn(and)i Fk(prefer)e Fn(preferences,)j(whic)n(h)f(w)n(ere)f(getting)h
10137 +(the)h(propagation)d(direction)i(exactly)390 4121 y(bac)n(kw)n(ards.)
10138 +301 4253 y Fl({)41 b Fn(Fixed)i(a)e(bug)h(in)h(the)f(startup)g(co)r(de)
10139 +g(that)h(w)n(ould)f(cause)f(unison)h(to)g(crash)f(when)i(the)f(default)
10140 +h(pro\014le)390 4352 y(\()p Fk(~/.unison/default)o(.pr)o(f)p
10141 +Fn(\))22 b(do)r(es)27 b(not)h(exist.)301 4484 y Fl({)41
10142 +b Fn(Fixed)31 b(a)g(bug)g(where,)g(on)g(the)g(run)g(when)g(a)f
10143 +(pro\014le)h(is)f(\014rst)h(created,)g(Unison)g(w)n(ould)f(confusingly)
10144 +h(displa)n(y)390 4583 y(the)d(ro)r(ots)f(in)h(rev)n(erse)d(order)i(in)g
10145 +(the)h(user)f(in)n(terface.)125 4748 y Fj(\017)41 b Fn(F)-7
10146 +b(or)27 b(dev)n(elop)r(ers:)301 4913 y Fl({)41 b Fn(W)-7
10147 +b(e'v)n(e)24 b(added)g(a)f(mo)r(dule)i(dep)r(endency)f(diagram)f(to)h
10148 +(the)g(source)f(distribution,)i(in)f Fk(src/DEPENDENCIES)o(.p)o(s)p
10149 +Fn(,)390 5012 y(to)k(help)g(new)f(prosp)r(ectiv)n(e)g(dev)n(elop)r(ers)
10150 +f(with)i(na)n(vigating)e(the)i(co)r(de.)0 5177 y(Changes)f(since)g
10151 +(2.6.11:)125 5340 y Fj(\017)41 b Fl(Incompatible)30 b(c)m(hange:)74
10152 +b Fn(Arc)n(hiv)n(e)27 b(format)g(has)g(c)n(hanged.)1908
10153 +5589 y(46)p eop
10154 +%%Page: 47 47
10155 +47 46 bop 125 83 a Fj(\017)41 b Fl(Incompatible)29 b(c)m(hange:)74
10156 +b Fn(The)27 b(startup)f(sequence)h(has)f(b)r(een)i(completely)e
10157 +(rewritten)h(and)g(greatly)f(simpli\014ed.)208 183 y(The)i(main)g
10158 +(user-visible)g(c)n(hange)f(is)h(that)h(the)f Fk(defaultpath)c
10159 +Fn(preference)k(has)g(b)r(een)h(remo)n(v)n(ed.)37 b(Its)29
10160 +b(e\013ect)g(can)f(b)r(e)208 282 y(appro)n(ximated)c(b)n(y)j(using)f(m)
10161 +n(ultiple)h(pro\014les,)e(with)i Fk(include)d Fn(directiv)n(es)h(to)i
10162 +(incorp)r(orate)d(common)i(settings.)37 b(All)208 382
10163 +y(uses)27 b(of)g Fk(defaultpath)c Fn(in)28 b(existing)f(pro\014les)g
10164 +(should)g(b)r(e)h(c)n(hanged)f(to)h Fk(path)p Fn(.)208
10165 +515 y(Another)23 b(c)n(hange)g(in)h(startup)g(b)r(eha)n(vior)e(that)i
10166 +(will)g(a\013ect)g(some)g(users)e(is)i(that)g(it)h(is)e(no)h(longer)f
10167 +(p)r(ossible)g(to)h(sp)r(ecify)208 614 y(ro)r(ots)i Fi(b)l(oth)i
10168 +Fn(in)g(the)g(pro\014le)f Fi(and)h Fn(on)f(the)h(command)g(line.)208
10169 +747 y(Y)-7 b(ou)27 b(can)g(ac)n(hiev)n(e)g(a)g(similar)g(e\013ect,)h
10170 +(though,)f(b)n(y)h(breaking)e(y)n(our)g(pro\014le)h(in)n(to)g(t)n(w)n
10171 +(o:)295 1046 y Fk(default.prf)39 b(=)469 1146 y(root)j(=)h(blah)469
10172 +1245 y(root)f(=)h(foo)469 1345 y(include)e(common)295
10173 +1544 y(common.prf)e(=)469 1644 y(<everything)g(else>)208
10174 +1843 y Fn(No)n(w)27 b(do)295 2042 y Fk(unison)41 b(common)g(root1)g
10175 +(root2)208 2242 y Fn(when)27 b(y)n(ou)g(w)n(an)n(t)g(to)h(sp)r(ecify)f
10176 +(ro)r(ots)g(explicitly)-7 b(.)125 2408 y Fj(\017)41 b
10177 +Fn(The)18 b Fk(-prefer)e Fn(and)i Fk(-force)e Fn(options)i(ha)n(v)n(e)f
10178 +(b)r(een)i(extended)f(to)h(allo)n(w)e(users)g(to)i(sp)r(ecify)f(that)h
10179 +(\014les)f(with)h(more)f(recen)n(t)208 2507 y(mo)r(dtimes)37
10180 +b(should)g(b)r(e)h(propagated,)g(writing)f(either)h Fk(-prefer)i(newer)
10181 +c Fn(or)g Fk(-force)41 b(newer)p Fn(.)64 b(\(F)-7 b(or)37
10182 +b(symmetry)-7 b(,)208 2607 y(Unison)37 b(will)h(also)f(accept)g
10183 +Fk(-prefer)k(older)36 b Fn(or)g Fk(-force)42 b(older)p
10184 +Fn(.\))65 b(The)38 b Fk(-force)j(older/newer)33 b Fn(options)k(can)208
10185 +2707 y(only)27 b(b)r(e)h(used)f(when)h Fk(-times)d Fn(is)j(also)e(set.)
10186 +208 2839 y(The)e(graphical)f(user)g(in)n(terface)h(pro)n(vides)f
10187 +(access)g(to)h(these)g(facilities)g(on)g(a)g(one-o\013)g(basis)f(via)h
10188 +(the)g Fk(Actions)e Fn(men)n(u.)125 3005 y Fj(\017)41
10189 +b Fn(Names)30 b(of)g(ro)r(ots)f(can)h(no)n(w)g(b)r(e)g(\\aliased")f(to)
10190 +h(allo)n(w)f(replicas)g(to)i(b)r(e)f(relo)r(cated)g(without)g(c)n
10191 +(hanging)f(the)i(name)f(of)208 3105 y(the)h(arc)n(hiv)n(e)d(\014le)j
10192 +(where)f(Unison)h(stores)e(information)h(b)r(et)n(w)n(een)h(runs.)45
10193 +b(\(This)31 b(feature)g(is)f(for)g(exp)r(erts)g(only)-7
10194 +b(.)46 b(See)208 3205 y(the)28 b(\\Arc)n(hiv)n(e)e(Files")h(section)g
10195 +(of)h(the)g(man)n(ual)e(for)i(more)e(information.\))125
10196 +3371 y Fj(\017)41 b Fn(Graphical)26 b(user-in)n(terface:)301
10197 +3537 y Fl({)41 b Fn(A)28 b(new)g(command)g(is)f(pro)n(vided)g(in)h(the)
10198 +g(Sync)n(hronization)e(men)n(u)i(for)f(switc)n(hing)h(to)f(a)h(new)g
10199 +(pro\014le)f(without)390 3636 y(restarting)f(Unison)i(from)f(scratc)n
10200 +(h.)301 3769 y Fl({)41 b Fn(The)e(GUI)g(also)f(supp)r(orts)g(one-k)n
10201 +(ey)f(shortcuts)h(for)g(commonly)g(used)h(pro\014les.)69
10202 +b(If)39 b(a)f(pro\014le)g(con)n(tains)f(a)390 3869 y(preference)22
10203 +b(of)h(the)f(form)h(')p Fk(key)42 b(=)h(n)p Fn(',)24
10204 +b(where)e Fk(n)g Fn(is)g(a)h(single)f(digit,)h(then)g(pressing)f(this)h
10205 +(k)n(ey)f(will)g(cause)g(Unison)390 3968 y(to)k(immediately)h(switc)n
10206 +(h)f(to)g(this)g(pro\014le)g(and)g(b)r(egin)g(sync)n(hronization)e
10207 +(again)h(from)h(scratc)n(h.)35 b(\(An)n(y)27 b(actions)390
10208 +4068 y(that)h(ma)n(y)f(ha)n(v)n(e)f(b)r(een)i(selected)g(for)f(a)g(set)
10209 +h(of)f(c)n(hanges)f(curren)n(tly)h(b)r(eing)h(displa)n(y)n(ed)e(will)i
10210 +(b)r(e)g(discarded.\))301 4201 y Fl({)41 b Fn(Eac)n(h)34
10211 +b(pro\014le)h(ma)n(y)f(include)h(a)g(preference)f(')p
10212 +Fk(label)42 b(=)h(<string>)p Fn(')32 b(giving)i(a)h(descriptiv)n(e)f
10213 +(string)h(that)g(de-)390 4301 y(scrib)r(ed)27 b(the)g(options)f
10214 +(selected)g(in)h(this)g(pro\014le.)36 b(The)27 b(string)e(is)i(listed)g
10215 +(along)e(with)i(the)g(pro\014le)f(name)h(in)g(the)390
10216 +4400 y(pro\014le)g(selection)g(dialog,)g(and)g(displa)n(y)n(ed)g(in)h
10217 +(the)g(top-righ)n(t)e(corner)g(of)i(the)g(main)f(Unison)h(windo)n(w.)
10218 +125 4566 y Fj(\017)41 b Fn(Minor:)301 4732 y Fl({)g Fn(Fixed)27
10219 +b(a)e(bug)h(that)h(w)n(ould)e(sometimes)h(cause)g(the)g('di\013)6
10220 +b(')28 b(displa)n(y)d(to)h(order)f(the)h(\014les)g(bac)n(kw)n(ards)e
10221 +(relativ)n(e)h(to)390 4832 y(the)j(main)g(user)f(in)n(terface.)36
10222 +b(\(Thanks)27 b(to)h(P)n(ascal)d(Brisset)i(for)g(this)h(\014x.\))301
10223 +4965 y Fl({)41 b Fn(On)25 b(Unix)h(systems,)g(the)f(graphical)f(v)n
10224 +(ersion)g(of)h(Unison)h(will)f(c)n(hec)n(k)g(the)g Fk(DISPLAY)e
10225 +Fn(v)-5 b(ariable)24 b(and,)i(if)g(it)g(is)f(not)390
10226 +5064 y(set,)j(automatically)e(fall)i(bac)n(k)f(to)g(the)h(textual)g
10227 +(user)f(in)n(terface.)301 5197 y Fl({)41 b Fn(Sync)n(hronization)29
10228 +b(paths)g(\()p Fk(path)g Fn(preferences\))g(are)g(no)n(w)g(matc)n(hed)h
10229 +(against)e(the)j(ignore)d(preferences.)43 b(So)30 b(if)390
10230 +5297 y(a)d(path)h(is)g(b)r(oth)g(sp)r(eci\014ed)f(in)h(a)g
10231 +Fk(path)e Fn(preference)g(and)i(ignored,)e(it)i(will)g(b)r(e)g(skipp)r
10232 +(ed.)1908 5589 y(47)p eop
10233 +%%Page: 48 48
10234 +48 47 bop 301 83 a Fl({)41 b Fn(Numerous)27 b(other)g(bug\014xes)g(and)
10235 +h(small)f(impro)n(v)n(emen)n(ts.)0 243 y(Changes)g(since)g(2.6.1:)125
10236 +398 y Fj(\017)41 b Fn(The)27 b(sync)n(hronization)f(of)h(mo)r
10237 +(di\014cation)h(times)g(has)f(b)r(een)h(disabled)f(for)g(directories.)
10238 +125 558 y Fj(\017)41 b Fn(Preference)27 b(\014les)i(ma)n(y)f(no)n(w)g
10239 +(include)h(lines)g(of)g(the)g(form)f Fk(include)41 b(<name>)p
10240 +Fn(,)27 b(whic)n(h)h(will)h(cause)f Fk(name.prf)e Fn(to)j(b)r(e)208
10241 +658 y(read)d(at)i(that)g(p)r(oin)n(t.)125 818 y Fj(\017)41
10242 +b Fn(The)27 b(sync)n(hronization)f(of)h(p)r(ermission)g(b)r(et)n(w)n
10243 +(een)h(Windo)n(ws)f(and)h(Unix)g(no)n(w)f(w)n(orks)e(prop)r(erly)-7
10244 +b(.)125 978 y Fj(\017)41 b Fn(A)32 b(binding)h Fk(CYGWIN=binmode)27
10245 +b Fn(in)33 b(no)n(w)f(added)g(to)g(the)h(en)n(vironmen)n(t)f(so)g(that)
10246 +h(the)g(Cygwin)f(p)r(ort)g(of)g(Op)r(enSSH)208 1078 y(w)n(orks)25
10247 +b(prop)r(erly)i(in)h(a)f(non-Cygwin)g(con)n(text.)125
10248 +1238 y Fj(\017)41 b Fn(The)34 b Fk(servercmd)d Fn(and)j
10249 +Fk(addversionno)c Fn(preferences)j(can)h(no)n(w)g(b)r(e)h(used)f
10250 +(together:)50 b Fk(-addversionno)29 b Fn(app)r(ends)208
10251 +1338 y(an)34 b(appropriate)g Fk(-NNN)g Fn(to)h(the)g(serv)n(er)f
10252 +(command,)i(whic)n(h)f(is)h(found)f(b)n(y)g(using)g(the)g(v)-5
10253 +b(alue)35 b(of)h(the)f Fk(-servercmd)208 1438 y Fn(preference)26
10254 +b(if)i(there)g(is)f(one,)h(or)e(else)i(just)g Fk(unison)p
10255 +Fn(.)125 1598 y Fj(\017)41 b Fn(Both)26 b Fk('-pref=val')d
10256 +Fn(and)k Fk('-pref)41 b(val')25 b Fn(are)h(no)n(w)g(allo)n(w)n(ed)g
10257 +(for)g(b)r(o)r(olean)h(v)-5 b(alues.)36 b(\(The)27 b(former)f(can)h(b)r
10258 +(e)g(used)g(to)208 1697 y(set)g(a)g(preference)g(to)h(false.\))125
10259 +1858 y Fj(\017)41 b Fn(Lot)27 b(of)g(small)h(bugs)f(\014xed.)0
10260 +2012 y(Changes)g(since)g(2.5.31:)125 2167 y Fj(\017)41
10261 +b Fn(The)27 b Fk(log)g Fn(preference)f(is)i(no)n(w)f(set)h(to)f
10262 +Fk(true)f Fn(b)n(y)h(default,)h(since)g(the)g(log)f(\014le)g(seems)g
10263 +(useful)h(for)g(most)f(users.)125 2327 y Fj(\017)41 b
10264 +Fn(Sev)n(eral)26 b(miscellaneous)g(bug\014xes)h(\(most)h(in)n(v)n
10265 +(olving)e(symlinks\).)0 2482 y(Changes)h(since)g(2.5.25:)125
10266 +2636 y Fj(\017)41 b Fl(Incompatible)30 b(c)m(hange:)74
10267 +b Fn(Arc)n(hiv)n(e)27 b(format)g(has)g(c)n(hanged)f(\(again\).)125
10268 +2796 y Fj(\017)41 b Fn(Sev)n(eral)26 b(signi\014can)n(t)h(bugs)g(in)n
10269 +(tro)r(duced)g(in)h(2.5.25)e(ha)n(v)n(e)g(b)r(een)i(\014xed.)0
10270 +2951 y(Changes)f(since)g(2.5.1:)125 3105 y Fj(\017)41
10271 +b Fl(Incompatible)24 b(c)m(hange:)69 b Fn(Arc)n(hiv)n(e)21
10272 +b(format)h(has)f(c)n(hanged.)35 b(Mak)n(e)21 b(sure)h(y)n(ou)f(sync)n
10273 +(hronize)g(y)n(our)g(replicas)g(b)r(efore)208 3205 y(upgrading,)26
10274 +b(to)h(a)n(v)n(oid)f(spurious)h(con\015icts.)37 b(The)27
10275 +b(\014rst)h(sync)f(after)g(upgrading)f(will)i(b)r(e)g(slo)n(w.)125
10276 +3365 y Fj(\017)41 b Fn(New)27 b(functionalit)n(y:)301
10277 +3526 y Fl({)41 b Fn(Unison)28 b(no)n(w)f(sync)n(hronizes)f(\014le)h(mo)
10278 +r(dtimes,)h(user-ids,)f(and)g(group-ids.)390 3639 y(These)e(new)g
10279 +(features)g(are)f(con)n(trolled)g(b)n(y)g(a)h(set)g(of)g(new)g
10280 +(preferences,)g(all)g(of)g(whic)n(h)g(are)f(curren)n(tly)g
10281 +Fk(false)f Fn(b)n(y)390 3739 y(default.)462 3871 y Fj(\003)41
10282 +b Fn(When)35 b(the)g Fk(times)e Fn(preference)g(is)h(set)h(to)f
10283 +Fk(true)p Fn(,)h(\014le)f(mo)r(di\014cation)g(times)h(are)e(propaged.)
10284 +56 b(\(Because)545 3971 y(the)28 b(represen)n(tations)c(of)j(time)g(ma)
10285 +n(y)f(not)h(ha)n(v)n(e)f(the)h(same)f(gran)n(ularit)n(y)f(on)h(b)r(oth)
10286 +h(replicas,)f(Unison)h(ma)n(y)545 4070 y(not)f(alw)n(a)n(ys)e(b)r(e)i
10287 +(able)g(to)g(mak)n(e)f(the)h(mo)r(dtimes)g(precisely)f(equal,)h(but)g
10288 +(it)g(will)g(get)g(them)g(as)g(close)f(as)g(the)545 4170
10289 +y(op)r(erating)i(systems)g(in)n(v)n(olv)n(ed)f(allo)n(w.\))462
10290 +4283 y Fj(\003)41 b Fn(When)29 b(the)f Fk(owner)d Fn(preference)i(is)g
10291 +(set)h(to)g Fk(true)p Fn(,)e(\014le)h(o)n(wnership)g(information)g(is)g
10292 +(sync)n(hronized.)462 4397 y Fj(\003)41 b Fn(When)29
10293 +b(the)f Fk(group)d Fn(preference)i(is)g(set)h(to)g Fk(true)p
10294 +Fn(,)e(group)g(information)h(is)h(sync)n(hronized.)462
10295 +4510 y Fj(\003)41 b Fn(When)23 b(the)g Fk(numericIds)18
10296 +b Fn(preference)k(is)g(set)g(to)g Fk(true)p Fn(,)g(o)n(wner)f(and)h
10297 +(group)g(information)f(is)h(sync)n(hronized)545 4610
10298 +y(n)n(umerically)-7 b(.)49 b(By)31 b(default,)i(o)n(wner)e(and)g(group)
10299 +g(n)n(um)n(b)r(ers)g(are)g(con)n(v)n(erted)f(to)h(names)h(on)f(eac)n(h)
10300 +g(replica)545 4709 y(and)f(these)f(names)g(are)g(sync)n(hronized.)41
10301 +b(\(The)30 b(sp)r(ecial)f(user)g(id)h(0)f(and)g(the)h(sp)r(ecial)f
10302 +(group)f(0)i(are)e(nev)n(er)545 4809 y(mapp)r(ed)g(via)f(user/group)f
10303 +(names)h(ev)n(en)g(if)h(this)g(preference)f(is)g(not)h(set.\))301
10304 +4941 y Fl({)41 b Fn(Added)35 b(an)f(in)n(teger-v)-5 b(alued)33
10305 +b(preference)h Fk(perms)e Fn(that)i(can)g(b)r(e)h(used)f(to)g(con)n
10306 +(trol)f(the)i(propagation)d(of)i(p)r(er-)390 5041 y(mission)d(bits.)49
10307 +b(The)32 b(v)-5 b(alue)31 b(of)g(this)h(preference)f(is)g(a)g(mask)g
10308 +(indicating)g(whic)n(h)h(p)r(ermission)f(bits)g(should)h(b)r(e)390
10309 +5141 y(sync)n(hronized.)k(It)27 b(is)h(set)f(b)n(y)g(default)h(to)f(0)p
10310 +Fa(o)p Fn(1777:)35 b(all)27 b(bits)h(but)g(the)f(set-uid)h(and)f
10311 +(set-gid)g(bits)h(are)e(sync)n(hro-)390 5240 y(nised)31
10312 +b(\(sync)n(hronizing)e(theses)h(latter)g(bits)h(can)f(b)r(e)h(a)f
10313 +(securit)n(y)f(hazard\).)45 b(If)31 b(y)n(ou)e(w)n(an)n(t)h(to)g(sync)n
10314 +(hronize)f(all)390 5340 y(bits,)f(y)n(ou)f(can)g(set)h(the)g(v)-5
10315 +b(alue)27 b(of)h(this)g(preference)f(to)g Fj(\000)p Fn(1.)1908
10316 +5589 y(48)p eop
10317 +%%Page: 49 49
10318 +49 48 bop 301 83 a Fl({)41 b Fn(Added)f(a)g Fk(log)e
10319 +Fn(preference)h(\(default)h Fk(false)p Fn(\),)h(whic)n(h)e(mak)n(es)g
10320 +(Unison)g(k)n(eep)g(a)h(complete)f(record)f(of)i(the)390
10321 +183 y(c)n(hanges)26 b(it)i(mak)n(es)f(to)g(the)h(replicas.)35
10322 +b(By)28 b(default,)g(this)f(record)f(is)i(written)f(to)h(a)f(\014le)g
10323 +(called)g Fk(unison.log)d Fn(in)390 282 y(the)j(user's)f(home)h
10324 +(directory)e(\(the)i(v)-5 b(alue)27 b(of)f(the)h Fk(HOME)f
10325 +Fn(en)n(vironmen)n(t)f(v)-5 b(ariable\).)36 b(If)27 b(y)n(ou)f(w)n(an)n
10326 +(t)g(it)h(someplace)390 382 y(else,)h(set)f(the)h Fk(logfile)d
10327 +Fn(preference)i(to)g(the)h(full)g(pathname)g(y)n(ou)f(w)n(an)n(t)g
10328 +(Unison)g(to)h(use.)301 508 y Fl({)41 b Fn(Added)28 b(an)g
10329 +Fk(ignorenot)c Fn(preference)j(that)h(main)n(tains)f(a)g(set)h(of)f
10330 +(patterns)h(for)f(paths)g(that)h(should)g(de\014nitely)390
10331 +607 y Fi(not)36 b Fn(b)r(e)h(ignored,)h(whether)e(or)f(not)i(they)f
10332 +(matc)n(h)h(an)f Fk(ignore)e Fn(pattern.)63 b(\(That)36
10333 +b(is,)j(a)d(path)g(will)h(no)n(w)f(b)r(e)390 707 y(ignored)27
10334 +b(i\013)h(it)g(matc)n(hes)f(an)g(ignore)f(pattern)i(and)f(do)r(es)h
10335 +(not)f(matc)n(h)h(an)n(y)e(ignorenot)h(patterns.\))125
10336 +866 y Fj(\017)41 b Fn(User-in)n(terface)26 b(impro)n(v)n(emen)n(ts:)301
10337 +1024 y Fl({)41 b Fn(Ro)r(ots)20 b(are)g(no)n(w)g(displa)n(y)n(ed)f(in)i
10338 +(the)g(user)f(in)n(terface)g(in)g(the)h(same)f(order)f(as)h(they)h(w)n
10339 +(ere)f(giv)n(en)f(on)i(the)f(command)390 1124 y(line)28
10340 +b(or)f(in)h(the)g(preferences)e(\014le.)301 1250 y Fl({)41
10341 +b Fn(When)21 b(the)g Fk(batch)d Fn(preference)i(is)g(set,)i(the)f
10342 +(graphical)d(user)i(in)n(terface)g(no)g(longer)f(w)n(aits)h(for)f(user)
10343 +h(con\014rmation)390 1349 y(when)k(it)g(displa)n(ys)e(a)h(w)n(arning)f
10344 +(message:)34 b(it)24 b(simply)f(p)r(ops)g(up)h(an)f(advisory)f(windo)n
10345 +(w)h(with)h(a)f(Dismiss)h(button)390 1449 y(at)k(the)g(b)r(ottom)g(and)
10346 +f(k)n(eeps)g(on)g(going.)301 1574 y Fl({)41 b Fn(Added)e(a)e(new)h
10347 +(preference)f(for)g(con)n(trolling)f(ho)n(w)h(man)n(y)g(status)h
10348 +(messages)e(are)h(prin)n(ted)g(during)h(up)r(date)390
10349 +1674 y(detection:)60 b Fk(statusdepth)34 b Fn(con)n(trols)j(the)j
10350 +(maxim)n(um)e(depth)i(for)e(paths)h(on)f(the)h(lo)r(cal)g(mac)n(hine)f
10351 +(\(longer)390 1774 y(paths)28 b(are)f(not)i(displa)n(y)n(ed,)e(nor)g
10352 +(are)g(non-directory)g(paths\).)38 b(The)29 b(v)-5 b(alue)28
10353 +b(should)g(b)r(e)g(an)g(in)n(teger;)g(default)g(is)390
10354 +1873 y(1.)301 1999 y Fl({)41 b Fn(Remo)n(v)n(ed)28 b(the)h
10355 +Fk(trace)d Fn(and)j Fk(silent)d Fn(preferences.)39 b(They)28
10356 +b(did)h(not)g(seem)f(v)n(ery)g(useful,)h(and)f(there)h(w)n(ere)e(to)r
10357 +(o)390 2099 y(man)n(y)g(preferences)g(for)g(con)n(trolling)f(output)i
10358 +(in)g(v)-5 b(arious)26 b(w)n(a)n(ys.)301 2224 y Fl({)41
10359 +b Fn(The)33 b(text)g(UI)h(no)n(w)e(displa)n(ys)g(just)h(the)h(default)f
10360 +(command)g(\(the)g(one)g(that)g(will)g(b)r(e)h(used)e(if)i(the)f(user)f
10361 +(just)390 2324 y(t)n(yp)r(es)22 b Fk(<return>)p Fn(\))d(instead)j(of)f
10362 +(all)h(a)n(v)-5 b(ailable)21 b(commands.)34 b(T)n(yping)21
10363 +b Fk(?)h Fn(will)g(prin)n(t)f(the)i(full)f(list)g(of)g(p)r
10364 +(ossibilities.)301 2449 y Fl({)41 b Fn(The)30 b(function)g(that)f
10365 +(\014nds)h(the)g(canonical)e(hostname)h(of)g(the)h(lo)r(cal)f(host)g
10366 +(\(whic)n(h)g(is)h(used,)f(for)g(example,)h(in)390 2549
10367 +y(calculating)k(the)h(name)g(of)g(the)g(arc)n(hiv)n(e)e(\014le)i(used)g
10368 +(to)g(remem)n(b)r(er)f(whic)n(h)h(\014les)f(ha)n(v)n(e)g(b)r(een)h
10369 +(sync)n(hronized\))390 2649 y(normally)k(uses)h(the)g
10370 +Fk(gethostname)c Fn(op)r(erating)j(system)h(call.)74
10371 +b(Ho)n(w)n(ev)n(er,)41 b(if)g(the)f(en)n(vironmen)n(t)f(v)-5
10372 +b(ariable)390 2748 y Fk(UNISONLOCALHOSTNA)o(ME)31 b Fn(is)37
10373 +b(set,)i(its)f(v)-5 b(alue)37 b(will)g(no)n(w)g(b)r(e)h(used)f
10374 +(instead.)65 b(This)37 b(mak)n(es)g(it)g(easier)f(to)h(use)390
10375 +2848 y(Unison)28 b(in)g(situations)f(where)g(a)g(mac)n(hine's)g(name)h
10376 +(c)n(hanges)e(frequen)n(tly)h(\(e.g.,)h(b)r(ecause)f(it)h(is)g(a)f
10377 +(laptop)g(and)390 2948 y(gets)g(mo)n(v)n(ed)g(around)g(a)g(lot\).)301
10378 +3073 y Fl({)41 b Fn(File)24 b(o)n(wner)f(and)h(group)f(are)g(no)n(w)g
10379 +(displa)n(y)n(ed)g(in)h(the)h(\\detail)e(windo)n(w")g(at)h(the)g(b)r
10380 +(ottom)h(of)f(the)g(screen,)g(when)390 3173 y(unison)k(is)f
10381 +(con\014gured)g(to)g(sync)n(hronize)f(them.)125 3332
10382 +y Fj(\017)41 b Fn(F)-7 b(or)27 b(hac)n(k)n(ers:)301 3490
10383 +y Fl({)41 b Fn(Up)r(dated)23 b(to)g(Jacques)e(Garrigue's)g(new)h(v)n
10384 +(ersion)f(of)i Fk(lablgtk)p Fn(,)e(whic)n(h)h(means)g(w)n(e)h(can)f
10385 +(thro)n(w)f(a)n(w)n(a)n(y)g(our)h(lo)r(cal)390 3590 y(patc)n(hed)28
10386 +b(v)n(ersion.)390 3703 y(If)j(y)n(ou're)e(compiling)h(the)g(GTK)g(v)n
10387 +(ersion)f(of)h(unison)g(from)g(sources,)f(y)n(ou'll)h(need)g(to)g(up)r
10388 +(date)h(y)n(our)e(cop)n(y)g(of)390 3802 y(lablgtk)18
10389 +b(to)g(the)h(dev)n(elop)r(ers)e(release,)i(a)n(v)-5 b(ailable)17
10390 +b(from)h Fk(http://wwwfun.ku)o(rim)o(s.)o(kyo)o(to)o(-u)o(.ac)o(.j)o
10391 +(p/s)o(of)o(t/o)o(la)o(bl)o(/la)o(bl)o(gtk)o(.h)o(tm)o(l)390
10392 +3915 y Fn(\(W)-7 b(arning:)37 b(installing)27 b(lablgtk)g(under)g
10393 +(Windo)n(ws)h(is)f(curren)n(tly)g(a)g(bit)h(c)n(hallenging.\))301
10394 +4041 y Fl({)41 b Fn(The)28 b(TODO.txt)h(\014le)f(\(in)h(the)f(source)f
10395 +(distribution\))i(has)e(b)r(een)i(cleaned)f(up)g(and)g(reorganized.)36
10396 +b(The)29 b(list)f(of)390 4140 y(p)r(ending)33 b(tasks)f(should)g(b)r(e)
10397 +h(m)n(uc)n(h)g(easier)e(to)i(mak)n(e)e(sense)i(of,)g(for)g(p)r(eople)f
10398 +(that)h(ma)n(y)f(w)n(an)n(t)g(to)g(con)n(tribute)390
10399 +4240 y(their)c(programming)d(energies.)36 b(There)27
10400 +b(is)g(also)g(a)g(separate)f(\014le)i(BUGS.txt)g(for)g(op)r(en)f(bugs.)
10401 +301 4365 y Fl({)41 b Fn(The)28 b(Tk)f(user)g(in)n(terface)g(has)g(b)r
10402 +(een)h(remo)n(v)n(ed)e(\(it)j(w)n(as)d(not)i(b)r(eing)f(main)n(tained)h
10403 +(and)f(no)g(longer)g(compiles\).)301 4491 y Fl({)41 b
10404 +Fn(The)31 b Fk(debug)e Fn(preference)h(no)n(w)g(prin)n(ts)h(quite)g(a)f
10405 +(bit)i(of)f(additional)f(information)g(that)h(should)g(b)r(e)g(useful)h
10406 +(for)390 4591 y(iden)n(tifying)c(sources)e(of)i(problems.)301
10407 +4716 y Fl({)41 b Fn(The)29 b(v)n(ersion)e(n)n(um)n(b)r(er)h(of)h(the)g
10408 +(remote)f(serv)n(er)e(is)j(no)n(w)f(c)n(hec)n(k)n(ed)f(righ)n(t)h(a)n
10409 +(w)n(a)n(y)f(during)h(the)h(connection)f(setup)390 4816
10410 +y(handshak)n(e,)h(rather)f(than)h(later.)41 b(\(Someb)r(o)r(dy)29
10411 +b(sen)n(t)g(a)g(bug)g(rep)r(ort)f(of)h(a)g(serv)n(er)e(crash)h(that)i
10412 +(turned)f(out)g(to)390 4916 y(come)g(from)f(using)g(inconsisten)n(t)h
10413 +(v)n(ersions:)37 b(b)r(etter)30 b(to)e(c)n(hec)n(k)g(this)h(earlier)f
10414 +(and)g(in)h(a)g(w)n(a)n(y)e(that)i(can't)g(crash)390
10415 +5015 y(either)f(clien)n(t)f(or)g(serv)n(er.\))301 5141
10416 +y Fl({)41 b Fn(Unison)26 b(no)n(w)g(runs)g(correctly)e(on)i(64-bit)g
10417 +(arc)n(hitectures)f(\(e.g.)36 b(Alpha)26 b(lin)n(ux\).)37
10418 +b(W)-7 b(e)27 b(will)f(not)g(b)r(e)h(distributing)390
10419 +5240 y(binaries)g(for)g(these)g(arc)n(hitectures)f(ourselv)n(es)g(\(at)
10420 +h(least)g(for)g(a)g(while\))h(but)g(if)g(someone)f(w)n(ould)g(lik)n(e)g
10421 +(to)g(mak)n(e)390 5340 y(them)h(a)n(v)-5 b(ailable,)27
10422 +b(w)n(e'll)g(b)r(e)h(glad)f(to)h(pro)n(vide)e(a)h(link)h(to)f(them.)
10423 +1908 5589 y(49)p eop
10424 +%%Page: 50 50
10425 +50 49 bop 125 83 a Fj(\017)41 b Fn(Bug)27 b(\014xes:)301
10426 +247 y Fl({)41 b Fn(P)n(attern)20 b(matc)n(hing)g(\(e.g.)35
10427 +b(for)20 b Fk(ignore)p Fn(\))f(is)i(no)n(w)f(case-insensitiv)n(e)f
10428 +(when)i(Unison)g(is)g(in)g(case-insensitiv)n(e)e(mo)r(de)390
10429 +346 y(\(i.e.,)28 b(when)g(one)f(of)h(the)g(replicas)e(is)i(on)f(a)g
10430 +(windo)n(ws)g(mac)n(hine\).)301 477 y Fl({)41 b Fn(Some)21
10431 +b(p)r(eople)f(had)h(trouble)f(with)h(m)n(ysterious)e(failures)h(during)
10432 +h(propagation)d(of)j(up)r(dates,)h(where)e(\014les)h(w)n(ould)390
10433 +576 y(b)r(e)28 b(falsely)f(rep)r(orted)g(as)g(ha)n(ving)g(c)n(hanged)f
10434 +(during)h(sync)n(hronization.)35 b(This)28 b(should)f(b)r(e)h(\014xed.)
10435 +301 707 y Fl({)41 b Fn(Numerous)27 b(smaller)g(\014xes.)0
10436 +871 y(Changes)g(since)g(2.4.1:)125 1032 y Fj(\017)41
10437 +b Fn(Added)24 b(a)g(n)n(um)n(b)r(er)g(of)g('sorting)f(mo)r(des')h(for)g
10438 +(the)h(user)e(in)n(terface.)35 b(By)24 b(default,)h(con\015icting)f(c)n
10439 +(hanges)f(are)g(displa)n(y)n(ed)208 1132 y(at)28 b(the)h(top,)f(and)h
10440 +(the)g(rest)f(of)g(the)h(en)n(tries)f(are)f(sorted)h(in)g(alphab)r
10441 +(etical)h(order.)38 b(This)28 b(b)r(eha)n(vior)f(can)h(b)r(e)h(c)n
10442 +(hanged)208 1231 y(in)e(the)h(follo)n(wing)f(w)n(a)n(ys:)301
10443 +1395 y Fl({)41 b Fn(Setting)35 b(the)f Fk(sortnewfirst)29
10444 +b Fn(preference)k(to)h Fk(true)f Fn(causes)g(newly)h(created)f(\014les)
10445 +h(to)g(b)r(e)g(displa)n(y)n(ed)f(b)r(efore)390 1495 y(c)n(hanged)27
10446 +b(\014les.)301 1625 y Fl({)41 b Fn(Setting)28 b Fk(sortbysize)c
10447 +Fn(causes)i(\014les)i(to)f(b)r(e)h(displa)n(y)n(ed)f(in)h(increasing)e
10448 +(order)g(of)i(size.)301 1756 y Fl({)41 b Fn(Giving)27
10449 +b(the)h(preference)f Fk(sortfirst=<patte)o(rn>)21 b Fn(\(where)27
10450 +b Fk(<pattern>)d Fn(is)j(a)g(path)h(descriptor)e(in)i(the)g(same)390
10451 +1855 y(format)f(as)g('ignore')g(and)g('follo)n(w')g(patterns,)g(causes)
10452 +g(paths)g(matc)n(hing)g(this)h(pattern)f(to)h(b)r(e)g(displa)n(y)n(ed)e
10453 +(\014rst.)301 1986 y Fl({)41 b Fn(Similarly)-7 b(,)34
10454 +b(giving)d(the)j(preference)d Fk(sortlast=<pattern)o(>)c
10455 +Fn(causes)k(paths)i(matc)n(hing)f(this)h(pattern)f(to)h(b)r(e)390
10456 +2085 y(displa)n(y)n(ed)27 b(last.)208 2249 y(The)38 b(sorting)g
10457 +(preferences)g(are)g(describ)r(ed)g(in)h(more)f(detail)h(in)g(the)g
10458 +(user)g(man)n(ual.)69 b(The)39 b Fk(sortnewfirst)34 b
10459 +Fn(and)208 2349 y Fk(sortbysize)23 b Fn(\015ags)k(can)g(also)f(b)r(e)i
10460 +(accessed)f(from)g(the)h('Sort')f(men)n(u)h(in)g(the)g(grpahical)e
10461 +(user)h(in)n(terface.)125 2512 y Fj(\017)41 b Fn(Added)24
10462 +b(t)n(w)n(o)f(new)h(preferences)f(that)i(can)e(b)r(e)i(used)f(to)f(c)n
10463 +(hange)g(unison's)h(fundamen)n(tal)g(b)r(eha)n(vior)e(to)i(mak)n(e)f
10464 +(it)i(more)208 2612 y(lik)n(e)i(a)g(mirroring)f(to)r(ol)h(instead)g(of)
10465 +h(a)f(sync)n(hronizer.)301 2776 y Fl({)41 b Fn(Giving)20
10466 +b(the)h(preference)e Fk(prefer)f Fn(with)i(argumen)n(t)f
10467 +Fk(<root>)f Fn(\(b)n(y)i(adding)g Fk(-prefer)40 b(<root>)18
10468 +b Fn(to)i(the)g(command)390 2875 y(line)29 b(or)e Fk(prefer=<root>)p
10469 +Fn(\))c(to)28 b(y)n(our)f(pro\014le\))h(means)f(that,)i(if)f(there)g
10470 +(is)g(a)g(con\015ict,)g(the)h(con)n(ten)n(ts)e(of)h Fk(<root>)390
10471 +2975 y Fn(should)e(b)r(e)h(propagated)d(to)i(the)h(other)e(replica)h
10472 +(\(with)h(no)f(questions)f(ask)n(ed\).)36 b(Non-con\015icting)25
10473 +b(c)n(hanges)g(are)390 3074 y(treated)i(as)g(usual.)301
10474 +3205 y Fl({)41 b Fn(Giving)36 b(the)g(preference)f Fk(force)f
10475 +Fn(with)i(argumen)n(t)f Fk(<root>)e Fn(will)j(mak)n(e)f(unison)g
10476 +(resolv)n(e)f Fi(al)t(l)j Fn(di\013erences)f(in)390 3305
10477 +y(fa)n(v)n(or)26 b(of)i(the)g(giv)n(en)e(ro)r(ot,)h(ev)n(en)g(if)h(it)g
10478 +(w)n(as)f(the)h(other)f(replica)g(that)h(w)n(as)e(c)n(hanged.)208
10479 +3468 y(These)h(options)g(should)g(b)r(e)h(used)g(with)g(care!)36
10480 +b(\(More)27 b(information)g(is)g(a)n(v)-5 b(ailable)26
10481 +b(in)i(the)g(man)n(ual.\))125 3632 y Fj(\017)41 b Fn(Small)27
10482 +b(c)n(hanges:)301 3796 y Fl({)41 b Fn(Changed)31 b(default)h(answ)n(er)
10483 +d(to)j('Y)-7 b(es')31 b(in)h(all)f(t)n(w)n(o-button)f(dialogs)g(in)i
10484 +(the)f(graphical)f(in)n(terface)h(\(this)h(seems)390
10485 +3895 y(more)27 b(in)n(tuitiv)n(e\).)301 4026 y Fl({)41
10486 +b Fn(The)19 b Fk(rsync)d Fn(preference)i(has)g(b)r(een)h(remo)n(v)n(ed)
10487 +e(\(it)i(w)n(as)f(used)g(to)h(activ)-5 b(ate)18 b(rsync)g(compression)f
10488 +(for)h(\014le)g(transfers,)390 4125 y(but)28 b(rsync)f(compression)f
10489 +(is)i(no)n(w)f(enabled)g(b)n(y)g(default\).)301 4256
10490 +y Fl({)41 b Fn(In)25 b(the)g(text)g(user)f(in)n(terface,)h(the)g(arro)n
10491 +(ws)d(indicating)j(whic)n(h)f(direction)g(c)n(hanges)g(are)f(b)r(eing)i
10492 +(propagated)e(are)390 4355 y(prin)n(ted)h(di\013eren)n(tly)f(when)h
10493 +(the)g(user)f(has)g(o)n(v)n(erridded)f(Unison's)h(default)h
10494 +(recommendation)e(\()p Fk(====>)g Fn(instead)390 4455
10495 +y(of)28 b Fk(---->)p Fn(\).)37 b(This)29 b(matc)n(hes)e(the)i(b)r(eha)n
10496 +(vior)e(of)h(the)h(graphical)d(in)n(terface,)i(whic)n(h)g(displa)n(ys)f
10497 +(suc)n(h)h(arro)n(ws)e(in)i(a)390 4555 y(di\013eren)n(t)g(color.)301
10498 +4685 y Fl({)41 b Fn(Carriage)25 b(returns)i(\(Con)n(trol-M's\))f(are)g
10499 +(ignored)g(at)h(the)h(ends)f(of)g(lines)g(in)h(pro\014les,)e(for)h
10500 +(Windo)n(ws)g(compati-)390 4785 y(bilit)n(y)-7 b(.)301
10501 +4915 y Fl({)41 b Fn(All)28 b(preferences)f(are)f(no)n(w)h(fully)i(do)r
10502 +(cumen)n(ted)e(in)h(the)g(user)f(man)n(ual.)0 5079 y(Changes)g(since)g
10503 +(2.3.12:)125 5240 y Fj(\017)41 b Fl(Incompatible)24 b(c)m(hange:)69
10504 +b Fn(Arc)n(hiv)n(e)21 b(format)h(has)f(c)n(hanged.)35
10505 +b(Mak)n(e)21 b(sure)h(y)n(ou)f(sync)n(hronize)g(y)n(our)g(replicas)g(b)
10506 +r(efore)208 5340 y(upgrading,)26 b(to)h(a)n(v)n(oid)f(spurious)h
10507 +(con\015icts.)37 b(The)27 b(\014rst)h(sync)f(after)g(upgrading)f(will)i
10508 +(b)r(e)g(slo)n(w.)1908 5589 y(50)p eop
10509 +%%Page: 51 51
10510 +51 50 bop 125 83 a Fj(\017)41 b Fn(New/impro)n(v)n(ed)25
10511 +b(functionalit)n(y:)301 249 y Fl({)41 b Fn(A)27 b(new)g(preference)f
10512 +(-sortb)n(ysize)e(con)n(trols)h(the)i(order)f(in)h(whic)n(h)f(c)n
10513 +(hanges)f(are)h(displa)n(y)n(ed)g(to)g(the)h(user:)36
10514 +b(when)390 349 y(it)28 b(is)g(set)f(to)h(true,)f(the)h(smallest)g(c)n
10515 +(hanged)e(\014les)i(are)e(displa)n(y)n(ed)h(\014rst.)36
10516 +b(\(The)28 b(default)g(setting)g(is)f(false.\))301 482
10517 +y Fl({)41 b Fn(A)28 b(new)f(preference)g(-sortnew\014rst)f(causes)g
10518 +(newly)i(created)e(\014les)i(to)f(b)r(e)h(listed)f(b)r(efore)h(other)e
10519 +(up)r(dates)i(in)g(the)390 581 y(user)f(in)n(terface.)301
10520 +714 y Fl({)41 b Fn(W)-7 b(e)28 b(no)n(w)f(allo)n(w)g(the)h(ssh)f(proto)
10521 +r(col)f(to)i(sp)r(ecify)g(a)f(p)r(ort.)301 847 y Fl({)41
10522 +b Fn(Incompatible)32 b(c)n(hange:)45 b(The)32 b(unison:)45
10523 +b(proto)r(col)31 b(is)h(deprecated,)h(and)e(w)n(e)h(added)g(\014le:)46
10524 +b(and)32 b(so)r(c)n(k)n(et:.)49 b(Y)-7 b(ou)390 946 y(ma)n(y)35
10525 +b(ha)n(v)n(e)f(to)i(mo)r(dify)g(y)n(our)e(pro\014les)g(in)i(the)g
10526 +(.unison)f(directory)-7 b(.)60 b(If)36 b(a)f(replica)f(is)i(sp)r
10527 +(eci\014ed)f(without)h(an)390 1046 y(explicit)c(proto)r(col,)f(w)n(e)f
10528 +(no)n(w)h(assume)f(it)i(refers)e(to)h(a)g(\014le.)48
10529 +b(\(Previously)29 b("//saul/fo)r(o")f(mean)n(t)j(to)g(use)g(SSH)390
10530 +1146 y(to)h(connect)f(to)h(saul,)g(then)g(access)e(the)i(fo)r(o)g
10531 +(directory)-7 b(.)47 b(No)n(w)31 b(it)i(means)e(to)g(access)g(saul)g
10532 +(via)g(a)g(remote)g(\014le)390 1245 y(mec)n(hanism)c(suc)n(h)h(as)e
10533 +(sam)n(ba;)h(the)h(old)f(e\013ect)h(is)g(no)n(w)f(ac)n(hiev)n(ed)f(b)n
10534 +(y)i(writing)f Fk(ssh://saul/foo)p Fn(.\))301 1378 y
10535 +Fl({)41 b Fn(Changed)32 b(the)h(startup)f(sequence)g(for)f(the)i(case)f
10536 +(where)g(ro)r(ots)f(are)g(giv)n(en)h(but)h(no)f(pro\014le)g(is)g(giv)n
10537 +(en)g(on)g(the)390 1478 y(command)h(line.)54 b(The)33
10538 +b(new)g(b)r(eha)n(vior)f(is)h(to)g(use)g(the)h(default)f(pro\014le)g
10539 +(\(creating)f(it)i(if)f(it)h(do)r(es)f(not)g(exist\),)390
10540 +1577 y(and)27 b(temp)r(orarily)f(o)n(v)n(erride)f(its)i(ro)r(ots.)36
10541 +b(The)27 b(man)n(ual)f(claimed)h(that)g(this)g(case)g(w)n(ould)f(w)n
10542 +(ork)g(b)n(y)h(reading)e(no)390 1677 y(pro\014le)i(at)h(all,)f(but)h
10543 +(AF)-9 b(AIK)28 b(this)g(w)n(as)e(nev)n(er)h(true.)301
10544 +1810 y Fl({)41 b Fn(In)28 b(all)f(user)g(in)n(terfaces,)g(\014les)g
10545 +(with)i(con\015icts)e(are)g(alw)n(a)n(ys)e(listed)j(\014rst)301
10546 +1943 y Fl({)41 b Fn(A)21 b(new)g(preference)f('ssh)n(v)n(ersion')f(can)
10547 +h(b)r(e)h(used)g(to)g(con)n(trol)e(whic)n(h)i(v)n(ersion)e(of)i(ssh)f
10548 +(should)h(b)r(e)g(used)g(to)f(connect)390 2042 y(to)29
10549 +b(the)g(serv)n(er.)38 b(Legal)28 b(v)-5 b(alues)28 b(are)g(1)h(and)f
10550 +(2.)40 b(\(Default)30 b(is)e(empt)n(y)-7 b(,)30 b(whic)n(h)e(will)h
10551 +(mak)n(e)f(unison)h(use)f(whatev)n(er)390 2142 y(v)n(ersion)e(of)i(ssh)
10552 +f(is)h(installed)f(as)g(the)h(default)g('ssh')g(command.\))301
10553 +2275 y Fl({)41 b Fn(The)30 b(situation)f(when)h(the)g(p)r(ermissions)e
10554 +(of)i(a)f(\014le)h(w)n(as)e(up)r(dated)i(the)g(same)f(on)g(b)r(oth)h
10555 +(side)g(is)f(no)n(w)g(handled)390 2374 y(correctly)d(\(w)n(e)i(used)f
10556 +(to)h(rep)r(ort)f(a)g(spurious)f(con\015ict\))125 2540
10557 +y Fj(\017)41 b Fn(Impro)n(v)n(emen)n(ts)26 b(for)h(the)h(Windo)n(ws)f
10558 +(v)n(ersion:)301 2707 y Fl({)41 b Fn(The)e(fact)g(that)g(\014lenames)g
10559 +(are)e(treated)i(case-insensitiv)n(ely)e(under)i(Windo)n(ws)f(should)h
10560 +(no)n(w)f(b)r(e)h(handled)390 2806 y(correctly)-7 b(.)36
10561 +b(The)27 b(exact)g(b)r(eha)n(vior)g(is)g(describ)r(ed)g(in)h(the)g
10562 +(cross-platform)e(section)h(of)g(the)h(man)n(ual.)301
10563 +2939 y Fl({)41 b Fn(It)28 b(should)g(b)r(e)g(p)r(ossible)f(to)g(sync)n
10564 +(hronize)f(with)i(Windo)n(ws)g(shares,)e(e.g.,)h(//host/driv)n(e/path.)
10565 +301 3072 y Fl({)41 b Fn(W)-7 b(ork)i(arounds)29 b(to)h(the)h(bug)f(in)h
10566 +(syncing)e(ro)r(ot)h(directories)f(in)i(Windo)n(ws.)44
10567 +b(The)31 b(most)f(di\016cult)h(thing)g(to)f(\014x)390
10568 +3171 y(is)e(an)f(o)r(caml)g(bug:)37 b(Unix.op)r(endir)28
10569 +b(fails)f(on)g(c:)37 b(in)28 b(some)f(v)n(ersions)f(of)h(Windo)n(ws.)
10570 +125 3337 y Fj(\017)41 b Fn(Impro)n(v)n(emen)n(ts)26 b(to)h(the)h(GTK)f
10571 +(user)g(in)n(terface)g(\(the)i(Tk)e(in)n(terface)g(is)g(no)h(longer)e
10572 +(b)r(eing)i(main)n(tained\):)301 3504 y Fl({)41 b Fn(The)29
10573 +b(UI)f(no)n(w)g(displa)n(ys)g(actions)f(di\013eren)n(tly)i(\(in)f
10574 +(blue\))h(when)g(they)g(ha)n(v)n(e)e(b)r(een)i(explicitly)f(c)n(hanged)
10575 +g(b)n(y)g(the)390 3603 y(user)f(from)g(Unison's)h(default)g
10576 +(recommendation.)301 3736 y Fl({)41 b Fn(More)27 b(colorful)g(app)r
10577 +(earance.)301 3869 y Fl({)41 b Fn(The)28 b(initial)g(pro\014le)f
10578 +(selection)g(windo)n(w)g(w)n(orks)f(b)r(etter.)301 4002
10579 +y Fl({)41 b Fn(If)27 b(an)n(y)e(transfers)g(failed,)h(a)g(message)e(to)
10580 +i(this)g(e\013ect)h(is)e(displa)n(y)n(ed)g(along)g(with)i('Sync)n
10581 +(hronization)d(complete')390 4101 y(at)k(the)g(end)f(of)h(the)g
10582 +(transfer)f(phase)g(\(in)h(case)f(they)g(ma)n(y)g(ha)n(v)n(e)g
10583 +(scrolled)f(o\013)i(the)g(top\).)301 4234 y Fl({)41 b
10584 +Fn(Added)24 b(a)e(global)g(progress)e(meter,)k(displa)n(ying)e(the)h(p)
10585 +r(ercen)n(tage)e(of)i Fi(total)g Fn(b)n(ytes)g(that)g(ha)n(v)n(e)e(b)r
10586 +(een)i(transferred)390 4334 y(so)k(far.)125 4500 y Fj(\017)41
10587 +b Fn(Impro)n(v)n(emen)n(ts)26 b(to)h(the)h(text)g(user)f(in)n(terface:)
10588 +301 4666 y Fl({)41 b Fn(The)28 b(\014le)g(details)f(will)h(b)r(e)g
10589 +(displa)n(y)n(ed)e(automatically)h(when)h(a)f(con\015ict)g(is)h(b)r
10590 +(een)g(detected.)301 4799 y Fl({)41 b Fn(when)32 b(a)g(w)n(arning)e(is)
10591 +i(generated)f(\(e.g.)49 b(for)32 b(a)f(temp)r(orary)g(\014le)h(left)h
10592 +(o)n(v)n(er)d(from)h(a)h(previous)e(run)i(of)g(unison\))390
10593 +4898 y(Unison)c(will)g(no)f(longer)f(w)n(ait)h(for)g(a)h(resp)r(onse)e
10594 +(if)i(it)g(is)g(running)f(in)h(-batc)n(h)f(mo)r(de.)301
10595 +5031 y Fl({)41 b Fn(The)28 b(UI)g(no)n(w)f(displa)n(ys)f(a)h(short)g
10596 +(list)h(of)g(p)r(ossible)f(inputs)h(eac)n(h)f(time)h(it)g(w)n(aits)f
10597 +(for)g(user)g(in)n(teraction.)301 5164 y Fl({)41 b Fn(The)33
10598 +b(UI)g(no)n(w)f(quits)h(immediately)g(\(rather)f(than)h(lo)r(oping)f
10599 +(bac)n(k)f(and)i(starting)f(the)h(in)n(teraction)f(again\))g(if)390
10600 +5264 y(the)c(user)f(presses)g('q')g(when)h(ask)n(ed)e(whether)i(to)f
10601 +(propagate)f(c)n(hanges.)1908 5589 y(51)p eop
10602 +%%Page: 52 52
10603 +52 51 bop 301 83 a Fl({)41 b Fn(Pressing)21 b('g')h(in)h(the)g(text)g
10604 +(user)f(in)n(terface)g(will)h(pro)r(ceed)f(immediately)g(with)h
10605 +(propagating)e(up)r(dates,)j(without)390 183 y(asking)j(an)n(y)f(more)h
10606 +(questions.)125 349 y Fj(\017)41 b Fn(Do)r(cumen)n(tation)27
10607 +b(and)h(installation)f(c)n(hanges:)301 515 y Fl({)41
10608 +b Fn(The)32 b(man)n(ual)f(no)n(w)g(includes)g(a)g(F)-9
10609 +b(A)n(Q,)31 b(plus)h(sections)f(on)g(common)g(problems)g(and)g(on)h
10610 +(tric)n(ks)e(con)n(tributed)390 614 y(b)n(y)e(users.)301
10611 +747 y Fl({)41 b Fn(Both)33 b(the)g(do)n(wnload)e(page)h(and)h(the)g(do)
10612 +n(wnload)f(directory)f(explicitly)i(sa)n(y)f(what)g(are)g(the)h(curren)
10613 +n(t)f(stable)390 847 y(and)c(b)r(eta-test)f(v)n(ersion)f(n)n(um)n(b)r
10614 +(ers.)301 980 y Fl({)41 b Fn(The)27 b(OCaml)e(sources)g(for)h(the)h
10615 +(up-to-the-min)n(ute)f(dev)n(elop)r(ers')f(v)n(ersion)g(\(not)i(guaran)
10616 +n(teed)e(to)h(b)r(e)h(stable,)f(or)390 1079 y(ev)n(en)h(to)h(compile,)f
10617 +(at)h(an)n(y)f(giv)n(en)f(time!\))38 b(are)27 b(no)n(w)g(a)n(v)-5
10618 +b(ailable)26 b(from)h(the)h(do)n(wnload)e(page.)301 1212
10619 +y Fl({)41 b Fn(Added)21 b(a)e(subsection)h(to)f(the)i(man)n(ual)e
10620 +(describing)g(cross-platform)e(issues)j(\(case)f(con\015icts,)i
10621 +(illegal)e(\014lenames\))125 1378 y Fj(\017)41 b Fn(Man)n(y)26
10622 +b(small)i(bug)f(\014xes)g(and)h(random)e(impro)n(v)n(emen)n(ts.)0
10623 +1544 y(Changes)h(since)g(2.3.1:)125 1710 y Fj(\017)41
10624 +b Fn(Sev)n(eral)32 b(bug)i(\014xes.)56 b(The)34 b(most)f(imp)r(ortan)n
10625 +(t)h(is)g(a)f(bug)h(in)g(the)h(rsync)e(mo)r(dule)h(that)g(w)n(ould)g(o)
10626 +r(ccasionally)e(cause)208 1810 y(c)n(hange)26 b(propagation)f(to)j
10627 +(fail)g(with)g(a)f('rename')g(error.)0 1976 y(Changes)g(since)g(2.2:)
10628 +125 2142 y Fj(\017)41 b Fn(The)27 b(m)n(ulti-threaded)g(transp)r(ort)g
10629 +(system)g(is)h(no)n(w)f(disabled)g(b)n(y)g(default.)38
10630 +b(\(It)28 b(is)g(not)f(stable)g(enough)g(y)n(et.\))125
10631 +2308 y Fj(\017)41 b Fn(V)-7 b(arious)26 b(bug)h(\014xes.)125
10632 +2474 y Fj(\017)41 b Fn(A)27 b(new)h(exp)r(erimen)n(tal)f(feature:)208
10633 +2607 y(The)34 b(\014nal)h(comp)r(onen)n(t)f(of)g(a)g(-path)h(argumen)n
10634 +(t)e(ma)n(y)h(no)n(w)g(b)r(e)h(the)g(wildcard)f(sp)r(eci\014er)g
10635 +Fk(*)p Fn(.)57 b(When)35 b(Unison)g(sees)208 2707 y(suc)n(h)28
10636 +b(a)h(path,)g(it)g(expands)f(this)i(path)f(on)f(the)h(clien)n(t)g(in)n
10637 +(to)g(in)n(to)g(the)g(corresp)r(onding)e(list)i(of)g(paths)f(b)n(y)h
10638 +(listing)g(the)208 2806 y(con)n(ten)n(ts)d(of)i(that)g(directory)-7
10639 +b(.)208 2939 y(Note)29 b(that)h(if)h(y)n(ou)e(use)g(wildcard)g(paths)h
10640 +(from)f(the)h(command)g(line,)g(y)n(ou)f(will)h(probably)f(need)h(to)f
10641 +(use)h(quotes)f(or)208 3039 y(a)e(bac)n(kslash)f(to)h(prev)n(en)n(t)g
10642 +(the)h(*)f(from)g(b)r(eing)h(in)n(terpreted)f(b)n(y)g(y)n(our)g(shell.)
10643 +208 3171 y(If)k(b)r(oth)g(ro)r(ots)f(are)g(lo)r(cal,)i(the)f(con)n(ten)
10644 +n(ts)f(of)h(the)g(\014rst)g(one)g(will)g(b)r(e)g(used)g(for)g
10645 +(expanding)f(wildcard)g(paths.)47 b(\(Nb:)208 3271 y(this)28
10646 +b(is)g(the)g(\014rst)g(one)g Fi(after)g Fn(the)h(canonization)e(step)h
10647 +({)f(i.e.,)i(the)f(one)g(that)g(is)g(listed)g(\014rst)g(in)g(the)h
10648 +(user)e(in)n(terface)g({)208 3371 y(not)g(the)h(one)f(listed)h(\014rst)
10649 +g(on)f(the)h(command)f(line)h(or)f(in)g(the)h(preferences)f(\014le.\))0
10650 +3537 y(Changes)g(since)g(2.1:)125 3703 y Fj(\017)41 b
10651 +Fn(The)29 b(transp)r(ort)e(subsystem)i(no)n(w)f(includes)h(an)g
10652 +(implemen)n(tation)g(b)n(y)g(Sylv)-5 b(ain)28 b(Gommier)h(and)g(Norman)
10653 +f(Ramsey)208 3802 y(of)k(T)-7 b(ridgell)32 b(and)g(Mac)n(k)n(erras's)e
10654 +Fk(rsync)g Fn(proto)r(col.)51 b(This)33 b(proto)r(col)e(ac)n(hiev)n(es)
10655 +g(m)n(uc)n(h)h(faster)g(transfers)g(when)g(only)208 3902
10656 +y(a)e(small)h(part)f(of)h(a)f(large)g(\014le)h(has)f(b)r(een)i(c)n
10657 +(hanged)e(b)n(y)g(sending)h(just)g(di\013s.)48 b(This)31
10658 +b(feature)f(is)h(mainly)g(helpful)h(for)208 4002 y(transfers)23
10659 +b(o)n(v)n(er)g(slo)n(w)h(links|on)g(fast)h(lo)r(cal)f(area)g(net)n(w)n
10660 +(orks)f(it)i(can)f(actually)g(degrade)g(p)r(erformance|so)f(w)n(e)h(ha)
10661 +n(v)n(e)208 4101 y(left)i(it)f(o\013)h(b)n(y)f(default.)36
10662 +b(Start)25 b(unison)g(with)h(the)g Fk(-rsync)d Fn(option)i(\(or)g(put)g
10663 +Fk(rsync=true)d Fn(in)j(y)n(our)f(preferences)h(\014le\))208
10664 +4201 y(to)i(turn)h(it)g(on.)125 4367 y Fj(\017)41 b Fn(\\Progress)20
10665 +b(bars")i(are)g(no)n(w)h(dipla)n(y)n(ed)g(during)g(remote)g(\014le)h
10666 +(transfers,)f(sho)n(wing)g(what)g(p)r(ercen)n(tage)g(of)g(eac)n(h)g
10667 +(\014le)h(has)208 4467 y(b)r(een)k(transferred)e(so)h(far.)125
10668 +4633 y Fj(\017)41 b Fn(The)24 b(v)n(ersion)f(n)n(um)n(b)r(ering)h(sc)n
10669 +(heme)g(has)g(c)n(hanged.)35 b(New)25 b(releases)e(will)i(no)n(w)f(b)r
10670 +(e)h(ha)n(v)n(e)e(n)n(um)n(b)r(ers)h(lik)n(e)g(2.2.30,)g(where)208
10671 +4732 y(the)32 b(second)g(comp)r(onen)n(t)g(is)g(incremen)n(ted)g(on)g
10672 +(ev)n(ery)f(signi\014can)n(t)h(public)h(release)e(and)h(the)h(third)f
10673 +(comp)r(onen)n(t)g(is)208 4832 y(the)c(\\patc)n(h)e(lev)n(el.")125
10674 +4998 y Fj(\017)41 b Fn(Miscellaneous)26 b(impro)n(v)n(emen)n(ts)g(to)i
10675 +(the)g(GTK-based)e(user)h(in)n(terface.)125 5164 y Fj(\017)41
10676 +b Fn(The)27 b(man)n(ual)g(is)h(no)n(w)f(a)n(v)-5 b(ailable)26
10677 +b(in)i(PDF)g(format.)1908 5589 y(52)p eop
10678 +%%Page: 53 53
10679 +53 52 bop 125 83 a Fj(\017)41 b Fn(W)-7 b(e)38 b(are)f(exp)r(erimen)n
10680 +(ting)h(with)h(using)f(a)f(m)n(ulti-threaded)h(transp)r(ort)f
10681 +(subsystem)h(to)g(transfer)g(sev)n(eral)e(\014les)i(at)208
10682 +183 y(the)32 b(same)f(time,)i(making)e(m)n(uc)n(h)h(more)f(e\013ectiv)n
10683 +(e)g(use)h(of)g(a)n(v)-5 b(ailable)30 b(net)n(w)n(ork)g(bandwidth.)50
10684 +b(This)32 b(feature)f(is)h(not)208 282 y(completely)27
10685 +b(stable)g(y)n(et,)h(so)f(b)n(y)g(default)h(it)g(is)g(disabled)f(in)h
10686 +(the)g(release)e(v)n(ersion)g(of)h(Unison.)208 415 y(If)h(y)n(ou)f(w)n
10687 +(an)n(t)g(to)g(pla)n(y)g(with)h(the)g(m)n(ulti-threaded)g(v)n(ersion,)e
10688 +(y)n(ou'll)h(need)h(to)f(recompile)g(Unison)h(from)f(sources)f(\(as)208
10689 +515 y(describ)r(ed)31 b(in)h(the)g(do)r(cumen)n(tation\),)h(setting)e
10690 +(the)h(THREADS)h(\015ag)d(in)i(Mak)n(e\014le.OCaml)f(to)g(true.)49
10691 +b(Mak)n(e)31 b(sure)208 614 y(that)22 b(y)n(our)f(OCaml)g(compiler)h
10692 +(has)f(b)r(een)i(installed)f(with)h(the)f Fk(-with-pthreads)17
10693 +b Fn(con\014guration)j(option.)35 b(\(Y)-7 b(ou)22 b(can)208
10694 +714 y(v)n(erify)f(this)i(b)n(y)f(c)n(hec)n(king)f(whether)h(the)g
10695 +(\014le)h Fk(threads/threads.)o(cm)o(a)16 b Fn(in)23
10696 +b(the)g(OCaml)e(standard)g(library)g(directory)208 814
10697 +y(con)n(tains)26 b(the)i(string)f Fk(-lpthread)d Fn(near)j(the)h
10698 +(end.\))0 980 y(Changes)f(since)g(1.292:)125 1146 y Fj(\017)41
10699 +b Fn(Reduced)26 b(memory)g(fo)r(otprin)n(t)h(\(this)g(is)g(esp)r
10700 +(ecially)f(imp)r(ortan)n(t)g(during)g(the)i(\014rst)e(run)g(of)h
10701 +(unison,)g(where)f(it)h(has)f(to)208 1245 y(gather)g(information)h(ab)r
10702 +(out)h(all)f(the)h(\014les)f(in)h(b)r(oth)g(rep)r(ositories\).)125
10703 +1411 y Fj(\017)41 b Fn(Fixed)27 b(a)h(bug)f(that)h(w)n(ould)f(cause)g
10704 +(the)h(so)r(c)n(k)n(et)e(serv)n(er)g(under)i(NT)f(to)h(fail)g(after)f
10705 +(the)h(clien)n(t)g(exits.)125 1577 y Fj(\017)41 b Fn(Added)31
10706 +b(a)g(SHIFT)h(mo)r(di\014er)f(to)g(the)g(Ignore)f(men)n(u)h(shortcut)g
10707 +(k)n(eys)f(in)i(GTK)e(in)n(terface)h(\(to)g(a)n(v)n(oid)f(hitting)i
10708 +(them)208 1677 y(acciden)n(tally\).)0 1843 y(Changes)27
10709 +b(since)g(1.231:)125 2009 y Fj(\017)41 b Fn(T)-7 b(unneling)22
10710 +b(o)n(v)n(er)f(ssh)h(is)g(no)n(w)g(supp)r(orted)g(in)h(the)f(Windo)n
10711 +(ws)g(v)n(ersion.)34 b(See)22 b(the)h(installation)f(section)g(of)g
10712 +(the)h(man)n(ual)208 2109 y(for)k(detailed)g(instructions.)125
10713 +2275 y Fj(\017)41 b Fn(The)d(transp)r(ort)g(subsystem)g(no)n(w)g
10714 +(includes)h(an)f(implemen)n(tation)h(of)g(the)g Fk(rsync)d
10715 +Fn(proto)r(col,)k(built)g(b)n(y)e(Sylv)-5 b(ain)208 2374
10716 +y(Gommier)29 b(and)h(Norman)g(Ramsey)-7 b(.)44 b(This)30
10717 +b(proto)r(col)f(ac)n(hiev)n(es)g(m)n(uc)n(h)h(faster)g(transfers)f
10718 +(when)h(only)g(a)g(small)g(part)208 2474 y(of)c(a)f(large)g(\014le)h
10719 +(has)g(b)r(een)g(c)n(hanged)f(b)n(y)h(sending)g(just)h(di\013s.)36
10720 +b(The)27 b(rsync)e(feature)h(is)g(o\013)g(b)n(y)g(default)g(in)g(the)h
10721 +(curren)n(t)208 2574 y(v)n(ersion.)41 b(Use)30 b(the)g
10722 +Fk(-rsync)d Fn(switc)n(h)j(to)g(turn)f(it)h(on.)43 b(\(Nb.)h(W)-7
10723 +b(e)31 b(still)f(ha)n(v)n(e)e(a)h(lot)h(of)g(tuning)g(to)f(do:)41
10724 +b(y)n(ou)29 b(ma)n(y)g(not)208 2673 y(notice)e(m)n(uc)n(h)g(sp)r(eedup)
10725 +h(y)n(et.\))125 2839 y Fj(\017)41 b Fn(W)-7 b(e're)35
10726 +b(exp)r(erimen)n(ting)g(with)h(a)f(m)n(ulti-threaded)g(transp)r(ort)f
10727 +(subsystem,)k(written)d(b)n(y)g(Jerome)g(V)-7 b(ouillon.)60
10728 +b(The)208 2939 y(do)n(wnloadable)30 b(binaries)i(are)f(still)i
10729 +(single-threaded:)45 b(if)33 b(y)n(ou)f(w)n(an)n(t)f(to)i(try)f(the)g
10730 +(m)n(ulti-threaded)h(v)n(ersion,)f(y)n(ou'll)208 3039
10731 +y(need)27 b(to)h(recompile)f(from)g(sources.)36 b(\(Sa)n(y)27
10732 +b Fk(make)42 b(THREADS=true)p Fn(.\))32 b(Nativ)n(e)c(thread)f(supp)r
10733 +(ort)g(from)h(the)g(compiler)208 3138 y(is)h(required.)41
10734 +b(Use)29 b(the)h(option)f Fk(-threads)40 b(N)29 b Fn(to)g(select)g(the)
10735 +h(maximal)f(n)n(um)n(b)r(er)g(of)g(concurren)n(t)f(threads)g(\(default)
10736 +208 3238 y(is)f(5\).)37 b(Multi-threaded)27 b(and)h(single-threaded)e
10737 +(clien)n(ts/serv)n(ers)f(can)i(in)n(terop)r(erate.)125
10738 +3404 y Fj(\017)41 b Fn(A)28 b(new)g(GTK-based)e(user)h(in)n(terface)g
10739 +(is)h(no)n(w)f(a)n(v)-5 b(ailable,)27 b(thanks)g(to)h(Jacques)e
10740 +(Garrigue.)36 b(The)28 b(Tk)g(user)f(in)n(terface)208
10741 +3504 y(still)g(w)n(orks,)f(but)j(w)n(e'll)e(b)r(e)h(shifting)g(dev)n
10742 +(elopmen)n(t)f(e\013ort)g(to)h(the)g(GTK)f(in)n(terface)g(from)g(no)n
10743 +(w)g(on.)125 3670 y Fj(\017)41 b Fn(OCaml)24 b(3.00)g(is)h(no)n(w)f
10744 +(required)g(for)h(compiling)f(Unison)h(from)g(sources.)34
10745 +b(The)26 b(mo)r(dules)f Fk(uitk)e Fn(and)i Fk(myfileselect)208
10746 +3769 y Fn(ha)n(v)n(e)35 b(b)r(een)i(c)n(hanged)f(to)h(use)f(labltk)h
10747 +(instead)f(of)h(camltk.)64 b(T)-7 b(o)37 b(compile)f(the)h(Tk)g(in)n
10748 +(terface)f(in)h(Windo)n(ws,)i(y)n(ou)208 3869 y(m)n(ust)32
10749 +b(ha)n(v)n(e)f(o)r(caml-3.00)g(and)h(tk8.3.)51 b(When)33
10750 +b(installing)f(tk8.3,)h(put)g(it)g(in)g Fk(c:\\Tcl)d
10751 +Fn(rather)i(than)g(the)h(suggested)208 3968 y Fk(c:\\Program)39
10752 +b(Files\\Tcl)p Fn(,)30 b(and)i(b)r(e)h(sure)f(to)g(install)g(the)h
10753 +(headers)e(and)i(libraries)e(\(whic)n(h)h(are)g(not)g(installed)g(b)n
10754 +(y)208 4068 y(default\).)125 4234 y Fj(\017)41 b Fn(Added)33
10755 +b(a)f(new)g Fk(-addversionno)27 b Fn(switc)n(h,)34 b(whic)n(h)e(causes)
10756 +f(unison)h(to)h(use)f Fk(unison-<currentv)o(ers)o(io)o(nn)o(umb)o(er)o
10757 +(>)208 4334 y Fn(instead)37 b(of)h(just)h Fk(unison)c
10758 +Fn(as)j(the)g(remote)f(serv)n(er)g(command.)67 b(This)38
10759 +b(allo)n(ws)f(m)n(ultiple)h(v)n(ersions)f(of)g(unison)h(to)208
10760 +4433 y(co)r(exist)28 b(con)n(v)n(enien)n(tly)g(on)h(the)h(same)f(serv)n
10761 +(er:)38 b(whic)n(hev)n(er)28 b(v)n(ersion)f(is)j(run)f(on)g(the)g
10762 +(clien)n(t,)h(the)g(same)e(v)n(ersion)g(will)208 4533
10763 +y(b)r(e)g(selected)f(on)g(the)h(serv)n(er.)0 4699 y(Changes)f(since)g
10764 +(1.219:)125 4865 y Fj(\017)41 b Fl(Incompatible)24 b(c)m(hange:)69
10765 +b Fn(Arc)n(hiv)n(e)21 b(format)h(has)f(c)n(hanged.)35
10766 +b(Mak)n(e)21 b(sure)h(y)n(ou)f(sync)n(hronize)g(y)n(our)g(replicas)g(b)
10767 +r(efore)208 4965 y(upgrading,)26 b(to)h(a)n(v)n(oid)f(spurious)h
10768 +(con\015icts.)37 b(The)27 b(\014rst)h(sync)f(after)g(upgrading)f(will)i
10769 +(b)r(e)g(slo)n(w.)125 5131 y Fj(\017)41 b Fn(This)27
10770 +b(v)n(ersion)f(\014xes)h(sev)n(eral)f(anno)n(ying)g(bugs,)i(including:)
10771 +301 5297 y Fl({)41 b Fn(Some)28 b(cases)e(where)h(propagation)f(of)h
10772 +(\014le)h(p)r(ermissions)f(w)n(as)f(not)i(w)n(orking.)1908
10773 +5589 y(53)p eop
10774 +%%Page: 54 54
10775 +54 53 bop 301 83 a Fl({)41 b Fn(umask)27 b(is)h(no)n(w)f(ignored)f
10776 +(when)i(creating)e(directories)301 216 y Fl({)41 b Fn(directories)26
10777 +b(are)h(create)g(writable,)g(so)g(that)h(a)f(read-only)f(directory)g
10778 +(and)h(its)h(con)n(ten)n(ts)f(can)g(b)r(e)h(propagated.)301
10779 +349 y Fl({)41 b Fn(Handling)28 b(of)f(w)n(arnings)f(generated)h(b)n(y)g
10780 +(the)h(serv)n(er.)301 482 y Fl({)41 b Fn(Sync)n(hronizing)26
10781 +b(a)i(path)f(whose)g(paren)n(t)g(is)h(not)f(a)g(directory)g(on)g(b)r
10782 +(oth)h(sides)f(is)h(no)n(w)f(\015agged)f(as)h(erroneous.)301
10783 +614 y Fl({)41 b Fn(Fixed)28 b(some)f(bugs)g(related)g(to)h(symn)n(b)r
10784 +(olic)f(links)g(and)h(nonexistan)n(t)f(ro)r(ots.)462
10785 +747 y Fj(\003)41 b Fn(When)33 b(a)f(c)n(hange)f(\(deletion)i(or)e(new)h
10786 +(con)n(ten)n(ts\))g(is)g(propagated)f(on)n(to)g(a)h('follo)n(w'ed)g
10787 +(symlink,)h(the)g(\014le)545 847 y(p)r(oin)n(ted)e(to)e(b)n(y)h(the)h
10788 +(link)f(is)f(no)n(w)h(c)n(hanged.)43 b(\(W)-7 b(e)30
10789 +b(used)g(to)g(c)n(hange)f(the)h(link)g(itself,)i(whic)n(h)d(do)r(esn't)
10790 +i(\014t)545 946 y(our)c(assertion)f(that)i('follo)n(w')f(means)g(the)h
10791 +(link)g(is)g(completely)f(in)n(visible\))462 1063 y Fj(\003)41
10792 +b Fn(When)34 b(one)f(ro)r(ot)f(did)i(not)f(exist,)i(propagating)c(the)i
10793 +(other)g(ro)r(ot)g(on)f(top)i(of)f(it)g(used)h(to)f(fail,)h(b)r(ecuase)
10794 +545 1162 y(unison)25 b(could)h(not)f(calculate)f(the)i(w)n(orking)d
10795 +(directory)h(in)n(to)h(whic)n(h)h(to)f(write)g(c)n(hanges.)34
10796 +b(This)26 b(should)f(b)r(e)545 1262 y(\014xed.)125 1428
10797 +y Fj(\017)41 b Fn(A)27 b(h)n(uman-readable)f(timestamp)i(has)f(b)r(een)
10798 +h(added)g(to)f(Unison's)h(arc)n(hiv)n(e)d(\014les.)125
10799 +1594 y Fj(\017)41 b Fn(The)27 b(seman)n(tics)g(of)h(P)n(ath)e(and)i
10800 +(Name)f(regular)f(expressions)g(no)n(w)h(corresp)r(ond)f(b)r(etter.)125
10801 +1760 y Fj(\017)41 b Fn(Some)27 b(minor)g(impro)n(v)n(emen)n(ts)f(to)i
10802 +(the)g(text)g(UI)f(\(e.g.)37 b(a)27 b(command)h(for)f(going)f(bac)n(k)h
10803 +(to)g(previous)g(items\))125 1926 y Fj(\017)41 b Fn(The)32
10804 +b(organization)e(of)i(the)h(exp)r(ort)f(directory)f(has)h(c)n(hanged)f
10805 +(|)h(should)g(b)r(e)h(easier)e(to)h(\014nd)h(/)f(do)n(wnload)f(things)
10806 +208 2026 y(no)n(w.)0 2192 y(Changes)c(since)g(1.200:)125
10807 +2358 y Fj(\017)41 b Fl(Incompatible)24 b(c)m(hange:)69
10808 +b Fn(Arc)n(hiv)n(e)21 b(format)h(has)f(c)n(hanged.)35
10809 +b(Mak)n(e)21 b(sure)h(y)n(ou)f(sync)n(hronize)g(y)n(our)g(replicas)g(b)
10810 +r(efore)208 2457 y(upgrading,)26 b(to)h(a)n(v)n(oid)f(spurious)h
10811 +(con\015icts.)37 b(The)27 b(\014rst)h(sync)f(after)g(upgrading)f(will)i
10812 +(b)r(e)g(slo)n(w.)125 2623 y Fj(\017)41 b Fn(This)27
10813 +b(v)n(ersion)f(has)h(not)h(b)r(een)g(tested)g(extensiv)n(ely)f(on)g
10814 +(Windo)n(ws.)125 2790 y Fj(\017)41 b Fn(Ma)5 b(jor)22
10815 +b(in)n(ternal)i(c)n(hanges)f(designed)g(to)h(mak)n(e)g(unison)g(safer)f
10816 +(to)h(run)g(at)g(the)h(same)e(time)i(as)e(the)i(replicas)e(are)g(b)r
10817 +(eing)208 2889 y(c)n(hanged)j(b)n(y)h(the)h(user.)125
10818 +3055 y Fj(\017)41 b Fn(In)n(ternal)26 b(p)r(erformance)h(impro)n(v)n
10819 +(emen)n(ts.)0 3221 y(Changes)g(since)g(1.190:)125 3387
10820 +y Fj(\017)41 b Fl(Incompatible)24 b(c)m(hange:)69 b Fn(Arc)n(hiv)n(e)21
10821 +b(format)h(has)f(c)n(hanged.)35 b(Mak)n(e)21 b(sure)h(y)n(ou)f(sync)n
10822 +(hronize)g(y)n(our)g(replicas)g(b)r(efore)208 3487 y(upgrading,)26
10823 +b(to)h(a)n(v)n(oid)f(spurious)h(con\015icts.)37 b(The)27
10824 +b(\014rst)h(sync)f(after)g(upgrading)f(will)i(b)r(e)g(slo)n(w.)125
10825 +3653 y Fj(\017)41 b Fn(A)29 b(n)n(um)n(b)r(er)g(of)g(in)n(ternal)f
10826 +(functions)h(ha)n(v)n(e)f(b)r(een)i(c)n(hanged)e(to)g(reduce)h(the)g
10827 +(amoun)n(t)g(of)g(memory)f(allo)r(cation,)g(esp)r(e-)208
10828 +3753 y(cially)f(during)g(the)h(\014rst)f(sync)n(hronization.)35
10829 +b(This)28 b(should)f(help)h(p)r(o)n(w)n(er)e(users)h(with)h(v)n(ery)f
10830 +(big)g(replicas.)125 3919 y Fj(\017)41 b Fn(Reimplemen)n(tation)29
10831 +b(of)g(lo)n(w-lev)n(el)e(remote)i(pro)r(cedure)f(call)h(stu\013,)h(in)g
10832 +(preparation)d(for)i(adding)f(rsync-lik)n(e)g(smart)208
10833 +4018 y(\014le)f(transfer)g(in)h(a)f(later)g(release.)125
10834 +4184 y Fj(\017)41 b Fn(Miscellaneous)26 b(bug)h(\014xes.)0
10835 +4350 y(Changes)g(since)g(1.180:)125 4516 y Fj(\017)41
10836 +b Fl(Incompatible)24 b(c)m(hange:)69 b Fn(Arc)n(hiv)n(e)21
10837 +b(format)h(has)f(c)n(hanged.)35 b(Mak)n(e)21 b(sure)h(y)n(ou)f(sync)n
10838 +(hronize)g(y)n(our)g(replicas)g(b)r(efore)208 4616 y(upgrading,)26
10839 +b(to)h(a)n(v)n(oid)f(spurious)h(con\015icts.)37 b(The)27
10840 +b(\014rst)h(sync)f(after)g(upgrading)f(will)i(b)r(e)g(slo)n(w.)125
10841 +4782 y Fj(\017)41 b Fn(Fixed)27 b(some)g(small)h(bugs)f(in)h(the)g(in)n
10842 +(terpretation)e(of)i(ignore)e(patterns.)125 4948 y Fj(\017)41
10843 +b Fn(Fixed)33 b(some)f(problems)h(that)g(w)n(ere)f(prev)n(en)n(ting)g
10844 +(the)i(Windo)n(ws)e(v)n(ersion)g(from)h(w)n(orking)e(correctly)h(when)h
10845 +(clic)n(k-)208 5048 y(started.)125 5214 y Fj(\017)41
10846 +b Fn(Fixes)24 b(to)h(treatmen)n(t)f(of)h(\014le)g(p)r(ermissions)f
10847 +(under)g(Windo)n(ws,)h(whic)n(h)g(w)n(ere)f(causing)g(spurious)g(rep)r
10848 +(orts)f(of)i(di\013eren)n(t)208 5313 y(p)r(ermissions)h(when)i(sync)n
10849 +(hronizing)e(b)r(et)n(w)n(een)h(windo)n(ws)g(and)h(unix)g(systems.)1908
10850 +5589 y(54)p eop
10851 +%%Page: 55 55
10852 +55 54 bop 125 83 a Fj(\017)41 b Fn(Fixed)36 b(one)g(more)g
10853 +(non-tail-recursiv)n(e)d(list)k(pro)r(cessing)e(function,)k(whic)n(h)d
10854 +(w)n(as)g(causing)f(stac)n(k)g(o)n(v)n(er\015o)n(ws)f(when)208
10855 +183 y(sync)n(hronizing)25 b(v)n(ery)i(large)f(replicas.)0
10856 +349 y(Changes)h(since)g(1.169:)125 515 y Fj(\017)41 b
10857 +Fn(The)27 b(text)h(user)f(in)n(terface)g(no)n(w)g(pro)n(vides)f
10858 +(commands)h(for)g(ignoring)f(\014les.)125 681 y Fj(\017)41
10859 +b Fn(W)-7 b(e)35 b(found)h(and)g(\014xed)f(some)g Fi(mor)l(e)h
10860 +Fn(non-tail-recursiv)n(e)d(list)i(pro)r(cessing)f(functions.)61
10861 +b(Some)35 b(p)r(o)n(w)n(er)g(users)f(ha)n(v)n(e)208 780
10862 +y(rep)r(orted)26 b(success)h(with)h(v)n(ery)f(large)f(replicas.)125
10863 +946 y Fj(\017)41 b Fl(Incompatible)e(c)m(hange:)54 b
10864 +Fn(Files)35 b(ending)h(in)g Fk(.tmp)e Fn(are)h(no)h(longer)e(ignored)h
10865 +(automatically)-7 b(.)60 b(If)36 b(y)n(ou)f(w)n(an)n(t)g(to)208
10866 +1046 y(ignore)26 b(suc)n(h)h(\014les,)h(put)g(an)f(appropriate)f
10867 +(ignore)g(pattern)i(in)g(y)n(our)e(pro\014le.)125 1212
10868 +y Fj(\017)41 b Fl(Incompatible)28 b(c)m(hange:)72 b Fn(The)25
10869 +b(syn)n(tax)g(of)h Fk(ignore)d Fn(and)j Fk(follow)d Fn(patterns)i(has)g
10870 +(c)n(hanged.)35 b(Instead)26 b(of)f(putting)208 1312
10871 +y(a)i(line)h(of)f(the)h(form)949 1511 y Fk(ignore)41
10872 +b(=)i(<regexp>)208 1710 y Fn(in)27 b(y)n(our)g(pro\014le)g(\()p
10873 +Fk(.unison/default.)o(pr)o(f)p Fn(\),)22 b(y)n(ou)27
10874 +b(should)g(put:)949 1910 y Fk(ignore)41 b(=)i(Regexp)e(<regexp>)208
10875 +2109 y Fn(Moreo)n(v)n(er,)24 b(t)n(w)n(o)j(other)g(st)n(yles)g(of)h
10876 +(pattern)f(are)g(also)f(recognized:)949 2308 y Fk(ignore)41
10877 +b(=)i(Name)f(<name>)208 2507 y Fn(matc)n(hes)27 b(an)n(y)f(path)i(in)g
10878 +(whic)n(h)g(one)f(comp)r(onen)n(t)g(matc)n(hes)g Fk(<name>)p
10879 +Fn(,)e(while)949 2707 y Fk(ignore)41 b(=)i(Path)f(<path>)208
10880 +2906 y Fn(matc)n(hes)27 b(exactly)g(the)h(path)f Fk(<path>)p
10881 +Fn(.)208 3039 y(Standard)g(\\globbing")e(con)n(v)n(en)n(tions)h(can)h
10882 +(b)r(e)h(used)g(in)g Fk(<name>)d Fn(and)i Fk(<path>)p
10883 +Fn(:)301 3205 y Fl({)41 b Fn(a)27 b Fk(?)h Fn(matc)n(hes)f(an)n(y)f
10884 +(single)i(c)n(haracter)d(except)j Fk(/)301 3337 y Fl({)41
10885 +b Fn(a)27 b Fk(*)h Fn(matc)n(hes)f(an)n(y)f(sequence)i(of)f(c)n
10886 +(haracters)e(not)j(including)g Fk(/)301 3470 y Fl({)41
10887 +b Fk([xyz])26 b Fn(matc)n(hes)h(an)n(y)g(c)n(haracter)e(from)i(the)h
10888 +(set)g Fj(f)p Fk(x)p Fa(;)14 b Fk(y)p Fa(;)g Fk(z)p Fj(g)301
10889 +3603 y Fl({)41 b Fk({a,bb,ccc})24 b Fn(matc)n(hes)j(an)n(y)g(one)g(of)g
10890 +Fk(a)p Fn(,)h Fk(bb)p Fn(,)f(or)f Fk(ccc)p Fn(.)208 3769
10891 +y(See)h(the)h(user)f(man)n(ual)g(for)g(some)g(examples.)0
10892 +3935 y(Changes)g(since)g(1.146:)125 4101 y Fj(\017)41
10893 +b Fn(Some)31 b(users)g(w)n(ere)f(rep)r(orting)h(stac)n(k)g(o)n(v)n
10894 +(er\015o)n(ws)d(when)k(sync)n(hronizing)e(h)n(uge)h(directories.)48
10895 +b(W)-7 b(e)32 b(found)g(and)f(\014xed)208 4201 y(some)c
10896 +(non-tail-recursiv)n(e)e(list)k(pro)r(cessing)d(functions,)j(whic)n(h)f
10897 +(w)n(e)g(hop)r(e)g(will)g(solv)n(e)f(the)i(problem.)38
10898 +b(Please)26 b(giv)n(e)i(it)208 4301 y(a)f(try)g(and)g(let)h(us)g(kno)n
10899 +(w.)125 4467 y Fj(\017)41 b Fn(Ma)5 b(jor)26 b(additions)h(to)h(the)g
10900 +(do)r(cumen)n(tation.)0 4633 y(Changes)f(since)g(1.142:)125
10901 +4799 y Fj(\017)41 b Fn(Ma)5 b(jor)26 b(in)n(ternal)h(tidying)g(and)h
10902 +(man)n(y)f(small)g(bug\014xes.)125 4965 y Fj(\017)41
10903 +b Fn(Ma)5 b(jor)26 b(additions)h(to)h(the)g(user)e(man)n(ual.)125
10904 +5131 y Fj(\017)41 b Fn(Unison)26 b(can)f(no)n(w)h(b)r(e)h(started)e
10905 +(with)i(no)f(argumen)n(ts)f({)g(it)i(will)g(prompt)f(automatically)f
10906 +(for)g(the)i(name)f(of)g(a)g(pro\014le)208 5230 y(\014le)31
10907 +b(con)n(taining)f(the)h(ro)r(ots)f(to)h(b)r(e)g(sync)n(hronized.)46
10908 +b(This)31 b(mak)n(es)f(it)i(p)r(ossible)e(to)h(start)g(the)g(graphical)
10909 +e(UI)j(from)e(a)208 5330 y(desktop)d(icon.)1908 5589
10910 +y(55)p eop
10911 +%%Page: 56 56
10912 +56 55 bop 125 83 a Fj(\017)41 b Fn(Fixed)27 b(a)h(small)f(bug)g(where)g
10913 +(the)h(text)g(UI)g(on)f(NT)h(w)n(as)f(raising)f(a)h('no)h(suc)n(h)f
10914 +(signal')g(exception.)0 249 y(Changes)g(since)g(1.139:)125
10915 +415 y Fj(\017)41 b Fn(The)22 b(precompiled)h(windo)n(ws)f(binary)f(in)i
10916 +(the)h(last)e(release)f(w)n(as)h(compiled)h(with)g(an)f(old)h(OCaml)f
10917 +(compiler,)h(causing)208 515 y(propagation)29 b(of)j(p)r(ermissions)f
10918 +(not)h(to)g(w)n(ork)e(\(and)i(p)r(erhaps)g(leading)f(to)h(some)f(other)
10919 +g(strange)g(b)r(eha)n(viors)f(w)n(e'v)n(e)208 614 y(heard)35
10920 +b(rep)r(orts)h(ab)r(out\).)64 b(This)36 b(has)g(b)r(een)h(corrected.)63
10921 +b(If)37 b(y)n(ou're)e(using)h(precompiled)g(binaries)g(on)g(Windo)n
10922 +(ws,)208 714 y(please)26 b(upgrade.)125 880 y Fj(\017)41
10923 +b Fn(Added)26 b(a)f Fk(-debug)f Fn(command)h(line)h(\015ag,)g(whic)n(h)
10924 +g(con)n(trols)e(debugging)h(of)g(v)-5 b(arious)25 b(mo)r(dules.)36
10925 +b(Sa)n(y)25 b Fk(-debug)42 b(XXX)24 b Fn(to)208 980 y(enable)j(debug)g
10926 +(tracing)g(for)g(mo)r(dule)h Fk(XXX)p Fn(,)e(or)h Fk(-debug)41
10927 +b(all)27 b Fn(to)g(turn)h(on)f(absolutely)g(ev)n(erything.)125
10928 +1146 y Fj(\017)41 b Fn(Fixed)27 b(a)h(small)f(bug)g(where)g(the)h(text)
10929 +g(UI)g(on)f(NT)h(w)n(as)f(raising)f(a)h('no)h(suc)n(h)f(signal')g
10930 +(exception.)0 1312 y(Changes)g(since)g(1.111:)125 1478
10931 +y Fj(\017)41 b Fl(Incompatible)30 b(c)m(hange:)74 b Fn(The)28
10932 +b(names)f(and)g(formats)g(of)g(the)h(preference)f(\014les)h(in)g(the)g
10933 +(.unison)f(directory)f(ha)n(v)n(e)208 1577 y(c)n(hanged.)35
10934 +b(In)28 b(particular:)301 1743 y Fl({)41 b Fn(the)28
10935 +b(\014le)g(\\prefs")e(should)i(b)r(e)g(renamed)f(to)g(default.prf)301
10936 +1876 y Fl({)41 b Fn(the)28 b(con)n(ten)n(ts)f(of)h(the)g(\014le)g
10937 +(\\ignore")e(should)h(b)r(e)h(merged)f(in)n(to)h(default.prf.)38
10938 +b(Eac)n(h)26 b(line)i(of)g(the)g(form)f Fk(REGEXP)390
10939 +1976 y Fn(in)h(ignore)e(should)i(b)r(ecome)f(a)g(line)h(of)g(the)g
10940 +(form)f Fk(ignore)41 b(=)i(REGEXP)25 b Fn(in)j(default.prf.)125
10941 +2142 y Fj(\017)41 b Fn(Unison)27 b(no)n(w)g(handles)g(p)r(ermission)g
10942 +(bits)h(and)g(sym)n(b)r(olic)f(links.)36 b(See)28 b(the)g(man)n(ual)f
10943 +(for)g(details.)125 2308 y Fj(\017)41 b Fn(Y)-7 b(ou)27
10944 +b(can)g(no)n(w)g(ha)n(v)n(e)g(di\013eren)n(t)h(preference)e(\014les)i
10945 +(in)g(y)n(our)e(.unison)h(directory)-7 b(.)36 b(If)28
10946 +b(y)n(ou)f(start)g(unison)g(lik)n(e)h(this)774 2507 y
10947 +Fk(unison)41 b(profilename)208 2707 y Fn(\(i.e.)36 b(with)26
10948 +b(just)f(one)g(\\anon)n(ymous")e(command-line)h(argumen)n(t\),)h(then)h
10949 +(the)f(\014le)g Fk(~/.unison/profile)o(na)o(me.)o(pr)o(f)208
10950 +2806 y Fn(will)i(b)r(e)h(loaded)f(instead)h(of)f Fk(default.prf)p
10951 +Fn(.)125 2972 y Fj(\017)41 b Fn(Some)27 b(impro)n(v)n(emen)n(ts)f(to)i
10952 +(terminal)f(handling)g(in)h(the)g(text)g(user)f(in)n(terface)125
10953 +3138 y Fj(\017)41 b Fn(Added)24 b(a)f(switc)n(h)g(-killServ)n(er)e
10954 +(that)j(terminates)f(the)h(remote)f(serv)n(er)e(pro)r(cess)i(when)g
10955 +(the)h(unison)f(clien)n(t)h(is)f(sh)n(utting)208 3238
10956 +y(do)n(wn,)j(ev)n(en)f(when)i(using)f(so)r(c)n(k)n(ets)f(for)g(comm)n
10957 +(unication.)36 b(\(By)26 b(default,)h(a)f(remote)g(serv)n(er)e(created)
10958 +i(using)f(ssh/rsh)208 3337 y(is)i(terminated)h(automatically)-7
10959 +b(,)26 b(while)i(a)f(so)r(c)n(k)n(et)g(serv)n(er)f(is)h(left)h
10960 +(running.\))125 3504 y Fj(\017)41 b Fn(When)23 b(started)f(in)h('so)r
10961 +(c)n(k)n(et)f(serv)n(er')f(mo)r(de,)i(unison)g(prin)n(ts)f('serv)n(er)f
10962 +(started')h(on)h(stderr)f(when)g(it)i(is)e(ready)g(to)g(accept)208
10963 +3603 y(connections.)38 b(\(This)29 b(ma)n(y)f(b)r(e)h(useful)g(for)f
10964 +(scripts)g(that)g(w)n(an)n(t)g(to)g(tell)h(when)g(a)f(so)r(c)n(k)n
10965 +(et-mo)r(de)f(serv)n(er)g(has)h(\014nished)208 3703 y(initalization.\))
10966 +125 3869 y Fj(\017)41 b Fn(W)-7 b(e)38 b(no)n(w)f(mak)n(e)g(a)g(nigh)n
10967 +(tly)h(mirror)e(of)i(our)f(curren)n(t)g(in)n(ternal)g(dev)n(elopmen)n
10968 +(t)g(tree,)j(in)e(case)f(an)n(y)n(one)f(w)n(an)n(ts)h(an)208
10969 +3968 y(up-to-the-min)n(ute)27 b(v)n(ersion)f(to)h(hac)n(k)g(around)g
10970 +(with.)125 4134 y Fj(\017)41 b Fn(Added)28 b(a)f(\014le)h(CONTRIB)f
10971 +(with)h(some)f(suggestions)f(for)h(ho)n(w)g(to)h(help)f(us)h(mak)n(e)f
10972 +(Unison)g(b)r(etter.)1908 5589 y(56)p eop
10973 +%%Trailer
10974 +end
10975 +userdict /end-hook known{end-hook}if
10976 +%%EOF
10977 --- unison-2.9.1.orig/debian/unison-gtk.menu
10978 +++ unison-2.9.1/debian/unison-gtk.menu
10979 @@ -0,0 +1,3 @@
10980 +?package(unison-gtk):needs="x11" section="Apps/Net" \
10981 + title="Unison (GTK)" command="/usr/bin/unison-gtk" \
10982 + longtitle="Unison file synchronizer (GTK interface)"