我想使用git check-ignore
运行sys.process.Process
。这适用于shell(bash):
$ cd /home/me/Documents/Foo
$ git check-ignore *
target
通过/home/me/Documents/Foo/target
忽略了目录/home/me/Documents/Foo/.gitignore
。
当我通过sys.process
:
import scala.sys.process._
val workingDir = new java.io.File("/home/me/Documents/Foo")
Process(Seq("git", "check-ignore", "*"), workingDir).!
它给出返回码1,意味着没有文件匹配。如果我指定特定名称,则可以:
Process(Seq("git", "check-ignore", "target"), workingDir).!
这会打印target
并返回代码零。
那么为什么通配符*
不能在这里工作,以及如何使其工作(假设我想列出所有被忽略的文件而且我不知道这些文件会是什么)?
答案 0 :(得分:1)
似乎*
是由bash扩展的通配符,而不是git check-ignored
的直接支持。相反,方法是列出工作目录的子项,并将它们作为参数逐个传递给git。
答案 1 :(得分:1)
此问题与How to run unix / shell commands with wildcards using Java?相同,您也可以在 Scala 中实现,也许就像:
Process(Seq("bash", "-c", "git check-ignore *"), workingDir).!