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

Re: Start deprecating "git-command" in favor of "git command"

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Jun 30, 2007, 19:43 UTC
Message-ID
<alpine.LFD.0.98.0706301231200.1172@woody.linux-foundation.org>
In-Reply-To
<7vy7i1b6bt.fsf@assigned-by-dhcp.cox.net>
On Sat, 30 Jun 2007, Junio C Hamano wrote:
Show 6 quoted lines
> 
> In the longer run, we may want to allow "git foo" to alias to
> "git foo --preferred-options", although we currently do not
> allow such an alias.  Scripts, especially the ones we ship,
> would not want to be confused by the user aliases when that
> happens.
I agree. And I think our current behaviour is the correct one.
> So I am somewhat negative on this, unless there is a way for
> scripts to say "Even though I say 'git foo', I do mean 'git foo'
> not whatever the user has aliased".

Well, we have a more serious issue, that is related, but has nothing to do with aliases.

If you set an environment variable "diff.color=always", any script will get that behaviour, and not work the way it might expect.

My point being that this has nothing to do with "git-diff" vs "git diff", and everything to do with default configurations. If you don't want people to be able to change fixed behaviour, you'd need to have a way to disable it.

Quite frankly, I think it's _easier_ to disable with "git xyzzy" than with "git-xyzzy", but hey, not a big deal. With "git xyzzy", we could add a generic flag like

	git - xyzzy

to make the rule be that no configurations (_including_ aliases) are allowed to override default behaviour, which is much harder with the "git-xyzzy" format (since then it's invariably a per-command thing).

That said, I'm not going to push that patch very hard.
Especially as I just realized that it had a bug: it caused things like
	-our \$logo = "file:///$(pwd)/../../gitweb/git-logo.png";
	+our \$logo = "file:///$(pwd)/../../gitweb/git logo.png";

because "git-log" got rewritten as "git log", without checking that it was a proper word.

I have a fixed version already (just make the sed script use \<..\> around the pattern - appended here), but as mentioned, I don't think this is a hugely important issue. I prefer the "git cmd" form, but if we want to maintain "git-cmd" forever, then hey...

		Linus
---
Fixed the sed pattern a bit..
 Makefile             |    3 ++-
 fixup-builtins       |   16 ++++++++++++++++
 git-filter-branch.sh |    2 +-
 3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index a98e27a..1620ef8 100644
--- a/Makefile
+++ b/Makefile
@@ -987,7 +987,8 @@ check-sha1:: test-sha1$X
 check: common-cmds.h
 	for i in *.c; do sparse $(ALL_CFLAGS) $(SPARSE_FLAGS) $$i || exit; done
 
-
+remove-dashes:
+	./fixup-builtins $(BUILT_INS)
 
 ### Installation rules
 
diff --git a/fixup-builtins b/fixup-builtins
new file mode 100755
index 0000000..49e861d
--- /dev/null
+++ b/fixup-builtins
@@ -0,0 +1,16 @@
+#!/bin/sh
+while [ "$1" ]
+do
+	old="$1"
+	new=$(echo "$1" | sed 's/git-/git /')
+	echo "Converting '$old' to '$new'"
+	git ls-files '*.sh' | while read file
+	do
+		sed "s/\\<$old\\>/$new/g" < $file > $file.new
+		chmod --reference=$file $file.new
+		mv $file.new $file
+	done
+	shift
+done
+git update-index --refresh >& /dev/null
+exit 0
diff --git a/git-filter-branch.sh b/git-filter-branch.sh
index 8fa5ce6..0f54271 100644
--- a/git-filter-branch.sh
+++ b/git-filter-branch.sh
@@ -383,7 +383,7 @@ while read commit parents; do
 
 	sed -e '1,/^$/d' <../commit | \
 		eval "$filter_msg" | \
-		sh -c "$filter_commit" git-commit-tree $(git-write-tree) $parentstr | \
+		sh -c "$filter_commit" "git-commit-tree" $(git-write-tree) $parentstr | \
 		tee ../map/$commit
 done <../revs
 
Previous: Junio C HamanoNext: Junio C Hamano
Message 11 of 20 in “Start deprecating "git-command" in favor of "git command"”
  1. Linus TorvaldsJun 30, 2007
  2. Junio C HamanoJun 30, 2007
  3. Yann DirsonJun 30, 2007
  4. Junio C HamanoJul 1, 2007
  5. Linus TorvaldsJul 1, 2007
  6. Junio C HamanoJul 1, 2007
  7. Johannes SchindelinJul 1, 2007
  8. Junio C HamanoJul 1, 2007
  9. Nicolas PitreJul 3, 2007
  10. Junio C HamanoJul 3, 2007
  11. Linus TorvaldsJun 30, 2007
  12. Junio C HamanoJun 30, 2007
  13. Junio C HamanoJun 30, 2007
  14. Jeff KingJul 1, 2007
  15. Johannes SchindelinJul 1, 2007
  16. Josh TriplettJul 1, 2007
  17. waltJun 30, 2007
  18. Johannes SchindelinJun 30, 2007
  19. waltJun 30, 2007
  20. Yann DirsonJul 1, 2007

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.