1DARCS(1)                    General Commands Manual                   DARCS(1)
2
3
4

NAME

6       darcs - an advanced revision control system
7

SYNOPSIS

9       darcs command <arguments|[options]>...
10
11       Where the commands and their respective arguments are
12
13       darcs help [<darcs_command> [darcs_subcommand]]
14       darcs initialize [<directory>]
15       darcs add <file|directory> ...
16       darcs whatsnew [file|directory]...
17       darcs record [file|directory]...
18       darcs clone <repository> [<directory>]
19       darcs pull [repository]...
20       darcs push [repository]
21       darcs move <source> ... <destination>
22       darcs remove <file|directory> ...
23       darcs replace <old> <new> <file> ...
24       darcs log [file|directory]...
25       darcs annotate [file|directory]
26       darcs diff [file|directory]...
27       darcs show contents [file]...
28       darcs show dependencies
29       darcs show files [file|directory]...
30       darcs show index
31       darcs show pristine
32       darcs show repo
33       darcs show authors
34       darcs show tags
35       darcs show patch-index
36       darcs test [[initialization] command]
37       darcs revert [file|directory]...
38       darcs unrevert
39       darcs amend [file|directory]...
40       darcs rebase pull [repository]...
41       darcs rebase apply <patchfile>
42       darcs rebase suspend
43       darcs rebase unsuspend
44       darcs rebase obliterate
45       darcs rebase log
46       darcs rebase upgrade
47       darcs rollback [file|directory]...
48       darcs unrecord
49       darcs obliterate
50       darcs tag [tagname]
51       darcs setpref <pref> <value>
52       darcs send [repository]
53       darcs apply <patchfile>
54       darcs optimize clean
55       darcs optimize http
56       darcs optimize reorder
57       darcs optimize enable-patch-index
58       darcs optimize disable-patch-index
59       darcs optimize compress
60       darcs optimize uncompress
61       darcs optimize relink
62       darcs optimize pristine
63       darcs optimize upgrade
64       darcs optimize cache <directory> ...
65       darcs dist
66       darcs mark-conflicts [file|directory]...
67       darcs repair
68       darcs convert darcs-2 <source> [<destination>]
69       darcs convert export
70       darcs convert import [<directory>]
71       darcs fetch [repository]...
72

DESCRIPTION

74       Unlike  conventional revision control systems, Darcs is based on track‐
75       ing changes, rather than versions: it can and does automatically re-or‐
76       der independent changes when needed. This means that in Darcs the state
77       of a repository should be regarded as a set of patches  rather  than  a
78       sequence of versions.
79
80       Another  distinguishing  feature of darcs is that most commands are in‐
81       teractive by default. For instance, `darcs record' (the  equivalent  of
82       what  is  usually  called  `commit')  presents you with each unrecorded
83       change and asks you whether it should be included in the  patch  to  be
84       recorded.  Similarly,  `darcs  push'  and `darcs pull' present you with
85       each patch, allowing you to select which patches to push or pull.
86

OPTIONS

