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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.