Mercurial > hg > octave-kai > gnulib-hg
changeset 14524:15d19f52ff01
bootstrap: preserve git whitelist item sorting
In .gitignore, it is handy to do:
/m4/*
!/m4/file.m4
to whitelist just file.m4 while ignoring all other files. But
! sorts too early.
* build-aux/bootstrap (sort_patterns): New function.
(insert_sorted_if_absent): Use it to sink ! lines to the bottom.
author | Eric Blake <eblake@redhat.com> |
---|---|
date | Tue, 05 Apr 2011 13:53:20 -0600 |
parents | 0ba2e3063130 |
children | 681d7647cda3 |
files | ChangeLog build-aux/bootstrap |
diffstat | 2 files changed, 24 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2011-04-05 Eric Blake <eblake@redhat.com> + + bootstrap: preserve git whitelist item sorting + * build-aux/bootstrap (sort_patterns): New function. + (insert_sorted_if_absent): Use it to sink ! lines to the bottom. + 2011-04-05 Simon Josefsson <simon@josefsson.org> * top/maint.mk (sc_prohibit_empty_lines_at_EOF): Don't trigger
--- a/build-aux/bootstrap +++ b/build-aux/bootstrap @@ -1,6 +1,6 @@ #! /bin/sh # Print a version string. -scriptversion=2011-03-03.12; # UTC +scriptversion=2011-04-05.18; # UTC # Bootstrap this package from checked-out sources. @@ -278,14 +278,29 @@ exit 1 fi +# Ensure that lines starting with ! sort last, per gitignore conventions +# for whitelisting exceptions after a more generic blacklist pattern. +sort_patterns() { + sort -u "$@" | sed '/^!/ { + H + d + } + $ { + P + x + s/^\n// + }' +} + # If $STR is not already on a line by itself in $FILE, insert it, # sorting the new contents of the file and replacing $FILE with the result. insert_sorted_if_absent() { file=$1 str=$2 test -f $file || touch $file - echo "$str" | sort -u - $file | cmp - $file > /dev/null \ - || echo "$str" | sort -u - $file -o $file \ + echo "$str" | sort_patterns - $file | cmp - $file > /dev/null \ + || { echo "$str" | sort_patterns - $file > $file.bak \ + && mv $file.bak $file; } \ || exit 1 }