88       Different options are accepted by different Darcs commands.  Each  com‐
89       mand's  most important options are listed in the COMMANDS section.  For
90       a full list of all options accepted by a particular command, run `darcs
91       command --help'.
92
93   Selecting Patches:
94       The  --patches  option yields patches with names matching an *extended*
95       regular expression.  See regex(7) for details.   The  --matches  option
96       yields  patches  that match a logical (Boolean) expression: one or more
97       primitive expressions combined by grouping (parentheses) and  the  com‐
98       plement (not), conjunction (and) and disjunction (or) operators.  The C
99       notation for logic operators (!, && and ||) can also be used.
100
101           --patches=regex is a synonym for --matches='name regex'
102           --hash=HASH is a synonym for --matches='hash HASH'
103           --from-patch and --to-patch are synonyms for
104             --from-match='name... and --to-match='name...
105           --from-patch and --to-match can be unproblematically combined:
106             `darcs log --from-patch='html.*docu' --to-match='date 20040212'`
107
108       The following primitive Boolean expressions are supported:
109
110           exact STRING - check literal STRING is equal to patch name.
111           name REGEX - match REGEX against patch name.
112           author REGEX - match REGEX against patch author.
113           hunk REGEX - match REGEX against contents of a hunk patch.
114           comment REGEX - match REGEX against the full log message.
115           hash HASH - match HASH against (a prefix of) the hash of a patch.
116           date DATE - match DATE against the patch date.
117           touch REGEX - match file paths for a patch.
118
119       Here are some examples:
120
121           darcs log --match 'exact "Resolve issue17: use dynamic memory allo‐
122       cation."'
123           darcs log --match 'name issue17'
124           darcs log --match 'name "^[Rr]esolve issue17>"'
125           darcs log --match 'author "David Roundy"'
126           darcs log --match 'author droundy'
127           darcs log --match 'author droundy@darcs.net'
128           darcs log --match 'hunk "foo = 2"'
129           darcs log --match 'hunk "^instance .* Foo where$"'
130           darcs log --match 'comment "prevent deadlocks"'
131           darcs log --match 'hash c719567e92c3b0ab9eddd5290b705712b8b918ef'
132           darcs log --match 'hash c7195'
133           darcs log --match 'date "2006-04-02 22:41"'
134           darcs log --match 'date "tea time yesterday"'
135           darcs log --match 'touch src/foo.c'
136           darcs log --match 'touch src/'
137           darcs log --match 'touch "src/*.(c|h)"'
138

COMMANDS

140       darcs help [<darcs_command> [darcs_subcommand]]
141           Without  arguments, `darcs help` prints a categorized list of darcs
142           commands and a short description of each one. With an  extra  argu‐
143           ment, `darcs help foo` prints detailed help about the darcs command
144           foo.
145
146
147   Most used/starting out:
148       darcs initialize [<directory>]
149           The `darcs initialize` command creates an empty repository  in  the
150           current  directory.  This repository lives in a new `_darcs` direc‐
151           tory, which stores version control metadata and settings.
152
153           Existing files and subdirectories are not touched. You  can  record
154           them with `darcs record --look-for-adds`.
155
156           Initialize is commonly abbreviated to `init`.
157
158           Darcs  currently supports three kinds of patch semantics. These are
159           called `darcs-1`, `darcs-2`, and `darcs-3`. They are  mutually  in‐
160           compatible, that is, you cannot exchange patches between repos with
161           different semantics.
162
163           By default, patches of the new repository are in the darcs-2 seman‐
164           tics.  However it is possible to create a repository in darcs-1 se‐
165           mantics with the flag `--darcs-1`, althought  this  is  not  recom‐
166           mended  except for sharing patches with a project that uses patches
167           in the darcs-1 semantics.
168
169           The `darcs-3` semantics is EXPERIMENTAL and new in version 2.16. It
170           is included only as a technology preview and we do NOT recommend to
171           use it for any serious work. The on-disk format is not  yet  final‐
172           ized  and  we  cannot and will not promise that later releases will
173           work with darcs-3 repos created with any darcs version before 3.0.
174
175       darcs add <file|directory> ...
176           Generally the working tree contains both files that should be  ver‐
177           sion  controlled  (such as source code) and files that Darcs should
178           ignore (such as executables compiled from the  source  code).   The
179           `darcs  add`  command  is used to tell Darcs which files to version
180           control.
181
182           When an existing project is first imported into a Darcs repository,
183           it  is  common  to run `darcs add -r *` or `darcs record -l` to add
184           all initial source files into darcs.
185
186           Adding symbolic links (symlinks) is not supported.
187
188           Darcs will ignore all files and folders that  look  "boring".   The
189           `--boring` option overrides this behaviour.
190
191           Darcs  will not add file if another file in the same folder has the
192           same name, except for case.  The `--case-ok` option overrides  this
193           behaviour.   Windows  and  OS X usually use filesystems that do not
194           allow files a folder to have the same name except for case (for ex‐
195           ample, `ReadMe` and `README`).  If `--case-ok` is used, the reposi‐
196           tory might be unusable on those systems!
197
198
199
200       darcs whatsnew [file|directory]...
201           The `darcs whatsnew` command lists unrecorded changes to the  work‐
202           ing  tree.  If you specify a set of files and directories, only un‐
203           recorded changes to those files and directories are listed.
204
205           With the `--summary` option, the changes are condensed to one  line
206           per  file,  with mnemonics to indicate the nature and extent of the
207           change. The `--look-for-adds` option causes candidates  for  `darcs
208           add`  to  be included in the summary output.  WithSummary mnemonics
209           are as follows:
210
211             * `A f` and `A d/` respectively mean an added file or directory.
212             * `R f` and `R d/` respectively mean a removed file or directory.
213             * `M f -N +M rP` means a modified file, with `N`  lines  deleted,
214           `M`
215               lines added, and `P` lexical replacements.
216             * `f -> g` means a moved file or directory.
217             * `a f` and `a d/` respectively mean a new, but unadded, file or
218               directory, when using `--look-for-adds`.
219             * An exclamation mark (!) as in `R! foo.c`, means the change
220               conflicts with a change in an earlier patch. The phrase `dupli‐
221           cated`
222               means the change is identical to a change in an earlier patch.
223
224           The `--machine-readable` option implies `--summary` while making it
225           more  parsable.  Modified  files are only shown as `M f`, and moves
226           are shown in two lines: `F f` and `T g` (as in 'From f To g').
227
228           By default,  `darcs  whatsnew`  uses  Darcs'  internal  format  for
229           changes.  To see some context (unchanged lines) around each change,
230           use the `--unified` option. To view changes in conventional  `diff`
231           format,  use  the  `darcs diff` command; but note that `darcs what‐
232           snew` is faster.
233
234           This command exits unsuccessfully (returns a non-zero exit  status)
235           if there are no unrecorded changes.
236
237       darcs record [file|directory]...
238           The  `darcs  record` command is used to create a patch from changes
239           in the working tree. If you specify a set of files and directories,
240           changes to other files will be skipped.
241
242           Every  patch  has  a name, an optional description, an author and a
243           date.
244
245           Darcs will launch a text editor (see `darcs help environment`)  af‐
246           ter  the  interactive  selection,  to  let you enter the patch name
247           (first line) and the patch description (subsequent lines).
248
249           You can supply the patch name in advance with the `-m`  option,  in
250           which case no text editor is launched, unless you use `--edit-long-
251           comment`.
252
253           The patch description is an optional block of free-form text. It is
254           used to supply additional information that doesn't fit in the patch
255           name. For example, it might include a rationale of WHY  the  change
256           was necessary.
257
258           A technical difference between patch name and patch description, is
259           that matching with the flag `-p` is only done on patch names.
260
261           Finally, the `--logfile` option allows you to supply  a  file  that
262           already  contains the patch name and description. This is useful if
263           a previous record failed and left a  `_darcs/patch_description.txt`
264           file.
265
266           Each  patch  is  attributed to its author, usually by email address
267           (for example, `Fred Bloggs  <fred@example.net>`).  Darcs  looks  in
268           several  places  for this author string: the `--author` option, the
269           files `_darcs/prefs/author` (in the repository)  and  `~/.darcs/au‐
270           thor`  (in  your  home  directory),  and  the environment variables
271           `$DARCS_EMAIL` and `$EMAIL`. If none of  those  exist,  Darcs  will
272           prompt  you for an author string and write it to `~/.darcs/author`.
273           Note that if you have more than one email address, you can put them
274           all  in  `~/.darcs/author`,  one  author per line. Darcs will still
275           prompt you for an author, but it allows  you  to  select  from  the
276           list, or to type in an alternative.
277
278           If  you  want to manually define any explicit dependencies for your
279           patch, you can use the `--ask-deps` flag. Some dependencies may  be
280           automatically  inferred  from the patch's content and cannot be re‐
281           moved. A patch with specific dependencies can be empty.
282
283           The patch date is generated automatically. It can only  be  spoofed
284           by using the `--pipe` option.
285
286           If  you  run  record with the `--pipe` option, you will be prompted
287           for the patch date, author, and the long comment. The long  comment
288           will  extend until the end of file or stdin is reached. This inter‐
289           face is intended for scripting darcs,  in  particular  for  writing
290           repository conversion scripts. The prompts are intended mostly as a
291           useful guide (since scripts won't need them), to  help  you  under‐
292           stand  the  input  format.  Here's  an example of what the `--pipe`
293           prompts look like:
294
295               What is the date? Mon Nov 15 13:38:01 EST 2004
296               Who is the author? David Roundy
297               What is the log? One or more comment lines
298
299           If a test command has been defined with `darcs setpref`, attempting
300           to  record a patch will cause the test command to be run in a clean
301           copy  of  the  working  tree  (that  is,  including  only  recorded
302           changes).  If  the  test  fails,  you  will be offered to abort the
303           record operation.
304
305           The `--set-scripts-executable` option causes scripts to be made ex‐
306           ecutable  in  the  clean copy of the working tree, prior to running
307           the test. See `darcs  clone`  for  an  explanation  of  the  script
308           heuristic.
309
310           If  your  test  command is tediously slow (e.g. `make all`) and you
311           are recording several patches in a row, you may wish to use  `--no-
312           test` to skip all but the final test.
313
314           To  see  some context (unchanged lines) around each change, use the
315           `--unified` option.
316
317       darcs clone <repository> [<directory>]
318           Clone creates a copy of a repository. The optional second  argument
319           specifies  a destination directory for the new copy; if omitted, it
320           is inferred from the source location.
321
322           By default Darcs will copy every patch from  the  original  reposi‐
323           tory.  If  you expect the original repository to remain accessible,
324           you can use `--lazy` to avoid copying patches until they are needed
325           ('copy  on demand'). This is particularly useful when copying a re‐
326           mote repository with a long history that you don't care about.
327
328           When cloning locally, Darcs automatically uses hard  linking  where
329           possible. As well as saving time and space, this enables to move or
330           delete the original repository without  affecting  the  copy.  Hard
331           linking  requires  that  the  copy be on the same filesystem as the
332           original repository, and that the filesystem support hard  linking.
333           This  includes  NTFS, HFS+ and all general-purpose Unix filesystems
334           (such as ext, UFS and ZFS). FAT does not support hard links.
335
336           When cloning from a remote location, Darcs will look  for  and  at‐
337           tempt  to  use packs created by `darcs optimize http` in the remote
338           repository. Packs are single  big  files  that  can  be  downloaded
339           faster than many little files.
340
341           Darcs  clone will not copy unrecorded changes to the source reposi‐
342           tory's working tree.
343
344           You can copy a repository to a ssh  url,  in  which  case  the  new
345           repository will always be complete.
346
347           It  is often desirable to make a copy of a repository that excludes
348           some patches.  For example, if  releases  are  tagged  then  `darcs
349           clone --tag .` would make a copy of the repository as at the latest
350           release. An untagged repository state can still be identified unam‐
351           biguously by a context file, as generated by `darcs log --context`.
352           Given the name of such a file, the `--context` option will create a
353           repository that includes only the patches from that context. When a
354           user reports a bug in an unreleased version of  your  project,  the
355           recommended  way to find out exactly what version they were running
356           is to have them include a context file in the bug report.  You  can
357           also  make  a  copy  of an untagged state using the `--to-patch` or
358           `--to-match` options,  which  exclude  patches  *after*  the  first
359           matching  patch.  Because these options treat the set of patches as
360           an ordered sequence, you may get different results after reordering
361           with `darcs optimize reorder`.
362
363           The `--set-scripts-executable` option causes scripts to be made ex‐
364           ecutable in the working tree. A script is any file that starts with
365           a shebang ("#!").
366
367           The  --inherit-default option is meant to support a work flow where
368           you have different branches of the  same  upstream  repository  and
369           want  all  your  branches to have the same upstream repo as the de‐
370           faultrepo. It is most useful when enabled globally by  adding  'ALL
371           --inherit-default' to your ~/darcs/defaults file.
372
373           For the clone command it means the following: If the source reposi‐
374           tory already has a defaultrepo set (either because you cloned it or
375           because  you  explicitly  used  the --set-default option), and both
376           source and target are locally valid paths on the  same  host,  then
377           the  target  repo will get the same defaultrepo as the source repo.
378           Otherwise the target repo gets the source repo itself  as  default‐
379           repo,  i.e.  we  fall back to the defalt behavior (--no-inherit-de‐
380           fault).
381
382       darcs pull [repository]...
383           Pull is used to bring patches made in another repository  into  the
384           current  repository  (that is, either the one in the current direc‐
385           tory, or the one specified with the `--repodir` option).  Pull  ac‐
386           cepts arguments, which are URLs from which to pull, and when called
387           without an argument, pull will  use  the  repository  specified  at
388           `_darcs/prefs/defaultrepo`.
389
390           The default (`--union`) behavior is to pull any patches that are in
391           any of the specified repositories. If you specify the  `--intersec‐
392           tion` flag, darcs will only pull those patches which are present in
393           all source repositories. If you specify  the  `--complement`  flag,
394           darcs  will  only pull elements in the first repository that do not
395           exist in any of the remaining repositories.
396
397           If `--reorder` is supplied, the set of patches that exist  only  in
398           the  current  repository  is brought at the top of the current his‐
399           tory. This will work even if there are no new patches to pull.
400
401           The --inherit-default option is meant to support a work flow  where
402           you  have  different  branches  of the same upstream repository and
403           want all your branches to have the same upstream repo  as  the  de‐
404           faultrepo.  It  is most useful when enabled globally by adding 'ALL
405           --inherit-default' to your ~/darcs/defaults file.
406
407           For the commands push, pull,  and  send  it  means  the  following:
408           Changes the meaning of the --set-default option so that it sets the
409           (local) defaultrepo to the defaultrepo of the remote repo,  instead
410           of  the  remote  repo  itself. This happens only if the remote repo
411           does have a defaultrepo set and both local and remote  repositories
412           are  locally  valid  paths on the same host, otherwise fall back to
413           the default behavior (--no-inherit-default).
414
415           See `darcs help apply` for detailed description of many options.
416
417       darcs push [repository]
418           Push is the opposite of pull. Push allows you to copy patches  from
419           the current repository into another repository.
420
421           If  you  give the `--apply-as` flag, darcs will use `sudo` to apply
422           the patches as a different user. This can be useful if you want  to
423           set up a system where several users can modify the same repository,
424           but you don't want to allow them full write access. This isn't  se‐
425           cure  against skilled malicious attackers, but at least can protect
426           your repository from clumsy, inept or lazy users.
427
428           `darcs push` will compress the patch data before sending  it  to  a
429           remote  location via ssh. This works as long as the remote darcs is
430           not older than version 2.5. If you get errors that indicate a  cor‐
431           rupt  patch  bundle,  you should try again with the `--no-compress`
432           option.
433
434           The --inherit-default option is meant to support a work flow  where
435           you  have  different  branches  of the same upstream repository and
436           want all your branches to have the same upstream repo  as  the  de‐
437           faultrepo.  It  is most useful when enabled globally by adding 'ALL
438           --inherit-default' to your ~/darcs/defaults file.
439
440           For the commands push, pull,  and  send  it  means  the  following:
441           Changes the meaning of the --set-default option so that it sets the
442           (local) defaultrepo to the defaultrepo of the remote repo,  instead
443           of  the  remote  repo  itself. This happens only if the remote repo
444           does have a defaultrepo set and both local and remote  repositories
445           are  locally  valid  paths on the same host, otherwise fall back to
446           the default behavior (--no-inherit-default).
447
448
449   Preparing patches before recording:
450       darcs move <source> ... <destination>
451           Darcs cannot reliably distinguish between a file being deleted  and
452           a  new  one  added, and a file being moved.  Therefore Darcs always
453           assumes the former, and provides the  `darcs  mv`  command  to  let
454           Darcs  know  when you want the latter.  This command will also move
455           the file in the working tree (unlike `darcs remove`), unless it has
456           already been moved.
457
458           Darcs will not rename a file if another file in the same folder has
459           the same name, except for case.  The `--case-ok`  option  overrides
460           this  behaviour.   Windows and OS X usually use filesystems that do
461           not allow files a folder to have the same name except for case (for
462           example,  `ReadMe`  and  `README`).   If  `--case-ok`  is used, the
463           repository might be unusable on those systems!
464
465
466       darcs remove <file|directory> ...
467           The `darcs remove`  command  exists  primarily  for  symmetry  with
468           `darcs  add`,  as the normal way to remove a file from version con‐
469           trol is simply to delete it from the working tree.  This command is
470           only useful in the unusual case where one wants to record a removal
471           patch WITHOUT deleting the copy in the working tree (which  can  be
472           re-added).
473
474           Note that applying a removal patch to a repository (e.g. by pulling
475           the patch) will ALWAYS affect the working tree of that repository.
476
477
478       darcs replace <old> <new> <file> ...
479           In addition to line-based patches, Darcs supports a limited form of
480           lexical substitution.  Files are treated as sequences of words, and
481           each occurrence of the old word is replaced by the new word.   This
482           is  intended  to  provide a clean way to rename a function or vari‐
483           able.  Such renamings typically affect lines all through the source
484           code,  so  a  traditional  line-based patch would be very likely to
485           conflict with other branches, requiring manual merging.
486
487           Files are tokenized according to one simple rule: words are strings
488           of valid token characters, and everything between them (punctuation
489           and whitespace) is discarded.  By default, valid  token  characters
490           are  letters,  numbers  and  the  underscore (i.e. `[A-Za-z0-9_]`).
491           However if the old and/or new token contains either a hyphen or pe‐
492           riod,  BOTH  hyphen  and  period are treated as valid (i.e. `[A-Za-
493           z0-9_.-]`).
494
495           The set of valid characters can be customized using  the  `--token-
496           chars` option.  The argument must be surrounded by square brackets.
497           If a hyphen occurs between two characters in the set, it is treated
498           as  a  set range.  For example, in most locales `[A-Z]` denotes all
499           uppercase letters.  If the first character is a caret, valid tokens
500           are  taken  to  be the complement of the remaining characters.  For
501           example, `[^:0` could be used to match  fields  in  the  passwd(5),
502           where  records  and fields are separated by newlines and colons re‐
503           spectively.
504
505           If you choose to use `--token-chars`, you are  STRONGLY  encouraged
506           to  do so consistently.  The consequences of using multiple replace
507           patches with different `--token-chars` arguments on the  same  file
508           are not well tested nor well understood.
509
510           By  default  Darcs  will refuse to perform a replacement if the new
511           token is already in use, because the replacements would be  not  be
512           distinguishable  from  the  existing tokens.  This behaviour can be
513           overridden by supplying the `--force` option,  but  an  attempt  to
514           `darcs rollback` the resulting patch will affect these existing to‐
515           kens.
516
517           Limitations:
518
519           The tokenizer treats files as byte strings, so it is  not  possible
520           for  `--token-chars`  to include multi-byte characters, such as the
521           non-ASCII parts of UTF-8.  Similarly, trying to  replace  a  "high-
522           bit" character from a unibyte encoding will also result in replace‐
523           ment of the same byte in files with different encodings.  For exam‐
524           ple,  an  acute a from ISO 8859-1 will also match an alpha from ISO
525           8859-7.
526
527           Due to limitations in the patch file format, `--token-chars`  argu‐
528           ments  cannot contain literal whitespace.  For example, `[^ ]` can‐
529           not be used to declare all characters except  the  space,  tab  and
530           newline  as  valid  within  a  word,  because it contains a literal
531           space.
532
533           Unlike POSIX regex(7) bracket expressions, character classes  (such
534           as `[[:alnum:]]`) are NOT supported by `--token-chars`, and will be
535           silently treated as a simple set of characters.
536
537
538
539   Querying the repository:
540       darcs log [file|directory]...
541           The `darcs log` command lists patches of the current repository or,
542           with  `--repo`,  a remote repository. Without options or arguments,
543           ALL patches will be listed.
544
545           When given files or directories paths as  arguments,  only  patches
546           which  affect  those  paths  are listed. This includes patches that
547           happened to files before they were moved or renamed.
548
549           When given `--from-tag` or `--from-patch`, only patches since  that
550           tag or patch are listed. Similarly, the `--to-tag` and `--to-patch`
551           options restrict the list to older patches.
552
553           The `--last` and `--max-count` options both  limit  the  number  of
554           patches  listed.   The former applies BEFORE other filters, whereas
555           the latter applies AFTER other  filters.  For  example  `darcs  log
556           foo.c  --max-count 3` will print the last three patches that affect
557           foo.c, whereas `darcs log --last 3 foo.c` will, of the  last  three
558           patches, print only those that affect foo.c.
559
560           Four  output  formats exist. The default is `--human-readable`. The
561           slightly different `--machine-readable` format enables to see patch
562           dependencies  in  non-interactive mode. You can also select `--con‐
563           text`, which is an internal format that can  be  re-read  by  Darcs
564           (e.g. `darcs clone --context`).
565
566           Finally, there is `--xml-output`, which emits valid XML... unless a
567           the patch metadata (author, name or description)  contains  a  non-
568           ASCII character and was recorded in a non-UTF8 locale.
569
570       darcs annotate [file|directory]
571           When  `darcs  annotate` is called on a file, it will find the patch
572           that last modified each line in that file. This also works  on  di‐
573           rectories.
574
575           The  `--machine-readable` option can be used to generate output for
576           machine postprocessing.
577
578
579       darcs diff [file|directory]...
580           The `darcs diff` command compares two versions of the working  tree
581           of   the   current   repository.   Without  options,  the  pristine
582           (recorded) and unrecorded working  trees  are  compared.   This  is
583           lower-level  than  the `darcs whatsnew` command, since it outputs a
584           line-by-line diff, and it is also slower.   As  with  `darcs  what‐
585           snew`,  if you specify files or directories, changes to other files
586           are not listed.  The command always uses an external diff utility.
587
588           With the `--patch` option, the  comparison  will  be  made  between
589           working trees with and without that patch.  Patches *after* the se‐
590           lected patch are not present in  either  of  the  compared  working
591           trees.   The  `--from-patch` and `--to-patch` options allow the set
592           of patches in the `old' and `new' working  trees  to  be  specified
593           separately.
594
595           The  associated  tag  and  match  options are also understood, e.g.
596           `darcs diff --from-tag 1.0 --to-tag 1.1`.  All these options assume
597           an  ordering of the patch set, so results may be affected by opera‐
598           tions such as `darcs optimize reorder`.
599
600           diff(1) is always called with the arguments `-rN`  and  by  default
601           also  with `-u` to show the differences in unified format. This can
602           be turned off by passing `--no-unified`. An additional argument can
603           be   passed  using  `--diff-opts`,  such  as  `--diff-opts=-ud`  or
604           `--diff-opts=-wU9`.
605
606           The `--diff-command` option can be used to specify  an  alternative
607           utility.  Arguments  may be included, separated by whitespace.  The
608           value is not interpreted by a shell, so shell constructs cannot  be
609           used.   The arguments %1 and %2 MUST be included, these are substi‐
610           tuted for the two working trees being compared. For instance:
611
612               darcs diff -p . --diff-command "meld %1 %2"
613
614           If this option is used, `--diff-opts` is ignored.
615
616
617       darcs show subcommand
618           Display various information about a repository. See description  of
619           the subcommands for details.
620
621       darcs show contents [file]...
622           Show  contents  can  be  used to display an earlier version of some
623           file(s).  If you give show contents no version arguments,  it  dis‐
624           plays the recorded version of the file(s).
625
626
627       darcs show dependencies
628           This  command  creates a graph of the dependencies between patches.
629           The    output    format    is     the     Dot     Language,     see
630           https://www.graphviz.org/doc/info/lang.html. The resulting graph is
631           transitively reduced, in other words, it contains only  the  direct
632           dependencies, not the indirect ones.
633
634           By  default  all patches in your repository are considered. You can
635           limit this to a range of patches using patch matching options,  see
636           `darcs  help  patterns`  and the options avaiable for this command.
637           For instance, to visualize the  dependencies  between  all  patches
638           since the last tag, do:
639
640               darcs show dependencies --from-tag=. | dot -Tpdf -o FILE.pdf
641
642           This  command  can  take a very(!) long time to compute its result,
643           depending on the number of patches in the  selected  range.  For  N
644           patches  it  needs  to  do  on the order of N^3 commutations in the
645           worst case.
646
647       darcs show files [file|directory]...
648           The `darcs show files` command lists those files and directories in
649           the  working  tree that are under version control.  This command is
650           primarily for scripting purposes;  end  users  will  probably  want
651           `darcs whatsnew --summary`.
652
653           A  file is "pending" if it has been added but not recorded.  By de‐
654           fault, pending files (and directories) are listed; the  `--no-pend‐
655           ing` option prevents this.
656
657           By default `darcs show files` lists both files and directories, but
658           the `--no-files` and `--no-directories` flags  modify  this  behav‐
659           iour.
660
661           By default entries are one-per-line (i.e. newline separated).  This
662           can cause problems if the  files  themselves  contain  newlines  or
663           other  control characters.  To get around this, the `--null` option
664           uses the null character instead.  The  script  interpreting  output
665           from  this  command  needs  to understand this idiom; `xargs -0` is
666           such a command.
667
668           For example, to list version-controlled files by size:
669
670               darcs show files -0 | xargs -0 ls -ldS
671
672
673       darcs show index
674           The `darcs show index` command lists all  version-controlled  files
675           and  directories  along  with their hashes as stored in `_darcs/in‐
676           dex`. For files, the fields correspond to file size, sha256 of  the
677           current file content and the filename.
678
679       darcs show pristine
680           The  `darcs  show  pristine`  command  lists all version-controlled
681           files and directories along  with  the  hashes  of  their  pristine
682           copies.  For  files,  the fields correspond to file size, sha256 of
683           the pristine file content and the filename.
684
685       darcs show repo
686           The `darcs show repo` command displays statistics about the current
687           repository, allowing third-party scripts to access this information
688           without inspecting `_darcs` directly (and without breaking when the
689           `_darcs` format changes).
690
691           The 'Weak Hash' identifies the set of patches of a repository inde‐
692           pendently of ordering. It can be used to easily compare two reposi‐
693           tories of a same project. It is not cryptographically secure.
694
695           By default, output includes statistics that require walking through
696           the patches recorded in the repository, namely the 'Weak Hash'  and
697           the  count  of patches.  If this data isn't needed, use `--no-enum-
698           patches` to accelerate this command from O(n) to O(1).
699
700           By default, output is in a human-readable format.  The  `--xml-out‐
701           put` option can be used to generate output for machine postprocess‐
702           ing.
703
704
705       darcs show authors
706           The `darcs show authors` command lists the authors of  the  current
707           repository,  sorted by the number of patches contributed.  With the
708           `--verbose` option, this command simply lists the  author  of  each
709           patch (without aggregation or sorting).
710
711           An  author's  name  or email address may change over time.  To tell
712           Darcs when multiple author strings refer to  the  same  individual,
713           create  an `.authorspellings` file in the root of the working tree.
714           Each line in this file begins with an author's canonical  name  and
715           address,  and may be followed by a comma separated list of extended
716           regular expressions.  Blank lines and lines beginning with two  hy‐
717           phens  are  ignored.   The  format  of `.authorspelling` can be de‐
718           scribed by this pattern:
719
720               name <address> [, regexp ]*
721
722           There are some pitfalls concerning special characters:  Whitespaces
723           are  stripped,  if you need space in regexp use [ ].  Because comma
724           serves as a separator you have to escape it if you want it in  reg‐
725           exp.  Note  that `.authorspelling` use extended regular expressions
726           so +, ? and so on are metacharacters and you need to escape them to
727           be interpreted literally.
728
729           Any  patch with an author string that matches the canonical address
730           or any of the associated regexps is considered to be  the  work  of
731           that  author.  All matching is case-insensitive and partial (it can
732           match a substring). Use ^,$ to match the whole string in regexps
733
734           Currently this canonicalization step is done only  in  `darcs  show
735           authors`.   Other  commands, such as `darcs log` use author strings
736           verbatim.
737
738           An example `.authorspelling` file is:
739
740               -- This is a comment.
741               Fred Nurk <fred@example.com>
742               John Snagge <snagge@bbc.co.uk>, John, snagge@, js@(si|mit).edu
743               Chuck Jones Jr. <chuck@pobox.com>, cj+user@example.com
744
745
746       darcs show tags
747           The tags command writes a list of all tags  in  the  repository  to
748           standard output.
749
750           Tab characters (ASCII character 9) in tag names are changed to spa‐
751           ces for better interoperability with  shell  tools.  A  warning  is
752           printed if this happens.
753
754       darcs show patch-index
755           When  given  the  `--verbose`  flag, the command dumps the complete
756           content of the patch index and checks its integrity.
757
758       darcs test [[initialization] command]
759           Run test on the current recorded state of the repository.  Given no
760           arguments,  it  uses  the  default repository test (see `darcs set‐
761           pref`).  Given one argument, it treats it as a test command.  Given
762           two  arguments, the first is an initialization command and the sec‐
763           ond is the test (meaning the exit code of the first command is  not
764           taken into account to determine success of the test).  If given the
765           `--linear` or `--bisect` flags, it tries to find  the  most  recent
766           version in the repository which passes a test.
767
768           `--linear`  does  linear search starting from head, and moving away
769           from head. This strategy is best when the test runs very quickly or
770           the patch you're seeking is near the head.
771
772           `--bisect` does binary search.  This strategy is best when the test
773           runs very slowly or the patch you're seeking is likely to be in the
774           repository's distant past.
775
776           `--backoff`  starts  searching from head, skipping further and fur‐
777           ther into the past until the test succeeds.  It then does a  binary
778           search  on  a subset of those skipped patches.  This strategy works
779           well unless the patch you're seeking is in the repository's distant
780           past.
781
782           Under  the  assumption  that  failure is monotonous, `--linear` and
783           `--bisect` produce the same result.  (Monotonous  means  that  when
784           moving  away  from  head,  the  test  result changes only once from
785           "fail" to "ok".)  If failure is not  monotonous,  any  one  of  the
786           patches that break the test is found at random.
787
788
789
790   Undoing and correcting:
791       darcs revert [file|directory]...
792           The  `darcs revert` command discards unrecorded changes the working
793           tree.  As with `darcs  record`,  you  will  be  asked  which  hunks
794           (changes)  to revert.  The `--all` switch can be used to avoid such
795           prompting. If files or directories are specified,  other  parts  of
796           the working tree are not reverted.
797
798           In  you accidentally reverted something you wanted to keep (for ex‐
799           ample, typing `darcs rev -a` instead of `darcs rec  -a`),  you  can
800           immediately run `darcs unrevert` to restore it.  This is only guar‐
801           anteed to work if the repository has not changed since  `darcs  re‐
802           vert` ran.
803
804
805       darcs unrevert
806           Unrevert  is  a  rescue  command  in case you accidentally reverted
807           something you wanted to keep (for example, typing  `darcs  rev  -a`
808           instead of `darcs rec -a`).
809
810           This  command  may fail if the repository has changed since the re‐
811           vert took place.  Darcs will ask for confirmation before  executing
812           an interactive command that will DEFINITELY prevent unreversion.
813
814
815       darcs amend [file|directory]...
816           Amend  updates  a "draft" patch with additions or improvements, re‐
817           sulting in a single "finished" patch.
818
819           By default `amend` proposes you to record  additional  changes.  If
820           instead you want to remove changes, use the flag `--unrecord`.
821
822           When  recording  a draft patch, it is a good idea to start the name
823           with `DRAFT:`.  When done, remove it with `darcs amend --edit-long-
824           comment`.  Alternatively, to change the patch name without starting
825           an editor, use the `--name`/`-m` flag:
826
827               darcs amend --match 'name "DRAFT: foo"' --name 'foo2'
828
829           Like `darcs record`, if you call amend with files as arguments, you
830           will  only  be  asked  about  changes to those files. So to amend a
831           patch to foo.c with improvements in bar.c, you would run:
832
833               darcs amend --match 'touch foo.c' bar.c
834
835           Note that this command edits the history of your repo. It  is  pri‐
836           marily  intended  to  be used on patches that you authored yourself
837           and did not yet publish. Using it for patches that are already pub‐
838           lished,  or even ones you did not author yourself, may cause confu‐
839           sion and can disrupt your own and other  people's  work-flow.  This
840           depends  a  lot  on how your project is organized, though, so there
841           may be valid exceptions to this rule.
842
843           Using the `--not-in-remote` option is a good way to  guard  against
844           accidentally editing published patches. Without arguments, this de‐
845           selects any patches that are also present in the `defaultrepo`.  If
846           you work in a clone of some publically hosted repository, then your
847           `defaultrepo` will be that public repo. You can also give  the  op‐
848           tion  an  argument which is a path or URL of some other repository;
849           you can use the option multiple times with different  repositories,
850           which  has  the  effect of treating all of them as "upstream", that
851           is, it prevents you from selecting a patch that is contained in any
852           of these repos.
853
854           You  can  also guard only against editing another developer's patch
855           by using an appropriate `--match` option with the `author` keyword.
856           For  instance, you could add something like `<cmd> match Your Name`
857           to your `~/.darcs/defaults`.
858
859       darcs rebase subcommand
860           The `darcs rebase' command is used to edit a  collection  of  darcs
861           patches.
862
863           The  basic  idea  is that you can suspend patches from the end of a
864           repository.  These patches are no longer part of  the  history  and
865           have no effect on the working tree. Suspended patches are invisible
866           to commands that access the repository from the  outside,  such  as
867           push, pull, clone, send, etc.
868
869           The  sequence  of suspended patches can be manipulated in ways that
870           are not allowed for normal patches.  For  instance,  `darcs  rebase
871           obliterate`  allows you to remove a patch in this sequence, even if
872           other suspended patches depend on it. These other patches will as a
873           result become conflicted.
874
875           You can also operate on the normal patches in the usual way. If you
876           add or remove normal patches, the suspended patches will  be  auto‐
877           matically  adapted  to  still apply to the pristine state, possibly
878           becoming conflicted in the course.
879
880           Note that as soon as a patch gets suspended,  it  will  irrevocably
881           loose  its  identity. This means that suspending a patch is subject
882           to the usual warnings about editing the history of your project.
883
884           The opposite of suspending a patch is to unsuspend it.  This  turns
885           it back into a normal patch. If the patch is conflicted as a result
886           of previous operations on either the normal  patches  or  the  sus‐
887           pended  patches,  unsuspending  will  create  appropriate  conflict
888           markup. Note, however, that the unsuspended patch itself  WILL  NOT
889           BE  CONFLICTED itself. This means that there is no way to re-gener‐
890           ate the conflict markup. Once you removed it, by editing  files  or
891           using `darcs revert`, any information about the conflict is lost.
892
893           As  long  as you have suspended patches, darcs will display a short
894           message after each command to remind you that  your  patch  editing
895           operation is still in progress.
896
897       darcs rebase pull [repository]...
898           Copy  and apply patches from another repository, suspending any lo‐
899           cal patches that conflict.
900
901       darcs rebase apply <patchfile>
902           Apply a patch bundle, suspending any local patches that conflict.
903
904       darcs rebase suspend
905           Select patches to move into a suspended state at  the  end  of  the
906           repo.
907
908           Note  that  this command edits the history of your repo. It is pri‐
909           marily intended to be used on patches that  you  authored  yourself
910           and did not yet publish. Using it for patches that are already pub‐
911           lished, or even ones you did not author yourself, may cause  confu‐
912           sion  and  can  disrupt your own and other people's work-flow. This
913           depends a lot on how your project is organized,  though,  so  there
914           may be valid exceptions to this rule.
915
916           Using  the  `--not-in-remote` option is a good way to guard against
917           accidentally editing published patches. Without arguments, this de‐
918           selects  any patches that are also present in the `defaultrepo`. If
919           you work in a clone of some publically hosted repository, then your
920           `defaultrepo`  will  be that public repo. You can also give the op‐
921           tion an argument which is a path or URL of some  other  repository;
922           you  can use the option multiple times with different repositories,
923           which has the effect of treating all of them  as  "upstream",  that
924           is, it prevents you from selecting a patch that is contained in any
925           of these repos.
926
927           You can also guard only against editing another  developer's  patch
928           by using an appropriate `--match` option with the `author` keyword.
929           For instance, you could add something like `<cmd> match Your  Name`
930           to your `~/.darcs/defaults`.
931
932       darcs rebase unsuspend
933           Select suspended patches to restore to the end of the repo.
934
935       darcs rebase obliterate
936           Obliterate a patch that is currently suspended.
937
938       darcs rebase log
939           List the currently suspended changes.
940
941       darcs rebase upgrade
942           Upgrade a repo with an old-style rebase in progress.
943
944           Doing this means you won't be able to use darcs version < 2.15 with
945           this repository until the rebase is finished.
946
947       darcs rollback [file|directory]...
948           Rollback is used to undo the effects of some changes  from  patches
949           in  the repository. The selected changes are undone in your working
950           tree, but the repository is left unchanged. First you are offered a
951           choice  of  which  patches  to  undo, then which changes within the
952           patches to undo.
953
954           Before doing `rollback`, you  may  want  to  temporarily  undo  the
955           changes of your working tree (if there are) and save them for later
956           use.  To do so, you can run `revert`, then run `rollback`, record a
957           patch,  and  run  `unrevert` to restore the saved changes into your
958           working tree.
959
960
961       darcs unrecord
962           Unrecord does the opposite of record: it deletes patches  from  the
963           repository  without  changing the working tree. The changes are now
964           again visible with `darcs whatsnew` and you can  record  or  revert
965           them as you please.
966
967           Note  that  this command edits the history of your repo. It is pri‐
968           marily intended to be used on patches that  you  authored  yourself
969           and did not yet publish. Using it for patches that are already pub‐
970           lished, or even ones you did not author yourself, may cause  confu‐
971           sion  and  can  disrupt your own and other people's work-flow. This
972           depends a lot on how your project is organized,  though,  so  there
973           may be valid exceptions to this rule.
974
975           Using  the  `--not-in-remote` option is a good way to guard against
976           accidentally editing published patches. Without arguments, this de‐
977           selects  any patches that are also present in the `defaultrepo`. If
978           you work in a clone of some publically hosted repository, then your
979           `defaultrepo`  will  be that public repo. You can also give the op‐
980           tion an argument which is a path or URL of some  other  repository;
981           you  can use the option multiple times with different repositories,
982           which has the effect of treating all of them  as  "upstream",  that
983           is, it prevents you from selecting a patch that is contained in any
984           of these repos.
985
986           You can also guard only against editing another  developer's  patch
987           by using an appropriate `--match` option with the `author` keyword.
988           For instance, you could add something like `<cmd> match Your  Name`
989           to your `~/.darcs/defaults`.
990
991       darcs obliterate
992           Obliterate  completely  removes  recorded  patches  from your local
993           repository. The changes will be undone in your working tree and the
994           patches will not be shown in your changes list anymore. Beware that
995           you can lose precious code by obliterating!
996
997           One way to save obliterated patches is to use the -O flag. A  patch
998           bundle  will  be  created  locally,  that you will be able to apply
999           later to your repository with `darcs apply`. See `darcs send` for a
1000           more detailed description.
1001
1002           Note  that  this command edits the history of your repo. It is pri‐
1003           marily intended to be used on patches that  you  authored  yourself
1004           and did not yet publish. Using it for patches that are already pub‐
1005           lished, or even ones you did not author yourself, may cause  confu‐
1006           sion  and  can  disrupt your own and other people's work-flow. This
1007           depends a lot on how your project is organized,  though,  so  there
1008           may be valid exceptions to this rule.
1009
1010           Using  the  `--not-in-remote` option is a good way to guard against
1011           accidentally editing published patches. Without arguments, this de‐
1012           selects  any patches that are also present in the `defaultrepo`. If
1013           you work in a clone of some publically hosted repository, then your
1014           `defaultrepo`  will  be that public repo. You can also give the op‐
1015           tion an argument which is a path or URL of some  other  repository;
1016           you  can use the option multiple times with different repositories,
1017           which has the effect of treating all of them  as  "upstream",  that
1018           is, it prevents you from selecting a patch that is contained in any
1019           of these repos.
1020
1021           You can also guard only against editing another  developer's  patch
1022           by using an appropriate `--match` option with the `author` keyword.
1023           For instance, you could add something like `<cmd> match Your  Name`
1024           to your `~/.darcs/defaults`.
1025
1026
1027   Direct modification of the repository:
1028       darcs tag [tagname]
1029           The `darcs tag` command names the current repository state, so that
1030           it can easily be referred to later.  Every *important* state should
1031           be tagged; in particular it is good practice to tag each stable re‐
1032           lease with a number or codename.  Advice on release  numbering  can
1033           be found at <http://producingoss.com/en/development-cycle.html>.
1034
1035           To  reproduce  the state of a repository `R` as at tag `t`, use the
1036           command `darcs clone --tag t R`.  The  command  `darcs  show  tags`
1037           lists all tags in the current repository.
1038
1039           Tagging  also provides significant performance benefits: when Darcs
1040           reaches a shared tag that depends on all antecedent patches, it can
1041           simply stop processing.
1042
1043           Like  normal  patches, a tag has a name, an author, a timestamp and
1044           an optional long description, but it does not  change  the  working
1045           tree.   A tag can have any name, but it is generally best to pick a
1046           naming scheme and stick to it.
1047
1048           By default a tag names the entire repository state at the time  the
1049           tag  is  created.  If the --ask-deps option is used, the patches to
1050           include as part of the tag can be explicitly selected.
1051
1052           The `darcs tag` command accepts the `--pipe` option, which  behaves
1053           as described in `darcs record`.
1054
1055
1056       darcs setpref <pref> <value>
1057           When  working  on  project with multiple repositories and contribu‐
1058           tors, it is sometimes desirable for a preference to be set  consis‐
1059           tently project-wide.  This is achieved by treating a preference set
1060           with `darcs setpref` as an unrecorded change,  which  can  then  be
1061           recorded and then treated like any other patch.
1062
1063           Valid preferences are:
1064
1065           * test -- a shell command that runs regression tests * predist -- a
1066           shell command to run before `darcs dist' * boringfile --  the  path
1067           to a version-controlled boring file * binariesfile -- the path to a
1068           version-controlled binaries file
1069
1070           For example, a project using GNU autotools, with a `make test` tar‐
1071           get to perform regression tests, might enable Darcs' integrated re‐
1072           gression testing with the following command:
1073
1074               darcs setpref test 'autoconf && ./configure  &&  make  &&  make
1075           test'
1076
1077           Note  that merging is not currently implemented for preferences: if
1078           two patches attempt to set the same preference, the last patch  ap‐
1079           plied  to the repository will always take precedence.  This is con‐
1080           sidered a low-priority bug, because preferences are seldom set.
1081
1082
1083
1084   Exchanging patches by e-mail:
1085       darcs send [repository]
1086           Send is used to prepare a bundle of patches that can be applied  to
1087           a  target  repository. Send accepts the URL of the repository as an
1088           argument. When called without an argument, send will use  the  most
1089           recent  repository  that  was either pushed to, pulled from or sent
1090           to. By default, the patch bundle is saved to a file,  although  you
1091           may directly send it by mail.
1092
1093           The  `--output`,  `--output-auto-name`,  and `--to` flags determine
1094           what darcs does with the patch bundle after  creating  it.  If  you
1095           provide  an  `--output` argument, the patch bundle is saved to that
1096           file. If you specify  `--output-auto-name`,  the  patch  bundle  is
1097           saved  to  a file with an automatically generated name. If you give
1098           one or more `--to` arguments, the bundle  of  patches  is  sent  to
1099           those  locations.   The  locations may either be email addresses or
1100           urls that the patch should be submitted to via HTTP.
1101
1102           If you provide the `--mail` flag, darcs will look at  the  contents
1103           of  the  `_darcs/prefs/email`  file in the target repository (if it
1104           exists), and send the patch by email to that address. In this case,
1105           you  may  use  the  `--cc`  option to specify additional recipients
1106           without overriding the default repository email address.
1107
1108           If `_darcs/prefs/post` exists in the target repository, darcs  will
1109           upload  to  the  URL  contained in that file, which may either be a
1110           `mailto:` URL, or an `http://` URL. In the latter case,  the  patch
1111           is posted to that URL.
1112
1113           If  there is no email address associated with the repository, darcs
1114           will prompt you for an email address.
1115
1116           Use the `--subject` flag to set the subject of  the  e-mail  to  be
1117           sent.  If  you  don't  provide a subject on the command line, darcs
1118           will make one up based on names of the patches in the patch bundle.
1119
1120           Use the `--in-reply-to` flag to set the In-Reply-To and  References
1121           headers  of the e-mail to be sent. By default no additional headers
1122           are included so e-mail will not be treated as reply by  mail  read‐
1123           ers.
1124
1125           If  you want to include a description or explanation along with the
1126           bundle of patches, you need  to  specify  the  `--edit-description`
1127           flag,  which  will  cause darcs to open up an editor with which you
1128           can compose a message to go along with your patches.
1129
1130           If you want to use a command different from  the  default  one  for
1131           sending email, you need to specify a command line with the `--send‐
1132           mail-command` option. The command  line  can  contain  some  format
1133           specifiers which are replaced by the actual values. Accepted format
1134           specifiers are `%s` for subject, `%t` for to, `%c` for cc, `%b` for
1135           the  body of the mail, `%f` for from, `%a` for the patch bundle and
1136           the same specifiers in uppercase for the URL-encoded values.  Addi‐
1137           tionally  you  can  add  `%<` to the end of the command line if the
1138           command expects the complete email message on standard input.  E.g.
1139           the command lines for evolution and msmtp look like this:
1140
1141               evolution "mailto:%T?subject=%S&attach=%A&cc=%C&body=%B"
1142               msmtp -t %<
1143
1144           Do  not confuse the `--author` options with the return address that
1145           `darcs send` will set for your patch bundle.
1146
1147           For example, if you have two email addresses A and B:
1148
1149             * If you use `--author A` but your machine is configured to send
1150               mail from address B by default, then the return address on your
1151               message will be B.
1152             * If you use `--from A` and your mail client supports setting the
1153               From: address arbitrarily (some non-Unix-like mail clients,
1154               especially, may not support this), then the return address will
1155               be A; if it does not support this, then the return address will
1156               be B.
1157             * If you supply neither `--from` nor `--author` then the return
1158               address will be B.
1159
1160           In addition, unless you specify the sendmail command with  `--send‐
1161           mail-command`, darcs sends email using the default email command on
1162           your computer. This default command is determined by  the  `config‐
1163           ure`  script.  Thus, on some non-Unix-like OSes, `--from` is likely
1164           to not work at all.
1165
1166           The --inherit-default option is meant to support a work flow  where
1167           you  have  different  branches  of the same upstream repository and
1168           want all your branches to have the same upstream repo  as  the  de‐
1169           faultrepo.  It  is most useful when enabled globally by adding 'ALL
1170           --inherit-default' to your ~/darcs/defaults file.
1171
1172           For the commands push, pull,  and  send  it  means  the  following:
1173           Changes the meaning of the --set-default option so that it sets the
1174           (local) defaultrepo to the defaultrepo of the remote repo,  instead
1175           of  the  remote  repo  itself. This happens only if the remote repo
1176           does have a defaultrepo set and both local and remote  repositories
1177           are  locally  valid  paths on the same host, otherwise fall back to
1178           the default behavior (--no-inherit-default).
1179
1180       darcs apply <patchfile>
1181           The `darcs apply` command takes a patch bundle and attempts to  in‐
1182           sert it into the current repository. In addition to invoking it di‐
1183           rectly on bundles created by `darcs send`, it is used internally by
1184           `darcs push` on the remote end of an SSH connection.
1185
1186           If no file is supplied, the bundle is read from standard input.
1187
1188           If  given  an  email instead of a patch bundle, Darcs will look for
1189           the bundle as a MIME attachment to that email. Currently this  will
1190           fail  if  the  MIME  boundary  is rewritten, such as in Courier and
1191           Mail.app.
1192
1193           If gpg(1) is installed, you can use `--verify pubring.gpg`  to  re‐
1194           ject bundles that aren't signed by a key in `pubring.gpg`.
1195
1196           If  `--test`  is  supplied  and  a test is defined (see `darcs set‐
1197           pref`), the bundle will be rejected if the test fails after  apply‐
1198           ing it.
1199
1200           A  patch  bundle  may  introduce unresolved conflicts with existing
1201           patches or with the working tree. By default, Darcs will  add  con‐
1202           flict markers (see `darcs mark-conflicts`).
1203
1204           The  `--external-merge` option lets you resolve these conflicts us‐
1205           ing an external merge tool. In the option, `%a`  is  replaced  with
1206           the common ancestor (merge base), `%1` with the first version, `%2`
1207           with the second version, and `%o` with the path where your resolved
1208           content should go. For example, to use the xxdiff visual merge tool
1209           you'd specify: `--external-merge='xxdiff -m -O -M %o %1 %a %2'`
1210
1211           The `--allow-conflicts` option will skip conflict marking; this  is
1212           useful  when  you  want  to  treat  a repository as just a bunch of
1213           patches, such as using `darcs pull --union` to download of your co-
1214           workers patches before going offline.
1215
1216           This  can  mess  up unrecorded changes in the working tree, forcing
1217           you to resolve the conflict immediately. To simply  reject  bundles
1218           that  introduce  unresolved conflicts, using the `--dont-allow-con‐
1219           flicts` option. Making this the default in push-based workflows  is
1220           strongly recommended.
1221
1222           Unlike  most Darcs commands, `darcs apply` defaults to `--all`. Use
1223           the `--interactive` option to pick which patches to  apply  from  a
1224           bundle.
1225
1226
1227   Other commands:
1228       darcs optimize subcommand
1229           The  `darcs  optimize` command modifies internal data structures of
1230           the current repository in an attempt to  reduce  its  resource  re‐
1231           quirements.
1232
1233           For further details see the descriptions of the subcommands.
1234
1235       darcs optimize clean
1236           Darcs normally does not delete hashed files that are no longer ref‐
1237           erenced by the current repository state. This command can be use to
1238           get rid of these files to save some disk space.
1239
1240       darcs optimize http
1241           Using  this option creates 'repository packs' that can dramatically
1242           speed up performance when a user does a `darcs clone` of the repos‐
1243           itory  over  HTTP.  To  make  use of packs, the clients must have a
1244           darcs of at least version 2.10.
1245
1246       darcs optimize reorder
1247           This command moves recent patches (those not included in the latest
1248           tag) to the "front", reducing the amount that a typical remote com‐
1249           mand needs to download. It should also reduce the CPU  time  needed
1250           for some operations.
1251
1252       darcs optimize enable-patch-index
1253           Build  the patch index, an internal data structure that accelerates
1254           commands that need to know what patches touch a given file. Such as
1255           annotate and log.
1256
1257       darcs optimize disable-patch-index
1258           Delete and stop maintaining the patch index from the repository.
1259
1260       darcs optimize compress
1261           By  default  patches  are compressed with zlib (RFC 1951) to reduce
1262           storage (and download) size. In exceptional circumstances,  it  may
1263           be  preferable  to avoid compression. In this case the `--dont-com‐
1264           press` option can be used (e.g. with `darcs record`) to avoid  com‐
1265           pression.
1266
1267           The  `darcs optimize uncompress` and `darcs optimize compress` com‐
1268           mands can be used to ensure existing patches in the current reposi‐
1269           tory are respectively uncompressed or compressed.
1270
1271       darcs optimize uncompress
1272           By  default  patches  are compressed with zlib (RFC 1951) to reduce
1273           storage (and download) size. In exceptional circumstances,  it  may
1274           be  preferable  to avoid compression. In this case the `--dont-com‐
1275           press` option can be used (e.g. with `darcs record`) to avoid  com‐
1276           pression.
1277
1278           The  `darcs optimize uncompress` and `darcs optimize compress` com‐
1279           mands can be used to ensure existing patches in the current reposi‐
1280           tory are respectively uncompressed or compressed.
1281
1282       darcs optimize relink
1283           The  `darcs  optimize  relink`  command hard-links patches that the
1284           current repository has in common with its peers.  Peers  are  those
1285           repositories  listed in `_darcs/prefs/sources`, or defined with the
1286           `--sibling` option (which can be used multiple times).
1287
1288           Darcs uses hard-links automatically,  so  this  command  is  rarely
1289           needed.  It  is  most  useful if you used `cp -r` instead of `darcs
1290           clone` to copy a repository, or if you pulled the same patch from a
1291           remote repository into multiple local repositories.
1292
1293       darcs optimize pristine
1294           This  command updates the format of `_darcs/pristine.hashed`, which
1295           was different before darcs 2.3.1.
1296
1297       darcs optimize upgrade
1298           Convert old-fashioned repositories to the  current  default  hashed
1299           format.
1300
1301       darcs optimize cache <directory> ...
1302           This  command  deletes  obsolete  files within the global cache. It
1303           takes  one  or  more  directories  as  arguments,  and  recursively
1304           searches all repositories within these directories. Then it deletes
1305           all files in the global cache not belonging to these  repositories.
1306           When  no directory is given, it searches repositories in the user's
1307           home directory.
1308
1309           It also automatically migrates the global cache  to  the  (default)
1310           bucketed format.
1311
1312       darcs dist
1313           `darcs  dist` creates a compressed archive in the repository's root
1314           directory, containing the recorded state of the working  tree  (un‐
1315           recorded  changes  and  the  `_darcs` directory are excluded).  The
1316           command accepts matchers to create an archive of some past  reposi‐
1317           tory state, for instance `--tag`.
1318
1319           By default, the archive (and the top-level directory within the ar‐
1320           chive) has the same name as the repository, but this can  be  over‐
1321           ridden with the `--dist-name` option.
1322
1323           If  a  predist  command  is set (see `darcs setpref`), that command
1324           will be run on the recorded state prior to archiving.  For example,
1325           autotools projects would set it to `autoconf && automake`.
1326
1327           If `--zip` is used, matchers and the predist command are ignored.
1328
1329
1330       darcs mark-conflicts [file|directory]...
1331           Darcs  requires human guidance to unify changes to the same part of
1332           a source file.  When a conflict first occurs, darcs  will  add  the
1333           initial  state  and  both choices to the working tree, delimited by
1334           the markers `v v v`, `=====`,  `* * *` and `^ ^ ^`, as follows:
1335
1336               v v v v v v v
1337               Initial state.
1338               =============
1339               First choice.
1340               *************
1341               Second choice.
1342               ^ ^ ^ ^ ^ ^ ^
1343
1344           However, you might revert or manually delete these markers  without
1345           actually  resolving  the  conflict.  In this case, `darcs mark-con‐
1346           flicts` is useful to show where are the unresolved  conflicts.   It
1347           is  also  useful  if  `darcs  apply` or `darcs pull` is called with
1348           `--allow-conflicts`, where conflicts aren't marked initially.
1349
1350           Unless you use the `--dry-run` flag, any unrecorded changes to  the
1351           affected files WILL be lost forever when you run this command!  You
1352           will be prompted for confirmation before this takes place.
1353
1354
1355       darcs repair
1356           The `darcs repair` command attempts to fix corruption in  the  cur‐
1357           rent  repository.  It works by successively applying all patches in
1358           the repository to an empty tree, each time checking that the  patch
1359           can be cleanly applied to the current pristine tree. If we detect a
1360           problem, we try to repair the patch. Finally we compare the  exist‐
1361           ing  pristine  with the newly reconstructed one and if they differ,
1362           replace the existing one.  Any  problem  encountered  is  reported.
1363           The  flag  `--dry-run` makes this operation read-only and causes it
1364           to exit unsuccessfully (with a non-zero exit status)  in  case  any
1365           problems are enountered.
1366
1367
1368       darcs convert subcommand
1369           Convert repositories between various formats.
1370
1371           See description of the subcommands for details.
1372
1373       darcs convert darcs-2 <source> [<destination>]
1374           This  command  converts a repository that uses the old patch seman‐
1375           tics `darcs-1` to a new repository with  current  `darcs-2`  seman‐
1376           tics.
1377
1378           WARNING:  the repository produced by this command is not understood
1379           by Darcs 1.x, and patches cannot be exchanged between  repositories
1380           in darcs-1 and darcs-2 formats.
1381
1382           Furthermore,  repositories created by different invocations of this
1383           command SHOULD NOT exchange patches.
1384
1385
1386
1387       darcs convert export
1388           This command enables you to export darcs repositories into git.
1389
1390           For a one-time export you can use the recipe:
1391
1392               $ cd repo
1393               $ git init ../mirror
1394               $ darcs convert export | (cd ../mirror && git fast-import)
1395
1396           For incremental export using marksfiles:
1397
1398               $ cd repo
1399               $ git init ../mirror
1400               $ touch ../mirror/git.marks
1401               $ darcs convert export --read-marks  darcs.marks  --write-marks
1402           darcs.marks
1403                  |  (cd ../mirror && git fast-import --import-marks=git.marks
1404           --export-marks=git.marks)
1405
1406           In the case of incremental  export,  be  careful  to  never  amend,
1407           delete or reorder patches in the source darcs repository.
1408
1409           Also,  be  aware that exporting a darcs repo to git will not be ex‐
1410           actly faithful in terms of history if the darcs repository contains
1411           conflicts.
1412
1413           Limitations:
1414
1415             *  Empty  directories are not supported by the fast-export proto‐
1416           col.
1417             * Unicode filenames are currently not correctly handled.
1418               See http://bugs.darcs.net/issue2359 .
1419
1420
1421       darcs convert import [<directory>]
1422           This command imports git repositories into new darcs  repositories.
1423           Further options are accepted (see `darcs help init`).
1424
1425           To convert a git repo to a new darcs one you may run:
1426
1427               $  (cd gitrepo && git fast-export --all -M) | darcs convert im‐
1428           port darcsmirror
1429
1430           WARNING: git repositories with branches will produce weird results,
1431                    use at your own risks.
1432
1433           Incremental import with marksfiles is currently not supported.
1434
1435
1436       darcs fetch [repository]...
1437           Fetch is similar to `pull`  except  that  it  does  not  apply  any
1438           patches  to  the  current repository. Instead, it generates a patch
1439           bundle that you can apply later with `apply`.
1440
1441           Fetch's behaviour is essentially similar to pull's, so please  con‐
1442           sult the help of `pull` to know more.
1443

ENVIRONMENT

1445   HOME and APPDATA
1446       Per-user  preferences  are  set  in  $HOME/.darcs  (on  Unix)  or %APP‐
1447       DATA%/darcs (on Windows).  This is also the  default  location  of  the
1448       cache.
1449
1450   DARCS_EDITOR, VISUAL, and EDITOR
1451       To  edit a patch description of email comment, Darcs will invoke an ex‐
1452       ternal editor.  Your preferred editor can be set as any of the environ‐
1453       ment variables $DARCS_EDITOR, $VISUAL or $EDITOR.  If none of these are
1454       set, nano is used.  If nano crashes or is not found in your  PATH,  vi,
1455       emacs, emacs -nw and (on Windows) edit are each tried in turn.
1456
1457   DARCS_PAGER and PAGER
1458       Darcs  will invoke a pager if the output of some command is longer than
1459       20 lines. Darcs will use the pager specified by $DARCS_PAGER or $PAGER.
1460       If neither are set, `less` will be used.
1461
1462   DARCS_DONT_COLOR, DARCS_ALWAYS_COLOR, and DARCS_ALTERNATIVE_COLOR
1463       If  the  terminal  understands  ANSI color escape sequences, darcs will
1464       highlight certain keywords and delimiters when  printing  patches,  and
1465       also print hunk lines in color according to whether they are removed or
1466       added. This can be turned  off  by  setting  the  environment  variable
1467       DARCS_DONT_COLOR  to  1.  If you use a pager that happens to understand
1468       ANSI colors, like `less -R`, darcs can be forced  always  to  highlight
1469       the  output by setting DARCS_ALWAYS_COLOR to 1. If you can't see colors
1470       you can set DARCS_ALTERNATIVE_COLOR to 1, and darcs will use ANSI codes
1471       for bold and reverse video instead of colors.
1472
1473   DARCS_DONT_ESCAPE_TRAILING_SPACES and DARCS_DONT_ESCAPE_TRAILING_CR
1474       By  default darcs will escape (by highlighting if possible) any kind of
1475       spaces at the end of lines when showing patch contents.  If  you  don't
1476       want  this  you  can  turn  it  off by setting DARCS_DONT_ESCAPE_TRAIL‐
1477       ING_SPACES to 1. A special  case  exists  for  only  carriage  returns:
1478       DARCS_DONT_ESCAPE_TRAILING_CR
1479
1480   DARCS_DONT_ESCAPE_ANYTHING,   DARCS_DONT_ESCAPE_EXTRA,  DARCS_ESCAPE_EXTRA,
1481       DARCS_DONT_ESCAPE_ISPRINT, and DARCS_ESCAPE_8BIT
1482       Darcs needs to escape certain characters when printing  patch  contents
1483       to  a terminal, depending on the encoding specified in your locale set‐
1484       ting.
1485
1486       By default, darcs assumes that your locale encoding is  ASCII  compati‐
1487       ble.   This  includes  UTF-8 and some 8-bit encodings like ISO/IEC-8859
1488       (including its variants). Since ASCII contains control characters  like
1489       backspace  (which  could  hide patch content from the user when printed
1490       literally to the terminal), and even ones that may  introduce  security
1491       risks  such as redirecting commands to the shell, darcs needs to escape
1492       such characters.  They are printed  as  `^<control  letter>`  or  `<hex
1493       code>`.  Darcs  also uses special markup for line endings that are pre‐
1494       ceeded by white space, since the white space  would  otherwise  not  be
1495       recognizable.
1496
1497       If  you  use an encoding that is not ASCII compatible, things are some‐
1498       what less smooth. Such encodings include UTF-16 and UTF-32, as well  as
1499       many  of  the encodings that became obsolete with unicode. In this case
1500       you have two options: you can set DARCS_DONT_ESCAPE_ANYTHING to 1. Then
1501       everything that doesn't flip code sets should work, and so will all the
1502       bells and whistles in your terminal. This environment variable can also
1503       be  handy  if  you  pipe  the output to a pager or external filter that
1504       knows better than darcs how to handle your encoding. Note that all  es‐
1505       caping,  including the special escaping of any line ending spaces, will
1506       be turned off by this setting.
1507
1508       Another possibility is to explicitly tell darcs to not escape or escape
1509       certain  bytes,  using  DARCS_DONT_ESCAPE_EXTRA and DARCS_ESCAPE_EXTRA.
1510       Their values should be strings consisting  of  the  verbatim  bytes  in
1511       question.  The  do-escapes take precedence over the dont-escapes. Space
1512       characters are still escaped at line endings though. The special  envi‐
1513       ronment  variable  DARCS_DONT_ESCAPE_TRAILING_CR  turns off escaping of
1514       carriage return last on the line (DOS style).
1515
1516       For historical reasons, darcs also  supports  DARCS_DONT_ESCAPE_ISPRINT
1517       and  DARCS_USE_ISPRINT  (which are synonyms). These make sense only for
1518       8-bit encodings like ISO-8859 and are no longer needed  since  nowadays
1519       darcs does the right thing here by default.
1520
1521       Finally,  if  you are in a highly security sensitive situation (or just
1522       paranoid for other reasons), you can set DARCS_ESCAPE_8BIT to  1.  This
1523       will  cause  darcs  to escape every non-ASCII byte in addition to ASCII
1524       control characters.
1525
1526   DARCS_TMPDIR and TMPDIR
1527       Darcs often creates temporary directories.   For  example,  the  `darcs
1528       diff`  command  creates two for the working trees to be diffed.  By de‐
1529       fault temporary directories are created in /tmp, or if that doesn't ex‐
1530       ist,  in  _darcs  (within the current repo).  This can be overridden by
1531       specifying some other directory in the file _darcs/prefs/tmpdir or  the
1532       environment variable $DARCS_TMPDIR or $TMPDIR.
1533
1534   DARCS_KEEP_TMPDIR
1535       If  the  environment  variable DARCS_KEEP_TMPDIR is defined, darcs will
1536       not remove the temporary directories it creates.  This is intended pri‐
1537       marily for debugging Darcs itself, but it can also be useful, for exam‐
1538       ple, to determine why your test preference  (see  `darcs  setpref`)  is
1539       failing when you run `darcs record`, but working when run manually.
1540
1541   DARCS_EMAIL and EMAIL
1542       Each  patch  is attributed to its author, usually by email address (for
1543       example, `Fred Bloggs <fred@example.net>`).   Darcs  looks  in  several
1544       places  for  this  author  string:  the  `--author`  option,  the files
1545       `_darcs/prefs/author` (in the  repository)  and  `~/.darcs/author`  (in
1546       your  home directory), and the environment variables `$DARCS_EMAIL` and
1547       `$EMAIL`.  If none of those exist, Darcs will prompt you for an  author
1548       string  and  write it to `~/.darcs/author`.  Note that if you have more
1549       than one email address, you can put them all in `~/.darcs/author`,  one
1550       author per line.  Darcs will still prompt you for an author, but it al‐
1551       lows you to select from the list, or to type in an alternative.
1552
1553   SENDMAIL
1554       On Unix, the `darcs send` command relies on sendmail(8).  The  `--send‐
1555       mail-command`  or $SENDMAIL environment variable can be used to provide
1556       an explicit path to this  program;  otherwise  the  standard  locations
1557       /usr/sbin/sendmail and /usr/lib/sendmail will be tried.
1558
1559   DARCS_SLOPPY_LOCKS
1560       If on some filesystems you get an error of the kind:
1561
1562           darcs: takeLock [...]: atomic_create [...]: unsupported operation
1563
1564       you may want to try to export DARCS_SLOPPY_LOCKS=True.
1565
1566   DARCS_SSH
1567       Repositories  of  the  form  [user@]host:[dir]  are  taken to be remote
1568       repositories, which Darcs accesses with the external program ssh(1).
1569
1570       The environment variable $DARCS_SSH can be used to specify an  alterna‐
1571       tive  SSH  client.  Arguments may be included, separated by whitespace.
1572       The value is not interpreted by a shell, so shell constructs cannot  be
1573       used; in particular, it is not possible for the program name to contain
1574       whitespace by using quoting or escaping.
1575
1576   DARCS_SCP and DARCS_SFTP
1577       When reading from a remote repository, Darcs will attempt to run `darcs
1578       transfer-mode`  on  the remote host.  This will fail if the remote host
1579       only has Darcs 1 installed, doesn't have Darcs  installed  at  all,  or
1580       only allows SFTP.
1581
1582       If  transfer-mode  fails,  Darcs  will fall back on scp(1) and sftp(1).
1583       The commands invoked can be customized with the  environment  variables
1584       $DARCS_SCP  and $DARCS_SFTP respectively, which behave like $DARCS_SSH.
1585       If the remote end allows only sftp, try setting DARCS_SCP=sftp.
1586
1587   SSH_PORT
1588       If this environment variable is set, it will be used as the port number
1589       for  all  SSH  calls  made by Darcs (when accessing remote repositories
1590       over SSH).  This is useful if your SSH server does not run on  the  de‐
1591       fault  port,  and  your  SSH  client  does  not  support ssh_config(5).
1592       OpenSSH users will probably prefer to put something like `Host  *.exam‐
1593       ple.net Port 443` into their ~/.ssh/config file.
1594
1595   HTTP_PROXY, HTTPS_PROXY, FTP_PROXY, ALL_PROXY, and NO_PROXY
1596       If  Darcs was built with libcurl, the environment variables HTTP_PROXY,
1597       HTTPS_PROXY and FTP_PROXY can be set to the URL of a proxy in the form
1598
1599           [protocol://]<host>[:port]
1600
1601       In which case libcurl will use the proxy for  the  associated  protocol
1602       (HTTP,  HTTPS  and FTP). The environment variable ALL_PROXY can be used
1603       to set a single proxy for all libcurl requests.
1604
1605       If the environment variable NO_PROXY is a comma-separated list of  host
1606       names,  access  to those hosts will bypass proxies defined by the above
1607       variables. For example, it is quite common to avoid  proxying  requests
1608       to machines on the local network with
1609
1610           NO_PROXY=localhost,*.localdomain
1611
1612       For compatibility with lynx et al, lowercase equivalents of these envi‐
1613       ronment variables (e.g. $http_proxy) are also understood and  are  used
1614       in preference to the uppercase versions.
1615
1616       If  Darcs  was  not built with libcurl, all these environment variables
1617       are silently ignored, and there is no way to use a web proxy.
1618
1619   DARCS_PROXYUSERPWD
1620       If Darcs was built with libcurl, and you are using a web proxy that re‐
1621       quires  authentication, you can set the $DARCS_PROXYUSERPWD environment
1622       variable to the username and password expected by the proxy,  separated
1623       by a colon.  This environment variable is silently ignored if Darcs was
1624       not built with libcurl.
1625
1626   DARCS_CONNECTION_TIMEOUT
1627       Set the maximum time in seconds that darcs  allows  and  connection  to
1628       take.  If  the  variable  is  not specified the default are 30 seconds.
1629       This option only works with curl.
1630

FILES

1632   _darcs/prefs/motd
1633       The `_darcs/prefs/motd` file may contain a 'message of the  day'  which
1634       will  be displayed to users who clone or pull from the repository with‐
1635       out the `--quiet` option.
1636
1637
1638   _darcs/prefs/email
1639       The `_darcs/prefs/email` file is used to provide the e-mail address for
1640       your  repository  that  others  will use when they `darcs send` a patch
1641       back to you. The contents of the file should simply be  an  e-mail  ad‐
1642       dress.
1643
1644
1645   _darcs/prefs/post
1646       If  `_darcs/prefs/post`  exists in the target repository, `darcs send `
1647       will upload to the URL contained in that file, which may  either  be  a
1648       `mailto:`  URL,  or  an `http://` URL. In the latter case, the patch is
1649       posted to that URL.
1650
1651
1652   _darcs/prefs/author
1653       The `_darcs/prefs/author` file contains the email address (or name)  to
1654       be  used  as  the  author when patches are recorded in this repository,
1655       e.g. `David Roundy <droundy@abridgegame.org>`. This file overrides  the
1656       contents of the environment variables `$DARCS_EMAIL` and `$EMAIL`.
1657
1658
1659   _darcs/prefs/defaults
1660       Default options for darcs commands. Each line of this file has the fol‐
1661       lowing form:
1662
1663           COMMAND FLAG VALUE
1664
1665       where `COMMAND` is either the name of the command to which the  default
1666       applies,  or `ALL` to indicate that the default applies to all commands
1667       accepting that flag. The `FLAG` term is the name of the  long  argument
1668       option  with  or  without the `--`, i.e. `verbose` or `--verbose`.  Fi‐
1669       nally, the `VALUE` option can be omitted if the flag does not involve a
1670       value.  If  the  value  has spaces in it, use single quotes, not double
1671       quotes, to surround it. Each line only takes one flag. To set  multiple
1672       defaults  for  the  same  command (or for `ALL` commands), use multiple
1673       lines.
1674
1675       Options listed in the defaults file are just that:  defaults.  You  can
1676       override any default on the command line.
1677
1678       Note  that  the  use of `ALL` easily can have unpredicted consequences,
1679       especially if commands in newer versions of darcs  accepts  flags  that
1680       they did not in previous versions. Only use safe flags with `ALL`.
1681
1682       For  example, if your system clock is bizarre, you could instruct darcs
1683       to always ignore the file modification times by  adding  the  following
1684       line:
1685
1686           ALL ignore-times
1687
1688       There  are  some  options  which  are  meant  specifically  for  use in
1689       `_darcs/prefs/defaults`. One of them is `--disable`. As the  name  sug‐
1690       gests,  this option will disable every command that got it as argument.
1691       So, if you are afraid that you could damage your repositories by  inad‐
1692       vertent use of a command like amend, add the following line:
1693
1694           amend disable
1695
1696       A  global  defaults file can be created with the name `.darcs/defaults`
1697       in your home directory. In case of conflicts, the defaults for  a  spe‐
1698       cific repository take precedence.
1699
1700
1701   _darcs/prefs/boring
1702       The  `_darcs/prefs/boring`  file  may contain a list of regular expres‐
1703       sions describing files, such as object files, that you do not expect to
1704       add  to your project. A newly created repository has a boring file that
1705       includes many common source control, backup,  temporary,  and  compiled
1706       files.
1707
1708       You  may want to have the boring file under version control. To do this
1709       you can use darcs setpref to set the value 'boringfile' to the name  of
1710       your  desired  boring  file  (e.g.  `darcs setpref boringfile .boring`,
1711       where `.boring` is the repository path of a file that  has  been  darcs
1712       added   to   your  repository).  The  boringfile  preference  overrides
1713       `_darcs/prefs/boring`, so be sure to copy that file to the boringfile.
1714
1715       You can also set up a 'boring' regexps file  in  your  home  directory,
1716       named  `~/.darcs/boring`,  which  will  be  used with all of your darcs
1717       repositories.
1718
1719       Any file not already managed by darcs and whose repository path matches
1720       any  of the boring regular expressions is considered boring. The boring
1721       file is used to filter the files provided to darcs add, to allow you to
1722       use  a simple `darcs add newdir newdir/*` without accidentally adding a
1723       bunch of object files. It is also used when the `--look-for-adds`  flag
1724       is given to whatsnew or record. Note that once a file has been added to
1725       darcs, it is not considered boring, even if it matches the boring  file
1726       filter.
1727
1728
1729   _darcs/prefs/binaries
1730       The  `_darcs/prefs/binaries` file may contain a list of regular expres‐
1731       sions describing files that should be treated as  binary  files  rather
1732       than text files. Darcs automatically treats files containing characters
1733       `^Z` or `NULL` within the first 4096 bytes as being binary files.   You
1734       probably will want to have the binaries file under version control.  To
1735       do this you can use `darcs setpref` to set the value 'binariesfile'  to
1736       the  name  of your desired binaries file (e.g. `darcs setpref binaries‐
1737       file ./.binaries`, where `.binaries` is a  file  that  has  been  darcs
1738       added to your repository). As with the boring file, you can also set up
1739       a `~/.darcs/binaries` file if you like.
1740
1741
1742   _darcs/prefs/defaultrepo
1743       Contains the URL of the default  remote  repository  used  by  commands
1744       `pull`, `push`, `send` and `optimize relink`. Darcs edits this file au‐
1745       tomatically or when the flag `--set-default` is used.
1746
1747
1748   _darcs/prefs/sources
1749       Besides the defaultrepo, darcs also keeps track of any other  locations
1750       used in commands for exchanging patches (e.g. push, pull, send).  These
1751       are subsequently used as alternatives from which to  download  patches.
1752       The file contains lines such as:
1753
1754           cache:/home/droundy/.cache/darcs
1755           readonly:/home/otheruser/.cache/darcs
1756           repo:http://darcs.net
1757
1758       The  prefix  `cache:` indicates that darcs can use this as a read-write
1759       cache for patches, `read-only:` indicates a cache that  is  only  read‐
1760       able,  and `repo:` denotes a (possibly remote) repository. The order of
1761       the entries is immaterial: darcs will always try local paths before re‐
1762       mote ones, and only local ones will be used as potentially writable.
1763
1764       A  global  cache  is  enabled  by  default in your home directory under
1765       `.cache/darcs` (older versions of darcs used `.darcs/cache` for  this),
1766       or  `$XDG_CACHE_HOME/darcs`  if  the  environment  variable is set, see
1767       https://specifications.freedesktop.org/basedir-spec/basedir-spec-lat
1768       est.html.   The cache allows darcs to avoid re-downloading patches (for
1769       example, when doing a second darcs clone of the same  repository),  and
1770       also allows darcs to use hard links to reduce disk usage.
1771
1772       Note  that  the cache directory should reside on the same filesystem as
1773       your repositories, so you may need to vary this. You can also use  mul‐
1774       tiple  cache  directories on different filesystems, if you have several
1775       filesystems on which you use darcs.
1776
1777       While darcs automatically adds entries  to  `_darcs/prefs/sources`,  it
1778       does  not  currently  remove them. If one or more of the entries aren't
1779       accessible (e.g. because they resided on a removable media), then darcs
1780       will  bugger you with a hint, suggesting you remove those entries. This
1781       is done because certain systems have extremely long timeouts associated
1782       with  some  remotely  accessible  media  (e.g.  NFS over automounter on
1783       Linux), which can slow down darcs operations considerably. On the other
1784       hand, when you clone a repo with --lazy from a no longer accessible lo‐
1785       cation, then the hint may give you an idea where the patches  could  be
1786       found, so you can try to restore access to them.
1787
1788
1789   _darcs/prefs/tmpdir
1790       By  default  temporary  directories  are  created in `/tmp`, or if that
1791       doesn't exist, in `_darcs` (within the  current  repo).   This  can  be
1792       overridden   by   specifying   some   other   directory   in  the  file
1793       `_darcs/prefs/tmpdir` or the environment  variable  `$DARCS_TMPDIR`  or
1794       `$TMPDIR`.
1795
1796
1797   _darcs/prefs/prefs
1798       Contains  the  preferences set by the command `darcs setprefs`.  Do not
1799       edit manually.
1800
1801

BUGS

1803       At http://bugs.darcs.net/ you can find a list of known bugs  in  Darcs.
1804       Unknown  bugs  can be reported at that site (after creating an account)
1805       or by emailing the report to bugs@darcs.net.
1806

SEE ALSO

1808       The Darcs website provides a lot of additional information.  It can  be
1809       found at http://darcs.net/
1810

LICENSE

1812       Darcs  is free software; you can redistribute it and/or modify it under
1813       the terms of the GNU General Public License as published  by  the  Free
1814       Software  Foundation;  either  version 2, or (at your option) any later
1815       version.
1816
1817
1818
1819                               2.16.5 (release)                       DARCS(1)
Impressum