aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Morris2014-01-16 21:11:36 -0500
committerGlenn Morris2014-01-16 21:11:36 -0500
commit0d613483907fc9b053de10dfb0377f2b67eac682 (patch)
tree402d8c31c86b83cc782306400daf72563326b213
parent56db2b1bfd76350495cb1e791c98cfe00df26c10 (diff)
downloademacs-0d613483907fc9b053de10dfb0377f2b67eac682.tar.gz
emacs-0d613483907fc9b053de10dfb0377f2b67eac682.zip
Make M-x authors return zero *Authors Errors* from current logs
* lisp/emacs-lisp/authors.el (authors-obsolete-files-regexps): (authors-ignored-files): Add some entries, remove others. (authors-ambiguous-files, authors-valid-file-names): Add some entries. (authors-renamed-files-alist): Add, remove, and adjust entries. (authors-renamed-files-regexps): Add some entries. Remove some very broad ones. Make some entries `lax'. (authors-lax-changelogs): New constant. (authors-disambiguate-file-name): Treat top-level specially. (authors-lax-changelog-p): New function. (authors-canonical-file-name): Check file as written against authors-valid-file-names. Do not special-case etc/. Handle `lax' logs and authors-renamed-files-regexps elements. * admin/make-tarball.txt: Update for no expected *Authors Errors*.
-rw-r--r--admin/make-tarball.txt12
-rw-r--r--lisp/ChangeLog17
-rw-r--r--lisp/emacs-lisp/authors.el395
3 files changed, 334 insertions, 90 deletions
diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt
index fc7f81f0c28..50183f75561 100644
--- a/admin/make-tarball.txt
+++ b/admin/make-tarball.txt
@@ -28,14 +28,10 @@ General steps (for each step, check for possible errors):
28 M-: (require 'authors) RET 28 M-: (require 'authors) RET
29 M-x authors RET 29 M-x authors RET
30 30
31 There is almost guaranteed to be an "*Authors Errors*" buffer with 31 If there is an "*Authors Errors*" buffer, address the issues.
32 problems caused by certain bad ChangeLog entries. You can ignore 32 If there was a ChangeLog typo, fix it. If a file was deleted or
33 the very old ones (eg lisp/erc has a lot). If there are errors 33 renamed, consider adding an appropriate entry to authors-ignored-files,
34 related to new entries (especially entries that are new since the 34 authors-valid-file-names, or authors-renamed-files-alist.
35 last pretest), see if you can fix them. If there was a ChangeLog
36 typo, fix it. If a file was deleted or renamed, consider adding
37 an appropriate entry to authors-ignored-files, authors-valid-file-names,
38 or authors-renamed-files-alist.
39 35
40 If necessary, repeat M-x authors after making those changes. 36 If necessary, repeat M-x authors after making those changes.
41 Save the "*Authors*" buffer as etc/AUTHORS. 37 Save the "*Authors*" buffer as etc/AUTHORS.
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 660c8712a15..2cc9293b14d 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,20 @@
12014-01-17 Glenn Morris <rgm@gnu.org>
2
3 Make M-x authors return zero *Authors Errors* from current logs.
4 * emacs-lisp/authors.el (authors-obsolete-files-regexps):
5 (authors-ignored-files): Add some entries, remove others.
6 (authors-ambiguous-files, authors-valid-file-names):
7 Add some entries.
8 (authors-renamed-files-alist): Add, remove, and adjust entries.
9 (authors-renamed-files-regexps): Add some entries.
10 Remove some very broad ones. Make some entries `lax'.
11 (authors-lax-changelogs): New constant.
12 (authors-disambiguate-file-name): Treat top-level specially.
13 (authors-lax-changelog-p): New function.
14 (authors-canonical-file-name): Check file as written against
15 authors-valid-file-names. Do not special-case etc/.
16 Handle `lax' logs and authors-renamed-files-regexps elements.
17
12014-01-16 Dmitry Gutov <dgutov@yandex.ru> 182014-01-16 Dmitry Gutov <dgutov@yandex.ru>
2 19
3 * emacs-lisp/package.el (package-desc--keywords): Use `cdr' with 20 * emacs-lisp/package.el (package-desc--keywords): Use `cdr' with
diff --git a/lisp/emacs-lisp/authors.el b/lisp/emacs-lisp/authors.el
index 429a6170df9..841d4fad9fb 100644
--- a/lisp/emacs-lisp/authors.el
+++ b/lisp/emacs-lisp/authors.el
@@ -246,15 +246,15 @@ If REALNAME is nil, ignore that author.")
246 246
247 247
248(defvar authors-obsolete-files-regexps 248(defvar authors-obsolete-files-regexps
249 '("vc-\\*\\.el$" 249 '(".*loaddefs.el$" ; not obsolete, but auto-generated
250 "spec.txt$"
251 ".*loaddefs.el$" ; not obsolete, but auto-generated
252 "\\.\\(cvs\\|git\\)ignore$" ; obsolete or uninteresting 250 "\\.\\(cvs\\|git\\)ignore$" ; obsolete or uninteresting
253 "\\.arch-inventory$" 251 "\\.arch-inventory$"
254 ;; TODO lib/? Matches other things? 252 ;; TODO lib/? Matches other things?
255 "build-aux/" "m4/" "Emacs.xcodeproj" "charsets" "mapfiles" 253 "build-aux/" "m4/" "Emacs.xcodeproj" "mapfiles" "\\.map\\'"
256 "preferences\\.\\(nib\\|gorm\\)" 254 "preferences\\.\\(nib\\|gorm\\)"
257 "vc-\\(rcs\\|cvs\\|sccs\\)-hooks\\.el$") 255 ;; Generated files that have since been removed.
256 "\\(refcard\\(-de\\|-pl\\)?\\|calccard\\|dired-ref\\|orgcard\\|\
257gnus-booklet\\|fr-drdref\\)\\.p\\(df\\|s\\)\\'")
258 "List of regexps matching obsolete files. 258 "List of regexps matching obsolete files.
259Changes to files matching one of the regexps in this list are not listed.") 259Changes to files matching one of the regexps in this list are not listed.")
260 260
@@ -269,14 +269,19 @@ Changes to files matching one of the regexps in this list are not listed.")
269 "NEWS.1" "OOOOONEWS...OONEWS" "OOOONEWS" "etc/NEWS" 269 "NEWS.1" "OOOOONEWS...OONEWS" "OOOONEWS" "etc/NEWS"
270 "NEWS.1-17" "NEWS.18" "NEWS.19" "NEWS.20" "NEWS.21" "NEWS.22" 270 "NEWS.1-17" "NEWS.18" "NEWS.19" "NEWS.20" "NEWS.21" "NEWS.22"
271 "MAINTAINERS" "MH-E-NEWS" 271 "MAINTAINERS" "MH-E-NEWS"
272 "install-sh" "missing" "mkinstalldirs" 272 "install.sh" "install-sh" "missing" "mkinstalldirs"
273 "termcap.dat" "termcap.src" "termcap.ucb" "termcap" 273 "termcap.dat" "termcap.src" "termcap.ucb" "termcap"
274 "ChangeLog.nextstep" "Emacs.clr" "spec.txt" 274 "ChangeLog.nextstep" "Emacs.clr" "spec.txt"
275 "gfdl.1" 275 "gfdl.1"
276 "texi/Makefile.in" 276 "texi/Makefile.in"
277 "Imakefile" "icons/sink.ico" "aixcc.lex" 277 "Imakefile" "icons/sink.ico" "aixcc.lex"
278 "nxml/char-name/unicode" 278 "nxml/char-name/unicode"
279 "spec.txt"
279 "js2-mode.el" ; only installed very briefly, replaced by js.el 280 "js2-mode.el" ; only installed very briefly, replaced by js.el
281 ;; In the old imported lisp/url ChangeLog, but never in Emacs.
282 "mule-sysdp.el"
283 ;; Only briefly present.
284 "tests/gnustest-nntp.el" "tests/gnustest-registry.el"
280 "cedet/tests/testtemplates.cpp" 285 "cedet/tests/testtemplates.cpp"
281 "cedet/tests/testusing.cpp" 286 "cedet/tests/testusing.cpp"
282 "cedet/tests/scopetest.cpp" 287 "cedet/tests/scopetest.cpp"
@@ -286,7 +291,7 @@ Changes to files matching one of the regexps in this list are not listed.")
286 "cedet/tests/teststruct.cpp" 291 "cedet/tests/teststruct.cpp"
287 "*.el" 292 "*.el"
288 ;; Autogen: 293 ;; Autogen:
289 "cus-load.el" "finder-inf.el" "ldefs-boot.el" 294 "cus-load.el" "finder-inf.el" "ldefs-boot.el" "loaddefs-boot.el"
290 "compile" "config.guess" "config.sub" "depcomp" 295 "compile" "config.guess" "config.sub" "depcomp"
291 "autogen/compile" "autogen/config.guess" "autogen/config.in" 296 "autogen/compile" "autogen/config.guess" "autogen/config.in"
292 "autogen/config.sub" "autogen/depcomp" "autogen/install-sh" 297 "autogen/config.sub" "autogen/depcomp" "autogen/install-sh"
@@ -302,6 +307,8 @@ Changes to files matching one of the regexps in this list are not listed.")
302 "gnu-hp300" "refcard.bit" "ledit.l" "forms.README" "forms-d2.dat" 307 "gnu-hp300" "refcard.bit" "ledit.l" "forms.README" "forms-d2.dat"
303 "CXTERM-DIC/PY.tit" "CXTERM-DIC/ZIRANMA.tit" 308 "CXTERM-DIC/PY.tit" "CXTERM-DIC/ZIRANMA.tit"
304 "CXTERM-DIC/CTLau.tit" "CXTERM-DIC/CTLauB.tit" 309 "CXTERM-DIC/CTLau.tit" "CXTERM-DIC/CTLauB.tit"
310 "copying.paper" "celibacy.1" "condom.1" "echo.msg" "sex.6"
311 "COOKIES" "INTERVIEW" "MAILINGLISTS" "MOTIVATION"
305 "NICKLES.WORTH" "INTERVAL.IDEAS" "RCP" 312 "NICKLES.WORTH" "INTERVAL.IDEAS" "RCP"
306 "3B-MAXMEM" "AIX.DUMP" "SUN-SUPPORT" "XENIX" 313 "3B-MAXMEM" "AIX.DUMP" "SUN-SUPPORT" "XENIX"
307 "CODINGS" "CHARSETS" 314 "CODINGS" "CHARSETS"
@@ -344,23 +351,21 @@ Changes to files matching one of the regexps in this list are not listed.")
344 "debian/scripts/startup.erc-speak" 351 "debian/scripts/startup.erc-speak"
345 ;; Used to be in admin, not very interesting. 352 ;; Used to be in admin, not very interesting.
346 "emacs-pretesters" "make-announcement" "make-changelog-diff" 353 "emacs-pretesters" "make-announcement" "make-changelog-diff"
347 ;; Generated files that have since been removed. 354 ;; Textual comments that are not files.
348 "refcards/calccard.pdf" "refcards/cs-dired-ref.pdf" "refcards/cs-refcard.pdf" 355 "All" "Version" "Everywhere" "Many" "Various" "files"
349 "refcards/de-refcard.pdf" "refcards/dired-ref.pdf" "refcards/fr-dired-ref.pdf" 356 ;; Directories.
350 "refcards/fr-refcard.pdf" "refcards/gnus-booklet.pdf" "refcards/gnus-refcard.pdf" 357 "vms" "mac" "url" "tree-widget"
351 "refcards/orgcard.pdf" "refcards/pl-refcard.pdf" "refcards/pt-br-refcard.pdf"
352 "refcards/refcard.pdf" "refcards/ru-refcard.pdf" "refcards/sk-dired-ref.pdf"
353 "refcards/sk-refcard.pdf"
354 ) 358 )
355 "List of files and directories to ignore. 359 "List of files and directories to ignore.
356Changes to files in this list are not listed.") 360Changes to files in this list are not listed.")
357 361
358;; List via: find . -name '*.el' | sed 's/.*\///g' | sort | uniq -d 362;; List via: find . -name '*.el' | sed 's/.*\///g' | sort | uniq -d
359;; FIXME It would be better to discover these dynamically. 363;; FIXME It would be better to discover these dynamically.
360;; Note that traditionally "Makefile.in" etc have not been in this list.
361;; Ditto for "abbrev.texi" etc.
362(defconst authors-ambiguous-files 364(defconst authors-ambiguous-files
363 '("chart.el" 365 '("Makefile.in"
366 "makefile.w32-in"
367 "chart.el"
368 "cl-lib.el"
364 "compile.el" 369 "compile.el"
365 "complete.el" 370 "complete.el"
366 "cpp.el" 371 "cpp.el"
@@ -379,11 +384,13 @@ Changes to files in this list are not listed.")
379 "format.el" 384 "format.el"
380 "generic.el" 385 "generic.el"
381 "georgian.el" 386 "georgian.el"
387 "grammar.el"
382 "greek.el" 388 "greek.el"
383 "grep.el" 389 "grep.el"
384 "hebrew.el" 390 "hebrew.el"
385 "imenu.el" 391 "imenu.el"
386 "indian.el" 392 "indian.el"
393 "info-xref.el"
387 "japanese.el" 394 "japanese.el"
388 "java.el" 395 "java.el"
389 "lao.el" 396 "lao.el"
@@ -391,6 +398,7 @@ Changes to files in this list are not listed.")
391 "locate.el" 398 "locate.el"
392 "make.el" 399 "make.el"
393 "mode.el" 400 "mode.el"
401 "mule-util.el"
394 "python.el" 402 "python.el"
395 "rmailmm.el" 403 "rmailmm.el"
396 "semantic.el" 404 "semantic.el"
@@ -403,6 +411,7 @@ Changes to files in this list are not listed.")
403 "table.el" 411 "table.el"
404 "texi.el" 412 "texi.el"
405 "thai.el" 413 "thai.el"
414 "thingatpt.el"
406 "tibetan.el" 415 "tibetan.el"
407 "util.el" 416 "util.el"
408 "vc-bzr.el" 417 "vc-bzr.el"
@@ -575,12 +584,19 @@ Changes to files in this list are not listed.")
575(defconst authors-valid-file-names 584(defconst authors-valid-file-names
576 '("aclocal.m4" 585 '("aclocal.m4"
577 "build-ins.in" 586 "build-ins.in"
587 "Makefile"
578 "Makefile.noleim" 588 "Makefile.noleim"
579 "makedist.bat" 589 "makedist.bat"
580 "makefile.def" 590 "makefile.def"
581 "makefile.nt" 591 "makefile.nt"
582 "ns.mk" 592 "ns.mk"
593 "README"
594 ;; There were a few of these, not just the generated top-level one.
595 "configure" "config.h"
596 ;; nt/
597 "ebuild.bat" "install.bat" "fast-install.bat"
583 "debug.bat.in" "emacs.bat.in" 598 "debug.bat.in" "emacs.bat.in"
599 "inc/sys/dir.h" "inc/gettext.h"
584 ".gdbinit-union" 600 ".gdbinit-union"
585 "alloca.s" 601 "alloca.s"
586 "make-delta" 602 "make-delta"
@@ -603,16 +619,84 @@ Changes to files in this list are not listed.")
603 "emacs16_mac.png" "emacs24_mac.png" 619 "emacs16_mac.png" "emacs24_mac.png"
604 "emacs256_mac.png" "emacs32_mac.png" 620 "emacs256_mac.png" "emacs32_mac.png"
605 "emacs48_mac.png" "emacs512_mac.png" 621 "emacs48_mac.png" "emacs512_mac.png"
622 "ps-prin2.ps" "ps-prin3.ps"
623 "emacs.xbm" "gnu.xpm" "gnus-pointer.xbm" "gnus-pointer.xpm"
624 ;; Moved from etc/ to etc/images, and/or removed.
625 "gnus.pbm" "gnus.xbm" "gnus.xpm" "letter.pbm" "letter.xbm" "letter.xpm"
626 "splash.pbm" "splash.xbm" "splash.xpm" "splash8.xpm"
627 "images/execute.pbm" "images/execute.xpm" "images/fld-open.pbm"
628 "images/fld-open.xpm" "images/highlight.pbm" "images/highlight.xpm"
629 "images/mail.pbm" "images/mail.xpm" "images/mail/alias.pbm"
630 "images/mail/alias.xpm" "images/mail/refile.pbm"
631 "images/mail/refile.xpm" "images/page-down.pbm"
632 "images/page-down.xpm" "images/widen.pbm" "images/widen.xpm"
633 "images/gnus/bar.xbm" "images/gnus/bar.xpm"
634 "images/gnus/reverse-smile.xpm"
606 "revdiff" ; admin/ 635 "revdiff" ; admin/
607 "vcdiff" "rcs-checkin" "tindex.pl" 636 "vcdiff" "rcs-checkin" "tindex.pl"
608 "mainmake" "sed1.inp" "sed2.inp" "sed3.inp" ; msdos/ 637 "mainmake" "sed1.inp" "sed2.inp" "sed3.inp" ; msdos/
609 "mac-fix-env.m" 638 "mac-fix-env.m"
610 ;; Deleted vms stuff: 639 ;; Deleted vms stuff:
611 "temacs.opt" "descrip.mms" "compile.com" "link.com" 640 "temacs.opt" "descrip.mms" "compile.com" "link.com"
641 "compact.el" "fadr.el"
642 "calc/calc-maint.el"
643 "emacs-lisp/eieio-comp.el"
644 "erc-hecomplete.el"
645 "eshell/esh-maint.el"
646 "language/persian.el"
647 "meese.el"
648 "mh-exec.el" "mh-init.el" "mh-customize.el"
649 "net/zone-mode.el" "xesam.el"
650 "term/mac-win.el" "sup-mouse.el"
651 "url-https.el"
652 "org-mac-message.el" "org-mew.el" "org-w3m.el" "org-vm.el" "org-wl.el"
653 "org-mks.el" "org-remember.el" "org-xoxo.el" "org-docbook.el"
654 "org-freemind.el" "ox-jsinfo.el"
655 "org-exp-blocks.el" ; maybe this is ob-exp now? dunno
656 "org-lparse.el"
657 "org-special-blocks.el" "org-taskjuggler.el"
658 ;; gnus
659 "nnwfm.el" "nnlistserv.el" "nnkiboze.el" "nndb.el" "nnsoup.el"
660 "netrc.el" "password.el" "sasl-cram.el" "sasl-digest.el" "sasl-ntlm.el"
661 "sasl.el" "dig.el" "dns.el" "hex-util.el" "sha1.el" "md4.el"
662 "hmac-def.el" "hmac-md5.el" "ntlm.el" "hashcash.el" "smime-ldap.el"
663 "assistant.el" "gnus-utils.el" "tls.el" "pgg-def.el" "pgg-gpg.el"
664 "gnus-compat.el" "pgg-parse.el" "pgg-pgp.el" "pgg-pgp5.el" "pgg.el"
665 "dns-mode.el" "run-at-time.el" "gnus-encrypt.el" "sha1-el.el"
666 "gnus-gl.el" "gnus.sum.el" "proto-stream.el" "color.el" "color-lab.el"
667 "eww.el" "shr-color.el" "shr.el" "earcon.el" "gnus-audio.el" "encrypt.el"
668 ;; doc
669 "getopt.c" "texindex.c" "news.texi" "vc.texi" "vc2-xtra.texi"
670 "back.texi" "vol1.texi" "vol2.texi" "elisp-covers.texi" "two.el"
671 "front-cover-1.texi" "locals.texi" "calendar.texi" "info-stnd.texi"
672 "tasks.texi"
673 "advice.texi" "picture.texi" "texinfo.tex"
674 ;; lwlib:
675 "dispatch.c" "dispatch.h" "xrdb-cpp.c" "xrdb.c"
676 "lwlib-Xol.c" "lwlib-Xol.h" "lwlib-Xolmb.c" "lwlib-Xolmb.h"
677 "lwlib-XolmbP.h"
678 ;; lib/
679 "lib/stdio.c" "lib/gl_openssl.h" "lib/sigprocmask.c"
680 "lib/pthread_sigprocmask.c" "lib/ldtoastr.c" "lib/dummy.c"
681 "lib/ignore-value.h"
682 ;; lib-src/
683 "cvtmail.c" "digest-doc.c" "emacsserver.c" "emacstool.c" "env.c"
684 "etags-vmslib.c" "fakemail.c" "getdate.c" "getopt.h" "getopt1.c"
685 "getopt_.h" "getopt_int.h" "gettext.h" "leditcfns.c" "loadst.c"
686 "make-path.c" "qsort.c" "sorted-doc.c" "tcp.c" "timer.c" "wakeup.c"
687 "yow.c"
688 ;; etc/
689 "emacsclient.c" "etags.c" "hexl.c" "make-docfile.c" "movemail.c"
690 "tpu-doc.el" ; FIXME? renamed to something?
612 ) 691 )
613 "File names which are valid, but no longer exist (or cannot be found) 692 "File names which are valid, but no longer exist (or cannot be found)
614in the repository.") 693in the repository.")
615 694
695;; Note that any directory part on the RHS is retained.
696;; Cf authors-renamed-files-regexps.
697;; NB So only add a directory if needed to disambiguate.
698;; FIXME?
699;; Although perhaps we could let authors-disambiguate-file-name do that?
616(defconst authors-renamed-files-alist 700(defconst authors-renamed-files-alist
617 '(("nt.c" . "w32.c") ("nt.h" . "w32.h") 701 '(("nt.c" . "w32.c") ("nt.h" . "w32.h")
618 ("ntheap.c" . "w32heap.c") ("ntheap.h" . "w32heap.h") 702 ("ntheap.c" . "w32heap.c") ("ntheap.h" . "w32heap.h")
@@ -622,15 +706,28 @@ in the repository.")
622 ("unexnt.c" . "unexw32.c") 706 ("unexnt.c" . "unexw32.c")
623 ("s/windowsnt.h" . "s/ms-w32.h") 707 ("s/windowsnt.h" . "s/ms-w32.h")
624 ("s/ms-w32.h" . "inc/ms-w32.h") 708 ("s/ms-w32.h" . "inc/ms-w32.h")
709 ("src/config.h" . "config.h")
625 ("winnt.el" . "w32-fns.el") 710 ("winnt.el" . "w32-fns.el")
711 ("linux.h" . "gnu-linux.h")
626 ("emacs.manifest" . "emacs-x86.manifest") 712 ("emacs.manifest" . "emacs-x86.manifest")
627 ("config.emacs" . "configure") 713 ("config.emacs" . "configure")
628 ("configure.in" . "configure.ac") 714 ("configure.in" . "configure.ac")
629 ("config.h.dist" . "config.in") 715 ("config.h.dist" . "config.in")
630 ("config.h-dist" . "config.in") 716 ("config.h-dist" . "config.in")
631 ("config.h.in" . "config.in") 717 ("config.h.in" . "config.in")
632 ("paths.h-dist" . "paths.h.in") 718 ("debug.bat" . "debug.bat.in")
719 ("emacs.bat" . "emacs.bat.in")
720 ;; paths.h.dist -> paths.h-dist -> paths.h.in -> paths.in -> epaths.in.
721 ("paths.h.dist" . "epaths.in")
722 ("paths.h-dist" . "epaths.in")
723 ("paths.h.in" . "epaths.in")
724 ("paths.in" . "epaths.in")
633 ("patch1" . "sed1.inp") 725 ("patch1" . "sed1.inp")
726 ("INSTALL.MSYS" . "INSTALL")
727 ("server.c" . "emacsserver.c")
728 ("lib-src/etags.c" . "etags.c")
729 ;; msdos/
730 ("is-exec.c" . "is_exec.c")
634 ("enriched.doc" . "enriched.txt") 731 ("enriched.doc" . "enriched.txt")
635 ("GETTING.GNU.SOFTWARE" . "FTP") 732 ("GETTING.GNU.SOFTWARE" . "FTP")
636 ("etc/MACHINES" . "MACHINES") 733 ("etc/MACHINES" . "MACHINES")
@@ -649,38 +746,71 @@ in the repository.")
649 ("leim-Makefile.in" . "leim/Makefile.in") 746 ("leim-Makefile.in" . "leim/Makefile.in")
650 ("emacs-lisp/testcover-ses.el" . "tcover-ses.el") 747 ("emacs-lisp/testcover-ses.el" . "tcover-ses.el")
651 ("emacs-lisp/testcover-unsafep.el" . "tcover-unsafep.el") 748 ("emacs-lisp/testcover-unsafep.el" . "tcover-unsafep.el")
749 ("progmodes/dos.el" . "bat-mode.el")
652 ;; index and pick merged into search. 750 ;; index and pick merged into search.
653 ("mh-index.el" . "mh-search.el") 751 ("mh-index.el" . "mh-search.el")
654 ("mh-pick.el" . "mh-search.el") 752 ("mh-pick.el" . "mh-search.el")
655 ("font-setting.el" . "dynamic-setting.el") 753 ("font-setting.el" . "dynamic-setting.el")
656 ;; INSTALL-CVS -> .CVS -> .BZR 754 ("help-funs.el" . "help-fns.el")
657 ("INSTALL-CVS" . "INSTALL.BZR") 755 ("erc-notifications.el" . "erc-desktop-notifications.el")
658 ("INSTALL.CVS" . "INSTALL.BZR") 756 ("org-complete.el" . "org-pcomplete.el")
757 ("org-export.el" . "ox.el") ; ?
758 ;; Was definitely renamed to org-latex.el, then... ?
759 ("org-export-latex.el" . "ox-latex.el") ; ?
760 ("org-exp.el" . "ox.el") ; ?
761 ("progmodes/cfengine3.el" . "cfengine.el")
762 ;; Obsolete.
763 ("play/bruce.el" . "bruce.el")
764 ("patcomp.el" . "patcomp.el")
765 ;; From lisp to etc/forms.
766 ("forms-d2.el" . "forms-d2.el")
767 ("forms-pass.el" . "forms-pass.el")
768 ;; From lisp/ to etc/nxml.
769 ("nxml/test.invalid.xml" . "test-invalid.xml")
770 ("nxml/test.valid.xml" . "test-valid.xml")
771 ;; The one in lisp is eshell/eshell.el.
772 ("eshell.el" . "automated/eshell.el")
773 ("eshell/esh-test.el" . "automated/eshell.el")
774 ;; INSTALL-CVS -> .CVS -> .BZR -> .REPO
775 ("INSTALL-CVS" . "INSTALL.REPO")
776 ("INSTALL.CVS" . "INSTALL.REPO")
659 ("INSTALL.BZR" . "INSTALL.REPO") 777 ("INSTALL.BZR" . "INSTALL.REPO")
660 ("refcards/fr-drdref.pdf" . "refcards/fr-dired-ref.pdf") 778 ("gnus-logo.eps" . "gnus-logo.eps") ; moved to refcards/
661 ("gnus-logo.eps" . "refcards/gnus-logo.eps")
662 ("build-install" . "build-ins.in") 779 ("build-install" . "build-ins.in")
663 ("build-install.in" . "build-ins.in") 780 ("build-install.in" . "build-ins.in")
664 ("unidata/Makefile" . "unidata/Makefile.in") 781 ("unidata/Makefile" . "unidata/Makefile.in")
665 ("move-if-change" . "build-aux/move-if-change") 782 ;; Moved from top to etc/
666 ("update-subdirs" . "build-aux/update-subdirs") 783 ("CONTRIBUTE" . "CONTRIBUTE")
784 ("FTP" . "FTP")
785 ;; Moved from top to build-aux/
786 ("move-if-change" . "move-if-change")
787 ("update-subdirs" . "update-subdirs")
788 ("emacs.tex" . "emacs.texi")
789 ("faq.texi" . "efaq.texi")
790 ("major.texi" . "modes.texi")
791 ;; And from emacs/ to misc/ and back again.
792 ("ns-emacs.texi" . "macos.texi")
793 ("overrides.texi" . "gnus-overrides.texi")
794 ("xresmini.texi" . "xresources.texi")
667 ;; Not renamed, but we only have the latter in the Emacs repo. 795 ;; Not renamed, but we only have the latter in the Emacs repo.
668 ("trampver.texi.in" . "trampver.texi") 796 ("trampver.texi.in" . "trampver.texi")
669 ("e/eterm" . "e/eterm-color") 797 ;; Renamed with same directory.
670 ("e/eterm.ti" . "e/eterm-color.ti") 798 ("e/eterm" . "eterm-color")
799 ("e/eterm.ti" . "eterm-color.ti")
671 ("README.txt" . "README") 800 ("README.txt" . "README")
672 ("emacs.names" . "JOKES") 801 ("emacs.names" . "JOKES")
673 ("ED.WORSHIP" . "JOKES") 802 ("ED.WORSHIP" . "JOKES")
674 ("GNU.JOKES" . "JOKES") 803 ("GNU.JOKES" . "JOKES")
675 ("CHARACTERS" . "TODO") 804 ("CHARACTERS" . "TODO")
676 ("schema/xhtml-basic-form.rnc" . "schema/xhtml-bform.rnc" ) 805 ("images/gnus/mail_send.xpm" . "mail-send.xpm") ; still in images/gnus
677 ("schema/xhtml-basic-table.rnc" . "schema/xhtml-btable.rnc") 806 ;; Renamed within same directory.
678 ("schema/xhtml-list.rnc" . "schema/xhtml-lst.rnc") 807 ("schema/xhtml-basic-form.rnc" . "xhtml-bform.rnc" )
679 ("schema/xhtml-target.rnc" . "schema/xhtml-tgt.rnc") 808 ("schema/xhtml-basic-table.rnc" . "xhtml-btable.rnc")
680 ("schema/xhtml-style.rnc" . "schema/xhtml-xstyle.rnc") 809 ("schema/xhtml-list.rnc" . "xhtml-lst.rnc")
681 ("schema/docbook-dyntbl.rnc" . "schema/docbk-dyntbl.rnc") 810 ("schema/xhtml-target.rnc" . "xhtml-tgt.rnc")
682 ("schema/docbook-soextbl.rnc" . "schema/docbk-soextbl.rn" ) 811 ("schema/xhtml-style.rnc" . "xhtml-xstyle.rnc")
683 ("texi/url.txi" . "url.texi") 812 ("schema/docbook-dyntbl.rnc" . "docbk-dyntbl.rnc")
813 ("schema/docbook-soextbl.rnc" . "docbk-soextbl.rn" )
684 ("edt-user.doc" . "edt.texi") 814 ("edt-user.doc" . "edt.texi")
685 ("DEV-NOTES" . "nextstep") 815 ("DEV-NOTES" . "nextstep")
686 ("org/COPYRIGHT-AND-LICENSE" . "org/README") 816 ("org/COPYRIGHT-AND-LICENSE" . "org/README")
@@ -696,61 +826,158 @@ in the repository.")
696 ("autogen/update_autogen" . "update_autogen") 826 ("autogen/update_autogen" . "update_autogen")
697 ;; Moved from etc/ to admin/. 827 ;; Moved from etc/ to admin/.
698 ("grammars" . "grammars") 828 ("grammars" . "grammars")
829 ;; From etc to lisp/cedet/semantic/.
830 ("grammars/bovine-grammar.el" . "bovine/grammar.el")
831 ("grammars/wisent-grammar.el" . "wisent/grammar.el")
699 ;; Moved from admin/nt/ to nt/. 832 ;; Moved from admin/nt/ to nt/.
700 ("nt/README.W32" . "README.W32") 833 ("nt/README.W32" . "README.W32")
701 ) 834 )
702 "Alist of files which have been renamed during their lifetime. 835 "Alist of files which have been renamed during their lifetime.
703Elements are (OLDNAME . NEWNAME).") 836Elements are (OLDNAME . NEWNAME).")
704 837
838;; Should still test that the renamed file exists. Does it?
839;; But it might be relative to a different ChangeLog...
840;;
841;; Note that only the basename of the RHS is used.
842;; Cf authors-renamed-files-alist.
705(defconst authors-renamed-files-regexps 843(defconst authors-renamed-files-regexps
706 '(("^m/m-\\(.*\\.h\\)$" . "m/\\1") 844 '(("\\`\\(arg-nonnull\\|c\\+\\+defs\\|warn-on-use\\)\\.h\\'"
707 ("^m-\\(.*\\.h\\)$" . "\\1") 845 "build-aux/snippet/\\&")
708 ("^s/s-\\(.*\\.h\\)$" . "s/\\1") 846 ("\\`\\(ebuild\\|emacs\\|install\\|fast-install\\)\\.cmd\\'" "\\1.bat")
709 ("^s-\\(.*\\.h\\)$" . "\\1") 847 ("\\`\\(book-spine\\|cl\\|forms\\|functions\\|gnus\\|sc\\|texinfo\\|vip\\)\
710 ("^s/[-.a-zA-Z0-9_]+\\.h$" . t) 848\\.texinfo\\'" "\\1.texi")
711 ("\\(.*\\)\\.cmd$" . "\\1.bat") 849 ("\\`\\(\\(calc\\|org\\|vip\\)card\\|viperCard\\|\
712 ("\\.bat$" . t) 850\\(\\(cs\\|fr\\|sk\\)-\\)?dired-ref\\|\
713 ("\\.[ch]$" . t) 851\\(\\(cs\\|de\\|fr\\|gnus\\|pl\\|pt-br\\|ru\\|sk\\)-\\)?refcard\\|\
714 ("\\.el$" . t) 852\\(\\(cs\\|fr\\|sk\\)-\\)?survival\\)\\.tex\\'" "refcards/\\&")
715 ("\\.ps$" . t) 853 ("\\`refcard-\\(de\\|pl\\)\\.tex\\'" "refcards/\\1-refcard.tex")
716 ("\\.texi?$" . t) 854 ("\\`\\(refcards/\\)?fr-drdref\\.tex\\'" "refcards/fr-dired-ref.tex")
717 ("\\.texinfo$" . t) 855 ("^\\(TUTORIAL[^/]*\\)" "tutorials/\\1")
718 ("\\.xml?$" . t) 856 ("\\`themes/dev-\\(tsdh-\\(?:light\\|dark\\)-theme\\.el\\)\\'"
719 ("\\.x[pb]m$" . t) 857 "themes/\\1")
720 ("\\.[xp]bm$" . t) 858 ;; Moved from lisp/toolbar to etc/images.
721 ("^paths\\." . t) 859 ("\\`toolbar/\\(back\\|fwd\\|left\\|right\\|up\\)_arrow\
722 ("^install\\." . t) 860\\(\\.\\(?:pb\\|xp\\)m\\)\\'" "images/\\1-arrow\\2")
723 ("^\\(TUTORIAL[^/]*\\)" . "tutorials/\\1") 861 ("\\`toolbar/lc-\\(back\\|fwd\\|left\\|right\\|up\\)_arrow\
724 ("^\\(tree-widget/\\(?:default\\|folder\\)/[-a-z]+\\.png\\)$" . 862\\(\\.\\(?:pb\\|xp\\)m\\)\\'" "images/low-color/\\1-arrow\\2")
863 ("\\`toolbar/mail_\\(compose\\|send\\)\\(\\.[xp]bm\\)\\'"
864 "images/mail/\\1")
865 ("\\`toolbar/jump_to\\(\\.\\(?:pb\\|xp\\)m\\)\\'" "images/jump-to\\1")
866 ("\\`toolbar/lc-jump_to\\(\\.\\(?:pb\\|xp\\)m\\)\\'"
867 "images/low-color/jump-to\\1")
868 ("\\`toolbar/\\(attach\\|cancel\\|close\\|copy\\|cut\\|\
869diropen\\|exit\\|help\\|home\\|index\\|info\\|mail\\|new\\|open\\|\
870paste\\|preferences\\|print\\|save\\|saveas\\|search\\|search-replace\\|\
871spell\\|undo\\)\\(\\.\\(?:pb\\|xp\\)m\\)\\'" "images/\\1\\2")
872 ("\\`toolbar/gud-\\(break\\|cont\\|down\\|finish\\|print\\|pstar\\|\
873remove\\|run\\|until\\|up\\|watch\\)\\(\\.\\(?:pb\\|xp\\)m\\)\\'"
874 "images/gud/\\1\\2")
875 ("\\`\\(toolbar/gud-\\|images/gud/\\)n\\(i\\)?\\(\\.\\(?:pb\\|xp\\)m\\)\\'"
876 "images/gud/next\\2\\3")
877 ("\\`\\(toolbar/gud-\\|images/gud/\\)s\\(i\\)?\\(\\.\\(?:pb\\|xp\\)m\\)\\'"
878 "images/gud/step\\2\\3")
879 ("\\`toolbar/lc-\\([-a-z]+\\.xpm\\)\\'" "images/low-color/\\1")
880 ("^\\(tree-widget/\\(?:default\\|folder\\)/[-a-z]+\\.\\(png\\|xpm\\)\\)$"
725 "images/\\1") 881 "images/\\1")
726 ("^\\(images/icons/\\)mac\\(emacs\\)_\\([0-9]+\\)\\(\\.png\\)" . 882 ("^\\(images/icons/\\)mac\\(emacs\\)_\\([0-9]+\\)\\(\\.png\\)"
727 "\\1\\2\\3_mac\\4") 883 "\\1\\2\\3_mac\\4")
728 ("\\(images/icons/\\)emacs_\\([0-9][0-9]\\)\\.png" . 884 ("\\(images/icons/\\)emacs_\\([0-9][0-9]\\)\\.png"
729 "\\1hicolor/\\2x\\2/apps/emacs.png") 885 "\\1hicolor/\\2x\\2/apps/emacs.png")
886 ;; Moved from leim/ to lisp/leim/.
887 ("\\`quail/[-a-z0-9]+\\.el\\'" "leim/\\&")
888 ("\\`ja-dic/ja-dic\\.el\\'" "leim/\\&")
889 ("\\`vc-\\(rcs\\|cvs\\|sccs\\)-hooks\\.el\\'" "vc/vc-\\1.el")
890 ("\\`vc-\\(annotate\\|arch\\|bzr\\|cvs\\|dav\\|dir\\|dispatcher\\|\
891git\\|hg\\|hooks\\|mtn\\|rcs\\|sccs\\|svn\\)\\.el\\'" "vc/\\&")
892 ("\\`ediff-\\(diff\\|help\\|hook\\|init\\|merg\\|mult\\|ptch\\|util\\|\
893vers\\|wind\\)\\.el\\'" "vc/\\&")
894 ("\\`pcvs-\\(defs\\|info\\|parse\\|util\\)\\.el\\'" "vc/\\&")
895 ("\\`\\(add-log\\|compare-w\\|cvs-status\\|diff-mode\\|diff\\|\
896ediff\\|emerge\\|log-edit\\|log-view\\|pcvs\\|smerge-mode\\|vc\\)\\.el\\'"
897 "vc/\\&")
898 ("\\`\\(emacs-lisp/\\)?helpers\\.el\\'" "emacs-lisp/subr-x.el")
899 ;; I assume this is (essentially) what happened, org/ChangeLog is vague.
900 ("\\`org-\\(ascii\\|beamer\\|html\\|icalendar\\|jsinfo\\|latex\
901\\|odt\\|publish\\)\\.el\\'" "ox-\\1.el")
902 ;; From test/ to test/automated/.
903 ("comint-testsuite.el" "automated/\\&")
904 ("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\
905-testsuite\\.el" "automated/\\1-tests.el")
906 ;; NB lax rules should come last.
907 ("^m/m-\\(.*\\.h\\)$" "m/\\1" t)
908 ("^m-\\(.*\\.h\\)$" "\\1" t)
909 ("^s/s-\\(.*\\.h\\)$" "s/\\1" t)
910 ("^s-\\(.*\\.h\\)$" "\\1" t)
911 ("\\.\\(el\\|[ch]\\|x[pb]m\\|pbm\\)\\'" t t)
730 ) 912 )
731 "List regexps and rewriting rules for renamed files. 913 "List of regexps and rewriting rules for renamed files.
732Elements are (REGEXP . REPLACE). If REPLACE is a string, the file 914Elements are (REGEXP REPLACE [LAX]). If REPLACE is a string, the file
733name matching REGEXP is replaced by REPLACE using `replace-string'. 915name matching REGEXP is replaced by REPLACE using `replace-string'.
734Otherwise, the file name is accepted as is.") 916Otherwise, the file name is accepted as is.
917Elements with LAX non-nil are only used in `authors-lax-changelogs'.")
918
919;; It's really not worth trying to make these old logs fully valid.
920;; All the obvious real errors are gone.
921;; The main issue is _lots_ of moving around of files.
922;; Eg the progmodes/ (etc) directories did not exist before 1997.
923;; Also, lib-src/ did not exist, the files were in etc/.
924;; And various other things.
925;; Maybe this should just be any ChangeLog with a . extension,
926;; assuming we always fix logs fully before rotating them?
927(defconst authors-lax-changelogs
928 '("erc/ChangeLog\\.0[1-8]\\'"
929 "gnus/ChangeLog\\.[1-2]\\'"
930 "lisp/ChangeLog\\.\\([1-9]\\|1[0-5]\\)\\'"
931 "mh-e/ChangeLog\\.1\\'"
932 "src/ChangeLog\\.\\([1-9]\\|1[0-2]\\)\\'")
933 "List of regexps matching ChangeLogs that we do not print errors from.
934These are older ChangeLogs that have various issues.
935Additionally, for these logs we apply the `lax' elements of
936`authors-renamed-files-regexps'.")
937
735 938
736(defvar authors-checked-files-alist) 939(defvar authors-checked-files-alist)
737(defvar authors-invalid-file-names) 940(defvar authors-invalid-file-names)
738 941
942;; This has become rather yucky. :(
739(defun authors-disambiguate-file-name (fullname) 943(defun authors-disambiguate-file-name (fullname)
740 "Convert FULLNAME to an unambiguous relative-name." 944 "Convert FULLNAME to an unambiguous relative-name."
741 (let ((relname (file-name-nondirectory fullname)) 945 (let ((relname (file-name-nondirectory fullname))
742 parent) 946 dir parent)
743 (if (member relname authors-ambiguous-files) 947 (if (and (member relname authors-ambiguous-files)
744 ;; In case of ambiguity, just prepend the parent directory. 948 ;; Try to identify the top-level directory.
745 ;; FIXME obviously this is not a perfect solution. 949 ;; FIXME should really use ROOT from M-x authors.
746 (if (string-equal "lisp" 950 (not (and (file-directory-p
747 (setq parent (file-name-nondirectory 951 (expand-file-name
748 (directory-file-name 952 "lib-src"
749 (file-name-directory fullname))))) 953 (setq dir (file-name-directory fullname))))
954 (file-directory-p (expand-file-name "etc" dir)))))
955 ;; I think it looks weird to see eg "lisp/simple.el".
956 ;; But for eg Makefile.in, we do want to say "lisp/Makefile.in".
957 (if (and (string-equal "lisp"
958 (setq parent (file-name-nondirectory
959 (directory-file-name dir))))
960 ;; TODO better to simply have hard-coded list?
961 ;; Only really Makefile.in where this applies.
962 (not (file-exists-p
963 (expand-file-name (concat "../" relname) dir))))
750 relname 964 relname
751 (format "%s/%s" parent relname)) 965 ;; In case of ambiguity, just prepend the parent directory.
966 ;; FIXME obviously this is not a perfect solution.
967 (format "%s/%s" (file-name-nondirectory (directory-file-name dir))
968 relname))
752 relname))) 969 relname)))
753 970
971(defun authors-lax-changelog-p (file)
972 "Return non-nil if FILE matches `authors-lax-changelogs'."
973 (let ((list authors-lax-changelogs)
974 found)
975 (while list
976 (setq list (if (setq found (string-match-p (car list) file))
977 nil
978 (cdr list))))
979 found))
980
754(defun authors-canonical-file-name (file log-file pos author) 981(defun authors-canonical-file-name (file log-file pos author)
755 "Return canonical file name for FILE found in LOG-FILE. 982 "Return canonical file name for FILE found in LOG-FILE.
756Checks whether FILE is a valid (existing) file name, has been renamed, 983Checks whether FILE is a valid (existing) file name, has been renamed,
@@ -762,35 +989,39 @@ to print a message if FILE is not found."
762 ;; same as that from top-level/ChangeLog. 989 ;; same as that from top-level/ChangeLog.
763 (let* ((fullname (expand-file-name file (file-name-directory log-file))) 990 (let* ((fullname (expand-file-name file (file-name-directory log-file)))
764 (entry (assoc fullname authors-checked-files-alist)) 991 (entry (assoc fullname authors-checked-files-alist))
765 relname 992 laxlog relname valid)
766 valid)
767 (if entry 993 (if entry
768 (cdr entry) 994 (cdr entry)
769 (setq relname (file-name-nondirectory file)) 995 (setq relname (file-name-nondirectory file))
770 (if (or (member relname authors-valid-file-names) 996 (if (or (member file authors-valid-file-names)
997 (member relname authors-valid-file-names)
771 (file-exists-p file) 998 (file-exists-p file)
772 (file-exists-p relname) 999 (file-exists-p relname) ; FIXME? appropriate?
773 (file-exists-p (concat "etc/" relname))) 1000 )
774 (setq valid (authors-disambiguate-file-name fullname)) 1001 (setq valid (authors-disambiguate-file-name fullname))
775 (setq valid (assoc file authors-renamed-files-alist)) 1002 (if (setq valid (assoc file authors-renamed-files-alist))
776 (if valid
777 (setq valid (cdr valid)) 1003 (setq valid (cdr valid))
778 (let ((rules authors-renamed-files-regexps)) 1004 (setq laxlog (authors-lax-changelog-p log-file))
1005 (let ((rules authors-renamed-files-regexps)
1006 rule)
779 (while rules 1007 (while rules
780 (if (string-match (car (car rules)) file) 1008 (setq rule (car rules))
781 (setq valid (if (stringp (cdr (car rules))) 1009 (if (and (or laxlog (not (nth 2 rule)))
1010 (string-match (car rule) file))
1011 (setq valid (if (stringp (nth 1 rule))
782 (file-name-nondirectory 1012 (file-name-nondirectory
783 (replace-match (cdr (car rules)) t nil file)) 1013 (replace-match (nth 1 rule) t nil file))
784 relname) 1014 relname)
785 rules nil)) 1015 rules nil)
786 (setq rules (cdr rules)))))) 1016 (setq rules (cdr rules)))))))
787 (setq authors-checked-files-alist 1017 (setq authors-checked-files-alist
788 (cons (cons fullname valid) authors-checked-files-alist)) 1018 (cons (cons fullname valid) authors-checked-files-alist))
789 (unless (or valid 1019 (unless (or valid
790 (member file authors-ignored-files) 1020 (member file authors-ignored-files)
791 (authors-obsolete-file-p file) 1021 (authors-obsolete-file-p file)
792 (string-match "[*]" file) 1022 (string-match "[*]" file)
793 (string-match "^[0-9.]+$" file)) 1023 (string-match "^[0-9.]+$" file)
1024 laxlog)
794 (setq authors-invalid-file-names 1025 (setq authors-invalid-file-names
795 (cons (format "%s:%d: unrecognized `%s' for %s" 1026 (cons (format "%s:%d: unrecognized `%s' for %s"
796 log-file 1027 log-file