2012-08-08 5 views
5

Sto cercando di capire come fare quanto segue (e capire se è anche possibile).Git sparse-checkout su un telecomando con uno script di post-ricezione

Ho un repository git locale con un numero di cartelle per varie cose, ma voglio essere in grado di distribuire il mio sito Web con git al mio server di sviluppo e in realtà solo il contenuto di una cartella dovrebbe andare nel webroot remoto (solo il contenuto della cartella, non la cartella stessa, questo è il duro). Ho il git push al server di sviluppo che va in un repository nudo al di fuori delle cartelle accessibili al web, e quindi sto usando uno script di post-ricezione per posizionare tutti i file di lavoro nel webroot. Tuttavia, questo copia tutte le cartelle e ovviamente voglio solo spostare il contenuto di una cartella specifica dopo che l'operazione è stata completata.

Facendo qualche ricerca, sembra che il check-out spacciato sarebbe una buona idea. AGGIORNAMENTO: lo faccio funzionare ora dove copierà solo una cartella specifica, ma non ho ancora ottenuto di ignorare la cartella stessa e basta tirare il contenuto. Immagino che questo sia qualcosa che ha a che fare con i percorsi/caratteri jolly che aggiungo a .git/info/sparse-checkout, ma non sono sicuro di quale sia il pattern per escludere una directory ma non escluderne il contenuto.

C'è un buon modo per farlo? Dovrei semplicemente usare lo script di post-ricezione per copiare manualmente il contenuto della directory che voglio invece di provare a farlo direttamente usando la sparse checkout?

Sono grato per ogni aiuto che qualcuno è disposto a dare. Grazie!

+0

Dopo averlo esaminato ulteriormente, credo che non si possa estrarre contenuto da una directory utilizzando il controllo di sparse. Puoi selezionare le cose all'interno di una directory, ma la struttura della directory sembra rimanere intatta, qualunque cosa tu faccia. Ho trovato un modo che funziona per me nella mia situazione, ma per favore se qualcuno capisce come fare a rispondere a questa discussione. Grazie! – user1193694

risposta

0

Un approccio più semplice sarebbe quello di:

  • fare cassa sparse in un /tmp/YourRepo/Yourdirectory (con YourDirectory essere quello che si sta tentando di ignorare, dal momento che solo il suo contenuto è di interesse)
  • mossa il contenuto di /tmp/Yourdirectory nella directory di destinazione destra
+0

Ci ho pensato, ma ho pensato che ci sarebbe stato qualche vantaggio in termini di velocità dal check out direttamente al webroot, anche se potrei semplicemente pensarci in modo errato. Se ho già una collezione di file nel webroot e aggiorno nella stessa posizione, non aggiorno semplicemente i file che sono stati modificati nel webroot dal commit, o sto fondamentalmente facendo una copia completa con il post -Ricevi comunque il gancio? (GIT_WORK_TREE =/mio/directory). Presumo che se andassi in/tmp farei sempre una copia ad albero completa piuttosto che aggiornare solo i file che erano cambiati? – user1193694

Problemi correlati