2015-05-29 4 views
9

Quindi ho avuto questa discussione con alcuni colleghi di lavoro e vorrei che altre persone ci riflettessero su questo. Sono curioso di vedere cosa stanno facendo gli altri sviluppatori.Dovresti controllare le tue risorse compilate su Git?

Quello che mi piace fare è ignorare la mia intera cartella build/assets dal repository. Questa cartella contiene il mio CSS compilato, Javascript e immagini compresse. Penso che solo i file sorgente dovrebbero essere archiviati. Trovo fastidioso che ogni volta che apporto una modifica a un foglio di stile o un file JS, devo controllare il file sorgente E la nuova versione compilata. Ciò introduce anche conflitti di fusione e altri problemi quando più persone lavorano al progetto. Mi piace mantenere il repository piacevole e leggero e poi far sviluppare lo sviluppatore localmente al progetto. O quando si distribuisce, fare in modo che il server sviluppi il progetto.

Questo è un po 'un problema, perché i miei colleghi usano Git come processo di distribuzione. Quindi, quando si desidera distribuire, si controlla il codice in git, si spinge al repository remoto, e quindi si SSH nel server e si fa un git fetch & & git pull. Ciò significa che TUTTI i file del sito Web devono vivere nel repository. Quindi ora devo controllare nella mia cartella delle risorse.

Come gestite questo? Sto usando bedrock-ansible per un sito Wordpress, e c'è un'opzione per eseguire alcuni comandi subito prima della distribuzione, quindi l'ho configurato per eseguire npm install && gulp build e creare il progetto, ma il problema è che era troppo lento. Il modo in cui bedrock-ansible funziona è che crea una nuova directory di rilascio per ogni distribuzione, e simula semplicemente l'ultimo nella directory current. Quindi, ogni volta che ho distribuito, correva npm install quando in realtà, ho bisogno solo di quelle dipendenze in una directory condivisa. Potrebbe esserci un modo per farlo con npm install --prefix install/dir ma non l'ho ancora testato. Penso che potrebbe introdurre più problemi.

Per ora, ho dovuto controllare tutti i miei asset compilati per git, per farlo funzionare. Ma sulla mia attività gulp watch, non ho nessun minification, ma quando voglio distribuire, voglio eseguire prima gulp build che ridurrà e aggirerà tutto - quindi tecnicamente dovrei sempre fare un commit quando voglio distribuire il sito. È un disastro. Cosa ne pensi è un buon modo per gestire questo?

risposta

0

Invece di sshing direttamente nel server, è possibile creare crea un'attività che, quando eseguito a livello locale esegue le seguenti operazioni:

  • urti la versione
  • costruire il progetto
  • aggiungere le risorse compilati a Git con l'opzione --force
  • impegna le modifiche
  • crea un nome
  • spinge tutto per il rappresentante a distanza ository
  • SSHS al server
  • tira nuovi asset
2

gulp build potrebbe mettere tutti i file compilati in una directory dist/ e gulp publish potrebbe spingere questo elenco per il telecomando. È possibile utilizzare git-directory-deploy per questo:

$ git-directory-deploy --directory dist --branch master 

Oppure è possibile impostare manualmente un ramo separato per le attività compilati e spingerlo al server remoto durante la distribuzione tuo sito web (this SO answer potrebbe aiutare).

In questo modo è possibile mantenere una cronologia pulita sul proprio ramo di sviluppo e non preoccuparsi di conflitti di merge mentre si utilizza ancora Git come processo di distribuzione.