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

[PATCH 4/7] Bail if user supplies an invalid pathspec

From
Wincent Colaiuta <win@wincent.com>
Date
Nov 23, 2007, 19:20 UTC
Message-ID
<1195845650-85962-5-git-send-email-win@wincent.com>
In-Reply-To
<1195845650-85962-4-git-send-email-win@wincent.com>

Use git-ls-files to detect whether the user has supplied an invalid pathspec.

Note that the run_cmd_pipe function unfortunately does not transmit the exit status of the child process, so there is no way to use it in conjunction with a command like "git-ls-files --error-unmatch".

The alternative is to use Perl's system() function, but that floods the standard output. So here we make use of the new -q switch to git-ls-files so that we can both obtain the exit status of the command and not have to worry about the standard output. Error conditions are still echoed back to the user because they come through on the standard error.

Signed-off-by: Wincent Colaiuta <win@wincent.com>
---
 git-add--interactive.perl |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 5fc48a5..8706528 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -775,6 +775,12 @@ add untracked - add contents of untracked files to the staged set of changes
 EOF
 }
 
+sub check_args {
+	return unless @ARGV;
+	exit $? if system(qw(git ls-files -q --exclude-standard
+	    --error-unmatch --with-tree=HEAD --), @ARGV);
+}
+
 sub main_loop {
 	my @cmd = ([ 'status', \&status_cmd, ],
 		   [ 'update', \&update_cmd, ],
@@ -804,5 +810,6 @@ sub main_loop {
 }
 
 refresh();
+check_args();
 status_cmd();
 main_loop();
-- 
1.5.3.6.886.g3364
Previous: Wincent ColaiutaNext: Wincent Colaiuta
Message 5 of 18 in “git-add--interactive pathspec and patch additions”
  1. git-add--interactive pathspec and patch additionsWincent Colaiuta, Nov 23, 2007
  2. 1/7 Add -q/--quiet switch to git-ls-filesWincent Colaiuta, Nov 23, 2007
  3. 2/7 Rename patch_update_file function to patch_update_pathspecWincent Colaiuta, Nov 23, 2007
  4. 3/7 Add path-limiting to git-add--interactiveWincent Colaiuta, Nov 23, 2007
  5. 4/7 Bail if user supplies an invalid pathspecWincent Colaiuta, Nov 23, 2007
  6. 5/7 Teach builtin-add to pass path arguments to git-add--interactiveWincent Colaiuta, Nov 23, 2007
  7. 6/7 Add "--patch" option to git-add--interactiveWincent Colaiuta, Nov 23, 2007
  8. 7/7 Teach builtin-add to handle "--patch" optionWincent Colaiuta, Nov 23, 2007
  9. Wincent ColaiutaNov 23, 2007
  10. Junio C HamanoNov 23, 2007
  11. Wincent ColaiutaNov 23, 2007
  12. 0/3 Updates to git-add--interactiveWincent Colaiuta, Nov 24, 2007
  13. 1/3 Rename patch_update_file function to patch_update_pathspecWincent Colaiuta, Nov 24, 2007
  14. 2/3 Move pathspec validation into interactive_addWincent Colaiuta, Nov 24, 2007
  15. 3/3 Add "--patch" option to git-add--interactiveWincent Colaiuta, Nov 24, 2007
  16. Junio C HamanoNov 24, 2007
  17. Wincent ColaiutaNov 24, 2007
  18. Junio C HamanoNov 24, 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.