tags 352957 + patch thanks Hello!
On Wed, 15 Feb 2006 14:24:49 +0100, Junichi Uekawa wrote:
> C-cC-e
> debian-changelog-unfinalise-last-version
[...]
> What I want is
[...]
> pbuilder (0.139) unstable; urgency=low
>
> [Somebody else]
> * Bug fix: "pbuilder: pdebuild dies if /etc/shadow doesn't exist",
> thanks to Brian Nelson (Closes: #338976).
>
> [Junichi Uekawa]
>
> --
[...]
> Is this already implemented somewhere?
In the attached patch, here a list of changes:
* rename (debian-changelog-maintainer) to
(debian-changelog-last-maintainer), this is what the function
really work on (and obviously changing all the calls to it)
* change how (debian-changelog-last-maintainer) works, returning a
list of (NAME EMAIL) and not only EMAIL (and obviously adjust all
the call to it)
* add (debian-changelog-comaintainer-insert), which actually inserts
the co-maintainer name in the form "[ NAME ]" [1] [2]
* add (debian-changelog-comaintainer), which checks if we're in a
co-maintenance, calling (debian-changelog-comaintainer-insert) [3]
* add the support for co-maintenance to
(debian-changelog-unfinalise-last-version)
Comments?
Thx, bye,
Gismo / Luca
Footnotes:
[1] I really prefer this to "[NAME]" and from the changelog.Debian.gz
I've installed only about 10 of them use "[NAME]", check with
$ find /usr/share/doc/ -name changelog.Debian.gz -type f | \
xargs -0 -e zgrep -nH -e " \["
[2] we can add a variable to have it with or without spaces, but I
don't think it's worth
[3] we can have three situations: no co-maintenance (need to add),
co-maintenance but the new maintainer isn't already present in the
last changelog entry (need to add) or co-maintenance with the new
maintainer already present (no need to add); I tested the three
and it works
--- debian-changelog-mode.el 2006-09-06 03:09:01.000000000 +0200
+++ debian-changelog-mode.el_gismo 2006-10-11 22:27:27.000000000 +0200
@@ -303,6 +303,17 @@
;; suggested by Romain Francoise <[EMAIL PROTECTED]> (Closes: #322994)
;; V1.82 05Sep2006 Peter Samuelson <[EMAIL PROTECTED]>
;; - Add tilde support for upstream version numbers (Closes: #382514)
+;; V1.83 11Oct2006 Luca Capello <[EMAIL PROTECTED]>
+;; - Rename `debian-changelog-maintainer' to `debian-changelog-last-maintainer',
+;; this is what the function really work on
+;; - `debian-changelog-last-maintainer' now returns a list of "(NAME EMAIL)"
+;; and not only EMAIL
+;; - Add `debian-changelog-comaintainer-insert', which actually inserts the
+;; co-maintainer name in the form "[ NAME ]"
+;; - Add `debian-changelog-comaintainer', which checks if we're in a
+;; co-maintenance, calling `debian-changelog-comaintainer-insert'
+;; - Add co-maintenance support to `debian-changelog-unfinalise-last-version'
+
;;; Acknowledgements: (These people have contributed)
;; Roland Rosenfeld <[EMAIL PROTECTED]>
@@ -1144,15 +1155,18 @@
" <" debian-changelog-mailing-address "> "
(debian-changelog-date-string))))
-(defun debian-changelog-maintainer ()
- "Return maintainer of last changelog entry."
+(defun debian-changelog-last-maintainer ()
+ "Return maintainer name and e-mail of the last changelog entry as
+a list in the form (NAME EMAIL)."
(save-excursion
(goto-char (point-min))
- (if (re-search-forward "^ -- .*<\\(.*\\)>" nil t)
- (if (fboundp 'match-string-no-properties)
- (match-string-no-properties 1)
- (match-string 1))
- (error "Maintainer name not found."))))
+ (let ((string
+ (if (re-search-forward "^ -- \\(.*\\)>" nil t)
+ (if (fboundp 'match-string-no-properties)
+ (match-string-no-properties 1)
+ (match-string 1))
+ (error "Maintainer name and email not found."))))
+ (split-string string " <"))))
(defun debian-changelog-web-developer-page ()
"Browse the BTS for the last upload maintainer's developer summary page."
@@ -1162,9 +1176,47 @@
(load "browse-url" nil t)
(if (not (featurep 'browse-url))
(error "This function requires the browse-url elisp package"))))
- (let ((name (debian-changelog-maintainer)))
- (browse-url (concat "http://qa.debian.org/developer.php?login=" name))
- (message "Looking up developer summary page for %s via browse-url" name)))
+ (let ((email (cadr (debian-changelog-last-maintainer))))
+ (browse-url (concat "http://qa.debian.org/developer.php?login=" email))
+ (message "Looking up developer summary page for %s via browse-url" email)))
+
+;; co-maintenance as per bug #352957 by Luca Capello 2006
+(defun debian-changelog-comaintainer-insert (name separator)
+ "In the line before SEPARATOR, insert the co-maintainer name as for
+the form [ NAME ]."
+ (goto-char (point-min))
+ (re-search-forward (concat "\n " separator))
+ (previous-line 1)
+ (insert "\n [ " name " ]")
+ (when (string= "--" separator)
+ (insert "\n")))
+
+(defun debian-changelog-comaintainer ()
+ "If the last maintainer is different from the current one, create a
+co-maintained changelog entry."
+ (let ((name (car (debian-changelog-last-maintainer))))
+ (unless (string= name debian-changelog-full-name)
+ (let ((maintainers-found)
+ (debian-changelog-last-entry-end
+ (progn (goto-char (point-min))
+ (re-search-forward "\n --"))))
+ (mapc (lambda (x)
+ (goto-char (point-min))
+ (when (search-forward x debian-changelog-last-entry-end t)
+ (add-to-list 'maintainers-found x)))
+ (list name debian-changelog-full-name))
+ ;; set the co-maintenanche if any
+ (if maintainers-found
+ ;; co-maintenance, debian-changelog-full-name is not present
+ (if (and (member name maintainers-found)
+ (not (member debian-changelog-full-name
+ maintainers-found)))
+ (debian-changelog-comaintainer-insert
+ debian-changelog-full-name "--"))
+ ;; no co-maintenance
+ (mapc (lambda (x)
+ (debian-changelog-comaintainer-insert (car x) (cadr x)))
+ `((,name " *") (,debian-changelog-full-name "--"))))))))
;;
;; interactive function to unfinalise changelog (so modifications can be made)
@@ -1178,6 +1230,7 @@
(if (debian-changelog-finalised-p) nil
(error "Most recent version is not finalised"))
(save-excursion
+ (debian-changelog-comaintainer)
(goto-char (point-min))
(re-search-forward "\n --")
(let ((dels (point)))
pgpGHpbY0q35J.pgp
Description: PGP signature

