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

[PATCHv4 3/3] Add sample commands for git-shell

From
Greg Brockman <gdb@mit.edu>
Date
Jul 28, 2010, 07:43 UTC
Message-ID
<1280302984-1752-4-git-send-email-gdb@mit.edu>
In-Reply-To
<1280302984-1752-1-git-send-email-gdb@mit.edu>

Provide a 'list' command to view available bare repositories ending in .git and a 'help command to display usage. Also add documentation in a README

Signed-off-by: Greg Brockman <gdb@mit.edu>
---
 contrib/git-shell-commands/README |   18 ++++++++++++++++++
 contrib/git-shell-commands/help   |   16 ++++++++++++++++
 contrib/git-shell-commands/list   |   10 ++++++++++
 3 files changed, 44 insertions(+), 0 deletions(-)
 create mode 100644 contrib/git-shell-commands/README
 create mode 100755 contrib/git-shell-commands/help
 create mode 100755 contrib/git-shell-commands/list
This differs from v3 in that:
* the 'find' command in 'list' discards its stderr.  This is useful for
  avoiding noise from inaccessible directories or non-git repositories with
  name matching '*.git'.
* the README does not mention that commands will be run from $(pwd)/git-shell-commands,
  because they will now be run from $HOME/git-shell-commands.
diff --git a/contrib/git-shell-commands/README b/contrib/git-shell-commands/README
new file mode 100644
index 0000000..438463b
--- /dev/null
+++ b/contrib/git-shell-commands/README
@@ -0,0 +1,18 @@
+Sample programs callable through git-shell.  Place a directory named
+'git-shell-commands' in the home directory of a user whose shell is
+git-shell.  Then anyone logging in as that user will be able to run
+executables in the 'git-shell-commands' directory.
+
+Provided commands:
+
+help: Prints out the names of available commands.  When run
+interactively, git-shell will automatically run 'help' on startup,
+provided it exists.
+
+list: Displays any bare repository whose name ends with ".git" under
+user's home directory.  No other git repositories are visible,
+although they might be clonable through git-shell.  'list' is designed
+to minimize the number of calls to git that must be made in finding
+available repositories; if your setup has additional repositories that
+should be user-discoverable, you may wish to modify 'list'
+accordingly.
diff --git a/contrib/git-shell-commands/help b/contrib/git-shell-commands/help
new file mode 100755
index 0000000..a43fcd6
--- /dev/null
+++ b/contrib/git-shell-commands/help
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+if tty -s; then
+    echo "Run 'help' for help, or 'exit' to leave.  Available commands:"
+else
+    echo "Run 'help' for help.  Available commands:"
+fi
+
+cd "$(dirname "$0")"
+
+for cmd in *; do
+    case "$cmd" in
+	help) ;;
+	*) [ -f "$cmd" ] && [ -x "$cmd" ] && echo "$cmd" ;;
+    esac
+done
diff --git a/contrib/git-shell-commands/list b/contrib/git-shell-commands/list
new file mode 100755
index 0000000..ffc5ac4
--- /dev/null
+++ b/contrib/git-shell-commands/list
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+print_if_bare_repo='
+       if "$(git --git-dir="$1" rev-parse --is-bare-repository)" = true
+       then
+               printf "%s\n" "${1#./}"
+       fi
+'
+
+find -type d -name "*.git" -exec sh -c "$print_if_bare_repo" -- \{} \; -prune 2>/dev/null
-- 
1.7.0.4
Previous: Greg BrockmanNext: Junio C Hamano
Message 6 of 7 in “[PATCHv4 0/3] Updated patch series for providing mechanism to list available repositories”
  1. Greg BrockmanJul 28, 2010
  2. 1/3 Allow creation of arbitrary git-shell commandsGreg Brockman, Jul 28, 2010
  3. Greg BrockmanJul 29, 2010
  4. Greg BrockmanJul 29, 2010
  5. 2/3 Add interactive mode to git-shell for user-friendlinessGreg Brockman, Jul 28, 2010
  6. 3/3 Add sample commands for git-shellGreg Brockman, Jul 28, 2010
  7. Junio C HamanoJul 28, 2010

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.