1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-23 10:34:07 +00:00

Merge branch 'emacs-25' of git.sv.gnu.org:/srv/git/emacs into emacs-25

This commit is contained in:
Vincent Belaïche 2016-05-25 23:44:18 +02:00
commit 6c12c53949
5 changed files with 79 additions and 65 deletions

View File

@ -43,12 +43,19 @@ Optional argument DATE is the release date, default today."
(setq root (expand-file-name root))
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
(user-error "%s doesn't seem to be the root of an Emacs source tree" root))
;; FIXME this does not check that a ChangeLog that exists is not
;; your own personal one. Perhaps we should move any existing file
;; and unconditionally call make ChangeLog?
;; Or make ChangeLog CHANGELOG=temp and compare with the existing?
(unless (file-exists-p (expand-file-name "ChangeLog" root))
(user-error "No top-level ChangeLog - run \"make ChangeLog\" first"))
(let ((clog (expand-file-name "ChangeLog" root)))
(if (file-exists-p clog)
;; Basic check that a ChangeLog that exists is not your personal one.
;; TODO Perhaps we should move any existing file and unconditionally
;; call make ChangeLog? Or make ChangeLog CHANGELOG=temp and compare
;; with the existing?
(with-temp-buffer
(insert-file-contents clog)
(or (re-search-forward "^[ \t]*Copyright.*Free Software" nil t)
(user-error "ChangeLog looks like a personal one - remove it?")))
(or
(zerop (call-process "make" nil nil nil "-C" root "ChangeLog"))
(error "Problem generating ChangeLog"))))
(require 'add-log)
(or date (setq date (funcall add-log-time-format nil t)))
(let* ((logs (process-lines "find" root "-name" "ChangeLog"))

View File

@ -1361,24 +1361,36 @@ and changed by AUTHOR."
(cons (list author wrote-list cowrote-list changed-list)
authors-author-list)))))
(defun authors (root)
(defun authors (root &optional nologupdate)
"Extract author information from change logs and Lisp source files.
ROOT is the root directory under which to find the files. If called
interactively, ROOT is read from the minibuffer.
Result is a buffer *Authors* containing authorship information, and a
buffer *Authors Errors* containing references to unknown files."
(interactive "DEmacs source directory: ")
ROOT is the root directory under which to find the files.
Interactively, read ROOT from the minibuffer.
Accurate author information requires up-to-date change logs, so this
first updates them, unless optional prefix argument NOLOGUPDATE is non-nil.
The result is a buffer *Authors* containing authorship information,
and a buffer *Authors Errors* containing references to unknown files."
(interactive "DEmacs source directory: \nP")
(setq root (expand-file-name root))
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
(unless (y-or-n-p
(format "Not the root directory of Emacs: %s, continue? " root))
(user-error "Not the root directory")))
;; May contain your personal entries.
(or (not (file-exists-p (expand-file-name "ChangeLog" root)))
(y-or-n-p "Unversioned ChangeLog present, continue?")
(user-error "Unversioned ChangeLog may have irrelevant entries"))
(or nologupdate
;; There are likely to be things that need fixing, so we update
;; the versioned ChangeLog.N rather than the unversioned ChangeLog.
(zerop (call-process "make" nil nil nil
"-C" root "change-history-nocommit"))
(error "Problem updating ChangeLog"))
(let ((logs (process-lines find-program root "-name" "ChangeLog*"))
(table (make-hash-table :test 'equal))
(buffer-name "*Authors*")
authors-checked-files-alist
authors-invalid-file-names)
(authors-add-fixed-entries table)
(unless (file-exists-p (expand-file-name "src/emacs.c" root))
(unless (y-or-n-p
(format "Not the root directory of Emacs: %s, continue? " root))
(error "Not the root directory")))
(dolist (log logs)
(when (string-match "ChangeLog\\(.[0-9]+\\)?$" log)
(message "Scanning %s..." log)

View File

@ -37,14 +37,15 @@ General steps (for each step, check for possible errors):
M-: (require 'authors) RET
M-x authors RET
(This first updates the current versioned ChangeLog.N)
If there is an "*Authors Errors*" buffer, address the issues.
If there was a ChangeLog typo, run "make change-history" and then
fix the newest ChangeLog history file. If a file was deleted or
renamed, consider adding an appropriate entry to
authors-ignored-files, authors-valid-file-names, or
If there was a ChangeLog typo, fix the relevant entry.
If a file was deleted or renamed, consider adding an appropriate
entry to authors-ignored-files, authors-valid-file-names, or
authors-renamed-files-alist.
If necessary, repeat M-x authors after making those changes.
If necessary, repeat 'C-u M-x authors' after making those changes.
Save the "*Authors*" buffer as etc/AUTHORS.
Check the diff looks reasonable. Maybe add entries to
authors-ambiguous-files or authors-aliases, and repeat.
@ -85,8 +86,8 @@ General steps (for each step, check for possible errors):
5. Copy lisp/loaddefs.el to lisp/ldefs-boot.el.
Commit etc/AUTHORS, lisp/ldefs-boot.el, and the files changed
by M-x set-version.
Commit ChangeLog.N, etc/AUTHORS, lisp/ldefs-boot.el, and the
files changed by M-x set-version.
If someone else made a commit between step 1 and now,
you need to repeat from step 4 onwards. (You can commit the files

View File

@ -81,7 +81,7 @@ test -d .git || {
--ignore-line='^; ' --format='%B' \
"$gen_origin..$new_origin" >"ChangeLog.tmp" || exit
if test -s "ChangeLog.tmp"; then
if test -e "ChangeLog.tmp"; then
# Fix up bug references.
# This would be better as eg a --transform option to gitlog-to-changelog,
@ -99,7 +99,7 @@ if test -s "ChangeLog.tmp"; then
`
start_year=
end_year=
for year in $years; do
for year in ${years:-`date +%Y`}; do
: ${start_year:=$year}
end_year=$year
done
@ -110,13 +110,19 @@ if test -s "ChangeLog.tmp"; then
year_range=$start_year-$end_year
fi
# Update gen_origin and append a proper copyright notice.
sed -n '
1i\
# Update gen_origin
if test "$gen_origin" != "$new_origin"; then
sed -n '
1i\
/^This file records repository revisions/p
s/^commit [0-9a-f]* (exclusive)/commit '"$gen_origin"' (exclusive)/p
s/^commit [0-9a-f]* (inclusive)/commit '"$new_origin"' (inclusive)/p
/^This file records repository revisions/p
s/^commit [0-9a-f]* (exclusive)/commit '"$gen_origin"' (exclusive)/p
s/^commit [0-9a-f]* (inclusive)/commit '"$new_origin"' (inclusive)/p
' <ChangeLog.$nmax >>"ChangeLog.tmp" || exit
fi
# Append a proper copyright notice.
sed -n '
/^See ChangeLog.[0-9]* for earlier/,${
s/ChangeLog\.[0-9]*/ChangeLog.'$nmax'/
s/\(Copyright[ (C)]*\)[0-9]*-[0-9]*/\1'"$year_range"'/

View File

@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
\def\texinfoversion{2016-05-07.20}
\def\texinfoversion{2016-04-14.07}
%
% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
@ -67,10 +67,6 @@
\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
% LaTeX's \typeout. This ensures that the messages it is used for
% are identical in format to the corresponding ones from latex/pdflatex.
\def\typeout{\immediate\write17}%
\chardef\other=12
% We never want plain's \outer definition of \+ in Texinfo.
@ -1538,6 +1534,7 @@
%
% PDF outline support
%
\pdfmakepagedesttrue \relax
% Emulate the primitive of pdfTeX
\def\pdfdest name#1 xyz{%
\special{pdf:dest (name#1) [@thispage /XYZ @xpos @ypos]}%
@ -3273,8 +3270,8 @@
% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
% Unless we're in typewriter, use \ecfont because the CM text fonts do
% not have braces, and we don't want to switch into math.
\def\mylbrace{{\ifmonospace\char123\else\ensuremath\lbrace\fi}}
\def\myrbrace{{\ifmonospace\char125\else\ensuremath\rbrace\fi}}
\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
\let\{=\mylbrace \let\lbracechar=\{
\let\}=\myrbrace \let\rbracechar=\}
\begingroup
@ -4756,7 +4753,7 @@
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
% Used when writing an index entry out to an index file to prevent
% Used when writing an index entry out to an index file, to prevent
% expansion of Texinfo commands that can appear in an index entry.
%
\def\indexdummies{%
@ -4892,9 +4889,12 @@
%
% We want to disable all macros so that they are not expanded by \write.
\macrolist
\definedummyword\value
%
\normalturnoffactive
%
% Handle some cases of @value -- where it does not contain any
% (non-fully-expandable) commands.
\makevalueexpandable
}
% \commondummiesnofonts: common to \commondummies and \indexnofonts.
@ -5159,10 +5159,9 @@
\ifx\suffix\indexisfl\def\suffix{f1}\fi
% Open the file
\immediate\openout\csname#1indfile\endcsname \jobname.\suffix
% Using \immediate above here prevents an object entering into the current
% box, which could confound checks such as those in \safewhatsit for
% preceding skips.
\typeout{Writing index file \jobname.\suffix}%
% Using \immediate here prevents an object entering into the current box,
% which could confound checks such as those in \safewhatsit for preceding
% skips.
\fi}
\def\indexisfl{fl}
@ -5370,7 +5369,6 @@
% index. The easiest way to prevent this problem is to make sure
% there is some text.
\putwordIndexNonexistent
\typeout{No file \jobname.\indexname s.}%
\else
\catcode`\\ = 0
%
@ -6684,14 +6682,7 @@
% 1 and 2 (the page numbers aren't printed), and so are the first
% two pages of the document. Thus, we'd have two destinations named
% `1', and two named `2'.
\ifpdf
\global\pdfmakepagedesttrue
\else
\ifx\XeTeXrevision\thisisundefined
\else
\global\pdfmakepagedesttrue
\fi
\fi
\ifpdf \global\pdfmakepagedesttrue \fi
}
@ -8871,7 +8862,6 @@
% include an _ in the xref name, etc.
\indexnofonts
\turnoffactive
\def\value##1{##1}%
\expandafter\global\expandafter\let\expandafter\Xthisreftitle
\csname XR#1-title\endcsname
}%
@ -9012,14 +9002,14 @@
\fi\fi\fi
}
% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX
% is output afterwards if non-empty.
% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
% If its value is nonempty, SUFFIX is output afterward.
%
\def\refx#1#2{%
\requireauxfile
{%
\indexnofonts
\otherbackslash
\def\value##1{##1}%
\expandafter\global\expandafter\let\expandafter\thisrefX
\csname XR#1\endcsname
}%
@ -9044,18 +9034,16 @@
#2% Output the suffix in any case.
}
% This is the macro invoked by entries in the aux file. Define a control
% sequence for a cross-reference target (we prepend XR to the control sequence
% name to avoid collisions). The value is the page number. If this is a float
% type, we have more work to do.
% This is the macro invoked by entries in the aux file. Usually it's
% just a \def (we prepend XR to the control sequence name to avoid
% collisions). But if this is a float type, we have more work to do.
%
\def\xrdef#1#2{%
{% Expand the node or anchor name to remove control sequences.
% \turnoffactive stops 8-bit characters being changed to commands
% like @'e. \refx does the same to retrieve the value in the definition.
{% The node name might contain 8-bit characters, which in our current
% implementation are changed to commands like @'e. Don't let these
% mess up the control sequence name.
\indexnofonts
\turnoffactive
\def\value##1{##1}%
\xdef\safexrefname{#1}%
}%
%