Rsync 文件夹,同时 --exclude-from'ing 不同深度的 .gitignore 文件

Rsync 文件夹,同时 --exclude-from'ing 不同深度的 .gitignore 文件

因此,我正在尝试使用命令来 rsync 具有如下结构的源文件夹:

- app.js
- .gitignore
- src/
- src/logs/
- src/logs/.gitignore

第一个 .gitignore 会忽略一系列文件。典型的东西。第二个如下所示:

*
!.gitignore

当您想要签入其中没有任何文件的目录时,可以使用此技术。整个目录中可能还有更多 .gitignore - 这只是一种情况。所以我的问题是:是否可以让 rsync 解释所有 .gitignore 相对于它们所在目录的关系?

我最初的尝试如下:

  1. 全局显示目录中的所有 .gitignore。
  2. 构建命令类似于:

rsync --exclude-from=.gitignore --exclude-from=src/logs/.gitignore --exclude-from=some/other/folder/.gitignore [source] [destination]

然而,这对我来说并没有达到预期的效果。一切都被忽略,因为它正在读取所有 .gitignore 文件,就好像它们位于根目录一样。有没有一种可能的方法可以做到这一点,而不必 grep 所有 .gitignores 并创建一个主文件,其中重写的路径都相对于根目录?

谢谢!

答案1

这告诉 rsync 在每个目录中查找文件.gitignore

rsync --filter='dir-merge,-n /.gitignore' [...]

那应该做你想做的事。

后面-ndir-merge表示 ( -) 文件指定仅排除和 ( n) 规则不被子目录继承。

相关内容