All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Respun patches for git aliases enhancement
@ 2007-02-11  0:33 Theodore Ts'o
  2007-02-11  0:33 ` [PATCH 1/2] Print a sane error message if an alias expands to an invalid git command Theodore Ts'o
  2007-02-11 16:32 ` [PATCH 0/2] Respun patches for git aliases enhancement Johannes Schindelin
  0 siblings, 2 replies; 4+ messages in thread
From: Theodore Ts'o @ 2007-02-11  0:33 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

These patches have been respun to fix a spelling typo and in response
to comments from Johannes.

						- Ted

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] Print a sane error message if an alias expands to an invalid git command
  2007-02-11  0:33 [PATCH 0/2] Respun patches for git aliases enhancement Theodore Ts'o
@ 2007-02-11  0:33 ` Theodore Ts'o
  2007-02-11  0:33   ` [PATCH 2/2] Allow aliases to expand to shell commands Theodore Ts'o
  2007-02-11 16:32 ` [PATCH 0/2] Respun patches for git aliases enhancement Johannes Schindelin
  1 sibling, 1 reply; 4+ messages in thread
From: Theodore Ts'o @ 2007-02-11  0:33 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Theodore Ts'o

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
---
 git.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/git.c b/git.c
index 82a8357..c43d4ff 100644
--- a/git.c
+++ b/git.c
@@ -387,8 +387,15 @@ int main(int argc, const char **argv, char **envp)
 		done_alias = 1;
 	}
 
-	if (errno == ENOENT)
+	if (errno == ENOENT) {
+		if (done_alias) {
+			fprintf(stderr, "Expansion of alias '%s' failed; "
+				"'%s' is not a git-command\n",
+				cmd, argv[0]);
+			exit(1);
+		}
 		help_unknown_cmd(cmd);
+	}
 
 	fprintf(stderr, "Failed to run command '%s': %s\n",
 		cmd, strerror(errno));
-- 
1.5.0.rc4.2.g4249

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 2/2] Allow aliases to expand to shell commands
  2007-02-11  0:33 ` [PATCH 1/2] Print a sane error message if an alias expands to an invalid git command Theodore Ts'o
@ 2007-02-11  0:33   ` Theodore Ts'o
  0 siblings, 0 replies; 4+ messages in thread
From: Theodore Ts'o @ 2007-02-11  0:33 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Theodore Ts'o

If the alias expansion is prefixed with an exclamation point, treat
it as a shell command which is run using system(3).

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
---
 Documentation/config.txt |    6 ++++++
 git.c                    |   10 ++++++++++
 2 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/Documentation/config.txt b/Documentation/config.txt
index 4e650af..e6e9409 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -222,6 +222,12 @@ alias.*::
 	spaces, the usual shell quoting and escaping is supported.
 	quote pair and a backslash can be used to quote them.
 
+	If the alias expansion is prefixed with an exclamation point,
+	it will be treated as a shell command.  For example, defining
+	"alias.new = !gitk --all --not ORIG_HEAD", the invocation 
+	"git new" is equivalent to running the shell command 
+	"gitk --all --not ORIG_HEAD".
+
 apply.whitespace::
 	Tells `git-apply` how to handle whitespaces, in the same way
 	as the '--whitespace' option. See gitlink:git-apply[1].
diff --git a/git.c b/git.c
index c43d4ff..2f10d50 100644
--- a/git.c
+++ b/git.c
@@ -159,6 +159,16 @@ static int handle_alias(int *argcp, const char ***argv)
 	alias_command = (*argv)[0];
 	git_config(git_alias_config);
 	if (alias_string) {
+		if (alias_string[0] == '!') {
+			trace_printf("trace: alias to shell cmd: %s => %s\n",
+				     alias_command, alias_string + 1);
+			ret = system(alias_string + 1);
+			if (ret >= 0 && WIFEXITED(ret) && 
+			    WEXITSTATUS(ret) != 127)
+				exit(WEXITSTATUS(ret));
+			die("Failed to run '%s' when expanding alias '%s'\n", 
+			    alias_string + 1, alias_command);
+		}
 		count = split_cmdline(alias_string, &new_argv);
 		option_count = handle_options(&new_argv, &count);
 		memmove(new_argv - option_count, new_argv,
-- 
1.5.0.rc4.2.g4249

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] Respun patches for git aliases enhancement
  2007-02-11  0:33 [PATCH 0/2] Respun patches for git aliases enhancement Theodore Ts'o
  2007-02-11  0:33 ` [PATCH 1/2] Print a sane error message if an alias expands to an invalid git command Theodore Ts'o
@ 2007-02-11 16:32 ` Johannes Schindelin
  1 sibling, 0 replies; 4+ messages in thread
From: Johannes Schindelin @ 2007-02-11 16:32 UTC (permalink / raw)
  To: Theodore Ts'o; +Cc: Junio C Hamano, git

Hi,

On Sat, 10 Feb 2007, Theodore Ts'o wrote:

> These patches have been respun to fix a spelling typo and in response
> to comments from Johannes.

Sorry to have apply-checked only now: Ted, could you run the second commit 
through "git show --check"? It has 4 whitespaces at end. But I am sure 
that Junio can fix them.

Apart from that:
Acked-by: Johannes Schindelin <johannes.schindelin@gmx.de>

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2007-02-11 16:32 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-11  0:33 [PATCH 0/2] Respun patches for git aliases enhancement Theodore Ts'o
2007-02-11  0:33 ` [PATCH 1/2] Print a sane error message if an alias expands to an invalid git command Theodore Ts'o
2007-02-11  0:33   ` [PATCH 2/2] Allow aliases to expand to shell commands Theodore Ts'o
2007-02-11 16:32 ` [PATCH 0/2] Respun patches for git aliases enhancement Johannes Schindelin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.