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

[GUILT v3 20/31] "guilt graph": Handle patch names containing quotes.

From
Per Cederqvist <cederp@opera.com>
Date
May 16, 2014, 14:46 UTC
Message-ID
<1400251578-17221-21-git-send-email-cederp@opera.com>
In-Reply-To
<1400251578-17221-1-git-send-email-cederp@opera.com>

Quote quotes with a backslash in the "guilt graph" output. Otherwise, the "dot" file could contain syntax errors.

Added a test case.
Signed-off-by: Per Cederqvist <cederp@opera.com>
Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
---
 guilt-graph          |  2 ++
 regression/t-033.out | 22 ++++++++++++++++++++++
 regression/t-033.sh  |  9 +++++++++
 3 files changed, 33 insertions(+)
diff --git a/guilt-graph b/guilt-graph
index 924a63e..0857e0d 100755
--- a/guilt-graph
+++ b/guilt-graph
@@ -57,6 +57,8 @@ while [ "$current" != "$base" ]; do
 }"`
 	[ -z "$pname" ] && pname="?"
 
+	pname="`printf \"%s\" \"$pname\" | sed 's/\"/\\\\\"/g'`"
+
 	disp "# checking rev $current"
 	disp "	\"$current\" [label=\"$pname\"]"
 
diff --git a/regression/t-033.out b/regression/t-033.out
index 3d1c61f..c120d4f 100644
--- a/regression/t-033.out
+++ b/regression/t-033.out
@@ -66,3 +66,25 @@ digraph G {
 	"ff2775f8d1dc753f635830adcc3a067e0b681e2d" [label="a.patch"]
 	"891bc14b5603474c9743fd04f3da888644413dc5" -> "ff2775f8d1dc753f635830adcc3a067e0b681e2d"; // ?
 }
+% guilt new a-"better&quicker'-patch.patch
+% git add file.txt
+% guilt refresh
+Patch a-"better&quicker'-patch.patch refreshed
+% guilt pop
+Now at c.patch.
+% guilt push
+Applying patch..a-"better&quicker'-patch.patch
+Patch applied.
+% guilt graph
+digraph G {
+# checking rev bc7df666a646739eaf559af23cab72f2bfd01f0e
+	"bc7df666a646739eaf559af23cab72f2bfd01f0e" [label="a-\"better&quicker'-patch.patch"]
+# checking rev 891bc14b5603474c9743fd04f3da888644413dc5
+	"891bc14b5603474c9743fd04f3da888644413dc5" [label="c.patch"]
+	"bc7df666a646739eaf559af23cab72f2bfd01f0e" -> "891bc14b5603474c9743fd04f3da888644413dc5"; // ?
+# checking rev c7014443c33d2b0237293687ceb9cbd38313df65
+	"c7014443c33d2b0237293687ceb9cbd38313df65" [label="b.patch"]
+# checking rev ff2775f8d1dc753f635830adcc3a067e0b681e2d
+	"ff2775f8d1dc753f635830adcc3a067e0b681e2d" [label="a.patch"]
+	"891bc14b5603474c9743fd04f3da888644413dc5" -> "ff2775f8d1dc753f635830adcc3a067e0b681e2d"; // ?
+}
diff --git a/regression/t-033.sh b/regression/t-033.sh
index fac081e..9fe1827 100755
--- a/regression/t-033.sh
+++ b/regression/t-033.sh
@@ -50,3 +50,12 @@ cmd git add file.txt
 cmd guilt refresh
 fixup_time_info c.patch
 cmd guilt graph
+
+# A patch name that contains funky characters, including unbalanced
+# quotes.
+cmd guilt new "a-\"better&quicker'-patch.patch"
+cmd echo d >> file.txt
+cmd git add file.txt
+cmd guilt refresh
+fixup_time_info "a-\"better&quicker'-patch.patch"
+cmd guilt graph
-- 
1.8.3.1
Previous: Per CederqvistNext: Per Cederqvist
Message 27 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.