Aggiornamento dei moduli con drush senza interrompere SVN?


8

Bene, questo mi ha spezzato per due giorni. Non riesco a ottenere una risposta da nessuna parte!

Ho Drush 4.4 sul mio server. Sto usando SVN tramite Unfuddle.com. Ho un sito, voglio aggiornare molti moduli. Voglio aggiornare solo il codice, quindi controllare che funzioni (gli aggiornamenti dei DB non sono un problema a questo punto) quindi eseguire il commit del codice pertinente.

In passato drush dl scaricava semplicemente il codice del modulo sopra il vecchio modulo, senza rimuoverlo. Questo non è più il caso. Ora, AFAICT, drush rimuove la directory del modulo e la sostituisce con la versione più recente. Va tutto bene, perché risolve il problema dei vecchi file che non sono più nel modulo aggiornato lasciati indietro.

Tuttavia, usando i comandi drush dl o upc, sono bloccato, perché l'esecuzione di questi comandi ottiene effettivamente la versione più recente, ma distrugge la cartella di dati SVN nel processo, lasciandomi con problemi "! Module / file.php" ovunque per file che non ci sono più.

Mi è stato consigliato che "drush upc / dl modulename --version-control = svn" dovrebbe funzionare, ma non funziona. I dati SVN sono ancora distrutti.

Questo mi lascia con il potenziale incubo di dover: svn del module, svn commit -m "Modulo rimosso", drush dl module, (prova il modulo), svn aggiungi modulo, svn commit -m "Modulo aggiunto" - per ogni singolo modulo, che è un orrore totale.

Non voglio impostare drush per eseguire il commit automatico delle mie modifiche, voglio solo scaricarle e impegnarle tutte manualmente alla fine quando sono soddisfatto delle modifiche. Non può essere così difficile, ma semplicemente non riesco a farlo funzionare.

Mi è stato anche consigliato che passare a git (sì, sono consapevole che srotolare supporta git!) È anche una soluzione, ma non è immediato e non è soddisfacente in questo momento.

Qualcuno può far luce su questo ?!


Potrebbe essere più facile da imparare git.
chrisjlee,

Risposte:


6

perché l'esecuzione di questi comandi ottiene effettivamente la versione più recente, ma distrugge la cartella di dati SVN nel processo, lasciandomi con "! module / file.php"

Sto eseguendo Drush 4.4 e questo non sembra essere il caso per me. In esecuzione drush upco drush upmantiene .svnintatte le tue directory. È possibile svn statusrivedere le modifiche ai moduli. I nuovi file sono indicati da ?e i file rimossi sono indicati da !.

Metti alla prova la funzionalità del tuo sito. Una volta verificato che i moduli funzionano ancora correttamente, puoi quindi aggiungere / rimuovere svn con uno snippet come il seguente:

Inserisci:

svn status | grep '^\?' | cut -c8- | while read f; do svn add "$f"; done

rimuovere:

svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done

Forse "distrugge i dati svn" è stato un errore da parte mia - in precedenza non ne vedevo nessuno! ma giusto ?, che ho debitamente aggiunto. Questo è forse un punto di ignoranza da parte mia. Suppongo che fosse l'aspettativa della facilità con cui ho lavorato in precedenza, il che (a causa di qualcosa ora risolto nella droga) era in realtà errato.
NikLP,

4

Dovresti aggiungere --svnsyncal tuo comando.

Esempio :

 drush pm-update module_to_update --version-control=svn --svnsync 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.