mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-10 15:56:18 +00:00
0bf5739b77
c3489d0
* lisp/w32-fns.el (set-message-beep, w32-get-locale-info) (w3...a4d882c
Correct old cell name unbinding when renaming cell.6c12c53
Merge branch 'emacs-25' of git.sv.gnu.org:/srv/git/emacs into...0be6725
Document problem: slow screen refresh on missing font.853b9b9
* admin/admin.el (add-release-logs): Basic check of existing ...5fa80cf
* build-aux/gitlog-to-emacslog: Handle empty generated Change...3c79e51
* admin/admin.el (add-release-logs): Generate ChangeLog if ne...42275df
* doc/misc/texinfo.tex: Revert previous change (Bug#23611).3f4a9d9
* admin/authors.el (authors): First update the ChangeLog.897fb6f
; 'Changes from the pre-25.1 API' copyedits825ca25
Rename vc-stay-local back to vc-cvs-stay-local4efb3e8
* doc/emacs/files.texi (Comparing Files): * doc/emacs/trouble...b995d1e
* doc/misc/eww.texi (Advanced): Fix xref.2e589c0
Fix cross-references between manualsf3d2ded
* doc/misc/vhdl-mode.texi (Sample Init File): Rename node to ...906c810
; * admin/release-process: Move etc/HISTORY from here... ; * ...bea1b65
* admin/admin.el (add-release-logs): Also update etc/HISTORY.503e752
; * CONTRIBUTE: Fix a typo.fbfd478
Avoid aborting due to errors in arguments of 'set-face-attrib...bdfbe6d
; * admin/release-process: Copyedits.44a6aed
; * test/automated/data-tests.el: Standardize license notice.c33ed39
; * test/automated/viper-tests.el: Standardize license notice.df4a14b
Add automated test for viper-tests.elc0139e3
Fix viper undo breakage from undo-boundary changes920d76c
Fix reference to obsolete fn ps-eval-switch18a9bc1
Do not trash symlinks to init file2671179
Don't print the "decomposition" line for control chars in wha...869092c
Bring back xterm pasting with middle mouse5ab0830
Provide workaround for xftfont rendering problemc9f7ec7
* lisp/desktop.el: Disable restore frameset if in non-graphic...30989a0
Mention GTK+ problems in etc/PROBLEMS421e3c4
* lisp/emacs-lisp/package.el (package-refresh-contents):dadfc30
Revert "epg: Add a way to detect gpg1 executable for tests"e41a5cb
Avoid errors with Czech and Slovak input methodsd4ae6d7
epg: Add a way to detect gpg1 executable for testsebc3a94
* lisp/emacs-lisp/package.el: Fix free variable warnings.6e71295
* lisp/emacs-lisp/package.el (package--with-response-buffer):c45d9f6
Improve documentation of 'server-name'3b5e38c
Modernize ASLR advice in etc/PROBLEMS1fe1e0a
* lisp/char-fold.el: Rename from character-fold.el.
136 lines
3.9 KiB
Bash
Executable File
136 lines
3.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Convert git log output to ChangeLog format for GNU Emacs.
|
|
|
|
# Copyright (C) 2014-2016 Free Software Foundation, Inc.
|
|
|
|
# Author: Paul Eggert
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
LC_ALL=C
|
|
export LC_ALL
|
|
|
|
# The newest revision that should not appear in the generated ChangeLog.
|
|
gen_origin=
|
|
|
|
force=
|
|
output=ChangeLog
|
|
nmax=2
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
-g|--gen-origin) gen_origin="$2" ; shift ;;
|
|
-f|--force) force=1 ;;
|
|
-n|--nmax) nmax="$2"; shift ;;
|
|
-o|--output) output="$2" ; shift ;;
|
|
*) printf '%s\n' "Unrecognized argument: $1" >&2; exit 1 ;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
if [ ! -f ChangeLog.$nmax ]; then
|
|
printf '%s\n' "Can't find ChangeLog.$nmax" >&2
|
|
printf '%s\n' "Must be run from the top source directory" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# If not specified in the command line, get gen_origin from the existing
|
|
# ChangeLog file.
|
|
[ "$gen_origin" ] || {
|
|
gen_origin_line=`
|
|
grep -E '^commit [0-9a-f]+ [(]inclusive[)]' ChangeLog.$nmax
|
|
` || {
|
|
printf '%s\n' "ChangeLog.$nmax lacks a 'commit ... (inclusive)' line" >&2
|
|
exit 1
|
|
}
|
|
set $gen_origin_line
|
|
gen_origin=$2
|
|
}
|
|
|
|
# Get the new value for gen_origin from the latest version in the repository.
|
|
new_origin=`git log --pretty=format:%H 'HEAD^!'` || exit
|
|
|
|
if [ -f "$output" ]; then
|
|
[ ! "$force" ] && printf '%s\n' "$output exists" >&2 && exit 1
|
|
rm -f "$output" || exit 1
|
|
fi
|
|
|
|
# If this is not a Git repository, just generate an empty ChangeLog.
|
|
test -e .git || {
|
|
>"$output"
|
|
exit
|
|
}
|
|
|
|
# Use Gnulib's packaged ChangeLog generator.
|
|
# Maybe we should skip all "Merge branch 'master'" messages.
|
|
# See eg the cairo-related ones.
|
|
./build-aux/gitlog-to-changelog \
|
|
--ignore-matching="^; |^Merge branch '[^']*' of git\.(savannah|sv)\.gnu\.org:/srv/git/emacs|^Merge remote-tracking branch '.*'$" \
|
|
--ignore-line='^; ' --format='%B' \
|
|
"$gen_origin..$new_origin" >"ChangeLog.tmp" || exit
|
|
|
|
if test -e "ChangeLog.tmp"; then
|
|
|
|
# Fix up bug references.
|
|
# This would be better as eg a --transform option to gitlog-to-changelog,
|
|
# but... effort. FIXME does not handle rare cases like:
|
|
# Fixes: debbugs:19434 debbugs:19519
|
|
sed 's/ Fixes: \(debbugs:\|bug#\)\([0-9][0-9]*\)/ (Bug#\2)/' \
|
|
"ChangeLog.tmp" > "ChangeLog.tmp2"
|
|
mv "ChangeLog.tmp2" "ChangeLog.tmp"
|
|
|
|
# Find the years covered by the generated ChangeLog, so that
|
|
# a proper copyright notice can be output.
|
|
years=`
|
|
sed -n 's/^\([0-9][0-9]*\).*/\1/p' "ChangeLog.tmp" |
|
|
sort -nu
|
|
`
|
|
start_year=
|
|
end_year=
|
|
for year in ${years:-`date +%Y`}; do
|
|
: ${start_year:=$year}
|
|
end_year=$year
|
|
done
|
|
|
|
if test "$start_year" = "$end_year"; then
|
|
year_range=$start_year
|
|
else
|
|
year_range=$start_year-$end_year
|
|
fi
|
|
|
|
# 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
|
|
' <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"'/
|
|
p
|
|
}
|
|
' <ChangeLog.$nmax >>"ChangeLog.tmp" || exit
|
|
fi
|
|
|
|
# Install the generated ChangeLog.
|
|
test "$output" = "ChangeLog.tmp" || mv "ChangeLog.tmp" "$output"
|