Cartella Rsync mentre --esclude-dall''uso di file .gitignore a diverse profondità


8

Quindi sto cercando di lavorare su un comando per risincronizzare una cartella di origine con una struttura come questa:

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

Il primo .gitignore avrebbe una serie di file ignorati. Roba tipica. Il secondo sarebbe simile al seguente:

*
!.gitignore

Questa tecnica viene utilizzata quando si desidera controllare in una directory senza nessuno dei file all'interno. Potrebbero esserci anche più .gitignores in tutta la directory - questo è solo uno scenario. Quindi la mia domanda è questa: è possibile fare in modo che rsync interpreti tutti i file .gitignores relativi alla directory in cui si trovano?

Il mio tentativo iniziale era il seguente:

  1. Raggruppa tutti i file .gitignores nella directory.
  2. Comando build che assomiglia a:

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

Tuttavia, questo non ha funzionato come previsto per me. Tutto viene ignorato perché sta leggendo tutti i file .gitignore come se fossero alla radice. Esiste un modo possibile per farlo senza dover grep per tutti .gitignores e creare un file master con percorsi riscritti tutti relativi alla directory principale?

Grazie!

Risposte:


15

Questo dice a rsync di cercare un file in ogni directory .gitignore:

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

Questo dovrebbe fare quello che vuoi.

Il -ndopo dir-mergeindica che ( -) il file specifica esclude solo e ( n) le regole non sono ereditate dalle sottodirectory.


Questa è stata un'ottima risposta. Grazie. Ti farei +1 se potessi.
Jeff Howard,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.