2009-11-19 14 views
22

Quindi vedo Git non riconosce le cartelle, o dovrei dire quando l'unica modifica tra commit è l'aggiunta di cartelle vuote all'albero di lavoro che non sono visualizzate in git status dopo git add ..git e cartelle vuote

Come gestiresti la necessità di aggiungere cartelle vuote all'albero di lavoro (per l'archiviazione di runtime) e farle riflettere/creare quando altri repository estraggono dal repository corrente (quello in cui sono state aggiunte le cartelle)?

+2

possibile duplicato di [Come aggiungere una directory vuota a un repository git] (http://stackoverflow.com/questions/115983/how-do-i-add-an-empty-directory-to-a- git-repository) – interjay

+0

Ho pubblicato un post sul blog qui http://www.developertipoftheday.com/2011/07/empty-folders-in-git-mecurial.html che potrebbe essere di aiuto. –

risposta

21

La gente spesso messo un file vuoto come segnaposto nella cartella di superare questa limitazione ...

+13

personalmente mi piacerebbe fare un file readme con alcune brevi spiegazioni sul perché la cartella esiste –

+0

@jk. quello o creare la directory quando necessario.Non è colpa di Git, gli script di shell o lo strumento di creazione muoiono quando una directory non esiste. –

+1

@omouse in effetti questo è di solito una soluzione alternativa per una build o uno script buggy –

6

Lei ha assolutamente ragione. Git, come altri sistemi di controllo delle versioni, non prende in considerazione le cartelle vuote o le proprietà delle cartelle. Le cartelle esistono solo nella misura in cui vi sono file in esse contenuti. Se vuoi simulare questo, devi inserire dei file segnaposto in essi.

42

Di solito inserisco uno .gitignore in quelle directory, poiché probabilmente si desidera ignorare comunque qualsiasi dato generato in runtime.

+7

Un'altra convenzione consiste nel mettere un file chiamato ".gitkeep" nella directory. Vedi: http://stackoverflow.com/questions/7229885/gitignore-vs-gitkeep –

3

Inserire i file segnaposto vuoti nelle cartelle di cui si desidera tenere traccia o aggiungere istruzioni per creare queste cartelle sul sistema di generazione, se possibile.

4

È necessario rendersi conto che si sta chiedendo al sistema di controllo del codice sorgente di impostare alcune risorse che non sono sorgente, non parte del sistema di compilazione, ma sono essenziali per il funzionamento dell'applicazione. Vorrei effettuare una delle seguenti operazioni:

  1. Creare la creazione creare la directory necessaria.
  2. Fare in modo che l'applicazione crei le directory richieste durante l'esecuzione.

Analogamente, se l'applicazione desiderava accodare un file di registro, non avrebbe senso far partire il file di registro nel sistema di controllo di revisione, vero?

-3

Ho affrontato questo problema quando provavo a utilizzare git come strumento di backup con supporto per la deduplicazione e la compressione.

La mia soluzione era creare il mio sistema. È disponibile su http://github.com/meingbg/store

Anche in questo caso, il mio scopo era quello di memorizzare i file, non lavorare con il codice.

+0

Perché non usi semplicemente rsync? –

+0

@omouse: rsync non tiene traccia delle modifiche. meingbg potrebbe essere interessato a git-annex, una soluzione basata su git che tiene traccia delle modifiche nei file. – sleblanc

0

Anche io sto affrontando lo stesso problema. Penso che abbia a che fare con il modo in cui Git tiene traccia delle modifiche. Non tiene traccia dei file ma piuttosto dei suoi contenuti. Quando mostra le modifiche, commette o registra mappa le modifiche a file specifici e mostra le modifiche nei singoli file. Guarda questo video per maggiori dettagli Tech Talk: Linus Torvalds on git Linus fornisce in particolare un esempio sullo spostamento di una funzione da un file a un altro e su come git è in grado di tracciare la modifica.

6

Io di solito metto vuoto .generale in quelle cartelle.

Problemi correlati