Rsync文件夹,而--gitignore文件位于不同深度


8

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

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

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

*
!.gitignore

当您要签入不包含任何文件的目录时,可使用此技术。目录中可能还会存在更多的.gitignores-这只是一种情况。所以我的问题是:是否可以使rsync解释相对于它们所在目录的所有.gitignores?

我最初的尝试如下:

  1. 在目录中查看所有.gitignores。
  2. 生成命令如下所示:

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

但是,这没有达到我的预期。一切都被忽略了,因为它正在读取所有.gitignore文件,就好像它们位于根目录一样。是否有任何可能的方法,而不必对所有.gitignores进行grep并创建一个具有相对于根目录都具有重写路径的主文件?

谢谢!

Answers:


15

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

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

那应该做你想要的。

-n之后的dir-merge那个(指-)的文件指定唯一的排除和(n)的规则不被继承的子目录。


这是一个很好的答案。谢谢。如果可以的话,我会为您+1。
杰夫·霍华德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.