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) 規則不被子目錄繼承。

相關內容