unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* Applying patches directly from emails?
@ 2016-07-22 21:02 Nicolas Petton
  2016-07-23 15:27 ` Daniel Kahn Gillmor
  0 siblings, 1 reply; 6+ messages in thread
From: Nicolas Petton @ 2016-07-22 21:02 UTC (permalink / raw)
  To: notmuch

[-- Attachment #1: Type: text/plain, Size: 308 bytes --]

hi,

I'd like to be able to apply patches sent from emails, either as
attachments or inlined.

Notmuch can show inline patches as diffs, which is very handy, but I
didn't find a builtin way to apply these inline patches (or attached
ones) directly from the email, maybe I overlooked something?

Cheers,
Nico

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 512 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Applying patches directly from emails?
  2016-07-22 21:02 Applying patches directly from emails? Nicolas Petton
@ 2016-07-23 15:27 ` Daniel Kahn Gillmor
  2016-07-24 14:03   ` Nicolas Petton
  2016-08-13 10:32   ` Jani Nikula
  0 siblings, 2 replies; 6+ messages in thread
From: Daniel Kahn Gillmor @ 2016-07-23 15:27 UTC (permalink / raw)
  To: Nicolas Petton, notmuch

Hi Nicolas--

On Fri 2016-07-22 17:02:03 -0400, Nicolas Petton wrote:

> I'd like to be able to apply patches sent from emails, either as
> attachments or inlined.
>
> Notmuch can show inline patches as diffs, which is very handy, but I
> didn't find a builtin way to apply these inline patches (or attached
> ones) directly from the email, maybe I overlooked something?

If you're asking about notmuch-emacs, I just use "|" (or ". |" if a
MIME subpart is the patch instead of the whole message) to pipe the
patch into some command i care about.

For example, if it's a git-format-generated e-mail, i'll hit the pipe
character ("|") and then in the minibuffer i'll do:

  cd ~/src/notmuch/notmuch && git am

does that make sense?  If that doesn't work for you, can you be more
specific about what you're trying to do?

     --dkg

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Applying patches directly from emails?
  2016-07-23 15:27 ` Daniel Kahn Gillmor
@ 2016-07-24 14:03   ` Nicolas Petton
  2016-08-13 10:38     ` Jani Nikula
  2016-08-13 10:32   ` Jani Nikula
  1 sibling, 1 reply; 6+ messages in thread
From: Nicolas Petton @ 2016-07-24 14:03 UTC (permalink / raw)
  To: Daniel Kahn Gillmor, notmuch

[-- Attachment #1: Type: text/plain, Size: 513 bytes --]

Daniel Kahn Gillmor <dkg@fifthhorseman.net> writes:

> Hi Nicolas--

Hi Daniel,

> If you're asking about notmuch-emacs, I just use "|" (or ". |" if a
> MIME subpart is the patch instead of the whole message) to pipe the
> patch into some command i care about.

That'd work, but I was hoping for something more integrated.

For Emacs development & GNUS, there's `debbugs-gnu-apply-patch', which,
given a root directory, will apply a patch, inlined or attached to the
email, to the Emacs repository.

Cheers,
Nico

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 512 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Applying patches directly from emails?
  2016-07-23 15:27 ` Daniel Kahn Gillmor
  2016-07-24 14:03   ` Nicolas Petton
@ 2016-08-13 10:32   ` Jani Nikula
  1 sibling, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2016-08-13 10:32 UTC (permalink / raw)
  To: Daniel Kahn Gillmor, Nicolas Petton, notmuch

On Sat, 23 Jul 2016, Daniel Kahn Gillmor <dkg@fifthhorseman.net> wrote:
> Hi Nicolas--
>
> On Fri 2016-07-22 17:02:03 -0400, Nicolas Petton wrote:
>
>> I'd like to be able to apply patches sent from emails, either as
>> attachments or inlined.
>>
>> Notmuch can show inline patches as diffs, which is very handy, but I
>> didn't find a builtin way to apply these inline patches (or attached
>> ones) directly from the email, maybe I overlooked something?
>
> If you're asking about notmuch-emacs, I just use "|" (or ". |" if a
> MIME subpart is the patch instead of the whole message) to pipe the
> patch into some command i care about.

Additionally, you can expand all the messages you want applied, collapse
others, and use "C-u |" to pipe all open messages.

> For example, if it's a git-format-generated e-mail, i'll hit the pipe
> character ("|") and then in the minibuffer i'll do:
>
>   cd ~/src/notmuch/notmuch && git am

I usually end up doing M-x cd RET first, with the convenience of
directory history and completion, then piping to git am. The end result
is the same.


BR,
Jani.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Applying patches directly from emails?
  2016-07-24 14:03   ` Nicolas Petton
@ 2016-08-13 10:38     ` Jani Nikula
  2016-08-14 16:07       ` Tomi Ollila
  0 siblings, 1 reply; 6+ messages in thread
