-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Darcs Patch Manager -- -- The Darcs Patch Manager (DPM for short) is a tool that -- simplifies working with the revision control system darcs -- (http://darcs.net). It is most effective when used in an -- environment where developers do not push their patches directly to the -- main repository but where patches undergo a reviewing process before -- they are actually applied. See the documentation of the module -- DPM.Tutorial for a short tutorial. @package DPM @version 0.2.0 -- | This module provides a short tutorial on how to use DPM. -- -- Suppose that Dave Developer implements a very cool feature. After -- polishing his patch, Dave uses darcs send to send the patch: -- --
-- $ darcs send host:MAIN_REPO -- Tue Mar 16 16:55:09 CET 2010 Dave Developer <dave@example.com> -- * very cool feature -- Shall I send this patch? (1/1) [ynWsfvplxdaqjk], or ? for help: y -- Successfully sent patch bundle to: patches@example.com ---- -- After the patch has been sent to the address -- patches@example.com, DPM comes into play. For this example, -- we assume that mail devivery for patches@example.com is -- handled by some mailfilter program such as maildrop -- (http://www.courier-mta.org/maildrop/) or procmail -- (http://www.procmail.org/). The task of the mailfilter program -- is the add all patches sent to patches@example.com to the DPM -- database. This is achieved with the DPM command add: -- --
-- $ dpm add --help -- add: Put the given patch bundles under DPM's control (use '-' to read from stdin). -- Usage: add FILE... -- -- Command options: -- -- Global options: -- -r DIR --repo-dir=DIR directory of the darcs repository -- -s DIR --storage-dir=DIR directory for storing DPM data -- -v --verbose be verbose -- --debug output debug messages -- --batch run in batch mode -- --no-colors do not use colors when printing text -- --user=USER current user -- --from=EMAIL_ADDRESS from address for emails -- --review-address=EMAIL_ADDRESS email address for sending reviews -- -h, -? --help display this help message ---- -- Now suppose that Dave's patch is in the DPM database. A reviewer, call -- him Richard Reviewer, uses the DPM command list to see what -- patches are available in this database: -- --
-- $ dpm list --help
-- list: List the patches matching the given query.
--
-- Query ::= Query ' + ' Query -- logical OR
-- | Query ' ' Query -- logical AND
-- | '^' Query -- logical NOT
-- | '{' Query '}' -- grouping
-- | ':' Special
-- | String
--
-- Special is one of "undecided", "rejected", "obsolete", "applied",
-- "reviewed", "open", or "closed", and String is an arbitrary sequence
-- of non-whitespace characters not starting with '^', '{', '}', '+', or ':'.
--
-- If no query is given, DPM lists all open patch groups.
--
-- Usage: list QUERY ...
--
-- Command options:
--
-- Global options:
-- -r DIR --repo-dir=DIR directory of the darcs repository
-- -s DIR --storage-dir=DIR directory for storing DPM data
-- -v --verbose be verbose
-- --debug output debug messages
-- --batch run in batch mode
-- --no-colors do not use colors when printing text
-- --user=USER current user
-- --from=EMAIL_ADDRESS from address for emails
-- --review-address=EMAIL_ADDRESS email address for sending reviews
-- -h, -? --help display this help message
--
--
-- In our example, the output of the list command might look as follows:
--
-- -- $ dpm -r MAIN_REPO -s DPM_DB list -- very cool feature [State: OPEN] -- 7861 Tue Mar 16 17:20:45 2010 Dave Devloper <dave@example.com> -- State: UNDECIDED, Reviewed: no -- added -- some other patch [State: OPEN] -- 7631 Tue Mar 16 13:15:20 2010 Eric E. <eric@example.com> -- State: REJECTED, Reviewed: yes -- added -- ... ---- -- (The -r option specifies a directory containing the DPM -- database. Initially, you simply create an empty directory. The -- -s option specifies the path to the darcs repository in -- question.) -- -- DPM groups all patches with the same name inside a patch group. -- Patch groups allow keeping track of multiple revisions of the same -- patch. In the example, the patch group of name very cool -- feature has only a single member, which is the patch Dave just -- created. The patch is identified by a unique suffix of its hash (7861 -- in the example). The output of the list command further tells us that -- no reviewer decided yet what to do with the patch (its in state -- UNDECIDED). -- -- At this point, Richard Reviewer reviews Dave's patch. During the -- review, he detects a minor bug so he rejects the patch: -- --
-- $ dpm -r MAIN_REPO -s DPM_DB review 7861 -- Reviewing patch 7861 -- Starting editor on DPM_DB/reviews/2010-03-16_7861_swehr_24166.dpatch -- <inspect patch in editor> -- Mark patch 7861 as reviewed? [Y/n] y -- Patch 7861 is in state UNDECIDED, reject this patch? [y/N] y -- Enter a comment: one minor bug -- Marked patch 7861 as reviewed -- Moved patch 7861 to REJECTED state -- Send review to Dave Developer <dave@example.com>? [Y/n] y -- Mail sent successfully. ---- -- Now Dave Developer receives an email stating that has patch has been -- rejected. The email also contains the full review so that Dave sees -- why the patch has been rejected. Thus, Dave starts fixing the bug, -- does an amend-record of the patch, and finally sends the -- patch again: -- --
-- $ darcs send MAIN_REPO -- Tue Mar 16 16:55:09 CET 2010 Dave Developer <dave@example.com> -- * very cool feature -- Shall I send this patch? (1/1) [ynWsfvplxdaqjk], or ? for help: y -- Successfully sent patch bundle to: patches@example.com ---- -- Once the email is received, the improved patch is added to the DPM -- database. The output of the list command now looks like this: -- --
-- $ dpm -r MAIN_REPO -s DPM_DB list -- very cool feature [State: OPEN] -- 2481 Tue Mar 16 17:50:23 2010 Dave Devloper <dave@example.com> -- State: UNDECIDED, Reviewed: no -- added -- 7861 Tue Mar 16 17:20:45 2010 Dave Devloper <dave@example.com> -- State: REJECTED, Reviewed: yes -- marked as rejected: one minor bug -- some other patch [State: OPEN] -- 7631 Tue Mar 16 13:15:20 2010 Eric E. <eric@example.com> -- State: REJECTED, Reviewed: yes -- added -- ... ---- -- The patch 2481 is the improved revision of the original patch 7861. It -- is in the same group as the original patch because both patches have -- the same name. Richard Reviewer reviews the improved patch and has no -- complains anymore: -- --
-- $ dpm -r MAIN_REPO -s DPM_DB review 2481 -- Reviewing patch 2481 -- Starting editor on DPM_DB/reviews/2010-03-16_2481_swehr_876102.dpatch -- <inspect patch in editor> -- Mark patch 2481 as reviewed? [Y/n] y -- Patch 2481 is in state UNDECIDED, reject this patch? [y/N] n -- Enter a comment: ok -- Marked patch 2481 as reviewed -- Send review to Dave Developer <dave@example.com>? [y/N] n ---- -- At this point, Richard Developer applies the patch with the very cool -- feature: -- --
-- $ dpm apply 2481 -- About to apply patch 2481 -- Entering DPM's dumb (aka interactive) apply command. -- Future will hopefully bring more intelligence. -- -- Instructions: -- ============= -- - Press 'n' until you reach -- Tue Mar 16 17:50:23 2010 Dave Devloper <dave@example.com> -- * very cool feature -- (Hash: 20100316162041-c71f4-871aedab8f4dd3bd042b9188f1496011c7dd2481) -- - Press 'y' once -- - Press 'd' -- -- Tue Mar 16 17:50:23 2010 Dave Devloper <dave@example.com> -- * very cool feature -- Shall I apply this patch? (1/1) [ynWsfvplxdaqjk], or ? for help: y -- Finished applying... -- Patch 2481 applied successfully -- Send notification to author Dave Developer <dave@example.com> of patch 2481? [Y/n] y -- Mail sent successfully. ---- -- Applying a patch closes the corresponding patch group. Per default, -- the list command doesn't display closed patch groups, but we -- can force it to do so with the :closed query: -- --
-- $ dpm list :closed -- very cool feature [State: CLOSED] -- 2481 Tue Mar 16 17:50:23 2010 Dave Devloper <dave@example.com> -- State: APPLIED, Reviewed: yes -- marked as applied: - -- 7861 Tue Mar 16 17:20:45 2010 Dave Devloper <dave@example.com> -- State: REJECTED, Reviewed: yes -- marked as rejected: one minor bug -- ... --module DPM.Tutorial