summaryrefslogtreecommitdiff
path: root/itches/emacs/development.org
blob: fccc82ed27ffd0a3717f263b436ac5b84e9c1408 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
Stuff that could make work on Emacs itself more smooth.

* Changelog
** Action stamps
I don't know any function to

1. generate them from a Git commit, a *vc-change-log* buffer…
2. convert them back to a Git commit, a *vc-diff* buffer…

They can almost be generated with:

#+BEGIN_SRC sh
git show --no-patch              \
         --date=format:"%FT%T%z" \
         --format=format:"%ad!%ae"
#+END_SRC

Except that [[https://tools.ietf.org/html/rfc3339][RFC3339]] says:

#+BEGIN_QUOTE
   time-numoffset  = ("+" / "-") time-hour ":" time-minute
#+END_QUOTE

While ~%z~ yields "+hhmm" or "-hhmm".  Also [[http://esr.ibiblio.org/?p=3872][ESR wants Zulu time]].

See also
- bug#20609
- https://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00252.html

This monstrosity does the job:
#+begin_src elisp
(defun my/revision-at-point ()
  (cond
   ;; TODO: add vc support.
   ((derived-mode-p 'magit-mode)
    (magit-branch-or-commit-at-point))))

(eval-when-compile
  ;; Load rx's pcase pattern.
  (require 'rx))

(defun my/action-stamp-at-point (rev)
  (interactive
   (list
    (let* ((rev (my/revision-at-point))
           (prompt (if rev (format "Revision? (%s) " rev) "Revision? ")))
      (read-string prompt nil nil rev))))
  (let* ((cmd "git show --no-patch --date=unix --format='%ad!%ae'")
         (git-info (shell-command-to-string (format "%s %s" cmd rev))))
    (pcase git-info
      ((rx (let timestamp-str (+ digit))
           "!"
           (let mail (+ anychar))
           "\n")
       (let* ((timestamp (string-to-number timestamp-str))
              (date (format-time-string "%FT%TZ" timestamp t))
              (action-stamp (format "%s!%s" date mail)))
         (kill-new action-stamp)
         (message action-stamp))))))
#+end_src

ESR's =git stamp= alias in [[https://gitlab.com/esr/reposurgeon/-/blob/4.5/reposurgeon-git-aliases][reposurgeon]]:
#+begin_src conf
	# git stamp <commit-ish> - print a reposurgeon-style action stamp
	# This always goes to the committer. It would be better to look at thwe author
	# timestamp first and fall back to commmitter, because the author stamp because 
	# doesn't change when patches  are replayed onto a repository, while the commit
	# stamp will. 
	stamp = show -s --format='%cI!%ce'
#+end_src
This alias seems to confirm my feeling that Zulu time is not worth
bothering with: ISO 8601 is just as machine-parseable, and the
timezone bit actually conveys meaning to a human reader.
* Bug tracker
** Asynchronous client
It would be wonderful if ~debbugs-gnu~ and ~debbugs-gnu-search~ used
their own thread/process to wait & process the server's response,
instead of forcing me to twiddle my thumbs for minutes.
** Attachment management
Thanks to Bob Proulx, I learned that one can

1. send attachments to nnn-quiet@debbugs.gnu.org,
2. (for large attachments, wait for moderation,)
3. go to https://debbugs.gnu.org/nnn and grab the URLs for the
   attachments,
4. send a followup mentioning these URLs to nnn@debbugs.gnu.org.

When compared to simply attaching files to one's messages, this
ensures (1) only large attachments get moderated: reports and patches
keep flowing freely (2) mail clients do not stall while browsing
threads, since messages sent to -quiet are not forwarded to the
mailing list.

It'd be neat if Debbugs had a way to automate the -quiet attachment
trick, e.g.

- send some attachments to nnn-attach@debbugs.gnu.org,
- Debbugs then sends a mail to nnn@debbugs.gnu.org saying:
  #+begin_example
  John Doe <jdoe@gnu.org> attached:
  config.log (150 kB) <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=nnn;filename=config.log…>
  repro.sh   (400  B) <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=nnn;filename=repro.sh…>
  #+end_example

([[https://lists.gnu.org/archive/html/help-debbugs/2020-07/msg00004.html][help-debbugs thread]])
* Mailing lists
** Message IDs
*** Summary buffer → Message-ID
#+begin_src elisp
(kill-new (mail-header-message-id (gnus-summary-article-header)))
#+end_src
*** TODO Message-ID → HTTP archive
- <https://lists.gnu.org>:
  #+begin_example
  https://lists.gnu.org/archive/cgi-bin/namazu.cgi
      ?query=%2Bmessage-id:<$MESSAGE_ID>
      &submit=Search!
      &idxname=$LIST
  #+end_example
- public-inbox: trivial
*** TODO HTTP archive → Message-ID
- <https://lists.gnu.org>: cf. =X-Message-Id= comment in HTML
- public-inbox: cf. URL