`,(      !"#$%&'()*+,-./0123456789 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !!!!!!!!!!!!"""""""""""""""""""""""""""""""""####$$$$$$$$$$$$$$%%& & ' ' ' ''''''''''''''''''' '!'"'#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~***********************************************++,--------------------------------............................/////////////////////00111111 1 1 1 1 1122333333333333333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H5I5J5K5L5M5N5O5P5Q5R5S5T5U6V6W7X7Y7Z7[7\7]7^8_8`8a8b8c8d8e8f8g8h8i8j8k8l8m8n8o8p8q8r8s8t8u9v9w9x9y9z9{9|9}9~999:;;;;;;;;;;;;;;;;;;<<<<<<<<<<===>>>?????????????????@@@@@@@@ABBCCCCCCCCDDDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEFFFFFFGGGGGGGGGGGGGGHHHHHHHHHHHII I I I I IIIIIIJJJJJJJJJJJJJ J!K"K#K$K%L&L'L(L)L*L+L,L-L.L/L0L1L2M3M4M5M6N7N8N9N:N;N<N=N>N?N@NANBNCNDNENFOGOHOIOJOKOLOMONOOOPOQOROSOTOUOVOWOXOYOZO[O\O]O^O_O`OaObOcOdOeOfOgOhOiOjOkOlOmOnOoOpOqOrOsOtOuOvOwOxOyOzO{O|P}P~PPQQQRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS S S S S SSSSSSSSSSSSSSSSSSS S!S"T#T$T%T&T'T(T)T*T+T,T-T.T/T0T1T2T3T4T5T6T7T8T9T:T;T<T=T>T?T@TATBTCTDTETFTGTHTITJTKTLUMUNUOUPVQVRVSWTWUXVXWXXXYXZY[Y\Y]Y^Y_Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpZqZrZsZtZuZvZwZxZyZzZ{Z|[}[~\]]^^^^^^_`abccddeeffgghijkklllllmnnnoopqqrsssstuvwxyyyz{{|}~Read/2interpret a date string, assuming UTC if timezone " is not specified in the string "Case-insensitive variant of Parsec's  function. "Case-insensitive variant of Parsec's  function. Match a parser at least n times. Match a parser at least n times, but no more than m times.  !"#$ !"#$ "!#$ !"#$%%< returns a filter function that tells if a char is a member I of the regChar expression or not. The regChar expression is basically a 9 set of chars, but it can contain ranges with use of the  (dash), and @ it can also be specified as a complement set by prefixing with  C (caret). The dash and caret, as well as the backslash, can all be = escaped with a backslash to suppress their special meaning.  NOTE: The ; (dot) is allowed to be escaped. It has no special meaning ' if it is not escaped, but the default  filename_toks in 4 Darcs.Commands.Replace uses an escaped dot (WHY?). 7 unescapes whitespace, which is escaped in the replace J patch file format. It will also unescape escaped carets, which is useful G for escaping a leading caret that should not invert the regChars. All . other escapes are left for the unescaping in . 3 assembles the filter function. It handles special G chars, and also unescaping of escaped special chars. If a non-special 0 char is still escaped by now we get a failure. %%% & 1 singular This (Noun "batch") "" == "this batch" 4 plural This (Noun "batch") "" == "these batches" '(8This only distinguishes between nouns with a final -ch,  and nouns which do not. > More irregular nouns will just need to have their own type ' plural (Noun "batch") "" == "batches" $ plural (Noun "bat") "" == "bats" - plural (Noun "mouse") "" == "mouses" -- :-( )*0Things that have a plural and singular spelling +,- - englishNum 0 (Noun "watch") "" == "watches" + englishNum 1 (Noun "watch") "" == "watch" - englishNum 2 (Noun "watch") "" == "watches" ./-Given a list of things, combine them thusly: 6 orClauses ["foo", "bar", "baz"] == "foo, bar or baz" 0As *, with a different separator for the last  | interspersal. 1 &'()*+,-./01 -*+,()&'/.01 &''())*+,+,-./012 22 2 345678345678486573345678 $99 abstracts over > and =$ for code constructing these values : An empty 9, e.g. NilFL or NilRL ;A 9O constructed from a completely polymorphic value, for example the constructors  for primitive patches < Compose two 9 values together, e.g. ' joinGap (+>+)' or ' joinGap (:>:)' =' FreeLeft p' is 'f orall y . exists x . p x y' A In other words the caller is free to specify the right witness, . and then the left witness is an existential. H Note that the order of the type constructors is important for ensuring  that x is dependent on the y that is supplied. >' FreeLeft p' is 'f orall x . exists y . p x y' @ In other words the caller is free to specify the left witness, / and then the right witness is an existential. H Note that the order of the type constructors is important for ensuring  that y is dependent on the x that is supplied.  This is why 1 is needed, rather than writing the more obvious  'Sealed (Poly p)'5 which would notionally have the same quantification  of the type witnesses. ' is a type level composition operator.  For example, 'Stepped Sealed p' is equivalent to 'lambda x . Sealed (p x)'  is similar to DC, but the type argument is C universally quantified instead of being existentially quantified. ?@ABCDEFGHIJKLMNOPQRS Unwrap a > value T Unwrap a = value 9:;<=>?@ABCDEFGHIJKLMNOPQRSTCDEKNHIJABFPQ?@GROLM9:;<>S=T9:;<:;<=>?@@ABBCDDEFGHIJKLMNOPQRST GUAn  MCalenderTime is an underspecified  D It is used for parsing dates. For example, if you want to parse  the date ' 4 January',, it may be useful to underspecify the year  by setting it to '. This uses almost the same fields as  $, a notable exception being that we  introduce c/ to indicate if a weekday was specified or not VWXYZ[\]^_`abcdeRead/2interpret a date string, assuming UTC if timezone ' is not specified in the string (see ) 8 Warning! This errors out if we fail to interpret the  date f>Convert a date string into ISO 8601 format (yyyymmdd variant) : assuming local timezone if not specified in the string = Warning! This errors out if we fail to interpret the date gRead/8interpret a date string, assuming local timezone if not  specified in the string h5Return the local timezone offset from UTC in seconds Parse a date string with i = Warning! This errors out if we fail to interpret the date 5 Uses its first argument as the default time zone. i4Parse a date string, assuming a default timezone if ; the date string does not specify one. The date formats  understood are those of  and   Display a $ in the ISO 8601 format without any # separators, e.g. 20080825142503 j+The current time in the format returned by  "Case-insensitive variant of Parsec's  function.  "Case-insensitive variant of Parsec's  function.  Match a parser at least n times.  Match a parser at least n times, but no more than m times. 6Try each of these date parsers in the following order        ' oldDateTime  CVS-style date/ times, e.g.  20070825 14:25:39 GMT + Note that time-zones are optional here. "Old"-style dates, e.g.  Tue Jan 3 14:08:07 EST 1999 $ darcs-doc: Question (what does the old stand for really?)  <ISO 8601 dates and times. Please note the following flaws: I am reluctant to implement:  years > 9999 > truncated representations with implied century (89 for 1989) I have not implemented: # repeated durations (not relevant) / lowest order component fractions in intervals  negative dates (BC) .I have not verified or have left too relaxed: # the difference between 24h and 0h D allows stuff like 2005-1212; either you use the hyphen all the way  (2005-12-12) or you don''t use it at all (20051212), but you don't use ' it halfway, likewise with time - No bounds checking whatsoever on intervals! K (next action: read iso doc to see if bounds-checking required?) -} Three types of ISO 8601 date: 8 calendar date, e.g., 1997-07-17, 1997-07, 199707, 1997 % week+day in year, e.g., 1997-W32-4  day in year, e.g, 1997-273 9Note that this returns a function which sets the time on  another calendar (see   for a list of  flaws kIntervals in ISO 8601, e.g.,  2008-09/2012-08-17T16:30  2008-09/P2Y11MT16H30M  P2Y11MT16H30M/2012-08-17T16:30 See l lDurations in ISO 8601, e.g.,  P4Y (four years)  P5M (five months) $ P4Y5M (four years and five months) 4 P4YT3H6S (four years, three hours and six seconds)  p xs% parses a string with the obligatory  parser p+. If this suceeds, it continues on to the 5 rest of the input using the next parsers down the 7 chain. Each part of the chain consists of a parser 4 for a separator and for the content itself. The  separator is optional. 6A good use of this function is to help in parsing ISO 6 ISO 8601 dates and times. For example, the parser  )optchain year [(dash, month), (dash, day)] accepts : dates like 2007 (only the year is used), 2007-07 (only 8 the year and month), 200707 (only the year and month 9 with no separator), 2007-07-19 (year, month and day). One or more space. = WARNING! This only matches on the space character, not on  whitespace in general <English three-letter day abbreviations (e.g. Mon, Tue, Wed) Four-digit year ;One or two digit month (e.g. 3 for March, 11 for November) !January is 1, February is 2, etc >English three-letter month abbreviations (e.g. Jan, Feb, Mar) !day in one or two digit notation hour in two-digit notation minute in two-digit notation second in two-digit notation limited timezone support  +HHMM or -HHMM  Universal timezones: UTC, UT  Zones from GNU coreutilslib"getdate.y, less half-hour ones --  sorry Newfies. @ any sequence of alphabetic characters (WARNING! treated as 0!) mBIn English, either a date followed by a time, or vice-versa, e.g,  yesterday at noon  yesterday tea time  12:00 yesterday See   and !  Uses its first argument as now", i.e. the time relative to which   yesterday, today etc are to be interpreted  ;Specific dates in English as specific points of time, e.g,  today  yesterday 1 last week (i.e. the beginning of that interval)  4 months ago (via ") The first argument is now. "1English expressions for points in the past, e.g.  4 months ago  1 day ago  day before yesterday See # n+English expressions for intervals of time, 3 before tea time (i.e. from the beginning of time) ( after 14:00 last month (i.e. till now) " between last year and last month 4 in the last three months (i.e. from then till now) " 4 months ago (i.e. till now; see ") o.Durations in English that begin with the word "last",  E.g. " last 4 months"$ is treated as the duration between  4 months ago and now ! Either an  or one of several common ! English time expressions like noon or 'tea time' #Some English durations, e.g.  day  4 score  7 years  12 months 7This is not particularly strict about what it accepts.  For example, 7 yeares, 4 scores or 1 days are  just fine. $,The very beginning of time, i.e. 1970-01-01 pTrivially convert a  to a fully specified  VU (note that this sets the c flag to  False qReturns the first  that falls within a VU D This is only unsafe in the sense that it plugs in default values + for fields that have not been set, e.g. January for the month  or 0 for the seconds field. 0 Maybe we should rename it something happier.  See also t %&rs'(( i d multiplies every field in d with i 6FIXME; this seems like a terrible idea! it seems like = we should get rid of it if at all possible, maybe adding an  invertDiff function )tDSet a calendar to UTC time any eliminate any inconsistencies within / (for example, where the weekday is given as Thursday, but this does not ; match what the numerical date would lead one to expect) ** c mc replaces any field which is  specified in mc with the equivalent field in c  -copyCalendar c nullMCalendar == nullMCalendar uZero the time fields of a  !UVWXYZ[\]^_`abcdefghijklmnopqrstu!jgeihmnoklftUVWXYZ[\]^_`abcsrpqud!UVWXYZ[\]^_`abcVWXYZ[\]^_`abcdefghijklmnopqrstu vA v. combines a potential parse for a date string  with a matcher) function that operates on a given date. 6 We use an existential type on the matcher to allow ? the date string to either be interpreted as a point in time  or as an interval. w++ x y is true if x <= y < (x + one_day) * Note that this converts the two dates to  ClockTime to avoid  any timezone-related errors ,, x1 x2 y is true if x1 <= y < x2  Since x1 and x2- can be underspecified, we simply assume the ) first date that they could stand for. -- x1 x2 y is true if x1 <= y < x2 .. x1 x2 y is true if x1 <= y < x2 //  range exact is true if exact falls . within the a range of dates represented by range. D The purpose of this function is to support matching on partially A specified dates. That is, if you only specify the date 2007, B this function should match any dates within that year. On the D other hand, if you specify 2007-01, this function will match any B dates within that month. This function only matches up to the  second. xx s return the first matcher in  y that can parse s yy d+ returns the list of matchers that will be  applied on d0. If you wish to extend the date parsing code, > this will likely be the function that you modify to do so. 00 ms' returns the first successful match in ms * It is an error if there are no matches 1vwxyxvwyvwwxy 23z?Registers an IO action to run just before darcs exits. Useful < for removing temporary files and directories, for example. {4|}~5678z{|}~z{}~|z{|}~portable experimentaldroundy@abridgegame.org'9:;=Do something with the internals of a PackedString. Beware of  altering the contents! EreadIntPS skips any whitespace at the beginning of its argument, and F reads an Int from the beginning of the PackedString. If there is no J integer at the beginning of the string, it returns Nothing, otherwise it E just returns the int read, along with a B.ByteString containing the  remainder of its input.  Decodes a  ByteString containing UTF-8 to a <. Decoding errors are & flagged with the U+FFFD character. =>? efficiently returns the  ByteString argument with E white space Chars removed from the front. It is more efficient than 1 calling dropWhile for removing whitespace. I.e.  dropWhile isSpace == dropSpace 6 returns the pair of ByteStrings when the argument is + broken at the first whitespace byte. I.e.  break isSpace == breakSpace @$This function acts exactly like the Prelude unlines function, or like Data.ByteString.Char8 A-, but with one important difference: it will <produce a string which may not end with a newline! That is:   unlinesPS ["foo", "bar"]  evaluates to "foo\nbar", not "foo\nbar\n""! This point should hold true for  as well. TODO: rename this function. QDecompress the given bytestring into a lazy list of chunks, along with a boolean 7 flag indicating (if True) that the CRC was corrupted. R Inspecting the flag will cause the entire list of chunks to be evaluated (but if I you throw away the list immediately this should run in constant space). GRead an entire file, which may or may not be gzip compressed, directly  into a B. CGRead standard input, which may or may not be gzip compressed, directly  into a B. ;Like readFilePS, this reads an entire file directly into a  B7, but it is even more efficient. It involves directly J mapping the file to memory. This has the advantage that the contents of I the file never need to be copied. Also, under memory pressure the page J may simply be discarded, wile in the case of readFilePS it would need to G be written to swap. If you read many small files, mmapFilePS will be I less memory-efficient than readFilePS, since each mmapFilePS takes up a I separate page of memory. Also, you can run into bus errors if the file  is modified. NOTE: as with  readFilePS, the string representation in ' the file is assumed to be ISO-8859-1. EbetweenLinesPS returns the B.ByteString between the two lines given, # or Nothing if they do not appear. @Decode a ByteString to a String according to the current locale N unsafePerformIO in the locale function is ratified by the fact that GHC 6.12 J and above also supply locale conversion with functions with a pure type. 7 Unrecognized byte sequences in the input are skipped. EEncode a String to a ByteString with latin1 (i.e., the values of the L characters become the values of the bytes; if a character value is greater < than 255, its byte becomes the character value modulo 256) @Encode a String to a ByteString according to the current locale Take a String: that represents byte values and re-decode it acording to  the current locale. JConvert a bytestring representing a text from UTF-8 to the current locale   D8 translates whitespace in filenames to a darcs-specific 1 format (numerical representation according to E surrounded by M backslashes). Note that backslashes are also escaped since they are used  in the encoding. / encodeWhite "hello there" == "hello\32\there" / encodeWhite "hello\there" == "hello\92\there"  interprets the Darcs-specific "encoded" filenames  produced by  0 decodeWhite "hello\32\there" == "hello there" 0 decodeWhite "hello\92\there" == "hello\there" ; decodeWhite "hello\there" == error "malformed filename" FG!Split a file path at the slashes HI JKJ" is the Strict Monad for parsing. K&Applies a parsing function inside the  monad. ,Applies a parsing function, that can return ,  inside the  monad. AAllows for the inspection of the input that is yet to be parsed. / checks if the next space delimited token from % the input stream matches a specific L.  Uses M inside  to handle failed matches, so ' that it always returns () on success. 2 fetches the next whitespace delimited token from - from the input and checks if it matches the < input.  Uses M inside  to handle failed matches, so ' that it always returns () on success. 9 looks for optional spaces followed by the end of input.  Uses M inside  to handle failed matches, so ' that it always returns () on success. Checks if any of the input <s match the next , space delimited token in the input stream.  Uses M inside  to handle failed matches, $ on success it returns the matching <. 8 drops leading spaces and then breaks the string at the  next space. Returns  when the string is empty after B dropping leading spaces, otherwise it returns the first sequence / of non-spaces and the remainder of the input. 8Applies a function to the input stream and discards the  result of the function. * applies the parser functions to a string ; and checks that each parser produced a result as it goes.  The strictness is in the  instance for KJ. !NOPQRSTUVWbeginTedious k. starts a tedious process and registers it in  X with the key k(. A tedious process is one for which we  want a progress indicator. Wouldn'*t it be safer if it had type String -> IO ? ProgressDataKey, so that we can ensure there is no collision? K What happens if you call beginTedious twice with the same string, without % calling endTedious in the meantime?  endTedious k* unregisters the tedious process with key k , printing Done if such  a tedious process exists. YZ[\X]^_`abc    de efgf is a wrapper around ' [Printable] -> [Printable]' which allows # for empty Documents. The simplest  Documents are built from <s  using . hg@A set of printers to print different types of text to a handle. iEThe State associated with a doc. Contains a set of printers for each 1 hanlde, and the current prefix of the document. jkla  is a bit of enriched text. s get concatanated using  +, which is right-associative. A 4 is either a String, a packed string, or a chunk of ! text with both representations. mm is the  representation of a space. nn is the  representation of a newline. Minimal %s representing the common characters ,   , , and .  is the  that represents "("  is the  that represents ")"  doc returns a  with the content of doc put within  a pair of parenthesis. / puts a doc on stdout using the given printer. 3 puts a doc, followed by a newline on stdout using  the given printer. / puts a doc on stdout using the simple printer &. 3 puts a doc, followed by a newline on stdout using  &  hputDocWith9 puts a doc on the given handle using the given printer.  hputDocLnWith0 puts a doc, followed by a newline on the given ! handle using the given printer. hputDoc& puts a doc on the given handle using & oo h prints a list of s to the handle h phPrintPrintable h prints a  to the handle h.  renders a  into a < with control codes for the  special features of the doc.   renders a  into a < using a given set of printers.   renders a  into B with control codes for the ' special features of the Doc. See also  readerString.   renders a  into a list of  PackedStrings, one for each line.  renders a doc into a B using a given set of printers.   renders a  into a list of  PackedStrings, one for each A chunk of text that was added to the doc, using the given set of  printers. q renders a  into a list of  Printables using a set of B printers. Each item of the list corresponds to a string that was  added to the doc. r builds a Doc from a < and a B representing 1 the same text, but does not check that they do.  builds a  from a <. The string is stored in the  Doc as both a String and a B.  builds a  from a B using %  builds a  from a B using '  creates a  with invisible text from a B  creates a " representing a user chunk from a B. . creates a Doc containing just one character.  creates a  from a String, using %.  creates a  from a <, using ' directly  creates a " containing invisible text from a String  creates a  containing hidden text from a String  creates a  containing a user chunk from a String  creates a  containing blue text from a String  !"## creates a  containing colored text from a String $$ n s is a  representing s line-wrapped at n characters %st' printable x' creates a  from any . uv&& is a  which uses the set 'simplePriners\'' on any  handle. wGA set of default printers suitable for any handle. Does not use color. '' is the simplest  : it just concatenates together  the pieces of the  (( is the # for hidden text. It just replaces  the document with ). It'%s useful to have a printer that doesn't H actually do anything because this allows you to have tunable policies, + for example, only printing some text if it's to the terminal, but not  if it's to a file or vice-versa. ) The empty . *+'( )'# is the concatenation operator for s ,a , b is a if it is not empty, else b. -a - b is a followed by a space, then b. .a . b is a above b. // piles vertically a list of s. 00 piles vertically a list of %s leaving a blank line between each. 11' concatenates (horizontally) a list of s S      !"#$%&'()*+,-./01S     #%$ !"&('*)+,-./01S      !"#$%&'()*+,-./01x23y45234523452345B6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwB6789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwBNPOQJKHIFGDEBC9;:687LMqmjahfgncdeirsolkpZXY]^[\V_`tu<=>?vWw@ASTRUbB687789;::;<=>?=>?@AABCCDEEFGGHIIJKKLMMNPOOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvw xyz{|}~ xyz{|}~ xy}~z|{ xyyz{|}~$z{|}~EThis is for situations where a string (e.g. a command line argument)  may take the value "-"/ to mean stdin or stdout (which one depends on ) context) instead of a normal file path. GPaths which are relative to the local darcs repository and normalized. : Note: These are understood not to have the dot in front. 8Make the second path relative to the first, if possible FInterpret a possibly relative path wrt the current working directory. FTake an absolute path and a string representing a (possibly relative) H path and combine them into an absolute path. If the second argument is L already absolute, then the first argument gets ignored. This function also A takes care that the result is converted to Posix convention and ' normalized. Also, parent directories ("..") at the front of the string C argument get canceled out against trailing directory parts of the  absolute path argument. IRegarding the last point, someone more familiar with how these functions J are used should verify that this is indeed necessary or at least useful. =Convert to posix, remove trailing slashes, and (under Posix) ) reduce multiple leading slashes to one. (The root directory as an absolute path. EExecute either the first or the second argument action, depending on  whether the given path is an  or stdin/stdout. DNormalize the path separator to Posix style (slash, not backslash). $ This only affects Windows systems. IReduce multiple leading slashes to one. This only affects Posix systems. /only shown on help _The firstJustM returns the first Just entry in a list of monadic operations. This is close to  ` listToMaybe  sequence`A, but the sequence operator evaluates all monadic members of the _ list before passing it along (i.e. sequence is strict). The firstJustM is lazy in that list [ member monads are only evaluated up to the point where the first Just entry is obtained. <The firstJustIO is a slight modification to firstJustM: the : entries in the list must be IO monad operations and the ? firstJustIO will silently turn any monad call that throws an > exception into Nothing, basically causing it to be ignored. @Given two shell commands as arguments, execute the former. The E latter is then executed if the former failed because the executable  wasn't found (code 127), wasn'&t executable (code 126) or some other C exception occurred. Other failures (such as the user holding ^C) . do not cause the second command to be tried. "Ask the user for a line of input. The prompt to display The string the user entered. aReturns Just l where l is first non-blank string in input array; Nothing if no non-blank entries KConstruct a filter from a list of AnchoredPaths, that will accept any path L that is either a parent or a child of any of the listed paths, and discard  everything else. Same as  filterPath, but for ordinary s (as opposed to  AnchoredPath). +++ 33The . type is a list of all flags that can ever be - passed to darcs, or to one of its commands.       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~lastWord [(flag, value)] default opts scans opts for a flag : in the list and returns the value of the first match, or default  if none is found. ISet flags to a default value, but only one has not already been provided  distractors default flags updated flags       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!      ԭ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!            !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*6Tries to perform some task if it can obtain the lock, 1 Otherwise, just gives up without doing the task 9 safely creates an empty file (not open for writing) and  returns its name. JThe temp file operations are rather similar to the locking operations, in K that they both should always try to clean up, so exitWith causes trouble. # creates an already open temporary I file. Both of them run their argument and then delete the file. Also, J both of them (to my knowledge) are not susceptible to race conditions on J the temporary file (as long as you never delete the temporary file; that & would reintroduce a race condition).  is like , except that it doesn't " delete the directory afterwards. 8 creates an empty directory and then removes it when it G is no longer needed. withTempDir creates a temporary directory. The = location of that directory is determined by the contents of  _darcsprefs#tmpdir, if it exists, otherwise by  $DARCS_TMPDIR , and if  that doesn'>t exist then whatever your operating system considers to be a  a temporary directory (e.g. $TMPDIR under Unix, $TEMP under  Windows). :If none of those exist it creates the temporary directory J in the current directory, unless the current directory is under a _darcs O directory, in which case the temporary directory in the parent of the highest 8 _darcs directory to avoid accidentally corrupting darcs' s internals. K This should not fail, but if it does indeed fail, we go ahead and use the  current directory anyway. If $DARCS_KEEP_TMPDIR variable is set G temporary directory is not removed, this can be useful for debugging. IReads a file. Differs from readBinFile in that it interprets the file in 0 the current locale instead of as ISO-8859-1. FWrites a file. Differs from writeBinFile in that it writes the string H encoded with the current locale instead of what GHC thinks is right.   >Return the command and arguments needed to run an ssh command A along with any extra features like use of the control master.  See   remote path ?Return the command and arguments needed to run an ssh command. E First try the appropriate darcs environment variable and SSH_PORT  defaulting to ssh and no specified port. ?Return True if this version of ssh has a ControlMaster feature = The ControlMaster functionality allows for ssh multiplexing >Launch an SSH control master in the background, if available.  We don'#t have to wait for it or anything. B Note also that this will cleanup after itself when darcs exits 6Tell the SSH control master for a given path to exit. ACreate the directory ssh control master path for a given address remote path (foo@4bar.com:file is ok; the file part with be stripped)    'Ccreate a list of changes between a and b, each change has the form A (starta, lima, startb, limb) which means that a[starta, lima) ) has to be replaced by b[startb, limb) (mark hash value where collision occured Hreturn arrays with changes in a and b (1 indexed), offsets start with 0 Aset changes array for a and b and return number of changed lines 1return (xmid, ymid, cost) for the two substrings  a[off_a+1..off_a+1+l_a] and b ,find position on diag d with one more insert/delete going forward Ifollow snake from northwest to southeast, x and y are absolute positions ,find position on diag d with one more insert/delete going backward Ifollow snake from southeast to northwest, x and y are absolute positions Ftry to create nicer diffs by shifting around regions of changed lines =goto next unchanged line, return the given line if unchanged ;skip at least one unchanged line, if there is none advance  behind the last line goto n-th next unchanged line 9goto next changed line, return the given line if changed Agoto previous unchanged line, return the given line if unchanged JFormats an e-mail header by encoding any non-ascii characters using UTF-8 D and Q-encoding, and folding lines at appropriate points. It doesn't do A more than that, so the header name and header value should be I well-formatted give or take line length and encoding. So no non-ASCII J characters within quoted-string, quoted-pair, or atom; no semantically J meaningful signs in names; no non-ASCII characters in the header name;  etcetera. /Turns a piece of string into a q-encoded block P Applies q-encoding, for use in e-mail header values, as defined in RFC 2047. P It just takes a string and builds an encoded-word from it, it does not check  length or necessity.  experimental )assoc list mapping characters to strings ) eg (c,s) means that %c is replaced by s 0parse a commandline returning a list of strings 6 (intended to be used as argv) and a bool value which 1 specifies if the command expects input on stdin 9 format specifiers with a mapping in ftable are accepted : and replaced by the given strings. E.g. if the ftable is  [(s, Some subject)], then %s is replaced by  Some subject 8for every mapping (c,s), add a mapping with uppercase c  and the urlencoded string s !7        "75Get the name of the darcs executable (as supplied by  getProgName) fetchFile fileOrUrl cache% returns the content of its argument B (either a file or an URL). If it has to download an url, then it 6 will use a cache as required by its second argument. fetchFileLazyPS fileOrUrl cache lazily reads the content of D its argument (either a file or an URL). Warning: this function may G constitute a fd leak; make sure to force consumption of file contents  to avoid that.  !"#$%CRun a command on a remote location without passing it any input or , reading its output. Return its ExitCode handle to write email to From To Subject CC body &4Send an email, optionally containing a patch bundle ; (more precisely, its description and the bundle itself) from to subject cc  send command (content,bundle) body '()*+,-%%!#'.the /.9 type is a record containing the variables which control  how #s will be rendered on some output. /0overall use of color 1overall use of escaping 22overall use of colored lines (only hunks for now) 3%alternative to color (bold, inverse) 4don't escape isprints 5don't escape 8-bit chars 6extra chars to never escape 7extra chars to always escape 8escape trailing spaces 9ignore r at end of lines :%escape spaces (used with poTrailing) ;<==/ returns a suitable policy for a given handle. E The policy is chosen according to environment variables, and to the . type of terminal which the handle represents  h3 returns a set of printers suitable for outputting  to h >> policy/ tries to color a Doc, according to policy po.  That is, if policy has  poLineColor& set, then colors the line, otherwise  does nothing. ?@ABCC policy string escapes string according to the rules  defined in policy, turning it into a . DD policy c tells wether c will be left as-is  when escaping according to policy EE3 tells wether a character is a printable character  of the ascii range. FF- represents a special character as a string.  *  quoteChar '^c' (where ^c is a control character) is ^c  * Otherwise,  quoteChar returns hex, where hex is the * hexadecimal number of the character. GG policy doc marks doc with the appropriate - marking for escaped characters according to policy HH policy color doc colors doc with color color if  policy: is not set to use an alternative to color. In that case, ! it makes the text bold instead. IJKLL doc tries to make doc (usually a < single escaped char) stand out with the help of only plain & ascii, i.e., no color or font style. M the string to reset the terminal' s color. NN color doc returns a colorized version of doc.  color/ is a string that represents a color, given by K OO boldens a doc. PP+ returns an invert video version of a doc. $ RepoFormat* is the representation of the format of a > repository. Each sublist corresponds to a line in the format + file. Each line is decomposed into words. Q1The file where the format information should be. identifyRepoFormat URL) identifies the format of the repository  at the given address. Return  Left reason if it fails, where  reason explains why we weren't able to identify the format. writeRepoFormat+ writes the repo format to the given file. RS;The repo format we assume if we do not find a format file. writeProblem from+ tells if we can write to a repo in format form.  it returns Nothing if there'+s no problem writing to such a repository. writeProblem from- tells if we can read and write to a repo in  format form. it returns Nothing if there's no problem reading # and writing to such a repository. readProblem from+ tells if we can write to a repo in format form.  it returns Nothing if there'-s no problem reading from such a repository. T=Does this version of darcs know how to handle this property? UAThis is the list of properties which this version of darcs knows  how to handle. VW%@Fetch and return the message of the day for a given repository. 7Display the message of the day for a given repository,  unless either the   or the s flags are passed in & XYZ[\]   '"^_  ` abcd  !"ef     !" !"           !" !"((#$%&'()*+,-./0123Things that can commute. 456789:;<=>3Swaps the ordered pair type so that commute can be  called directly. ?4Swaps the ordered pair type from the order expected " by commute to the reverse order. @ABCDEghFGH&#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH&<89:;=34567CBDA@>?)*+,-./012'(EF#$%&GH&#$%&$%&'(() *+,-./012*+,-./01234567456789:;9:;<=>?@ABCDEFGH)IJCommuteFn is the basis of a general framework for building up commutation M operations between different patch types in a generic manner. Unfortunately R type classes are not well suited to the problem because of the multiple possible I routes by which the commuter for (FL p1, FL p2) can be built out of the N commuter for (p1, p2) - and more complicated problems when we start building Q multiple constructors on top of each other. The type class resolution machinery  really can'2t cope with selecting some route, because it doesn't know that all ' possible routes should be equivalent. J split an 9 into left and rightA lists according to a predicate, using commutation as necessary. ] If a patch does satisfy the predicate but cannot be commuted past one that does not satisfy  the predicate, it goes in the right list. 2predicate; if true we would like the patch in the left list input 9 left, middle and right iK split an 6 into left and rightA lists according to a predicate, using commutation as necessary. ] If a patch does satisfy the predicate but cannot be commuted past one that does not satisfy  the predicate, it goes in the left list. 2predicate; if true we would like the patch in the right list input 6 left and right results jLMNOPP x xs removes x from xs if x can be commuted to its head.  Otherwise it returns  QQ is like P except with 6 RR ab abc returns Just c' where all the patches in  abE have been commuted out of it, if possible. If this is not possible & for any reason (the set of patches ab is not actually a subset of abc,  or they can't be commuted out) we return . SS is like removeSubsequenceFL except that it works  on 6 TThis is a minor variant of U with each permutation  is simply returned as a 9 UU p:>:ps* returns all the permutations of the list  in which one element of ps is commuted past p &Suppose we have a sequence of patches   X h a y s-t-c k #Suppose furthermore that the patch c depends on t, which in turn  depends on s. This function will return  X :> h a y s t c k  h :> X a y s t c k  a :> X h y s t c k  y :> X h a s t c k  s :> X h a y t c k  k :> X h a y s t c VV is like U, except that we  operate on an 68 (in other words, we are pushing things to the end of a 0 patch sequence instead of to the beginning). WUBuild a commuter between a patch and itself using the operation from the type class. XYVPartition a list into the patches that commute with the given patch and those that don't (including dependencies) IJKLMNOPQRSTUVWXYPQOLMNJKTVURSYIWXIJKLMNOPQRSTUVWXY*ZBPatches whose concrete effect which can be expressed as a list of  primitive patches. (A minimal definition would be either of effect or effectRL. [\]^_`abcdefgIf g x :> y succeeds, we know that that x commutes  past yB without any conflicts. This function is useful for patch types  for which 46 is defined to always succeed; so we need some way to Q pick out the specific cases where commutation succeeds without any conflicts. LConsider the commute square with patch names written in capital letters and / repository states written in small letters.    X  o-->--a  | |  Y' v v Y  | |  z-->--b  X' FThe default definition of this function checks that we can mirror the D commutation with patch inverses (written with the negative sign)    -X X  a-->--o-->--a  | | |  Y'' v Y' v v Y  | | |  b-->--z-->--b  (-X)' X' We check that commuting X and Y succeeds, as does commuting -X and Y'.  It also checks that Y'' == Y and that -(X') is the same as (-X)' hijklmnopqrstuklmnvwxyz{|}~?Tells you if two patches are in the same category, human-wise. A Currently just returns true if they are filepatches on the same  file. opqrstuvwxyz{|}~ ps+ puts a sequence of primitive patches into < canonical form. Even if the patches are just hunk patches, B this is not necessarily the same set of results as you would get A if you applied the sequence to a specific tree and recalculated  a diff. CNote that this process does not preserve the commutation behaviour > of the patches and is therefore not appropriate for use when B working with already recorded patches (unless doing amend-record  or the like).  ps coalesces as many patches in ps as A possible, sorting the results according to the scheme defined  in   The heart of sortCoalesceFL  new ps is almost like  new :>: ps except : as an alternative to consing, we first try to coalesce new with  the head of ps2. If this fails, we try again, using commutation  to push new2 down the list until we find a place where either  (a) new is LT" the next member of the list [see ]  (b) commutation fails or  (c) coalescing succeeds. D The basic principle is to coalesce if we can and cons otherwise. @As an additional optimization, pushCoalescePatch outputs a Left  value if it wasn'0t able to shrink the patch sequence at all, and E a Right value if it was indeed able to shrink the patch sequence. A This avoids the O(N) calls to lengthFL that were in the older  code. ?Also note that pushCoalescePatch is only ever used (and should 4 only ever be used) as an internal function in in  sortCoalesceFL2.  p2 :< p1 tries to combine p1 and p2 into a single F patch without intermediary changes. For example, two hunk patches G modifying adjacent lines can be coalesced into a bigger hunk patch. C Or a patch which moves file A to file B can be coalesced with a D patch that moves file B into file C, yielding a patch that moves  file A to file C.  p1 p22 is used to provide an arbitrary ordering between  p1 and p2.. Basically, identical patches are equal and  Move < DP < FP < Split < Identity < ChangePref. E Everything else is compared in dictionary order of its arguments. SZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Sbc^a`_y{z|~}qrutsvxwopjklmndefghiZ[\]SZ[\][\]^a`__`abccdefghiefghijklklmnnoppqrutsstuvxwwxy{zz{|~}}~+, -2KA PatchInfo value contains the metadata of a patch. The date, name, author H and log fields are UTF-8 encoded text in darcs 2.4 and later, and just L sequences of bytes (decoded with whatever is the locale when displayed) in  earlier darcs. 'The members with names that start with '_' are not supposed to be used C directly in code that does not care how the patch info is stored. DaddJunk adds a line that contains a random number to make the patch  unique. Get the name, including an UNDO: " prefix if the patch is inverted. Returns the author of a patch. &Returns the name of the patch. Unlike , it does not preprend  UNDO: ' to the name if the patch is inverted. Returns the author of a patch. 9Note: we ignore timezone information in the date string, ; systematically treating a time as UTC. So if the patch  tells me it's 17:00 EST, we're actually treating it as 5 17:00 UTC, in other words 11:00 EST. This is for ? backwards compatibility to darcs prior to 2003-11, sometime > before 1.0. Fortunately, newer patch dates are written in : UTC, so this timezone truncation is harmless for them.  Get the log message of a patch. /Get the tag name, if the patch is a tag patch. EConvert a metadata ByteString to a string. It first tries to convert > using UTF-8, and if that fails, tries the locale encoding. J We try UTF-8 first because UTF-8 is clearly recognizable, widely used, J and people may have UTF-8 patches even when UTF-8 is not their locale. )Patch is stored between square brackets.   [ <patch name>  <patch author>*<patch date> , <patch log (may be empty)> (indented one) * <can have multiple lines in patch log,> + <as long as they're preceded by a space> ) <and don't end with a square bracket.>  ] 8note that below I assume the name has no newline in it.    .name of the element "last patch modifying this element how was it modified -this can be unknown when restored backwards! !the original name of the element info of a directory member directory listing 6the population of a darcs repository (simpler Slurpy) the state when last modified the directory listing !was an Info record not modified? $set the modifier for an Info record +read the population from a given directory dirname 0 all folders and documents get the given time t >This needs to be here in order to avoid a circular dependency # between Population and Pristine.  /The Named7 type adds a patch info about a patch, that is a name. NamedP info deps p represents patch p with name  info. deps4 is a list of dependencies added at the named patch E level, compared with the unnamed level (ie, dependencies added with  darcs record --ask-deps). __01-     modernizePatch. is used during conversion to Darcs 2 format.  It does the following: @ removes mergers by linearising them, thus removing the ability  to commute them B drops mv a b ; add b which was introduced by an error in earlier A versions of darcs (TODO: check this; identify the versions) 5k     k5           2Modify a binary file  binary FILENAME  oldhex  *HEXHEXHEX  ...  newhex  *HEXHEXHEX  ... 3. !"IunionRemoteCaches merges caches. It tries to do better than just blindly ! copying remote cache entries: I If remote repository is accessed through network, do not copy any cache I entries from it. Taking local entries does not make sense and using D network entries can lead to darcs hang when it tries to get to  unaccessible host. J If remote repositoty is local, copy all network cache entries. For local M cache entries if the cache directory exists and is writable it is added H as writable cache, if it exists but is not writable it is added as  read-only cache. LThis approach should save us from bogus cache entries. One case it does not J work very well is when you fetch from partial repository over network. ( Hopefully this is not a common case. #ACompares two caches, a remote cache is greater than a local one. 0 The order of the comparison is given by: local < http < ssh $%%= computes the cache hash (i.e. filename) of a packed string. &'()*+(hashedFilePath cachelocation subdir hash" returns the physical filename of  hash hash in the subdir section of  cachelocation. ,peekInCache cache subdir hash tells whether cache and  contains an object with hash hash in a writable position. : Florent: why do we want it to be in a writable position? -/speculateFileUsingCache cache subdirectory name takes note that  the file name2 is likely to be useful soon: pipelined downloads E will add it to the (low-priority) queue, for the rest it is a noop. .KNote that the files are likely to be useful soon: pipelined downloads will B add them to the (low-priority) queue, for the rest it is a noop. "write compression filename content writes content to the file filename according  to the policy given by  compression. /5writeFileUsingCache cache compression subdir contents write the string contents to Y the directory subdir, except if it is already in the cache, in which case it is a noop. _ Warning (?) this means that in case of a hash collision, writing using writeFileUsingCache is J a noop. The returned value is the filename that was given to the string. 01! !"#$%&'()*+,-./01!%&'!"01(-./,$)*+ #! !"#$%&'()*+,-./014!2345.[^/]  ^_  ~$  (^|)CVS($|)  e nd{verbatim} : A newly created repository has a longer boring file that M includes many common source control, backup, temporary, and compiled files. 3You may want to have the boring file under version A control. To do this you can use darcs setpref to set the value  ` boringfile') to the name of your desired boring file  (e.g. v-erb-darcs setpref boringfile .boring-, where v erb-.boring- " is the repository path of a file  that has been G darcs added to your repository). The boringfile preference overrides  v erb!_darcsprefs9boring!, so be sure to copy that file to the boringfile. You can also set up a `boring' regexps $ file in your home directory, named verb!~.darcs boring!,  on MS Windows~ref{ms_win}, which will be + used with all of your darcs repositories. FAny file not already managed by darcs and whose repository path (such  as v erb!manual/index.html!) matches any of J the boring regular expressions is considered boring. The boring file is G used to filter the files provided to darcs add, to allow you to use a  simple verb-darcs add newdir newdir,-\verb-*- % cabal haddock barfs on adjacent  * ( without accidentally adding a bunch of ) object files. It is also used when the verb!--look-for-adds! flag is  given to whatsnew or record. E Note that once a file has been added to darcs, it is not considered 4 boring, even if it matches the boring file filter. 6-The path of the global preference directory; ~/.darcs on Unix,  and  %APPDATA%/darcs on Windows. 789:;  5From a list of paths, filter out any that are within _darcs or  match a boring regexp.  %The lines that will be inserted into _darcsprefsbinaries when   darcs init5 is run. Hence, a list of comments, blank lines and $ regular expressions (ERE dialect). ANote that while this matches .gz and .GZ, it will not match .gZ, ( i.e. it is not truly case insensitive. <=  >? @ABCDEFG23456789:;<=>?@ABCDEFG>?@87EFBCDA5:;6243=G<92433456789:;<=>?@ABCDEFG5HIJKLM N OPQ RS   TApply a patch to a  , yielding a new  . HIJKLMNOPQRST NOQPRSTIMLKJH HIMLKJJKLMNOPQRST6           6High-level representation of a piece of patch summary U  !V " # $ % & 'UVVUUV7 WGA splitter is something that can take a patch and (possibly) render it - as text in some format of its own choosing. I This text can then be presented to the user for editing, and the result $ given to the splitter for parsing. K If the parse succeeds, the result is a list of patches that could replace $ the original patch in any context. J Typically this list will contain the changed version of the patch, along M with fixup pieces to ensure that the overall effect of the list is the same  as the original patch. K The individual elements of the list can then be offered separately to the 7 user, allowing them to accept some and reject others. There'Bs no immediate application for a splitter for anything other than  Prim (you shouldn't go editing named patches, you'll break them!) G However you might want to compose splitters for FilePatchType to make 1 splitters for Prim etc, and the generality doesn't cost anything. XYZ ([VThis generic splitter just lets the user edit the printed representation of the patch < Should not be used expect for testing and experimentation. \YNever splits. In other code we normally pass around Maybe Splitter instead of using this 2 as the default, because it saves clients that don'&t care about splitting from having to , import this module just to get noSplitter. )] Split a primitive hunk patch up Y by allowing the user to edit both the before and after lines, then insert fixup patches  to clean up the mess. WXYZ[\]WXYZ[\]WXYZXYZ[\]8^_`a` stores a context with a  patch. abcdef>Return as a list the context followed by the primitive patch. gg x cy tries to commute x past cy and always returns some  variant cy'/. -- commutation suceeds, the variant is just L straightforwardly the commuted versian. If commutation fails, the variant  consists of x prepended to the context of cy. hh xs cy commutes as many patches of xs past cy as @ possible, stopping at the first patch that fails to commute.  Note the fact xs is a 6 Suppose we have   x1 x2 x3 [c1 c2 y] and that in our example c1 fails to commute past x1, this " function would commute down to   x1 [c1'' c2'' y''] x2' x3'  and return [x1 c1'' c2'' y''] ij *klmnopqrst^_`abcdefghijklmnopqrst`a^_fcebdimgkhlnojpqrst^__`aabcdefghijklmnopqrst9. + , + xs ys cs'/ represents two sequences of patches that have cs in common,  in other words xs +<+ cs and ys +<+ cs , - . - cs xs ys/ represents two sequences of patches that have cs in common,  in other words  cs +>+ xs and  cs +>+ ys .u Duplicate x!: This patch has no effect since x& is already present in the repository  !Etacilpud x: invert (Duplicate x) Normal prim: A primitive patch Conflictor ix xx x:  ix is the set of patches:  that conflict with x8 and also conflict with another patch in the repository / that conflict with a patch that conflict with x xx6 is the sequence of patches that conflict *only* with x x is the current patch ix and x are stored as Non& objects, which include any necessary < context to uniquely define the patch that is referred to. InvConflictor ix xx x: like invert (Conflictor ix xx x) vwxyz{{ p is ' True if p is either a z or y patch |#This is only used for unit testing } / /  (Sealed xs) converts xs to a a`.  xs> must be non-empty since we split this list at the last patch 0 1 2 3mergeAfterConflicting* takes as input a sequence of conflicting  patches xxx4 (which therefore have no effect) and a sequence of  primitive patches yyy* that follow said sequence of conflicting D patches, and may depend upon some of the conflicting patches (as a  resolution). 4 5 6 7If xs consists only of x patches,  7 xs returns  Just pxs those patches (so lengthFL pxs == lengthFL xs).  Otherwise, it returns . ~=This is used for unit-testing and for internal sanity checks 8 9 : ; < = > ? @ A B C D E F G H I J K xs ys1 returns the set of patches that can be commuted  out of both xs and ys' along with the remnants of both lists L L xs ys1 returns the set of patches that can be commuted  out of both xs and ys' along with the remnants of both lists uvwxyz{|}~ uzyxwv~|{} uzyxwvvwxyz{|}~: M[$%*+,-./01245679<BCGHZ[efiklp HIJKLMNPQRSTUVu[u<lpk-,*+125467 fZ[0/$GH%CBN9TIMLKJHQP.UVeiRS; - represents the info of a patch, marked with  the patch' s witnesses. N p $ represents a hope we have to get a  patch through its info. We'&re not sure we have the patch, but we  know its info. O PSimpleHopefully is a variant of  Either String adapted for  type witnesses. Actually is the equivalent of Right, while   Unavailable is Left. Q R p C (x y) is  S String (p C (x y)) in a $ form adapted to darcs patches. The C (x y) represents the type 1 witness for the patch that should be there. The  Hopefully type A just tells whether we expect the patch to be hashed or not, and   P! does the real work of emulating   S.  Hopefully sh, represents an expected unhashed patch, and  Hashed hash sh4 represents an expected hashed patch with its hash. T U V i p2 creates a PatchInfoAnd containing p with info i. n2pia' creates a PatchInfoAnd representing a Named patch.  hp tries to get a patch from a  ) value. If it fails, it outputs an error "failed to read patch:  <description of the patch>"&. We get the description of the patch  from the info part of hp  er hp! tries to extract a patch from a . 5 If it fails, it applies the error handling function er to a description  of the patch info component of hp.  hopefullyM is a version of  hopefully which calls fail in a  monad instead of erroring. W<    = Evaluate an 9 list and report progress.  Evaluate an 6 list and report progress.  Evaluate an 63 list and report progress. In addition to printing E the number of patches we got, show the name of the last tag we got. >GA convenience function to call from all darcs command functions before F applying any patches. It checks for malicious paths in patches, and 5 prints an error message and fails if it finds one. :Filter out patches that contains some malicious file path  X YWhat is a malicious path? $A spoofed path is a malicious path.  > Darcs only creates explicitly relative paths (beginning with "./"), < so any not explicitly relative path is surely spoofed. . Darcs normalizes paths so they never contain "/../", so paths with  "/../" are surely spoofed. A path to a darcs repository's meta data can modify "trusted" patches or C change safety defaults in that repository, so we check for paths  containing "/_darcs/"( which is the entry to darcs meta data. To do?  How about get repositories? B Would it be worth adding a --semi-safe-paths option for allowing / changes to certain preference files (_darcs/prefs/ ) in sub  repositories'? Z? [$with_partial_intersection takes two s and splits them into a common Jintersection portion and two sets of patches. The intersection, however, Jis only lazily determined, so there is no guarantee that all intersecting -patches will be included in the intersection . This is a pretty Lefficient function, because it makes use of the already-broken-up nature of s. DNote that the first argument to with_partial_intersection should be >the repository that is more cheaply accessed (i.e. local), as @with_partial_intersection does its best to reduce the number of ;inventories that are accessed from its rightmost argument. getPatchesInTag t ps returns a  of all  patches in ps which are contained in t.  \ ]KMerge two FLs (say L and R), starting in a common context. The result is a N FL starting in the original end context of L, going to a new context that is E the result of applying all patches from R on top of patches from L. "While this function is similar to @, there are three important  differences to keep in mind:  @A does not correctly deal with duplicate patches whereas this one  does N (Question from Eric Kow: in what sense? Why not fix the mergeFL instance?)  @@ returns both paths of the merge diamond, but this version only  returns one, so you')d better choose the order carefully, eg.  ( merge2FL l r) A The conventional order we use in this function is reversed from  @ (so  mergeFL r l vs.  merge2FL l r. This does not ; matter so much for the former since you get both paths. K (Question from Eric Kow: should we flip merge2FL for more uniformity in  the code?) ^ _ERemove a patch from FL, using PatchInfo equality. The result is Just L whenever the patch has been found and removed. If the patch is not present L in the sequence at all or any commutation fails, we get Nothing. First two L cases are optimisations for the common cases where the head of the list is 8 the patch to remove, or the patch is not there at all. `@@In makeBundle2, it is presumed that the two patch sequences are E identical, but that they may be lazily generated. If two different E patch sequences are passed, a bundle with a mismatched hash will be 6 generated, which is not the end of the world, but isn't very useful  either.  a b c d e f g hA i j k l mBCA Matcher is made of a  which we will use to match  patches and a String representing it. n;A type for predicates over patches which do not care about  contexts  applyMatcher applies a matcher to a patch.  o p q r s t.The string that is emitted when the user runs darcs help --match. u+keyword (operator), help description, list  of examples, matcher function v w x y z { | } ~   D  E*See module documentation for Darcs.Patch.Choices  The Bool< parameter indicates whether the patch has been explicitely % selected (or rejected) by the user.    mp iA acts as a temporary identifier to help us keep track of patches L during the selection process. These are useful for finding patches that J may have moved around during patch selection (being pushed forwards or % backwards as dependencies arise). )The identifier is implemented as a tuple TG mp i. The i is just some C arbitrary label, expected to be unique within the patches being  scrutinised. The mp% is motivated by patch splitting; it I provides a convenient way to generate a new identifier from the patch @ being split. For example, if we split a patch identified as  TG Nothing  53, the resulting sub-patches could be identified as TG (TG Nothing 5)  1, TG (TG Nothing 5) 2, etc.  QTag a sequence of patches as subpatches of an existing tag. This is intended for C use when substituting a patch for an equivalent patch or patches. Tag a sequence of patches.  getChoices evaluates a  PatchChoices+ into the first, middle and last sequences ) by doing the commutes that were needed. refineChoices act performs act" on the middle part of a sequence = of choices, in order to hopefully get more patches into the first and  last parts of a  PatchChoices.    (a :||: bs) pcs replaces a with bs in pcs preserving the choice  associated with a F GH  repository function modifies the cache of   repository with function., remove duplicates and sort the results with #.   I                         J         K!"#$!"#$"#!$!"#$L %&'('From a repository and a list of SubPath'"s, construct a filter that can be H used on a Tree (recorded or unrecorded state) of this repository. This L constructed filter will take pending into account, so the subpaths will be L translated correctly relative to pending move patches. As an exception for I convenience, if the subpath list is empty, the filter constructed is an  identity. )JConstruct a Tree filter that removes any boring files the Tree might have M contained. Additionally, you should (in most cases) pass an (expanded) Tree E that corresponds to the recorded content of the repository. This is I important in the cases when the repository contains files that would be M boring otherwise. (If you pass emptyTree instead, such files will simply be ? discarded by the filter, which is usually not what you want.) MThis function is most useful when you have a plain Tree corresponding to the : full working copy of the repository, including untracked K files. Cf. whatsnew, record --look-for-adds. NB. Assumes that our CWD is  the repository root. *KFor a repository and a list of paths (when empty, take everything) compute K a (forward) list of prims (i.e. a patch) going from the recorded state of J the repository (pristine) to the unrecorded state of the repository (the L working copy + pending). When a non-empty list of paths is given, at least D the files that live under any of these paths in either recorded or M unrecorded will be included in the resulting patch. NB. More patches may be L included in this list, eg. the full contents of the pending patch. This is M usually not a problem, since selectChanges will properly filter the results  anyway. JThis also depends on the options given: with LookForAdds, we will include @ any non-boring files (i.e. also those that do not exist in the recorded  state) in the working in the  unrecorded state, and therefore they will % show up in the patches as addfiles. LThe IgnoreTimes option disables index usage completely -- for each file, we M read both the unrecorded and the recorded copy and run a diff on them. This K is very inefficient, although in extremely rare cases, the index could go L out of sync (file is modified, index is updated and file is modified again  within a single second). +$Obtains a Tree corresponding to the recorded state of the repository: L this is the same as the pristine cache, which is the same as the result of  applying all the repository'!s patches to an empty directory. KHandles the plain and hashed pristine cases. Currently does not handle the ; no-pristine case, as that requires replaying patches. Cf.    and  2 in hashed-storage that are used to do the actual    construction. ,$Obtains a Tree corresponding to the  unrecorded state of the repository:  the working tree plus the pending* patch. The optional list of paths (it is > ignored if empty) allows to restrict the query to a subtree. LLimiting the query may be more efficient, since hashes on the uninteresting I parts of the index do not need to go through an up-to-date check (which 4 involves a relatively expensive lstat(2) per file. -8Obtains a Tree corresponding to the working copy of the B repository. NB. Almost always, using readUnrecorded is the right D choice. This function is only useful in not-completely-constructed  repositories. ./0GMark the existing index as invalid. This has to be called whenever the K listing of pristine changes and will cause darcs to update the index next K time it tries to read it. (NB. This is about files added and removed from M pristine: changes to file content in either pristine or working are handled + transparently by the index reading code.) 1 %&'()*+,-./01 ()%&'*/+,.-10 %&'&'()*+,-./01M# 2 readHashFile c subdir hash reads the file with hash hash in dir subdir,  fetching it from  c if needed. geta objtype name stuff tries to get an object of type objtype named name  in stuff. 34 5234523452345N" 6789:; <= >?@A BCD E 6789:;<=>?@ABCDE679CDB:;<=@A>8E?6789:;<=>?@ABCDEOMFGHIJK L;The status of a given directory: is it a darcs repository? MN safest guess O(looks like a repository with some error PBRepository IO monad. This monad-like datatype is responsible for C sequencing IO actions that modify the tentative recorded state of  the repository. Q converts RIO a to IO a. This is just like >>=% from the Monad class except that it E respects type witness safe repository transformations. Even so, it < only tracks modifications to the tentative recorded state. This corresponds to >> from the Monad class. This corresponds to return from the Monad class. R This the RIO equivalent of liftIO. SSimilar to the ask$ function of the MonadReader class. 9 This allows actions in the RIO monad to get the current  repository.  FIXME: Don't export this. If we don't export this 7 it makes it harder for arbitrary IO actions to access 7 the repository and hence our code is easier to audit. TUVW &hunt upwards for the darcs repository > This keeps changing up one parent directory, testing at each : step if the current directory is a repository or not. $ I WARNING this changes the current directory for good if matchFn succeeds what to return if we don't find a repository XYZ [\]^_` abcdefNThis fuction is unsafe because it accepts a patch that works on the tentative  pending and we don'6t currently track the state of the tentative pending. gisetTentativePending is basically unsafe. It overwrites the pending state with a new one, not related to  the repository state. >prepend is basically unsafe. It overwrites the pending state 6 with a new one, not related to the repository state. h i jkl mn opqrst u<Writes out a fresh copy of the inventory that minimizes the C amount of inventory that need be downloaded when people pull from  the repository. ASpecifically, it breaks up the inventory on the most recent tag. @ This speeds up most commands when run remotely, both because a ; smaller file needs to be transfered (only the most recent C inventory). It also gives a guarantee that all the patches prior B to a given tag are included in that tag, so less commutation and A history traversal is needed. This latter issue can become very " important in large repositories. vwxy z {\Sets scripts in or below the current directory executable. A script is any file that starts  with the bytes '#!'J. This is used sometimes for --set-scripts-executable, but at other times J --set-scripts-executable is handled by the hunk patch case of applyFL. <We have an instance of Monad so that IO actions that do not E change the tentative recorded state are convenient in the IO monad. <FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{<PQrTUVLONMYWXmagby[\^]stpqochfdij_`nwxuvz{SRklFHGIKJeZ6FHGGHIKJJKLONMMNOPQQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{P |}~ |}~|}~|}~QR   @writePatchSet is like patchSetToRepository, except that it doesn't 0 touch the working directory or pristine cache. ]patchSetToRepository takes a patch set, and writes a new repository in the current directory N that contains all the patches in the patch set. This function is used when ' darcs get'ing a W repository with the --to-match flag and the new repository is not in hashed format. L This function does not (yet) work for hashed repositories. If the passed  DarcsFlags tell @ darcs to create a hashed repository, this function will call error.  ZUnless a flag has been given in the first argument that tells darcs not to do so (--lazy, ^ --partial or --ephemeral), this function fetches all patches that the given repository has M with fetchFileUsingCache. This is used as a helper in copyFullRepository. KReplace the existing pristine with a new one (loaded up in a Tree object). C*+,./01TVWXY[\]^_`cfhijklmnopqrstuvwxyz{CrTVstpqo]YWXy[^chfi\mj_`nwxuvz{kl+,*/.10S =A constructor for grouping related options together, such as  --hashed,  --darcs-2 and --old-fashioned-inventory. A type for darcs'. options. The value contains the command line E switch(es) for the option, a help string, and a function to build a   DarcsFlag9 from the command line arguments. for each constructor,   shortSwitches4 represents the list of short command line switches E which invoke the option, longSwitches the list of long command line P switches, optDescr the description of the option, and argDescr the description = of its argument, if any. mkFlag is a function which makes a  DarcsFlag from  the arguments of the option. ;DarcsNoArgOption shortSwitches longSwitches mkFlag optDescr 0 The constructon fon options with no arguments. BDarcsOptAbsPathOrStdOption shortSwitches longSwitches defaultPath  mkFlag ArgDescr OptDescr& where defaultPath is a default value @ for the Path, as a string to be parsed as if it had been given  on the command line. E The constructor for options with an optional path argument, such as -O KDarcsAbsPathOrStdOption shortSwitches longSwitches mkFlag ArgDescr OptDescr ; The constructor for options with a path argument, such as -o FDarcsAbsPathOption shortSwitches longSwitches mkFlag ArgDescr OptDescr E The constructor for options with an absolute path argument, such as   --sibling BDarcsArgOption shortSwitches longSwitches mkFlag ArgDescr OptDescr = The constructor for options with a string argument, such as  --tag  ( returns the content of a flag, if any.  For instance, the content of Author " Louis Aragon" is StringContent  " Louis Aragon", while the content of Pipe is  NoContent a `'isa'` b tests whether a is flag b with a string argument.  b4 typically is a Flag constructor expecting a string  For example, (Author " Ted Hughes")   Author returns true. a `'isAnAbsolute'` b tests whether a is flag b! with an absolute path argument.  bE typically is a Flag constructor expecting an absolute path argument  For example, (Context contextfile)   Context returns true. a `'isAnAbsoluteOrStd'` b tests whether a is flag b with a path argument.  b; typically is a Flag constructor expecting a path argument  For example,  (Output o)    returns true.  before default after    concat_option4 creates a DarcsMultipleChoiceOption from a list of ? option, flattening any DarcsMultipleChoiceOption in the list.  fixSubPaths files returns the SubPaths for the paths in files that = are inside the repository, preserving their order. Paths in files that are 9 outside the repository directory are not in the result. NWhen converting a relative path to an absolute one, this function first tries O to interpret the relative path with respect to the current working directory. H If that fails, it tries to interpret it with respect to the repository H directory. Only when that fails does it omit the path from the result. @It is intended for validating file arguments to darcs commands.  list_option% is an option which lists the command' s arguments 2 takes a list of flags and returns the url of the  repository specified by Repodir " directory" in that list of flags, if any. 0 This flag is present if darcs was invoked with --repodir=DIRECTORY 5 is the option used to specify the URL of the remote  repository to work with       / takes a list of flags and returns the context  specified by  Context c in that list of flags, if any. 0 This flag is present if darcs was invoked with --context=FILE 5 takes a list of flags and returns the author of the  change specified by Author " Leo Tolstoy" in that list of flags, if any.  Otherwise, if Pipe1 is present, asks the user who is the author and F returns the answer. If neither are present, try to guess the author,  from _darcs/prefs , and if it's not possible, ask the user. E tries to get the author name first from the repository preferences, H then from global preferences, then from environment variables. Returns  if it  could not get it.    C takes a list of flags and returns the addresses to send a copy of  the patch bundle to when using  darcs send. % looks for a cc address specified by Cc "address" in that list of flags. 4 Returns the addresses as a comma separated string. ; takes a list of flags and returns the subject of the mail  to be sent by  darcs send#. Looks for a subject specified by  Subject "subject" in that list of flags, if any. 0 This flag is present if darcs was invoked with --subject=SUBJECT      flags patch returns a  representing the right  way to show patch given the list flags" of flags darcs was invoked with.  action opts patches prints a string 4 representing the action that would be taken if the  --dry-run option > had not been passed to darcs. Then darcs exits successfully.  action- is the name of the action being taken, like "push"  opts/ is the list of flags which were sent to darcs  patches6 is the sequence of patches which would be touched by action.    HGet a list of all non-boring files and directories in the working copy. 1 returns the list of all non-boring unregistered  files in the repository. = returns the list of all registered files in the repository.       collects the contents of all Sibling flags in a list of flags.     8 takes a list of flags and returns the sendmail command  to be used by  darcs send#. Looks for a command specified by   SendmailCmd "command" in that list of flags, if any. 0 This flag is present if darcs was invoked with --sendmail-command=COMMAND  Alternatively the user can set $SENDMAIL. which will be used as a fallback if present.    !8 takes a list of flags and returns the posthook command  specified by  PosthookCmd a in that list of flags, if any. 7 takes a list of flags and returns the prehook command  specified by  PrehookCmd a in that list of flags, if any.  " # $ !! f holds whenever f is a way of selecting  patches such as  PatchName n. %,The integer corresponding to a string, if it's only composed of digits.  Otherwise, -1. F      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !F~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!           !       !T0"#$%&'()*+,-./0123456789 &:;<=>?@ABC 'DEF (G ) * +HIJK*"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK.5876&)'*+,-./01234*+,0(>?;:G"%$#FE=@BAC9D<IHJK*"%$##$%&)'*+,-./01234*+,0('()*+,-./0123458766789:;<=>?@ABCDEFGHIJKULL opts patch prints patch in accordance with the  flags in opts, ie, whether  --verbose or  --summary were passed at  the command-line. MM$ prints a patch on standard output. NN runs '$PAGER' and shows a patch in it. OO, prints a patch, together with its context,  on standard output. LMNOMONLLMNOVPQ ,R - .PQRPQRPQRW / 0 1 2 3 4 5 6S 7 8 9 : ; <:FIXME: this documentation makes *no* sense to me, and the ? ramifications of using this option are not clear. --twb, 2008 T = >STSTSTX ?"population of an empty repository @!apply a patchset to a population Aapply Patches to a population U(get the pristine population from a repo VW BX CYRSUVWXYRSUVYWXUVWXYY.Z[\]haveNonrangeMatch flags" tells whether there is a flag in  flags& which corresponds to a match that is  non-range. Thus,  --match, --patch and --index make haveNonrangeMatch  true, but not  --from-patch or  --to-patch. ^havePatchsetMatch flags tells whether there is a patchset match' in the flag list. A patchset match is --match or  --patch, or  --context , but not  --from-patch nor (!)  --index. 0 Question: Is it supposed not to be a subset of haveNonrangeMatch? _` Da firstMatch fs tells whether fs implies a  first match, that D is if we match against patches from a point in the past on, rather @ than against all patches since the creation of the repository. bc EdsecondMatch fs tells whether fs implies a  second match, that E is if we match against patches up to a point in the past on, rather % than against all patches until now. e Ff G H I JGstrictJust is a strict version of the Just constructor, used to ensure  that if we claim we'.ve got a pattern match, that the pattern will 9 actually match (rathern than fail to compile properly). 2First matcher, Second matcher and Nonrange matcher BWhen we match for patches, we have a PatchSet, of which we want a B subset. This subset is formed by the patches in a given interval C which match a given criterion. If we represent time going left to  right (which means the ! is written right to left), then  we have (up to) three s: the g is the ? criterion we use to select among patches in the interval, the   K, is the left bound of the interval, and the   last_matcher3 is the right bound. Each of these matchers can be * present or not according to the options. gnonrangeMatcher0 is the criterion that is used to match against  patches in the interval. It is 'Just m' when the --patch, --match,  --tag0 options are passed (or their plural variants). LnonrangeMatcherIsTag) returns true if the matching option was  '--tag' K firstMatcher1 returns the left bound of the matched interval. E This left bound is also specified when we use the singular versions  of --patch, --match and --tag . Otherwise,  firstMatcher  returns Nothing. M N OhmatchAPatchread fs p tells whether p matches the matchers in  the flags listed in fs. imatchAPatch fs p tells whether p matches the matchers in  the flags fs jk P hasLastn fs return the --last argument in fs , if any. QlmatchFirstPatchset fs ps returns the part of ps before its C first matcher, ie the one that comes first dependencywise. Hence,  patches in matchFirstPatchset fs ps are the ones we don't want. #Question: are they really? Florent R dropn n ps drops the n last patches from ps. mmatchSecondPatchset fs ps returns the part of ps before its < second matcher, ie the one that comes last dependencywise. SfindAPatch m ps returns the last patch in ps matching m, and  calls  T if there is none. UmatchAPatchset m ps$ returns a (the largest?) subset of ps  ending in patch which matches m. Calls  T if there is none. VgetMatchingTag m ps, where m is a  which matches tags  returns a . containing all patches in the last tag which  matches m:. Last tag means the most recent tag in repository order,  i.e. the last one you'"d see if you ran darcs changes -t m. Calls   T if there is no matching tag. nmatchExists m ps) tells whether there is a patch matching  m in ps o W X Y applyInvp tries to get the patch that's in a ' PatchInfoAnd  patch':, and to apply its inverse. If we fail to fetch the patch A (presumably in a partial repositiory), then we share our sorrow  with the user. Z a version of  [ for 6 lists that cater for contexts. \ ]Z[\]^_`abcdefghijklmnolmjihb_ce`ad]^kfogZ\[nZ\[[\]^_`abcdefghijklmnoZV ^The type of the answers to a shall I [wiggle] that [foo]? question  They are found in a [[KeyPress]]( bunch, each list representing a set of  answers which belong together _ ` a b c d e=The dynamic parameters for interactive selection of patches. f gtotal number of patches hnumber of already-seen patches ithe patches we offer jthe user' s choices kA PatchSelectionContext0 contains all the static settings for selecting  patches. See PatchSelectionM l m n o p q r7The type of the function we use to filter patches when --match is  given. p7When asking about patches, we either ask about them in D oldest-first or newest first (with respect to the current ordering @ of the repository), and we either want an initial segment or a ( final segment of the poset of patches. First: ask for an initial C segment, first patches first (default for all pull-like commands)  FirstReversed1: ask for an initial segment, last patches first > (used to ask about dependencies in record, and for pull-like  commands with the  --reverse flag).  LastReversed8: ask for a final segment, last patches first. (default G for unpull-like commands, except for selecting *primitive* patches in  rollback) LastD: ask for a final segment, first patches first. (used for selecting F primitive patches in rollback, and for unpull-like commands with the   --reverse flag qrst sA  WhichChanges: is backwards if the order in which patches are presented B is the opposite of the order of dependencies for that operation. uA  k for selecting  patches. vA  k for selecting full patches ( patches) tFor commands without --match,  t matches all patches u u" selects patches according to the --match flag in  opts' vwruns a  b action in the given  k. xSelect patches from a FL. w x)inverses the choices that have been made yAShows the patch that is actually being selected the way the user  should see it. yThe equivalent of x for the  darcs changes command z3Generates the help for a set of basic and advanced  _ ^ groups. {The keys used by a list of keyPress groups. zLThe function for selecting a patch to amend record. Read at your own risks. |aThis ensures that the selected patch commutes freely with the skipped patches, including pending _ and also that the skipped sequences has an ending context that matches the recorded state, z,  of the repository. } ~  When using --match8, remove unmatched patches not depended upon by matched  patches. NSelects the patches matching the match criterion, and puts them first or last 7 according to whch, while respecting any dependencies. :Returns the results of a patch selection user interaction "Runs a function on the underlying  PatchChoices object  justDone n notes that n" patches have just been processed *The actual interactive selection process.  Returns a Sealed2- version of the patch we are asking the user  about. 7Returns the patches we have yet to ask the user about. Modify the underlying  PatchChoices by some function returns Just f if the   only modifies f,  Nothing otherwise.  decide True selects the current patch, and  decide False deselects  it. like  , but for all patches touching file Undecide the current patch. Focus the next patch. Focus the previous patch. DSplit the current patch (presumably a hunk), and add the replace it  with its parts. 5Returns a list of the currently selected patches, in < their original context, i.e., not commuted past unselected  patches. -Prints the list of the selected patches. See  . Skips all remaining patches. 0The singular form of the noun for items of type p. .The plural form of the noun for items of type p. %The question to ask about one patch. 5Asks the user about one patch, returns their answer. -Ask the user what to do with the next patch. :Shows the current patch as it should be seen by the user. The interactive part of  darcs changes /Skips patches we should not ask the user about BThe action bound to space, depending on the current status of the  patch. {COptionally remove any patches (+dependencies) from a sequence that < conflict with the recorded or unrecorded changes in a repo Command-line options. Only 0 is 6 significant; filtering will happen iff it is present 0Recorded patches from repository, starting from ' same context as the patches to filter 8Repository itself, used for grabbing unrecorded changes Patches to filter ?(True iff any patches were removed, possibly filtered patches) pqrstuvwxyz{ xptsrqyz{wuv ptsrqqrstuvwxyz{[ | } |}|}|}\ ~ GsendSanitizedEmail sends a sanitized email using the given sendmailcmd  It takes  DacrsFlag( options a file with the mail contents, # To:, Subject:, CC:, and mail body ~~~]  ;Take a list of filenames and patches and produce a list of B patches that actually touch the given files with list of touched C file names, a new file list that represents the same set of files C as in input, before the returned patches would have been applied, : and possibly an error. Additionaly, the function takes a  depth limit; -- maxcount, that could be Nothing (return everything) or  Just n: -- returns at most n patches touching the file (starting ( from the beginning of the patch list).  maxcount  filenames  patchlist ?Note, lazy pattern matching is required to make functions like B filterPatchesByNames lazy in case you are only not interested in  the first element. E.g.: *let (fs, _, _) = filterPatchesByNames ... ^  _  ` @This part of the help is split out because it is used twice: in 6 the help string, and in the prompt for confirmation.  a  LReturns the command we should use for diff as a tuple (command, arguments). L This will either be whatever the user specified via --diff-command or the  default 3. Note that this potentially involves parsing the  user'Es diff-command, hence the possibility for failure with an exception. b  >This function performs the actual distribution action itself.  NB - it does not+ perform the pre-dist, that should already 5 have completed successfully before this is invoked. c d  called by getCmd ` assumes that the target repo of the get is the current directory, and that an inventory in the ( right format has already been created. e VTake a list of words and split it up so that each chunk fits into the specified width W when spaces are included. Any words longer than the specified width end up in a chunk  of their own. HThis is designed for use in an atexit handler, e.g. in Darcs.RunCommand   f   (resolve is an alias for mark-conflicts. g   h                i   ! " # $ %j & ' ( )k * + ,l - . / 0 1 2 3 4 5 6 7 8 9 : ; <m = > ? @ A B C Dn E F G HHmakeRemovePatch builds a list of patches to remove the given filepaths. ? This function does not recursively process directories. The V O flag should be handled by the caller by adding all offspring of a directory  to the files list. IKTakes a file path and returns the FL of patches to remove that, wrapped in  a 9.  Returns ; in case the path cannot be removed (if it is not tracked,  or if it's a directory and it's not tracked).  The three  8 arguments are the recorded state, the unrecorded state N excluding the removal of this file, and the unrecorded state including the  removal of this file. J Ko L Mp N O P Q R S T U=Given a set of characters and a string, returns true iff the E string contains only characters from the set. A set beginning with  a caret (^%) is treated as a complementary set. VThis function checks for  --token-chars on the command-line. If > found, it validates the argument and returns it, without the < surrounding square brackets. Otherwise, it returns either   S or  T as explained in  O. DNote: Limitations in the current replace patch file format prevents B tokens and token-char specifiers from containing any whitespace. q W X Y Zr [ \ ]s ^ _ ` a b c d e f g7genericObliterateCmd is the function that executes the  obliterate and  unpull commands. -The name under which the command is invoked (unpull or  obliterate) $The flags given on the command line )Files given on the command line (unused) h it j k l mu n$A list of all valid preferences for _darcsprefsprefs. (name, one line description) o p q rv s t u v w x y z { | } ~w   x  y    z  { |  } Progress of Bisect Direction of Bisect trackdown Bisect Patch Tree  !linear search (without --bisect) binary search (with --bisect) $Create Bisect PatchTree from the RL Convert PatchTree back to RL Iterate the Patch Tree ~            url body  mime type result   send patch via email POST the patch via HTTP  =The commands that darcs knows about (e.g. whatsnew, record), > organized into thematic groups. Note that hidden commands  are also listed here.  @Help on each environment variable in which Darcs is interested. !The rendered form of the data in environment_help. 0This module is responsible for emitting a darcs man-page, a D reference document used widely on Unix-like systems. Manpages are ) primarily used as a quick reference, or  memory jogger , so the / output should be terser than the user manual. CBefore modifying the output, please be sure to read the man(7) and D man-pages(7) manpages, as these respectively describe the relevant  syntax and conventions. (The lines of the manpage to be printed.                                        !"#$%&'()*+,-./01234 5 6 7 8 9 : ; < = > ? @ A B C DEFGHIJKLMNOPQRSTUVWXYZ[\]^^_`abcdefghijklmnopqrstuvowwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ A B!C!D!E!C!F!G!H!I!J!K!L!M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n##o#p#q$r$s$t$u$v$w$x$y$z${$|$}$~$%%&&'''''''''''''''''''''''''(((((((((((((((((((((((((((((((((((((()))))))))))))))))****************************************************** * * * * ******************* *!*"*#*$*%*&+'+(,)-*-*-+-,---.-/-0-1-2-3-4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H.I.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c/d/e/f/g/h/i/j///k/l/m/n/o/p/q/r/s/t/u/v0w0x111111y1z1{1|1}1~1223333333333333333333333333333333334444444444444444444444555555555555566777777788888888888888888888888999999999999:;;;;;;;;;;;;;;;;;;<<<<<<<<<< = = = > >>????????????????? @!@"@#@$@%@&@'@(A)B*B+C,C-C.C/C0C1C2C3D4D5D6E7E8E9E:E;E<E=E>E?E@EAEBECEDEEEFEGEHEIEJEKELEMENEOEPEQERESFTFUFVFWFXFYGZG[G\G]G^G_G`GaGbGcGdGeGfGgHhHiHjHHkHlHmHnHoHpHqIrIsItIuIvIwIxIyIzI{I|I}J~JJJJJJJJJJJJJKKKKLLLLLLLLLLLLLMMMMNNNNNNNNNNN~NNNNNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPPPPQQQRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS S S S S SSSSSSSSSSSSSSSSSSS S!S"S#SS$S%S&S'S(S)S*S+S,S-S.S/S0S1S2S3S4S5S6S7S8S9S:S;S<S=S>S?S@SASBSCSDSESFSGSHSISJSKSLSMSNSOSPSQSRSSSTSUSVSWSXSYSZS[S\S]S^S_S`SaSbScSdSeSfSgShSiSjSkSlSmSnSoSpSqSrSsStSuSvSwSxSySzS{S|S}T~TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT?TTTTTTTUUUUVVVWWXXXXXYYYYYYYYYYYYYYYYYYYYYYZZZZZZZZZZZZ[[\]]^^^^^^_`abccddeeffgghijkklllllmnnnoopqqrsssstuvwxy y y z { {|>}~ !"#$%&'(%&)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNNOPQR S T T U V W W XYZ[YZ[\] # , $ ( * + - / . 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ ^ _ ` a b c d e f g h i j k l m n o p q r s t u vwxyHz{|}~L H    \  HCC             ! " # $ % &!'!(!)!*!+!,!-!.!/!/!0!0!1!2!3!4!5!5!6!7!8!9!:!;!<!=!>!?!@!A!B!C!D!E!F!!G!H!I!J!!K!L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b#c#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#"#w#x#y#z#{#|#}#~#####$$$$$$$&&&&&&'''''''''(())**-***************************y*******z*************+,,,,,,,,,,,------------------..011111111111111111111111111 1 1 1 1 1 1 12 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 !3 "3 #3 $3 %4 &4 '4 (4 )4 *4 +4 ,4 -4 .4 /4 05 15 255 35 45 55 65 75 85 9 : ; <6 =6 >6 ?6 @6 A6 B6 C6 D6 E6 F6 G6 G6 H6 I6 J666 K6 L6 M6 N7 O7 P8 Q9 R9 R9 S9 S9 T9 U9 V9 W9 X9 Y9 Z9 [9 \9 ]9 ^9 _9 `99 a9 b9 c9 d9 e9 f9 g9 h9 i9 j9 k9 l9 m9 n9 o9 p: q;; r; s; t; u v w; x;; y; z> {> |> }? ~? ? ? ? ? @ @ @ @@ @ @ @ A A A A A C C C C C C C C CC C C C C C C C C D D D E E E E E E E E E E E E E F I I I JJ J J J J J : : M M M M M M M M M M M M M M M M M M M M M M M M M M M M7M M M N N N N N N N N N N N N N NwN N N N O O O O OO O O O O O O O O O O O O O O O O O P P P R R R xR R R R R R R R R R R S S S S S S S S S S S S S S S S S S S S S S !S "S #S $S %S &S 'S (S )S *S +S ,S -S .S /S 0S 1S 2S 3S 4S 5S 6S 7S 8SSS 9T :T ;T <T =T >T ?V @V AV BW CW CW DW EW FW GW HW IW JW KW LW MW NW OW PW QX RX SX TX UX VY WY XY YY ZY [Y Y \Y ]Y ^Y _Y `Y aY bY cY dY e f gY hY iY jY kY lY m n oY pY qZ rZ rZ sZ tZ uZ vZ wZ xZ yZZ zZ {Z |Z }Z ~Z Z ZhZ Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ZZZ Z Z Z Z Z Z Z [ [ [ [ [ [ [[[ [ [ [ [ [ [ [ [ [ [ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ] ] ] ] ] ] ] ] ] ] ^ ^ ^ ^ ^ ^ _ _ _ _ ` ` ` ` ` ` a a a a a a a a b b b b b b c c d d d d d d d d d d d e e e e e e f f f g g g g g g h h h h h h h h h h h h !h "h #h $h %h &i 'i (i )i *i +i ,i -i .j /j 0j 1j 2k 3k 4k 5l 6l 7l 8l 9l :l ;l <l =l >l ?l @l Al Bl Cl Dl Em Fm Gm Hm Im Jm Km Lm n Mn Nn On Pn Qn Rn So To Up Vp Wp Xp Yp Zp [p \p ]p ^q _q `q aq br cr dr es fs gs hs is js ks ls ms ns os ps qt rt st tt uu vu wu xu yu zv {v |v |v }v ~v v v v v v v w w w x x x x y y y y y z z z { { | | | } } } } } } } } } } } } } } } } } } } } ~ ~ ~ ~ ~         +#        *  darcs-2.5RatifiedByteStringUtils WorkaroundDarcs.Patch.OldDateDarcs.Witnesses.ShowDarcs.Patch.RegCharsEnglishDarcs.SignalHandlerDarcs.Witnesses.SealedIsoDate DateMatcher Darcs.GlobalDarcs.Patch.FileNameDarcs.Patch.ReadMonadsDarcs.Patch.MatchDataProgressExecPrinter Darcs.BugDarcs.Witnesses.OrderedDarcs.Witnesses.WZipper Darcs.URLDarcs.RepoPath Darcs.Utils Darcs.Compat Darcs.Flags Darcs.LockSshLcs Darcs.Email Crypt.SHA256 CommandLineURLDarcs.ExternalDarcs.ColorPrinterDarcs.Repository.FormatDarcs.Repository.MotdDarcs.RemoteApplyDarcs.IODarcs.Patch.PatchyDarcs.Patch.PermutationsDarcs.Patch.PrimDarcs.FilePathMonadSHA1Darcs.Patch.InfoDarcs.PopulationDataDarcs.Patch.CoreDarcs.Patch.ShowDarcs.Patch.CommuteDarcs.Patch.ReadDarcs.Repository.CacheDarcs.Repository.PrefsDarcs.Patch.ApplyDarcs.Patch.ViewingDarcs.Patch.SplitDarcs.Patch.NonDarcs.Patch.Real Darcs.PatchDarcs.HopefullyDarcs.Patch.SetDarcs.ProgressPatchesDarcs.CommandsAuxDarcs.Patch.DependsDarcs.Patch.Bundle Darcs.DiffDarcs.Repository.ApplyPatchesDarcs.Patch.MatchDarcs.ResolutionDarcs.Patch.ChoicesDarcs.Patch.TouchesFilesDarcs.Patch.PropertiesDarcs.Repository.InternalTypesDarcs.Repository.PristineDarcs.Repository.DarcsRepoDarcs.Repository.LowLevelDarcs.Repository.StateDarcs.Repository.HashedIODarcs.Repository.HashedRepoDarcs.Repository.InternalDarcs.Repository.CheckpointDarcs.Repository.MergeDarcs.RepositoryDarcs.ArgumentsDarcs.CommandsDarcs.PrintPatch Darcs.TestDarcs.Commands.AddDarcs.Population Darcs.MatchDarcs.SelectChangesDarcs.Commands.AnnotateDarcs.Commands.ApplyDarcs.Commands.ChangesDarcs.Repository.RepairDarcs.Commands.CheckDarcs.Commands.ConvertDarcs.Commands.DiffDarcs.Commands.DistDarcs.Commands.InitDarcs.Commands.GetDarcs.Commands.GZCRCsDarcs.Commands.MarkConflictsDarcs.Commands.MoveDarcs.Commands.OptimizeDarcs.Commands.PushDarcs.Commands.PutDarcs.Commands.WhatsNewDarcs.Commands.RecordDarcs.Commands.AmendRecordDarcs.Commands.RemoveDarcs.Commands.RepairDarcs.Commands.ReplaceDarcs.Commands.UnrevertDarcs.Commands.RevertDarcs.Commands.UnrecordDarcs.Commands.RollbackDarcs.Commands.SetPrefDarcs.Commands.ShowAuthorsDarcs.Commands.ShowBugDarcs.Commands.ShowContentsDarcs.Commands.ShowFilesDarcs.Commands.ShowTagsDarcs.Commands.ShowIndexDarcs.Commands.TagDarcs.Commands.TrackDownDarcs.Commands.TransferModeDarcs.Commands.PullDarcs.Commands.ShowRepoDarcs.Commands.ShowHTTPDarcs.Commands.SendDarcs.TheCommandsDarcs.Commands.HelpDarcs.ArgumentDefaultsDarcs.RunCommandVersionbase System.IOreadFileGHC.IO.Handle.Text hGetContentsbytestring-0.9.1.7Data.ByteString intercalatedirectory-1.0.1.1System.DirectorygetCurrentDirectory renameFile unix-2.4.0.2System.Posix.SignalsinstallHandler raiseSignalsigTERMsigPIPEsigINTsigHUPsigALRMsigABRTSignalDefaultIgnoreCatch CatchOnceHandler readUTCDateshowIsoDateTimeShow2 showDict2Show1 showDict1ShowDictShowDictRecord ShowDictClass showsPrecDshowD showListD showsPrec1show1 showsPrec2show2showOp2appPrecregCharsThisNoun Countablepluralsingular englishNum andClauses orClausesintersperseLastpresentParticiple setExecutable stdoutIsAPipewithSignalsHandledcatchNonSignalcatchInterrupt tryNonSignalwithSignalsBlockedGapemptyGapfreeGapjoinGap FreeRightFreeLeft FlippedSealSealed2Sealedsealseal2flipSeal unsafeUnsealunsafeUnsealFlipped unsafeUnseal2unsealunsealMliftSMmapSeal mapFlippedunseal2mapSeal2 unsealFlipped unFreeLeft unFreeRight MCalendarTimemctYearmctMonthmctDaymctHourmctMinmctSec mctPicosecmctWDaymctYDay mctTZNamemctTZmctIsDSTmctWeek TimeIntervalcleanLocalDate readLocalDate getLocalTz parseDategetIsoDateTimeiso8601Intervaliso8601DurationenglishDateTimeenglishInterval englishLasttoMCalendarTimeunsafeToCalendarTime addToMCalsubtractFromMCal resetCalendar unsetTimeDMparseDateMatcher getMatchersatexit withAtexit setDebugMode whenDebugMode withDebugMode debugMessage debugFail putTimingsetTimingsMode timingsModesetVerboseMode verboseModesetSshControlMasterDisabledsshControlMasterDisabled addCRCWarninggetCRCWarningsresetCRCWarningsdarcsdirunsafeWithInternals readIntPSunpackPSFromUTF8packStringToUTF8ifHeadThenTail dropSpace breakSpaceisFunkyhashPSsubstrPS breakFirstPS breakLastPSlinesPS unlinesPS gzDecompressisGZFile gzReadFilePS gzWriteFilePSgzWriteFilePSs gzReadStdin mmapFilePS fromPS2Hex fromHex2PSbetweenLinesPSbreakAfterNthNewlinebreakBeforeNthNewline decodeLocale encodeLatin1 encodeLocale decodeString utf8ToLocaleFileNamefp2fnfn2fp niceps2fn fn2nicepsfn2psps2fn encodeWhite decodeWhiteownName superName breakOnDirnormPathbreakup///movedirfilenameParserMwork maybeWork peekInputlexChar lexStringlexEof lexStringsmyLex alterInput parseStrictly PatchMatch PatternMatch patchMatch beginTedious endTedious tediousSizeminlist progressListprogressprogressKeepLatest finishedOne finishedOneIOsetProgressModewithoutProgress ExecExceptionRedirectStdoutFileNullAsIs RedirectsexecexecInteractivewithoutNonBlockColorMagentaCyanGreenRedBlue Printers'PrinterscolorP invisiblePhiddenP userchunkPdefP lineColorT lineColorSDocunDoc PrintableBothPSSspacenewlineminusplus backslashlparenrparenparenserrorDoc putDocWith putDocLnWithputDocputDocLn hPutDocWith hPutDocLnWithhPutDoc hPutDocLn renderStringrenderStringWithrenderPS renderPSs renderPSWith renderPSsWithprefixinsertBeforeLastline lineColor hiddenPrefix unsafeBothunsafeBothText packedStringunsafePackedString invisiblePS userchunkPS unsafeChartext unsafeText invisibleText hiddenText userchunkblueTextredText greenText magentaTextcyanText colorTextwrapText printablesimplePrinters simplePrinterinvisiblePrinteremptydoc<><+>$$vcatvsephcat_bug_bugDoc _impossible _fromJustRLNilRL:<:FLNilFL:>:MyEq unsafeCompare=\/==/\=:>>:||::/\::\/::<:>ProofEqCheckNotEqIsEqisEq unsafeCoercePunsafeCoercePStartunsafeCoercePEndunsafeCoerceP2nullFLnullRL filterFLFLfilterRLfilterE+>++<+ reverseFL reverseRLconcatFLconcatRLspanFLspanFL_M splitAtFL splitAtRLbunchFLallFLanyFLfoldlFLfoldlRLmapFL_FL zipWithFLmapRL_RLmapFLfilterFLmapRL unsafeMap_l2flengthFLlengthRLisShorterThanRLconcatReverseFLheadRL consRLSealedtoFLFZipper flToZippernullFZlengthFZfocusclownsjokers rightmostrightleftmostlefttoEnd isRelative isAbsoluteisFileisUrlisSsh isSshNopathAbsoluteOrRemotePathAbsolutePathOrStd AbsolutePathSubPath FilePathLike toFilePath FilePathOrURLtoPath makeSubPathOf simpleSubPath ioAbsolute makeAbsolute rootDirectorymakeAbsoluteOrStdstdOutioAbsoluteOrStduseAbsoluteOrStdioAbsoluteOrRemoteisRemotesetCurrentDirectorysp2fn PromptConfigpPromptpBasicCharacterspAdvancedCharacterspDefaultpHelp showHexLen addToErrorLoccatchall maybeGetEnv firstJustM firstJustIO clarifyErrorsprettyException prettyError ortryrunning putStrLnError putDocLnErrorwithCurrentDirectory withUMaskaskUserstripCr firstNotBlank formatPath breakCommandnubsorteditFile runEditorenvironmentHelpEditor getViewerenvironmentHelpPager promptYorn promptChar filterPathsfilterFilePathsisFileReallySymlinkdoesFileReallyExistdoesDirectoryReallyExisttreeHasAnycasetreeHas treeHasDir treeHasFile canonFilename mkStdoutTemp maybeRelinksloppyAtomicCreate atomicCreate CompressionGzipCompression NoCompression DarcsFlagNullFlag JustThisRepoRepairCheckAllowUnrelatedReposNoCacheNoHTTPPipelining ApplyOnDisk StoreInMemoryUMask RunPrehook AskPrehook NoPrehook PrehookCmd RunPosthook AskPosthook NoPosthook PosthookCmd NoPendingPending NoDirectories DirectoriesNoFilesFiles UpgradeFormat OptimizeHTTPOptimizePristineNoLinksRelinkPristineRelinkSiblingNoUpdateWorking PristineNone PristinePlain UseFormat2UseOldFashionedInventoryUseHashedInventoryBisectDontSetScriptsExecutableSetScriptsExecutableDisableNoFancyMoveAdd FancyMoveAdd NoSetDefault SetDefaultDryRunNonForce NonVerifyNonApply UpToPattern AfterPatternSeveralPattern OnePattern ForceReplace XMLOutput DiffFlags FixFilePath EphemeralLazyCompletePartialForwardReverse NonUnifiedUnified NoSummarySummary ExternalMergeDiffCmd InteractivePipe HumanReadableMachineReadableApplyAsReplyNewRepo RemoteRepo WorkRepoUrl WorkRepoDir UnCompress NoCompressCompressPromptForDependenciesDontPromptForDependencies DontGrabDepsDontAllowWindowsReservedAllowWindowsReservedDontAllowCaseOnly AllowCaseOnly SkipBoringBoring SkipConflictsNoAllowConflicts MarkConflictsAllowConflicts NoKeepDateKeepDatePromptLongCommentNoEditLongCommentEditLongCommentToksNoEditDescriptionEditDescription RemoteDarcsNoSSHControlMasterSSHControlMaster VerifySSLVerifyNoHappyForwardingHappyForwardingSignSSLNoSignSignAsSign ComplementUnion Intersection CreatorHashAnyOrder NoLookForAdds LookForAddsDontIgnoreTimes IgnoreTimes NoAskDepsAskDepsDontRestrictPaths RestrictPathsReorder NoRecursive RecursiveAllDistName DontRmLogFile RmLogFileLogFileCountContextUpToTagAfterTagOneTag NumberPatchesPatchIndexRangeMaxCountLastNTagName UpToPatch AfterPatch SeveralPatchOnePatch PatchNameAuthor SendmailCmd InReplyToSubjectOutputAutoNameOutputCcTargetQuietNormalVerbosityVerbose DebugHTTP DebugVerboseDebugTimingsNoLeaveTestDir LeaveTestDirChangesToAllFilesOnlyChangesToFilesTestNoTest ListOptionsHelp compressionwantExternalMerge isInteractivemaxCountwillIgnoreTimeswillRemoveLogFile isUnifiedwillStoreInMemorydoHappyForwarding includeBoringdoAllowCaseOnlydoAllowWindowsReserved doReverseshowChangesOnlyToFiles defaultFlagwithLockwithLockCanFailremoveFileMayNotExistwithTemp withOpenTempwithStdoutTemp tempdirLocenvironmentHelpTmpdirenvironmentHelpKeepTmpdir withPermDir withTempDirwithDelayedDir rmRecursiveworldReadableTemp withNamedTempeditText readBinFilereadLocaleFilereadDocBinFile appendBinFileappendDocBinFile writeBinFilewriteLocaleFilewriteDocBinFilewriteAtomicFilePSgzWriteAtomicFilePSgzWriteAtomicFilePSsgzWriteDocFile writeToFile appendToFileSSHCmdSFTPSCPSSHgrabSSHcopySSHcopySSHsrunSSHgetSSHenvironmentHelpSshenvironmentHelpScpenvironmentHelpSshPortBSTArrayPArrayBArray getChangesshiftBoundariesaLen formatHeader makeEmail readEmail sha256sumparseCmd addUrlencodedCachableMaxAge UncachablemaxPipelineLength copyUrlFirstcopyUrlwaitUrldisableHTTPPipelining setDebugHTTPenvironmentHelpProxyenvironmentHelpProxyPassword sendmailPath diffProgram darcsProgrambackupByRenamingbackupByCopying fetchFilePSfetchFileLazyPS gzFetchFilePSremoteDarcsCmd copyFileOrUrlspeculateFileOrUrl copyLocal clonePathsclonePartialsTree cloneTreecloneTreeExcept cloneFile maybeURLCmdcopyFilesOrUrlsexecSSHpipeDoc pipeDocSSH sendEmail generateEmail sendEmailDoc resendEmail execDocPipeexecPipeIgnoreError signStringverifyPSgetTermNColorsviewDoc viewDocWithtraceDoc assertDoc fancyPrinters RepoFormatRF RepoPropertyHashedInventoryDarcs2Darcs1_0identifyRepoFormatwriteRepoFormatcreateRepoFormat writeProblemreadfromAndWritetoProblem readProblem formatHasformatHasTogethergetMotdshowMotd remoteApplyapplyAs runSilently TolerantIO runTolerantlyWriteableDirectorymWithCurrentDirectorymSetFileExecutable mWriteBinFile mWriteFilePS mWriteFilePSsmCreateDirectorymRemoveDirectory mWriteDoc mCreateFile mRemoveFilemRename mModifyFilePSmModifyFilePSsReadableDirectorymDoesDirectoryExistmDoesFileExistmInCurrentDirectorymGetDirectoryContents mReadBinFile mReadFilePS mReadFilePSsInvertinvertidentitysloppyIdentity ReadPatch readPatch' ShowPatch showPatch showNicelyshowContextPatch descriptionsummary writePatch gzWritePatchthingthingsCommutecommutemergelistTouchedFiles hunkMatchesApplyapplyapplyAndTryToFixapplyAndTryToFixFLPatchy mapMaybeSnd toFwdCommute toRevCommutemergeFL commuteRLFL commuteRLcommuteFLorComplain commuteFL bracketedFLpeekforinvertFLinvertRL CommuteFn partitionFL partitionRLcommuteWhatWeCanFLcommuteWhatWeCanRLgenCommuteWhatWeCanRL removeCommonremoveFLremoveRLremoveSubsequenceFLremoveSubsequenceRLsimpleHeadPermutationsFLheadPermutationsFLheadPermutationsRL selfCommuter commuterIdRLpartitionConflictingFLEffecteffecteffectRLisHunk ConflictState Duplicated ConflictedOkayIsConflictedPrimIsCConflictlistConflictedFilesresolveConflictscommuteNoConflictsconflictedEffectisInconsistent FromPrims fromPrims joinPatches ToFromPrimtoPrimFromPrimfromPrimCommuteFunctionPerhaps SucceededFailedUnknownFileNameFormat NewFormat OldFormat DirPatchTypeAddDirRmDir FilePatchTypeBinary TokReplaceHunkAddFileRmFilePrim ChangePrefIdentitySplitFPDPMove null_patch isNullPatchnullP isIdentity isSimilar primIsAddfile primIsAdddir primIsHunk primIsBinary primIsSetprefaddfilermfileadddirrmdirmove changeprefhunk tokreplacebinarynFnformatFileNameshowPrim showPrimFLshowHunk tryToShrinktryShrinkingInverse canonizeFLsortCoalesceFL is_filepatch subcommutescanonizejointryTokInternal modernizePrimcommuteNoConflictsFLcommuteNoConflictsRL FilePathMonad withFilePathssha1PS PatchInfo_piDate_piName _piAuthor_piLog isInverted RepoPatchInfo repopatchinfo idpatchinfo patchinfoaddJunk invertNamejustName justAuthorjustLog humanFriendlypiNamepiRenamepiAuthorisTagpiDate piDateStringpiDateBytestring setPiDatepiLogpiTagtoXmlmakeAltFilename makeFilename showPatchInfo readPatchInfoInfonameI modifiedByI modifiedHowI createdByI creationNameIDirMarkDullDirMovedDir RemovedDirAddedDirDullFile ModifiedFile MovedFile RemovedFile AddedFilePopTreePopFilePopDir PopulationPoppopStatepopTree setPopState notModifiedsetState getPopFromNamedNamedPPatchRegremMergerComPPPisMerger mergerUndo flattenFL joinPatchesFL namepatch anonymous infopatchadddepsgetdepspatch2patchinfo patchname patchcontents showPatch_showNamedPrefixtoMaybe elegantMerge publicUnravelunravelmergermangleUnravelledmodernizePatch readPatchreadPrimCacheCaCacheLoc CacheType DirectoryRepo WritableOrNot NotWritableWritable HashedDirHashedInventoriesDirHashedPatchesDirHashedPristineDir hashedDir allHashedDirs unionCachesunionRemoteCachescompareByLocality repo2cache cacheHashokayHashtakeHashfetchFileUsingCachewritable isthisrepohashedFilePath peekInCachespeculateFileUsingCachespeculateFilesUsingCachewriteFileUsingCache cleanCachescleanCachesWithHintFileTypeTextFile BinaryFilewriteDefaultPrefsdarcsdirFilterenvironmentHelpHome getGlobalglobalCacheDir boringRegexpsboringFileFilterbinariesFileHelpfiletypeFunction addToPreflist getPreflist setPreflist defPrefval getPrefval setPrefval changePrefval defaultreposetDefaultrepo getCaches MarkedUpFileLineMarkNoneAddedRemovedLine RemovedLine AddedLineapplyToFilepathsforceTokReplaceemptyMarkedupFile markupFile patchChanges applyToPop applyToTree plainSummary xmlSummarySplitter applySplitter canonizeSplit rawSplitter noSplitter primSplitterNonablenonNonshowNonsshowNonreadNonsreadNonunNonaddPaddPsaddremNonsremPremPsremremAddPremAddPs*>>**>>>>*propAdjustTwice RealPatch InvConflictor ConflictorNormal Etacilpud Duplicate isDuplicate isForwardmergeUnravelled isConsistent prim2real pullCommon RepoPatch WPatchInfo unWPatchInfo PatchInfoAnd HopefullycompareWPatchInfoinfo patchDescwinfopiapn2piapatchInfoAndPatch hopefullyconscientiously hopefullyMactually createHashed extractHash unavailableTaggedPatchSetSealedPatchSetOrigin newset2RL newset2FLprogressPatchSettags progressFL progressRLprogressRLShowTags checkPathsmaliciousPatcheshasMaliciousPathgetPatchesBeyondTag splitOnTaggetPatchesInTag getTagsRightdeepOptimizePatchsetoptimizePatchsetslightlyOptimizePatchset commuteToEndremoveFromPatchSetfindCommonWithThem findUncommon countUsThem mergeThemnewsetIntersection newsetUnionmerge2FLareUnrelatedRepos hashBundle makeBundleN makeBundle makeBundle2 scanBundlecontextPatches scanContext patchFilenametreeDiffapplyPatchesWithFeedback applyPatchesMatcherMatchFun makeMatcher applyMatcher parseMatch matchPattern matchParserhelpOnMatchersstandardResolutionexternalResolutionpatchsetConflictResolutionsSlotInLastInMiddleInFirst PatchChoices TaggedPatchTagtagtpPatch patchChoicespatchChoicesTpsSubpatchChoicesTpsseparateFirstFromMiddleLastseparateFirstMiddleFromLast getChoices refineChoices patchSlot patchSlot'forceMatchingFirst forceFirsts forceFirstselectAllMiddlesforceMatchingLast forceLasts forceLast makeUncertainmakeEverythingLatermakeEverythingSooner substituteselectTouchingdeselectNotTouchingselectNotTouchingchooseTouchingchoosePreTouching lookTouchidentityCommutesinverseDoesntCommute recommutecommuteInversespatchAndInverseCommute permutivitypartialPermutivitymergeArgumentsConsistentmergeConsistentmergeEitherWay mergeCommute joinInverses joinCommute show_readRepoTypeDarcsRepository RepositoryPristineHashedPristine PlainPristine NoPristine extractCacheextractOptions modifyCache nopristineidentifyPristineflagsToPristinecreatePristineremovePristine applyPristinecreatePristineFromWorkinggetPristinePoppristineDirectorypristineToFlagStringeasyCreatePristineDirectoryTree'easyCreatePartialsPristineDirectoryTreewriteAndReadPatchwriteInventorywriteInventoryAndPatchesaddToInventoryaddToTentativeInventoryaddToTentativePristineremoveFromTentativeInventoryfinalizeTentativeChangesfinalizePristineChangesrevertTentativeChanges copyPatchesreadReporeadTentativeReporeadCheckpoints pendingName readPendingreadPendingfile readPrims TreeFilterapplyTreeFilterrestrictSubpathsrestrictBoringunrecordedChanges readRecordedreadUnrecorded readWorkingreadRecordedAndPendinginvalidateIndex readIndexHashedIO copyHashedcopyPartialsHashed cleanHashdirreadHashedPristineRoot cleanPristinecopyRepo copySourceswriteTentativeInventoryapplyToTentativePristine copyPristinecopyPartialsPristinepris2invUpdatePristineDontUpdatePristine MakeChangesDontMakeChanges IdentifyRepoGoodRepository NonRepository BadRepositoryRIO unsafeUnRIOrIO getRepositorymaybeIdentifyRepositoryidentifyDarcs1RepositoryidentifyRepositoryForamInRepositoryamNotInRepositoryfindRepositorymakeNewPending makePatchLazyprefsUrl unrevertUrlapplyToWorkingannounceMergeConflictscheckUnrecordedConflictstentativelyAddPatchtentativelyAddPatch_tentativelyAddToPendingsetTentativePendingtentativelyRemovePatchestentativelyReplacePatchesfinalizeRepositoryChanges testTentative testRecordedrevertRepositoryChangespatchSetToPatches withGutsOfwithRepositorywithRepositoryDirectory$- withRepoLockwithRepoReadLockoptimizeInventorycleanRepositorycreatePristineDirectoryTree#createPartialsPristineDirectoryTree withRecordedgetMarkedupFilesetScriptsExecutable getCheckpointgetCheckpointByDefaultidentifyCheckpointwriteCheckpointPatchtentativelyMergePatches_tentativelyMergePatchesconsiderMergeToWorkingcreateRepositorycopyRepositorycopyOldrepoPatches writePatchSetpatchSetToRepositorycheckUnrelatedRepos addToPendingreplacePristine DarcsOptionDarcsMutuallyExclusiveDarcsMultipleChoiceOptionDarcsSingleOptionDarcsAtomicOptionDarcsNoArgOptionDarcsOptAbsPathOptionDarcsAbsPathOrStdOptionDarcsAbsPathOptionDarcsArgOptionisinarein nubOptions applyDefaults atomicOptionsoptionFromDarcsOptionfixFilePathOrStd fixUrlFlagfixUrl fixSubPaths areFileArgs listOptions flagToStringhelpdisable anyVerbosityworkingRepoDirpossiblyRemoteRepoDir getRepourl remoteRepopatchnameOption sendToContextmatchOneContextmatchOnematchOneNontag matchSeveral matchRangematchSeveralOrRangematchSeveralOrLast matchMaxcount getContextnotesttest leaveTestDir ignoretimes lookforadds fancyMoveAddaskdepsaskLongCommentkeepDatelogfile rmlogfileauthorfromOptfileHelpAuthorenvironmentHelpEmail getAuthor getEasyAuthor nocompressuncompressNocompressunifiedunidiff diffCmdFlag storeInMemorytargetccSendccApplygetCcsubject getSubject inReplyTo getInReplyTooutputoutputAutoName getOutputeditDescriptiondistnameOption recursiveinventoryChoicesgetInventoryChoices upgradeFormat xmloutput creatorhashsignapplyashappyForwarding setDefaultverifyreponamedepsSeltokenspartial partialCheck forceReplacereplyapplyConflictOptionspullConflictOptionsuseExternalMerge dryRunNoxmldryRun showFriendlyprintDryRunMessageAndExit noskipBoringallowProblematicFilenames diffflags changesFormatchangesReverse onlyToFiles humanReadableallInteractiveallPipeInteractivepipeInteractiverepoCombinator listFileslistUnregisteredFileslistRegisteredFiles optionsLatexsetScriptsExecutableOptionbisectrelinkrelinkPristinesiblingflagsToSiblingsnolinksreorderPatches sendmailCmdenvironmentHelpSendmailgetSendmailCmdfiles directoriespendingnullFlag definePatches defineChanges posthookCmdposthookPromptgetPosthookCmd prehookCmd prehookPrompt getPrehookCmdnetworkOptionsnoCacheoptimizePristine optimizeHTTP umaskOption restrictPathsallowUnrelatedRepos justThisRepo checkOrRepairpatchSelectFlag CommandArgsSuperCommandSubSuperCommandOnly CommandOnly DarcsCommand SuperCommandcommandSubCommands commandName commandHelpcommandDescriptioncommandExtraArgscommandExtraArgHelpcommandCommand commandPrereqcommandGetArgPossibilitiescommandArgdefaultscommandBasicOptionscommandAdvancedOptionsCommandControl GroupName HiddenCommand CommandDataextractCommandscommandAlloptionscommandOptions nodefaultsgetSubcommands commandAlias commandStubusagesubusage usageHelper chompNewlinegetCommandMiniHelpgetCommandHelpdisambiguateCommands putVerboseputInfo putWarningabortRun printFriendly printPatchprintPatchPagercontextualPrintPatchgetTest runPosthook runPrehook expandDirs getRepoPopgetRepoPopVersion lookupPoplookupCreationPop modifiedToXmlInclusiveOrExclusive Exclusive InclusivehaveNonrangeMatchhavePatchsetMatchgetNonrangeMatchgetPartialNonrangeMatch firstMatch getFirstMatchgetPartialFirstMatch secondMatchgetPartialSecondMatchcheckMatchSyntaxnonrangeMatchermatchAPatchread matchAPatch matchPatchgetOnePatchsetmatchFirstPatchsetmatchSecondPatchset matchExistsapplyInvToMatcher WhichChanges FirstReversedFirst LastReversedLastselectionContextPrimselectionContext runSelection selectChanges viewChangeswithSelectedPatchFromRepofilterOutConflictsannotate createdAsXmlchangeslogRepositoryConsistency BrokenPatchesBrokenPristineRepositoryConsistentreplayRepository checkIndexcheckconvert diffCommanddist initialize initializeCmdgetclone doCRCWarningsgzcrcs markconflictsresolvemvoptimizepushputwhatsnew announceFilesrecordcommitgetDategetLogaskAboutDepends amendrecordremovermunaddrepair repairCmdreplaceunrevert writeUnrevertrevertunrecordgetLastPatchesunpull obliteraterollbacksetpref showAuthorsshowBug showContents showFilestoListManifest manifestCmdshowTags showIndexshowPristineCmd trackdown transferModefetchpullshowRepo showCommandquerylistfetchUrlpostUrl requestUrl waitNextUrlsendcommandControlListhelpCmdlistAvailableCommands printVersionenvironmentHelpgetDefaultFlags runTheCommandreadDatecaseCharparsec-2.1.0.1"Text.ParserCombinators.Parsec.Charchar caseStringstringmanyNmanyNtoMdateTime cvsDateTime oldDateTimeiso8601DateTime iso8601Date iso8601TimeoptchainnDigits twoDigits fourDigitsmySpacesdayNameyearmonthNum intToMonth monthNamedayhourminutesecondzone nullCalendar&&&|||GHC.Num-GHC.Real^GHC.Base. unescapeCharsnormalRegChars Data.List intersperseSignalException resethandlerih catchSignalcatchUserErrors FRInternalStepped FLInternal unSteppedPolyunPolyold-time-1.0.0.5 System.Time CalendarTime Data.MaybeNothing englishDate englishTime englishAgoenglishDuration theBeginningaddToCalsubtractFromCaladdDiff multiplyDiff nullMCalendar copyCalendar withinDay dateRange cDateRangewithinsamePartialDate tryMatchersnowCRCWarningList atexitActions _debugMode _timingsMode _verboseMode_sshControlMasterDisabled_crcWarningList conv_from_hex conv_to_hexhas_funky_charString isSpaceWord8 firstnonspace firstspacehashunlinesData.ByteString.Internal ByteStringhGetLittleEndIntFNordrepath dropDotdot breakFirst breakLastSMghc-prim GHC.TypesCharMaybe ProgressDatasofarlatesttotalhandleProgresshandleMoreProgress printProgressmyput simpleput _progressData progressIOprogressKeepLatestIOputDebug _progressModemkhPutCrupdateProgressDatasetProgressDatagetProgressDatagetProgressLastwhenProgressModewithProgressMode_devNull withExit127DocumentEmptyStprinters currentPrefixspacePnewlinePhPrintPrintableshPrintPrintable renderWith initStatemkColorPrintableinvisiblePrintablehiddenPrintableuserchunkPrintablesimplePrinters'BugStuff_bugLocCharLiketoCharfromCharRmtPAbsPAPStdAP/- simpleClean takeDirectory pathToPosix normSlashes reset_umask set_umaskfmap getEditorGHC.IOFilePath existsAnycasec_atomic_create maybe_relink c_mkstemp mkstempCorelastWord getBoolFlag WithDirKindDelayedTempPermgetlockcatchNonExistence releaseLocktakeLocktakeFilegetCurrentDirectorySansDarcswithDir ConnectionCinpouterrdebsshConnectionswithSSHConnectionseverSSHConnection cleanrepourl cleanrepodir sshStdErrMode getSSHOnlyhasSSHControlMasterhasSSHControlMasterIOlaunchSSHControlMasterexitSSHControlMastercontrolMasterPathVSTArrayMapArrayHArray dropStartdropEndgetSlice getChanges'markColldiffArrcmpseqfindDiagfindOne findSnake findOneRev findSnakeRev nextUnchangedskipOneUnChangednextUnchangedN nextChanged prevUnchangedinitVinitVRev initVChangedinitHinitMinitPaLenM convertPatch getInsert getDelete createPatchcreatePskipChangedRevlineMaxqlineMax foldAndEncodeqEncodeencodedWordStartencodedWordEnd qEncodeCharqpencodeencodeqpdecodedecodec_sha256FTable commandlinearg unquotedArg quotedArg quoteContent formatRedirformatescape consumeAll separator expandFormat urlEncodecurl_pipelining_enabledcurl_enable_debug curl_last_urlcurl_wait_next_urlcurl_request_urlPriorityLowHighQUrlState inProgress waitToStart pipeLength randomJunk UrlRequesturlfilecachablepriorityreadQinsertQpushQdeleteQelemQemptyQnullQmaxPipelineLengthRefurlNotificationsurlChan urlThreadcheckWaitToStartcopyUrlWithPrioritydownloadCompletedbg minCachable cachableToInt waitNextUrl'pipeliningEnabledbackupByspeculateFilesOrUrls clonePathclonePartialTree cloneSubTreespeculateRemote copyRemotecopyRemoteNormal copyLocals copyRemotes stringToInt mgetRemotescopyRemotesNormal doWithPatches haveSendmail execSendmail execPSPipesignPGPsignSSL verifyGPG verifySSLpipeDocToPagerPolicypoColorpoEscape poLineColor poAltColor poIsprintpo8bitpoNoEscXpoEscX poTrailingpoCRpoSpacedollarcr getPolicylineColorTranslineColorSuffix colorPrinteruserchunkPrinter escapePrinternoEscapeisPrintableAscii quoteChar markEscapecolor makeColor' makeColorsetColor makeAsciiart resetColor withColormakeBold makeInvertdfparseRepoFormatdefaultRepoFormatisKnownknownPropertiesjustsOrNothingrp2ps applyViaSudo applyViaLocal applyViaUrl applyViaSshapplyViaSshAndSudo applyoptsSilentIOSIOTIO TolerantMonadwarningrunIOrunTMbackupfloatFnpeekforw peekforPS partitionFL' partitionRL'SimpleSDPSFPevalargs showAddFile showRmFileshowMoveshowChangePref showAddDir showRmDirshowTok showBinary breakEvery showSplit commuteSplit mapPrimFLtoSimple fromSimple fromSimplestryHarderToShrink tryToShrink2 shrinkABittryOne comparePrimsortCoalesceFL2pushCoalescePatch isInDirectory toPerhaps cleverCommute speedyCommuteeverythingElseCommute isSuperdircommuteFiledircoalescecommuteFilepatches commuteFPcoalesceFilePrim commuteHunk coalesceHunk canonizeHunk makeHoley tryTokReplace mergeOrderseqFL compareFLcommuteNoConflictsRLFLFPMXYZABCDEfiddleEndiannesssha1Step12PadLength sizeSplit sha1Step3Init sha1Step4Mainsha1Step5Display showAsHexRPIignored ignoreJunk readPatchDatemetadataToString friendlyD commentsAsXml escapeXMLescapeXMLByteString strReplace bstrReplacemidtrunc fixUpFname mungeCharlinesStartingWithEndingWith htmlPatchInfo patchLinkmailLinkshowPop notHidden showMerger MaybeCommute unsafeMerger mergerCommutecommuteNoMergerisFilepatchMergercommuteRecursiveMergerotherCommuteRecursiveMerger actualMergemergePatchAfterPatchesmergePatchesAfterPatchunwind trueUnwindreconcileUnwindings putBefore getSupersisSuperpatchOfglump09 onlyHunks applyHunksgetOld getAFilename getHunksOld getHunksNew getHunkline makeChunkmangleUnravelledHunksnewUr eqPatches readPatches readSplit readFileNamereadHunk skipNewlinereadTok readBinary readAddFile readRmFilereadMovereadChangePref readAddDir readRmDir readMerger readNamed readDependsreadPislinesStartingWith FromWhereAnywhere LocalOnlyOrOnlySpeculate OnlySpeculate ActuallyCopy checkHashcopyFileUsingCachecopyFilesUsingCachefetchFileUsingCachePrivate createCachewritecleanCachesWithHint' defaultBoring isDarcsdirglobalPrefsDir noncomments getPrefLinesactualBoringFileFilter normalizedefaultBinariesprefsDirectorywithPrefsDirectory getPreffile FileContentsapplyFLapplyHunkLines markupPrim markupHunk markupTok applyToPop'breakPpnamehashed-storage-0.5.3Storage.Hashed.TreeTreeSummOpSummModSummRmSummAdd SummDetailSummNoneSummMvSummFile SummRmDir SummAddDir SummChunkshowContextSeriesshowContextHunkcoolContextHunk genSummarysummChunkToXMLsummChunkToLine dropDotSlashwithEditedHead doPrimSplit remNonHelperCommonRLCommon sealed2nonmergeConflictingNons joinEffectsassertConsistentmergeAfterConflictinggeteffxx2nons xx2patches allNormaleveryoneConflicts mergeWitheqSetremove1 invertNon nonTouchesnonHunkMatchestoNonsinitsFLfromNons pullInContextfilterConflictsFLallConflictsWith conflictsWith dependsUpon+++ swapMerge invertCommuteinvertCommuteNC pullCommonRL RepoPatchBasePIAPSimpleHopefully UnavailableActually Data.EitherEitherHashedfmapHhopefully2eithermaliciousPathsisMaliciousPathisExplicitlyRelativewith_partial_intersectiongetTagsR infoAndDeps simpleTag fastRemoveFL fastRemoveRLfilterGpgDashesunavailablePatches piUnavailable-:- getPatches parsePatchessillyLexDiffChangedRemovedAddedgetDiffMATCHtrivialsubmatchtable trystringmatchcreateMatchHelperprimitiveMatchersquotedmymatch exactmatch authormatchlogmatch hunkmatch hashmatch datematch touchmatch mergeListexternallyResolveFilerunPCsfirstslasts PatchChoicePCpcPatchchoiceTPTGliftTP compareTags pushLastsfmlFirstfix pristineNamereallyIdentifyPristinehashedPristineDirectoryformatInventorysimplyWriteInventorysimplyWriteTaggedInventory repairablereadRepoPrivate readPatchIdsStorage.Hashed.DarcsreadDarcsHashedStorage.Hashed.Plain readPlainTreeObjTypeDFRWROHashDir permissionscachecompressrootHash readHashFile identifyThing makeThingrmThingreadhashwithhinhreadroot writerootgetagetanysetareaddirdirwritedir writeHashFilecopyPartialHashed applyHashed"simpleRemoveFromTentativeInventoryreadTaggedInventorywriteEitherInventorywriteInventoryPrivatewritePatchIfNecesarypihashreadInventoryPrivatereadInventoriesreadHashinv2pris skipPristinepristineNameLength HashedVsOldHvsOoldhashed>>>=>>>returnRseekReposiftForPendinghandlePendForAddisSimple crudeSiftdecideHashedOrNormalprependtentativelyRemovePatches_finalizePendingtestAnygetUMaskremoveFromUnrevertContext withTentative doMarkAll $fMonadRIOgetCheckInternal formatInvRepoSortOldPorNP IsPartial NotPartialrepoSort copyInventorycopyPartialRepositorycopyFullRepositorycopyNotPackedRepositorycopyPackedRepositoryfetchPatchesIfNecessarypristineFromWorking NoArgPieces FlagContent StringContentAbsoluteOrStdContentAbsoluteContent NoContent getContentgetContentStringisa isAnAbsoluteisAnAbsoluteOrStdmkMutuallyExclusiveoptionFromDarcsAtomicOption concatOptionsextractFixPath fixFilePathpartitionEithermatchTo matchFrom__tag__tags__patch __patches__match __matches__last__index __indexes __compress__dontCompress __uncompress __partial__lazy __ephemeral __completepipe interactive allPatches latexHelpoptionListLatex optionLatexshowShortOptionsshowLongOptionssetEnvCautiously remoteDarcs numberStringextractHiddenCommands padSpacesgetCommandHelpCoreextract amVerboseamQuiet getPosthook getPrehookrunHook AddMessages msgSkipping msgAddingmsgIsmsgAreaddDescriptionaddHelpaddHelp'addCmdaddpnormalMessagesdryRunMessages addHelp'' expandOne getParentsinitPopapplyPatchSetPopapplyPatchesPop lookupPop'lookupCreationPop'getNonrangeMatchSgetFirstMatchS unpullLastNgetMatchPatterntagmatch strictJust firstMatchernonrangeMatcherIsTagfirstMatcherIsTag secondMatchersecondMatcherIsTaghasLastn hasIndexRangedropn findAPatchGHC.ErrerrormatchAPatchsetgetMatchingTag getMatcherSgetTagS applyInvpsafetakeGHC.ListtakewithRecordedMatch applyInvRLKeyPresskpkpHelpPatchSelectionInteractiveSelectionMPatchSelectionMInteractiveSelectionContextISCcurrenttpschoicesPatchSelectionContextPSCoptssplittermatchCriterionjobnameMatchCriterionbackwardtriviswantedliftRsc1invertCreprhelpForkeysForwspfrcanonizeAfterSplitterrealSelectChangesdeselectUnwantedpatchesToConsiderselectedPatches liftChoicesjustDone textSelect textSelect' optionsBasic optionsFile optionsViewoptionsSummary optionsQuit optionsNav optionsSplitoptions currentPatchtodo modChoices currentFiledecidedecideWholeFile postponeNextskipOnebackOne splitCurrentselected printSelected printSummaryskipAll isSingleFileaskConfirmationprompt promptUser textSelectOneshowCurtextView skipMundanedecided getDefaultannotateDescription annotateHelp annotateCmd annotatePopindentp2s p2xmlOpen p2xmlClosep2xml annotateFileannotateMarkedup textMarkedupputLineputAnn xmlMarkedupfindCreationPatchinfofindHashapplyDescription applyHelp stdindefaultapplyCmd applyItNowgetPatchBundle applyHelp'getFromredirectOutputsendSanitizedEmail sanitizeFileforwardingMessageconsiderForwarding fromStartchangesDescription changesHelp changesCmd changesHelp'getChangesInfofilterPatchesByNames changelog changesHelp''changesContext replaceInFL applyAndFixcheckUniqueness hasDuplicatereplayRepository'cleanupRepositoryReplaycheckDescription checkHelpcheckCmdcheck'convertDescription convertHelp convertHelp' convertCmd makeRepoNamemodifyRepoNamediffDescriptiondiffHelp getDiffOptshasDiffCmdFlaggetDiffCmdAndArgsdiffCmd getDiffInfodistDescriptiondistHelpdistCmddoDist guessRepoName getDistNameinitializeDescriptioninitializeHelpgetDescriptiongetHelpgetCmdcopyRepoAndGoToChosenVersion getHelpTag contextExistsgoToChosenVersiongetHelpPartialcopyRepoOldFashionedgzcrcsDescription gzcrcsHelp formatTextpara gzcrcsCmdgzcrcs'markconflictsDescriptionmarkconflictsHelpmarkconflictsCmdmoveDescriptionmoveHelpmoveCmd moveToDircheckNewAndOldFilenames moveFileOrDiroptimizeDescription optimizeHelp optimizeCmdoptimizeHelpInventorydoOptimizeInventoryoptimizeHelpCompressionoptimizeCompressionoptimizeHelpRelinkdoOptimizePristinedoRelinkmaybeRelinkFilesmaybeRelinkFile doReorder chooseOrderoptimizeUpgradeFormatactuallyUpgradeFormatdoOptimizeHTTPpushDescriptionpushHelppushCmd prepareBundleprePushChatter bundlePatcheswantSigncheckOptionsSanityputDescriptionputHelpputCmd remoteInitwhatsnewDescription whatsnewHelp whatsnewCmdPName NoPatchNamePriorPatchName FlagPatchNamerecordDescription recordHelpcommitDescription commitHelp recordCmdcheckNameIsNotOptiondoRecorddoActualRecord recordHelp'eodonlySuccessfulExits recordHelp''amendrecordDescriptionamendrecordHelpamendrecordCmdaddChangesToPatchupdatePatchHeaderwarnIfHijackinghasEditMetadataremoveDescription removeHelp removeCmdmakeRemovePatch makeRemoveGap rmDescriptionrmHelprepairDescription repairHelpreplaceDescription replaceHelp replaceCmd floatSubPathmaybeApplyToTree defaultToks filenameToksisTok chooseToksunrevertDescription unrevertHelp unrevertCmdunrevertPatchBundlerevertDescription revertHelp revertCmdunrecordDescription unrecordHelp unrecordCmdunpullDescription unpullHelp unpullCmdobliterateDescriptionobliterateHelp obliterateCmdgenericObliterateCmd matchingHead savetoBundlerollbackDescription rollbackHelp rollbackCmd rollItBackNow validPrefData validPrefssetprefDescription setprefHelp setprefCmd ParsedLineSpellingshowAuthorsDescriptionshowAuthorsHelp authorsCmdcanonizeAuthorcompiledAuthorSpellingssentence addresslineregexp canonicalNameshowBugDescription showBugHelp showBugCmdshowContentsDescriptionshowContentsHelp getMatchershowContentsCmdshowFilesDescription showFilesHelp toListFiles filesDirs slurpRevisionshowTagsDescription showTagsHelptagsCmddump showIndexCmdtagDescriptiontagHelptagCmd BisectState BisectDir BisectRight BisectLeft PatchTreeForkLeaftrackdownDescription trackdownHelp trackdownCmdtrackNextLinear trackBisectpatchTreeFromRL patchTree2RLtrackNextBisectjumpHalfOnRightjumpHalfOnLeftapplyRL unapplyRL safeApplytransferModeDescriptiontransferModeHelptransferModeCmdtransferreadfilepullDescriptionfetchDescriptionpullHelp fetchHelp mergeOptspullCmdfetchCmd fetchPatches revertable readReposPutInfoShowInfo showRepoHelpshowRepoDescriptionrepoCmd showInfoXMLsafeTag showInfoUsractuallyShowRepo showRepoTypeshowRepoFormat showRepoAux showRepoPrefs showRepoMOTD numPatchesshowDescriptionshowHelp showPristine showManifestversion builddepscontextheaders requestedUrlgetProxyWhatToDoSendMailPostsendDescriptionsendHelpsendCmd sendToThem sendBundleltcleanupwriteBundleToFiledecideOnBehavior getTargetscollectTargets getFileopthelpDescriptionhelpHelphelpOnEnvironment manpageLines getFlagsFrom findOptiondefaultContent runCommandconsiderRunningaddCommandDefaultsgetOptionsOptionsrunRawSupercommand