2017-01-09 2 views
0

Je me connecte à git-shell avec PuTTy en utilisant un mot de passe. Tout ce que je tape dans le shell git (le shell de connexion restreint sur un serveur Linux Debian) donne une réponse comme "commande non reconnue".Quelles commandes par défaut fonctionnent dans git-shell?

git> git help -a 
unrecognized command 'git' 
+1

'git-shell' n'est pas un shell généraliste. Il ne peut exécuter certaines commandes que de manière non interactive par défaut. Pour l'utiliser de manière interactive, vous devez en faire plus, notamment en définissant les commandes que vous pouvez utiliser. Vous devriez lire la [page de manuel] (https://git-scm.com/docs/git-shell). –

+0

Etes-vous sûr? Le manuel dit: "... plus les commandes personnalisées présentes dans un sous-répertoire nommé git-shell-commands". Eh bien, ce sous-répertoire existe, mais je veux juste utiliser des commandes standard, donc il est vide. Je serais heureux pour la commande standard _any_ qui fonctionne, pour un début. – Rusty

Répondre

0

git-shell est, par conception, très limitée. Voir le man page pour plus de détails.

Par défaut, il ne peut exécuter que quelques commandes, pour permettre des actions push/pull. C'est un moyen pour les serveurs git d'offrir un accès SSH "sûr" qui se limite à interagir uniquement avec les dépôts git. Par défaut, il n'y a pas d'accès de connexion interactif.

Notez simplement que pour effectuer push/pull/fetch opérations en utilisant git-shell, vous n'avez rien de spécial à faire. Il peut déjà faire ces choses. Vous avez seulement besoin de définir des commandes personnalisées si vous voulez faire quelque chose d'inhabituel.

Vous dites dans les commentaires que vous avez un répertoire ~/git-shell-commands/, mais il est vide. La présence du répertoire activera le mode interactif, vous obtenez donc une invite git>. Cependant, le répertoire des commandes étant vide, vous ne pouvez exécuter aucune commande valide. Dans ce scénario, la seule chose que vous pouvez exécuter est exit pour quitter le shell. Pour utiliser git-shell, vous devrez créer des commandes au ~/git-shell-commands. Qu'est-ce que créer exactement est à vous. Un exemple pourrait être de créer list, et que ce script retourne une liste des dépôts disponibles sur le serveur.

Si vous voulez utiliser des "commandes standard", comme vous l'avez indiqué dans les commentaires, alors je pense que la réponse est que git-shell n'est pas l'outil que vous recherchez. Il semble que vous cherchiez un shell de connexion standard.

Un exemple de commande personnalisée peut ressembler à ceci. Voici une implémentation de la commande list que j'ai suggérée ci-dessus.

#!/bin/bash 

# Assuming all repositories are named `*.git` 
for repo in $(ls -d *.git); do 

    # Just in case one exists, ignore ".git" 
    if [[ "$repo" != ".git" ]]; 
     # Trim off the extension 
     echo $(basename $repo .git) 
    fi 

done 

Il existe quelques exemples dans this blog post.

+0

> Par défaut, il ne peut exécuter que quelques commandes, pour permettre des actions push/pull. – Rusty

+0

Et c'est tout ce que je veux. Pourriez-vous peut-être donner un exemple pour une telle commande? Malheureusement, je n'en ai pas trouvé sur le web. – Rusty

+0

@Rusty Ce ne sont que des scripts shell. J'ai ajouté un exemple assez simple d'une commande de liste à ma réponse. –