L'unisono non ignora i percorsi


4

Sto cercando di ignorare .git, .bundlee node_modulele directory dal mio sincronizzazione. Ho provato un mucchio di diverse combinazioni cercando di farlo funzionare, ma ogni volta che eseguo la sincronizzazione riesco a vedere tutte quelle directory che si sincronizzano con la macchina remota.

Qualcuno può individuare ciò che sto facendo di sbagliato?

~/.unison/default.prf

# Roots of the synchronization
root = /Users/bob/synced
root = ssh://bob@remotebox/synced

# Paths to synchronize
path = hack/testdir

# Some regexps specifying names and paths to ignore
ignore = Name *.log
ignore = Name .DStore
ignore = Name .DS_Store
ignore = Name *.output
ignore = Name *:*
ignore = Path {*/.git/*}
ignore = Path {*/.bundle/*}
ignore = Path {*/.vagrant/*}
ignore = Path {*/.git}
ignore = Path {*/.bundle}
ignore = Path {*/node_modules}

# Window height
height = 37

# propogate file modification times
times = true

# Log actions to the terminal
log = true

auto = true
batch = true

Questo si sta sincronizzando da OSX a Windows 10 se questo aiuta.

Risposte:


4

Ecco un link alla sezione Specifiche del percorso e Ignora percorso del manuale Unison perché è la mia sezione preferita quando rispondo alle domande su Unison. Si noti che ignore Name = nameignora qualsiasi percorso in cui corrisponde l'ultimo componente name. Anche

[Il personaggio] *corrisponde a qualsiasi sequenza di caratteri che non include /(e non inizia con ., quando usato all'inizio di un nome).

Quindi possiamo ignorare i percorsi proprio come ignoriamo determinati tipi di file. Contabilità per il fatto che il vostro .git, .bundlee node_modulesaranno tutti hanno un leader /carattere, ma può essere trovato sotto una directory nascosta che inizia con una ., le seguenti righe sono ciò che si vuole:

ignore = Name {*/,.*/}.git
ignore = Name {*/,.*/}.bundle
ignore = Name {*/,.*/}node_module

Per tutti coloro che sincronizzano l'intera rootdirectory, c'è uno sfortunato caso d'angolo che questo non copre: quando questi file sono al livello più alto, proprio nella rootdirectory che si sta sincronizzando, nel qual caso non c'è un /carattere iniziale. Questo problema è evitato nel profilo sopra perché solo la directory testdirviene sincronizzata con la linea path = hack/testdir. Ad ogni modo, per qualcuno che sincronizza l'intera directory radice è possibile aggiungere qualcosa di simile .*,*ai pattern globbing, ma questi pattern corrisponderanno a qualsiasi file con un nome simile foo.git. Quindi puoi decidere di non avere alcuna directory / file nominati .git, ecc., Nel livello superiore della tua rootdirectory, o se stai bene abbinando cose comefoo.git anche tu puoi usare le linee:

ignore = Name {.*,*,*/,.*/}.git
ignore = Name {.*,*,*/,.*/}.bundle
ignore = Name {.*,*,*/,.*/}node_module

Grazie mille che ha risolto tutti i miei problemi. Almeno tutti i miei problemi all'unisono;)
Marklar,

2
@Marklar Di niente. Spero che tu possa trovare un sito StackExchange per aiutarti anche con ciascuno dei tuoi altri problemi. : D
Mike Pierce,
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.