From: Per Cederqvist <cederp@opera.com>
To: Jeff Sipek <jeffpc@josefsipek.net>
Cc: git@vger.kernel.org, Per Cederqvist <cederp@opera.com>
Subject: [GUILT v2 12/29] "guilt header": more robust header selection.
Date: Tue, 13 May 2014 22:30:48 +0200 [thread overview]
Message-ID: <1400013065-27919-13-git-send-email-cederp@opera.com> (raw)
In-Reply-To: <1400013065-27919-1-git-send-email-cederp@opera.com>
If you run something like "guilt header '.*'" the command would crash,
because the grep comand that tries to ensure that the patch exist
would detect a match, but the later code expected the match to be
exact.
Fixed by comparing exact strings.
And as a creeping feature "guilt header" will now try to use the
supplied patch name as an unachored regexp if no exact match was
found. If the regexp yields a unique match, it is used; if more than
one patch matches, the names of all patches are listed and the command
fails. (Exercise left to the reader: generalized this so that "guilt
push" also accepts a unique regular expression.)
Signed-off-by: Per Cederqvist <cederp@opera.com>
---
| 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
--git a/guilt-header b/guilt-header
index 41e00cc..4701b31 100755
--- a/guilt-header
+++ b/guilt-header
@@ -45,10 +45,32 @@ esac
[ -z "$patch" ] && die "No patches applied."
# check that patch exists in the series
-ret=`get_full_series | grep -e "^$patch\$" | wc -l`
-if [ $ret -eq 0 ]; then
- die "Patch $patch is not in the series"
+full_series=`get_tmp_file series`
+get_full_series > "$full_series"
+found_patch=
+while read x; do
+ if [ "$x" = "$patch" ]; then
+ found_patch="$patch"
+ break
+ fi
+done < "$full_series"
+if [ -z "$found_patch" ]; then
+ TMP_MATCHES=`get_tmp_file series`
+ grep "$patch" < "$full_series" > "$TMP_MATCHES"
+ nr=`wc -l < $TMP_MATCHES`
+ if [ $nr -gt 1 ]; then
+ echo "$patch does not uniquely identify a patch. Did you mean any of these?" >&2
+ sed 's/^/ /' "$TMP_MATCHES" >&2
+ rm -f "$TMP_MATCHES"
+ exit 1
+ elif [ $nr -eq 0 ]; then
+ rm -f "$TMP_MATCHES"
+ die "Patch $patch is not in the series"
+ fi
+ found_patch=`cat $TMP_MATCHES`
+ rm -f "$TMP_MATCHES"
fi
+patch="$found_patch"
# FIXME: warn if we're editing an applied patch
--
1.8.3.1
next prev parent reply other threads:[~2014-05-13 20:35 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-13 20:30 [GUILT v2 00/29] Teach guilt import-commit how to create legal patch names, and more Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 01/29] The tests should not fail if guilt.diffstat is set Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 02/29] Allow "guilt delete -f" to run from a dir which contains spaces Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 03/29] Added test case for "guilt delete -f" Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 04/29] Allow "guilt import-commit" to run from a dir which contains spaces Per Cederqvist
2014-05-13 21:06 ` Jeff Sipek
2014-05-13 20:30 ` [GUILT v2 05/29] "guilt new": Accept more than 4 arguments Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 06/29] Fix the do_get_patch function Per Cederqvist
2014-05-13 21:13 ` Jeff Sipek
2014-05-14 8:46 ` Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 07/29] Added test cases for "guilt fold" Per Cederqvist
2014-05-13 21:30 ` Jeff Sipek
2014-05-14 8:49 ` Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 08/29] Added more test cases for "guilt new": empty patches Per Cederqvist
2014-05-14 17:10 ` Jeff Sipek
2014-05-14 20:38 ` Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 09/29] Test suite: properly check the exit status of commands Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 10/29] Run test_failed if the exit status of a test script is bad Per Cederqvist
2014-05-13 21:58 ` Jeff Sipek
2014-05-13 20:30 ` [GUILT v2 11/29] test suite: remove pointless redirection Per Cederqvist
2014-05-13 20:30 ` Per Cederqvist [this message]
2014-05-15 22:46 ` [GUILT v2 12/29] "guilt header": more robust header selection Jeff Sipek
2014-05-16 9:51 ` Per Cederqvist
2014-05-16 12:55 ` Jeff Sipek
2014-05-13 20:30 ` [GUILT v2 13/29] Check that "guilt header '.*'" fails Per Cederqvist
2014-05-15 22:47 ` Jeff Sipek
2014-05-13 20:30 ` [GUILT v2 14/29] Use "git check-ref-format" to validate patch names Per Cederqvist
2014-05-15 23:00 ` Jeff Sipek
2014-05-13 20:30 ` [GUILT v2 15/29] Produce legal patch names in guilt-import-commit Per Cederqvist
2014-05-15 23:21 ` Jeff Sipek
2014-05-13 20:30 ` [GUILT v2 16/29] Fix backslash handling when creating names of imported patches Per Cederqvist
2014-05-13 22:09 ` Jeff Sipek
2014-05-14 8:56 ` Per Cederqvist
2014-05-14 13:06 ` Jeff Sipek
2014-05-13 20:30 ` [GUILT v2 17/29] "guilt graph" no longer loops when no patches are applied Per Cederqvist
2014-05-13 21:53 ` Jeff Sipek
2014-05-13 20:30 ` [GUILT v2 18/29] guilt-graph: Handle commas in branch names Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 19/29] Check that "guilt graph" works when working on a branch with a comma Per Cederqvist
2014-05-13 21:36 ` Jeff Sipek
2014-05-13 20:30 ` [GUILT v2 20/29] "guilt graph": Handle patch names containing quotes Per Cederqvist
2014-05-13 21:49 ` Jeff Sipek
2014-05-13 20:30 ` [GUILT v2 21/29] The log.decorate setting should not influence import-commit Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 22/29] The log.decorate setting should not influence patchbomb Per Cederqvist
2014-05-13 20:30 ` [GUILT v2 23/29] The log.decorate setting should not influence guilt rebase Per Cederqvist
2014-05-13 20:31 ` [GUILT v2 24/29] disp no longer processes backslashes Per Cederqvist
2014-05-13 21:44 ` Jeff Sipek
2014-05-13 20:31 ` [GUILT v2 25/29] "guilt push" now fails when there are no more patches to push Per Cederqvist
2014-05-13 21:41 ` Jeff Sipek
2014-05-14 9:27 ` Per Cederqvist
2014-05-14 13:07 ` Jeff Sipek
2014-05-13 20:31 ` [GUILT v2 26/29] "guilt pop" now fails when there are no more patches to pop Per Cederqvist
2014-05-13 22:23 ` Jeff Sipek
2014-05-13 20:31 ` [GUILT v2 27/29] Minor testsuite fix Per Cederqvist
2014-05-13 20:31 ` [GUILT v2 28/29] Added guilt.reusebranch configuration option Per Cederqvist
2014-05-14 15:53 ` Jeff Sipek
2014-05-15 7:37 ` Per Cederqvist
2014-05-15 14:29 ` Jeff Sipek
2014-05-13 20:31 ` [GUILT v2 29/29] Added a short style guide, and Emacs settings Per Cederqvist
2014-05-13 21:00 ` Jeff Sipek
2014-05-13 20:45 ` [GUILT v2 00/29] Teach guilt import-commit how to create legal patch names, and more Theodore Ts'o
2014-05-13 20:54 ` Jeff Sipek
2014-05-13 21:29 ` Per Cederqvist
2014-05-14 9:49 ` Per Cederqvist
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1400013065-27919-13-git-send-email-cederp@opera.com \
--to=cederp@opera.com \
--cc=git@vger.kernel.org \
--cc=jeffpc@josefsipek.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).