git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Sipek <jeffpc@josefsipek.net>
To: Per Cederqvist <cederp@opera.com>
Cc: git@vger.kernel.org
Subject: Re: [GUILT v3 12/31] "guilt header": more robust header selection.
Date: Fri, 16 May 2014 11:22:40 -0400	[thread overview]
Message-ID: <20140516152240.GE1770@meili.valhalla.31bits.net> (raw)
In-Reply-To: <1400251578-17221-13-git-send-email-cederp@opera.com>

Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>

On Fri, May 16, 2014 at 04:45:59PM +0200, Per Cederqvist wrote:
> 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>
> ---
>  guilt-header | 29 ++++++++++++++++++++++++++---
>  1 file changed, 26 insertions(+), 3 deletions(-)
> 
> diff --git a/guilt-header b/guilt-header
> index 41e00cc..c3d24f9 100755
> --- a/guilt-header
> +++ b/guilt-header
> @@ -45,10 +45,33 @@ 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"
> +TMP_FULL_SERIES=`get_tmp_file series`
> +get_full_series > "$TMP_FULL_SERIES"
> +found_patch=
> +while read x; do
> +	if [ "$x" = "$patch" ]; then
> +		found_patch="$patch"
> +		break
> +	fi
> +done < "$TMP_FULL_SERIES"
> +if [ -z "$found_patch" ]; then
> +	TMP_MATCHES=`get_tmp_file series`
> +	grep "$patch" < "$TMP_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" "$TMP_FULL_SERIES"
> +		exit 1
> +	elif [ $nr -eq 0 ]; then
> +		rm -f "$TMP_MATCHES" "$TMP_FULL_SERIES"
> +		die "Patch $patch is not in the series"
> +	fi
> +	found_patch=`cat $TMP_MATCHES`
> +	rm -f "$TMP_MATCHES"
>  fi
> +rm -f "$TMP_FULL_SERIES"
> +patch="$found_patch"
>  
>  # FIXME: warn if we're editing an applied patch
>  
> -- 
> 1.8.3.1
> 

-- 
Failure is not an option,
It comes bundled with your Microsoft product.

  reply	other threads:[~2014-05-16 15:22 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-16 14:45 [GUILT v3 00/31] Teach guilt import-commit how to create legal patch names, and more Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 01/31] The tests should not fail if guilt.diffstat is set Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 02/31] Allow "guilt delete -f" to run from a dir which contains spaces Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 03/31] Added test case for "guilt delete -f" Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 04/31] Allow "guilt import-commit" to run from a dir which contains spaces Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 05/31] "guilt new": Accept more than 4 arguments Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 06/31] Fix the do_get_patch function Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 07/31] Added test cases for "guilt fold" Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 08/31] Added more test cases for "guilt new": empty patches Per Cederqvist
2014-05-16 15:01   ` Jeff Sipek
2014-05-16 14:45 ` [GUILT v3 09/31] Test suite: properly check the exit status of commands Per Cederqvist
2014-05-16 15:45   ` Jeff Sipek
2014-05-18 19:12     ` Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 10/31] Run test_failed if the exit status of a test script is bad Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 11/31] test suite: remove pointless redirection Per Cederqvist
2014-05-16 14:45 ` [GUILT v3 12/31] "guilt header": more robust header selection Per Cederqvist
2014-05-16 15:22   ` Jeff Sipek [this message]
2014-05-16 14:46 ` [GUILT v3 13/31] Check that "guilt header '.*'" fails Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 14/31] Use "git check-ref-format" to validate patch names Per Cederqvist
2014-05-16 15:20   ` Jeff Sipek
2014-05-18 18:59     ` Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 15/31] Produce legal patch names in guilt-import-commit Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 16/31] Fix backslash handling when creating names of imported patches Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 17/31] "guilt graph" no longer loops when no patches are applied Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 18/31] guilt-graph: Handle commas in branch names Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 19/31] Check that "guilt graph" works when working on a branch with a comma Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 20/31] "guilt graph": Handle patch names containing quotes Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 21/31] The log.decorate setting should not influence import-commit Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 22/31] The log.decorate setting should not influence patchbomb Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 23/31] The log.decorate setting should not influence guilt rebase Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 24/31] disp no longer processes backslashes Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 25/31] "guilt push" now fails when there are no more patches to push Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 26/31] "guilt pop" now fails when there are no more patches to pop Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 27/31] Minor testsuite fix Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 28/31] Fix coding style errors in t-061.sh Per Cederqvist
2014-05-16 15:23   ` Jeff Sipek
2014-05-16 14:46 ` [GUILT v3 29/31] Added guilt.reusebranch configuration option Per Cederqvist
2014-05-16 15:26   ` Jeff Sipek
2014-05-16 14:46 ` [GUILT v3 30/31] Added a short style guide, and Emacs settings Per Cederqvist
2014-05-16 14:46 ` [GUILT v3 31/31] Don't use "git log -p" in the test suite Per Cederqvist
2014-05-16 15:36   ` Jeff Sipek

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=20140516152240.GE1770@meili.valhalla.31bits.net \
    --to=jeffpc@josefsipek.net \
    --cc=cederp@opera.com \
    --cc=git@vger.kernel.org \
    /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).