From: Jani Nikula @ 2016-08-13 10:38 UTC (permalink / raw)
  To: Nicolas Petton, Daniel Kahn Gillmor, notmuch

On Sun, 24 Jul 2016, Nicolas Petton <nicolas@petton.fr> wrote:
> Daniel Kahn Gillmor <dkg@fifthhorseman.net> writes:
>> If you're asking about notmuch-emacs, I just use "|" (or ". |" if a
>> MIME subpart is the patch instead of the whole message) to pipe the
>> patch into some command i care about.
>
> That'd work, but I was hoping for something more integrated.
>
> For Emacs development & GNUS, there's `debbugs-gnu-apply-patch', which,
> given a root directory, will apply a patch, inlined or attached to the
> email, to the Emacs repository.

I find most projects have their own peculiarities, and I'm not convinced
it's beneficial for notmuch-emacs to include code to do this. It's
fairly trivial to write shell scripts to do that, and you can then pipe
the message(s) to the script, doing the cd and any other things you want
done as part of the process. Moreover, such scripts are useful for users
of other MUAs as well.

BR,
Jani.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Applying patches directly from emails?
  2016-08-13 10:38     ` Jani Nikula
@ 2016-08-14 16:07       ` Tomi Ollila
  0 siblings, 0 replies; 6+ messages in thread
From: Tomi Ollila @ 2016-08-14 16:07 UTC (permalink / raw)
  To: Jani Nikula, Nicolas Petton, Daniel Kahn Gillmor, notmuch

On Sat, Aug 13 2016, Jani Nikula <jani@nikula.org> wrote:

> On Sun, 24 Jul 2016, Nicolas Petton <nicolas@petton.fr> wrote:
>> Daniel Kahn Gillmor <dkg@fifthhorseman.net> writes:
>>> If you're asking about notmuch-emacs, I just use "|" (or ". |" if a
>>> MIME subpart is the patch instead of the whole message) to pipe the
>>> patch into some command i care about.
>>
>> That'd work, but I was hoping for something more integrated.
>>
>> For Emacs development & GNUS, there's `debbugs-gnu-apply-patch', which,
>> given a root directory, will apply a patch, inlined or attached to the
>> email, to the Emacs repository.
>
> I find most projects have their own peculiarities, and I'm not convinced
> it's beneficial for notmuch-emacs to include code to do this. It's
> fairly trivial to write shell scripts to do that, and you can then pipe
> the message(s) to the script, doing the cd and any other things you want
> done as part of the process. Moreover, such scripts are useful for users
> of other MUAs as well.
>
> BR,
> Jani.

Jani is right that such a special feature is not something that should be
included in everyone's emacs environment -- and to have such a
functionality in extra e.g. notmuch-devel.el would require considerable
effort to get good...

That said, I have this in my ~/.emacs.d/notmuch-config.el (where mbox is verb):

;; Patch picking code in mbox-open-notmuch-messages() adapted
;; from id:1325844199-1812-1-git-send-email-dme@dme.org (2012-01-06)
;; function notmuch-dev-review-patch(). GPLv3+

(defun mbox-open-notmuch-messages ()
  "When this function is executed in notmuch-show buffer all the \"open\"
messages will be written to the file ~/tmp-mbox (overwriting it)."
  (interactive)
  (let ((search-terms-list (notmuch-show-get-message-ids-for-open-messages))
	(buffer (get-buffer-create "* Contents of ~/tmp-mbox *")))
    (set-buffer buffer)
    (setq buffer-read-only nil)
    (buffer-disable-undo)
    (pop-to-buffer buffer)
    (goto-char (point-max))
    (if (> (buffer-size) 0)
	(insert "\n\n"))
    (insert (format-time-string
	     "%c: Writing the following messages to ~/tmp-mbox:\n ")
	    (mapconcat 'identity search-terms-list "\n ") "\n")
    (with-temp-file "~/tmp-mbox"
      (call-process notmuch-command nil t nil "show" "--format=mbox"
		    (mapconcat 'identity search-terms-list " OR ")))
    (insert "\nMessages in ~/tmp-mbox:\n")
    (call-process "mail" nil t nil
		  "-H" "-f" (expand-file-name "~/tmp-mbox"))))


After using that I usually execute  git am ~/tmp-mbox


Tomi

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-08-14 17:12 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-22 21:02 Applying patches directly from emails? Nicolas Petton
2016-07-23 15:27 ` Daniel Kahn Gillmor
2016-07-24 14:03   ` Nicolas Petton
2016-08-13 10:38     ` Jani Nikula
2016-08-14 16:07       ` Tomi Ollila
2016-08-13 10:32   ` Jani Nikula

Code repositories for project(s) associated with this public inbox

	https://yhetil.org/notmuch.git/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).