如何实现 VCS 状态/忽略程序之类的东西?
在 $dir
中,我想(递归地)获得所有文件/目录的概述,但是:
- 排除
$list
中包含的所有文件/目录(假设 $list是换行符分隔的) - 只包含
$list
中未包含的最顶层目录,而不是
我当前使用的它们下面的整个树:
cd $dir && git init &&回声“$列表”> .gitignore && git 状态 && rm -rf .git .gitignore
这很简单,“未跟踪文件”列表正是我所需要的,但并不是很干净,因为它为 tmp git 存储库执行了一堆不需要的文件系统 I/O 和忽略文件。
我也一直在考虑使用修剪操作或类似 empty=$(mktemp -d) && 的
但这些不会按照我想要的方式工作。find
。 rsync -nv --exclude-from=$list $dir/ $empty
你将如何实施这个?有没有现有的 shell/python/... 工具可以做到这一点?或者我可以以某种方式重用 git 代码而不实际创建临时 git 存储库(或另一个 vcs 工具?)?
in $dir
, I want to get an overview of all files/dirs (recursively), but:
- exclude all files/dirs which are included in
$list
(assume $list is newline separated) - only include the most-toplevel directories not included in
$list
instead of whole trees beneath them
I currently use:
cd $dir && git init && echo "$list" > .gitignore && git status && rm -rf .git .gitignore
this is simple and the 'untracked files' listing is what i need, but isn't really clean, as it does a bunch of unneeded filesystem i/o for the tmp git repository and ignore file.
I've also been pondering find
with prune actions or something like empty=$(mktemp -d) && rsync -nv --exclude-from=$list $dir/ $empty
but those wouldn't work the way i want them to.
how would you implement this? is there any existing shell/python/... tool that does just this? or can i somehow reuse the git code without actually making a temporary git repository (or another vcs tool?)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
提前为简洁的 1 行格式道歉(这样更容易测试)
列表的格式将是“./path/to/file|dir|dir/*|*allfilesmatchingthis*|*.git... "
将 echo 替换为任何适合的“状态”类型命令
Apologies in advance for the terse 1-liner format (it was easier to test this way)
the format for list would be "./path/to/file|dir|dir/*|*allfilesmatchingthis*|*.git..."
replace the echo with whatever "status" type command fits