##// END OF EJS Templates
patchbomb: add a 'patchbomb.intro' option...
Pierre-Yves David -
r23487:c14af817 default
parent child Browse files
Show More
@@ -43,6 +43,15 b' to be a sendmail compatible mailer or fi'
43 43 that the patchbomb extension can automatically send patchbombs
44 44 directly from the commandline. See the [email] and [smtp] sections in
45 45 hgrc(5) for details.
46
47 You can control the default inclusion of an introduction message with the
48 ``patchbomb.intro`` configuration option. The configuration is always
49 overwritten by command line flags like --intro and --desc::
50
51 [patchbomb]
52 intro=auto # include introduction message if more than 1 patch (default)
53 intro=never # never include an introduction message
54 intro=always # always include an introduction message
46 55 '''
47 56
48 57 import os, errno, socket, tempfile, cStringIO
@@ -66,9 +75,23 b' def prompt(ui, prompt, default=None, res'
66 75 prompt += ' [%s]' % default
67 76 return ui.prompt(prompt + rest, default)
68 77
69 def introwanted(opts, number):
78 def introwanted(ui, opts, number):
70 79 '''is an introductory message apparently wanted?'''
71 return number > 1 or opts.get('intro') or opts.get('desc')
80 introconfig = ui.config('patchbomb', 'intro', 'auto')
81 if opts.get('intro') or opts.get('desc'):
82 intro = True
83 elif introconfig == 'always':
84 intro = True
85 elif introconfig == 'never':
86 intro = False
87 elif introconfig == 'auto':
88 intro = 1 < number
89 else:
90 ui.write_err(_('warning: invalid patchbomb.intro value "%s"\n')
91 % introconfig)
92 ui.write_err(_('(should be one of always, never, auto)\n'))
93 intro = 1 < number
94 return intro
72 95
73 96 def makepatch(ui, repo, patchlines, opts, _charsets, idx, total, numbered,
74 97 patchname=None):
@@ -287,7 +310,7 b' def _getpatchmsgs(repo, sender, patches,'
287 310 % len(patches))
288 311
289 312 # build the intro message, or skip it if the user declines
290 if introwanted(opts, len(patches)):
313 if introwanted(ui, opts, len(patches)):
291 314 msg = _makeintro(repo, sender, patches, **opts)
292 315 if msg:
293 316 msgs.append(msg)
@@ -407,7 +430,9 b' def patchbomb(ui, repo, *revs, **opts):'
407 430 for each patchbomb message, so you can verify everything is alright.
408 431
409 432 In case email sending fails, you will find a backup of your series
410 introductory message in ``.hg/last-email.txt``.
433 introductory message in ``.hg/last-email.txt``. The inclusion the
434 introduction can also be control using the ``patchbomb.intro`` option. (see
435 hg help patchbomb for details)
411 436
412 437 Examples::
413 438
@@ -2663,4 +2663,127 b' dest#branch URIs:'
2663 2663 +d
2664 2664
2665 2665
2666 $ cd ..
2666 Test introduction configuration
2667 =================================
2668
2669 $ echo '[patchbomb]' >> $HGRCPATH
2670
2671 "auto" setting
2672 ----------------
2673
2674 $ echo 'intro=auto' >> $HGRCPATH
2675
2676 single rev
2677
2678 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2679 [1]
2680
2681 single rev + flag
2682
2683 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' --intro | grep "Write the introductory message for the patch series."
2684 Write the introductory message for the patch series.
2685
2686
2687 Multi rev
2688
2689 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2690 Write the introductory message for the patch series.
2691
2692 "never" setting
2693 -----------------
2694
2695 $ echo 'intro=never' >> $HGRCPATH
2696
2697 single rev
2698
2699 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2700 [1]
2701
2702 single rev + flag
2703
2704 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' --intro | grep "Write the introductory message for the patch series."
2705 Write the introductory message for the patch series.
2706
2707
2708 Multi rev
2709
2710 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2711 [1]
2712
2713 Multi rev + flag
2714
2715 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' --intro | grep "Write the introductory message for the patch series."
2716 Write the introductory message for the patch series.
2717
2718 "always" setting
2719 -----------------
2720
2721 $ echo 'intro=always' >> $HGRCPATH
2722
2723 single rev
2724
2725 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' | grep "Write the introductory message for the patch series."
2726 Write the introductory message for the patch series.
2727
2728 single rev + flag
2729
2730 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10' --intro | grep "Write the introductory message for the patch series."
2731 Write the introductory message for the patch series.
2732
2733
2734 Multi rev
2735
2736 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' | grep "Write the introductory message for the patch series."
2737 Write the introductory message for the patch series.
2738
2739 Multi rev + flag
2740
2741 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '9::' --intro | grep "Write the introductory message for the patch series."
2742 Write the introductory message for the patch series.
2743
2744 bad value setting
2745 -----------------
2746
2747 $ echo 'intro=mpmwearaclownnose' >> $HGRCPATH
2748
2749 single rev
2750
2751 $ hg email --date '1980-1-1 0:1' -n -t foo -s test -r '10'
2752 From [test]: test
2753 this patch series consists of 1 patches.
2754
2755 warning: invalid patchbomb.intro value "mpmwearaclownnose"
2756 (should be one of always, never, auto)
2757 Cc:
2758
2759 displaying [PATCH] test ...
2760 Content-Type: text/plain; charset="us-ascii"
2761 MIME-Version: 1.0
2762 Content-Transfer-Encoding: 7bit
2763 Subject: [PATCH] test
2764 X-Mercurial-Node: 3b6f1ec9dde933a40a115a7990f8b320477231af
2765 X-Mercurial-Series-Index: 1
2766 X-Mercurial-Series-Total: 1
2767 Message-Id: <3b6f1ec9dde933a40a11*> (glob)
2768 X-Mercurial-Series-Id: <3b6f1ec9dde933a40a11.*> (glob)
2769 User-Agent: Mercurial-patchbomb/* (glob)
2770 Date: Tue, 01 Jan 1980 00:01:00 +0000
2771 From: test
2772 To: foo
2773
2774 # HG changeset patch
2775 # User test
2776 # Date 5 0
2777 # Thu Jan 01 00:00:05 1970 +0000
2778 # Branch test
2779 # Node ID 3b6f1ec9dde933a40a115a7990f8b320477231af
2780 # Parent 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
2781 dd
2782
2783 diff -r 2f9fa9b998c5 -r 3b6f1ec9dde9 d
2784 --- a/d Thu Jan 01 00:00:04 1970 +0000
2785 +++ b/d Thu Jan 01 00:00:05 1970 +0000
2786 @@ -1,1 +1,2 @@
2787 d
2788 +d
2789
General Comments 0
You need to be logged in to leave comments. Login now