git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [GUILT v3 12/31] "guilt header": more robust header selection.

From
JSJeff Sipek <jeffpc@josefsipek.net>
Date
May 16, 2014, 15:22 UTC
Message-ID
<20140516152240.GE1770@meili.valhalla.31bits.net>
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:
Show 63 quoted lines
> 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.
Previous: Per CederqvistNext: Per Cederqvist
Message 17 of 41 in “[GUILT v3 00/31] Teach guilt import-commit how to create legal patch names, and more”
  1. Per CederqvistMay 16, 2014
  2. 01/31 The tests should not fail if guilt.diffstat is set.Per Cederqvist, May 16, 2014
  3. 02/31 Allow "guilt delete -f" to run from a dir which contains spaces.Per Cederqvist, May 16, 2014
  4. 03/31 Added test case for "guilt delete -f".Per Cederqvist, May 16, 2014
  5. 04/31 Allow "guilt import-commit" to run from a dir which contains spaces.Per Cederqvist, May 16, 2014
  6. 05/31 "guilt new": Accept more than 4 arguments.Per Cederqvist, May 16, 2014
  7. 06/31 Fix the do_get_patch function.Per Cederqvist, May 16, 2014
  8. 07/31 Added test cases for "guilt fold".Per Cederqvist, May 16, 2014
  9. 08/31 Added more test cases for "guilt new": empty patches.Per Cederqvist, May 16, 2014
  10. Jeff SipekMay 16, 2014
  11. 09/31 Test suite: properly check the exit status of commands.Per Cederqvist, May 16, 2014
  12. Jeff SipekMay 16, 2014
  13. Per CederqvistMay 18, 2014
  14. 10/31 Run test_failed if the exit status of a test script is bad.Per Cederqvist, May 16, 2014
  15. 11/31 test suite: remove pointless redirection.Per Cederqvist, May 16, 2014
  16. 12/31 "guilt header": more robust header selection.Per Cederqvist, May 16, 2014
  17. Jeff SipekMay 16, 2014
  18. 13/31 Check that "guilt header '.*'" fails.Per Cederqvist, May 16, 2014
  19. 14/31 Use "git check-ref-format" to validate patch names.Per Cederqvist, May 16, 2014
  20. Jeff SipekMay 16, 2014
  21. Per CederqvistMay 18, 2014
  22. 15/31 Produce legal patch names in guilt-import-commit.Per Cederqvist, May 16, 2014
  23. 16/31 Fix backslash handling when creating names of imported patches.Per Cederqvist, May 16, 2014
  24. 17/31 "guilt graph" no longer loops when no patches are applied.Per Cederqvist, May 16, 2014
  25. 18/31 guilt-graph: Handle commas in branch names.Per Cederqvist, May 16, 2014
  26. 19/31 Check that "guilt graph" works when working on a branch with a comma.Per Cederqvist, May 16, 2014
  27. 20/31 "guilt graph": Handle patch names containing quotes.Per Cederqvist, May 16, 2014
  28. 21/31 The log.decorate setting should not influence import-commit.Per Cederqvist, May 16, 2014
  29. 22/31 The log.decorate setting should not influence patchbomb.Per Cederqvist, May 16, 2014
  30. 23/31 The log.decorate setting should not influence guilt rebase.Per Cederqvist, May 16, 2014
  31. 24/31 disp no longer processes backslashes.Per Cederqvist, May 16, 2014
  32. 25/31 "guilt push" now fails when there are no more patches to push.Per Cederqvist, May 16, 2014
  33. 26/31 "guilt pop" now fails when there are no more patches to pop.Per Cederqvist, May 16, 2014
  34. 27/31 Minor testsuite fix.Per Cederqvist, May 16, 2014
  35. 28/31 Fix coding style errors in t-061.sh.Per Cederqvist, May 16, 2014
  36. Jeff SipekMay 16, 2014
  37. 29/31 Added guilt.reusebranch configuration option.Per Cederqvist, May 16, 2014
  38. Jeff SipekMay 16, 2014
  39. 30/31 Added a short style guide, and Emacs settings.Per Cederqvist, May 16, 2014
  40. 31/31 Don't use "git log -p" in the test suite.Per Cederqvist, May 16, 2014
  41. Jeff SipekMay 16, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.