2012-10-09 8 views
20

Ho un albero di directory con molti tipi di file diversi. Ci sono 300 directory sulla directory principale. Ogni directory potrebbe avere altre sottodirectory.Configura git per tracciare solo una estensione di file

Voglio solo tracciare * .cocci su tutte le sottodirectory. Ecco il mio .gitignore:

* 
!*.cocci 

Ma non funziona, poiché i file nelle sottodirectory non sono tracciati. Come posso dire a Git che voglio solo tracciare * .cocci su tutte le sottodirectory?

+0

Avete in realtà 'git add'ed i file? L'impostazione di '.gitignore' non fa automaticamente rintracciare i file ... – twalberg

+0

Posso aggiungere un file solo se uso git add -f . Questo non sembra corretto ... –

+0

possibile duplicato di [Whitelist e sottodirectory in Git] (http://stackoverflow.com/questions/9162919/whitelisting-and-subdirectories-in-git) – daviesgeek

risposta

33

Leggi this question.

desiderato:

# Blacklist everything 
* 
# Whitelist all directories 
!*/ 
# Whitelist the file you're interested in. 
!*.cocci 

Nota, questo sarà traccia solo*.cocci file. Il tuo non funziona perché ignori lo tutto (questa è la prima riga), che ignora tutte le sottodirectory.

+0

Non sono ancora soddisfatto dell'output di git status perché non mostra il contenuto della cartella non tracciabile ma il filtro funziona ora. Grazie –

+0

Potresti cambiare i commenti nella tua risposta? Devono iniziare le loro linee. Se lo si incolla in un .gitignore, non funzionerà (testato su v.1.9.1). Date un'occhiata a http://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository#Ignoring-Files – panepeter

+1

Si potrebbe anche voler autorizzare .gitignore –

-1

Hai provato !*/*.cocci invece del tuo !*.cocci?

+0

Grazie per il suggerimento, ma lo stesso risultati ... –

1

È impossibile reinserire directory !dir in .gitignore, ma poi è ancora possibile aggiungere directory a mano:

git add dir -f 

Quindi, se il file .gitignore assomiglia:

* 
!*.txt 

Quindi quando si aggiungono i file git add . nuovi *.txt. Nuova directory non sarà automaticamente aggiunto, si devono essere aggiunti a mano da git add dir -f

1

Per estendere risposta @simont, se volessimo whitelist *.cocci file di una data directory e le sue sottodirectory avrei torto ha inserito:

directory/* 
!directory/*/ 
!directory/*.cocci 

Ciò sembra non includere i file *.cocci in directory/subtree.

Per trovare tutti i file *.cocci in tutte le sottodirectory di directory inserito la seguente:

directory/** 
!directory/*/ 
!directory/**/*.cocci