2015-09-16 11 views
7

Mi piacerebbe dire a git di ignorare un file denominato foo.ext se e solo se esiste un altro file denominato foo.txe. Sono quasi sicuro che questo non può essere fatto con la sintassi .gitignore ma ci sono forse altri modi complicati a cui non penso?Come dire a git di ignorare un determinato file se e solo se esiste un altro file?

Esempio di utilizzo: memorizzo frequentemente le figure di un documento LaTeX in una sottodirectory figures. E di solito disegno le mie figure con Xfig. Il mio makefile chiama fig2dev per generare una coppia di file dalla figures/foo.fig fonte:

  • figures/foo.pdf, un file PDF per la parte grafica,
  • figures/foo.pdf_t, un file LaTeX per il testo, con un comando includegraphics per includere il PDF.

Poiché questi due file sono generati, mi piacerebbe che git li ignori. Potrei aggiungere due semplici modelli di esclusione al mio file .gitignore ma succede anche che alcune delle mie figure siano in formato PDF semplice, non generate da un'altra fonte. E, naturalmente, mi piacerebbe che git non ignorare questi file figures/bar.pdf.

vorrei aggiungere qualcosa come:

/\(**\)/figures/\(*\).fig: /\1/figures/\2.pdf /\1/figures/\2.pdf_t 

al mio file .gitignore, il che significa che tutti i file di nome /<some_path>/figures/<some_name>.pdf o /<some_path>/figures/<some_name>.pdf_t deve essere ignorato se e solo se un file chiamato /<some_path>/figures/<some_name>.fig esiste con la stessa <some_path> e <some_name>.

+0

Eventuali duplicati di [Gitignore un file se file con estensione diversa esiste] (http://stackoverflow.com/questions/28325195/gitignore-a-file-if-file-with-different-extension-exists) –

risposta

2

È necessario utilizzare qualcosa nel nome file o nella cartella per determinare quali file vengono generati automaticamente e quali no. A seconda della configurazione del codice, è possibile ignorare in base a una cartella. Ad esempio, utilizzare figure-auto per file generato automaticamente e figure per quelli creati manualmente.

figure-auto/

Se avete solo un paio di file che non si desidera ignorare si potrebbe usare

figures/*.pdf 
figures/*.pdf_t 
!figures/keep-in-source-control.pdf 
!figures/manually-created.pdf 

Git Ignore Pattern Format

+0

So come usare '.gitignore' e questo non è quello che ero cercando, ma grazie, apprezzo y il nostro aiuto –

Problemi correlati