2017-06-08 2 views
1

Je veux exécuter git check-ignore en utilisant sys.process.Process. Cela fonctionne dans le shell (bash):Exécution d'une commande git avec caractère générique fonctionne dans bash mais pas à travers Processus

$ cd /home/me/Documents/Foo 
$ git check-ignore * 
target 

Il y a un répertoire /home/me/Documents/Foo/target qui est ignoré par /home/me/Documents/Foo/.gitignore.

Le même ne fonctionne pas quand je lance ce par sys.process:

import scala.sys.process._ 
val workingDir = new java.io.File("/home/me/Documents/Foo") 
Process(Seq("git", "check-ignore", "*"), workingDir).! 

Il donne le code de retour 1, ce qui signifie qu'aucun fichier adapté. Si je précise le nom particulier, il fonctionne:

Process(Seq("git", "check-ignore", "target"), workingDir).! 

Cette imprime target et renvoie le code zéro.

Pourquoi le caractère générique * ne fonctionne-t-il pas ici, et comment le faire fonctionner (étant donné que je veux lister tous les fichiers ignorés et que je n'ai aucune connaissance préalable de ce que seraient ces fichiers)?

Répondre

1

Il semble que * est un caractère générique développé par bash et non directement pris en charge par git check-ignored. Le chemin est plutôt de lister les enfants du répertoire de travail, et de les passer un par un comme arguments à git.

+0

Seth interrogé sur ammonites-ops. Est-ce qu'ils le fournissent? C'est tellement basique, nous ne pouvons pas continuer à nous demander pourquoi je ne peux pas avoir un 'bash" cmd arg "' interpolator. –