La nostra università offre servizi di web hosting ai dipartimenti universitari sui server che gestiamo. L'installazione di programmi di terze parti open-source richiede la modifica delle autorizzazioni e del codice dei file nel programma prima che venga eseguito. (Stiamo usando suEXEC, se hai familiarità.)git workflow per mantenere aggiornato il software open source modificato dall'utente?
Attualmente offriamo WordPress tramite uno script di installazione. L'utente carica la nuova versione stabile e esegue uno script PHP sul lato server tramite SSH. Questo script PHP modifica i permessi dei file di tutti i file/cartelle, aggiunge/rimuove alcuni codici in vari file e crea alcuni nuovi file. Questo script di installazione è un atto di bilanciamento ingombrante quando viene rilasciata una nuova versione stabile.
Desidero iniziare a utilizzare il controllo della versione (in particolare git) per tenere traccia delle modifiche personalizzate anziché affidarsi a uno script per apportare le modifiche, ma non sono sicuro del flusso di lavoro da utilizzare. Conosco la ramificazione e la fusione, ma non sono sicuro di come integrare le nostre vecchie modifiche quando viene rilasciata una nuova versione.
Quale dovrebbe essere il mio flusso di lavoro git per integrare le nuove modifiche dal core di WordPress, ma anche preservare le nostre modifiche personalizzate precedenti?
Vorrei sconsigliarlo, poiché la ridefinizione può causare molti problemi. Perde la cronologia (non puoi tornare a una versione che avevi effettivamente distribuito in precedenza, né puoi sapere quando hai fatto ciò che si fonde), e avere il tuo branch di lavoro in ogni momento rende molto più difficile per te collaborare con altre persone, dato che ora dovranno anche ridefinire tutto ciò che fanno. Rebasing è qualcosa che è meglio per i cambiamenti che non sono stati ancora condivisi con nessun altro, o che sono noti per essere volatili, non per riproporre la tua intera storia su un upstream ogni volta che c'è una nuova versione. –
Il rebasing può causare problemi se non si riesce a comunicare, ma è totalmente gestibile. La cronologia viene persa solo se non si mantiene un riferimento al commit, semplicemente taggare la versione distribuita e non si perderà nulla. – dahlbyk
Nel nostro caso, il rebasing sembra una buona soluzione dato che condividiamo solo la fonte come un tarball. Nessun altro sviluppatore che utilizza il prodotto finale sta apportando modifiche al core come noi, quindi non è necessario condividerlo con gli altri. –