Git 如何实施VCS状态/忽略程序之类的程序?
在Git 如何实施VCS状态/忽略程序之类的程序?,git,shell,find,status,ignore,Git,Shell,Find,Status,Ignore,在$dir中,我想(递归地)获得所有文件/dir的概述,但是: 排除$list中包含的所有文件/目录(假设$list以换行符分隔) 只包含未包含在$list中的最顶层目录,而不是它们下面的整棵树 我目前使用: cd$dir&&git init&&echo“$list”>.gitignore&&git status&&rm-rf.git.gitignore 这很简单,我需要的是“untracked files”列表,但并不是很干净,因为它为tmp git存储库执行了大量不必要的文件系统i/o,
$dir
中,我想(递归地)获得所有文件/dir的概述,但是:
- 排除
中包含的所有文件/目录(假设$list以换行符分隔)$list
- 只包含未包含在
中的最顶层目录,而不是它们下面的整棵树$list
cd$dir&&git init&&echo“$list”>.gitignore&&git status&&rm-rf.git.gitignore
这很简单,我需要的是“untracked files”列表,但并不是很干净,因为它为tmp git存储库执行了大量不必要的文件系统i/o,并忽略了文件
我还一直在考虑使用修剪操作或类似于empty=$(mktemp-d)和&rsync-nv--exclude from=$list$dir/$empty
的方法来查找,但这些方法无法按我希望的方式工作
您将如何实现这一点?是否存在任何现有的shell/python/。。。就是这样做的工具?或者,我可以在不创建临时git存储库(或其他vcs工具)的情况下以某种方式重用git代码吗?对于简洁的1-liner格式提前表示歉意(这样测试更容易)
列表的格式为“/path/to/file | dir | dir/*|*所有文件匹配此*|*.git…”
将echo替换为任何适合的“status”类型命令为简洁的1行格式提前道歉(这样更容易测试)
列表的格式为“/path/to/file | dir | dir/*|*所有文件匹配此*|*.git…”
将echo替换为任何“status”类型的命令
for FILE in `find .`; do eval "case \"$FILE\" in "$list");;*)echo \"$FILE\";;esac";done