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

[PATCH v2] filter-branch: use printf instead of echo -e

From
Michele Locati <michele@locati.it>
Date
Mar 19, 2018, 15:52 UTC
Message-ID
<20180319155259.13200-1-michele@locati.it>
In-Reply-To
<20180319144905.11564-1-michele@locati.it>

In order to echo a tab character, it's better to use printf instead of "echo -e", because it's more portable (for instance, "echo -e" doesn't work as expected on a Mac).

This solves the "fatal: Not a valid object name" error in git-filter-branch when using the --state-branch option.

Furthermore, let's switch from "/bin/echo" to just "echo", so that the built-in echo command is used where available.

Signed-off-by: Michele Locati <michele@locati.it>
---
 git-filter-branch.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 1b7e4b2cd..98c76ec58 100755
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -627,12 +627,12 @@ then
 				print H "$_:$f\n" or die;
 			}
 			close(H) or die;' || die "Unable to save state")
-	state_tree=$(/bin/echo -e "100644 blob $state_blob\tfilter.map" | git mktree)
+	state_tree=$(printf '100644 blob %s\tfilter.map\n' "$state_blob" | git mktree)
 	if test -n "$state_commit"
 	then
-		state_commit=$(/bin/echo "Sync" | git commit-tree "$state_tree" -p "$state_commit")
+		state_commit=$(echo "Sync" | git commit-tree "$state_tree" -p "$state_commit")
 	else
-		state_commit=$(/bin/echo "Sync" | git commit-tree "$state_tree" )
+		state_commit=$(echo "Sync" | git commit-tree "$state_tree" )
 	fi
 	git update-ref "$state_branch" "$state_commit"
 fi
-- 
2.16.2.windows.1
Previous: Michele LocatiNext: Junio C Hamano
Message 2 of 10 in “filter-branch: use printf instead of echo -e”
  1. filter-branch: use printf instead of echo -eMichele Locati, Mar 19, 2018
  2. filter-branch: use printf instead of echo -eMichele Locati, Mar 19, 2018
  3. Junio C HamanoMar 19, 2018
  4. Johannes SchindelinMar 21, 2018
  5. Michele LocatiMar 22, 2018
  6. Johannes SchindelinMar 23, 2018
  7. CB BaileyMar 19, 2018
  8. Jeff KingMar 20, 2018
  9. Ian CampbellMar 20, 2018
  10. Michele LocatiMar 20, 2018

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.