Module mit Drush aktualisieren, ohne SVN zu beschädigen?


8

Richtig, das hat mich zwei Tage lang gebrochen. Ich kann nirgendwo eine Antwort bekommen!

Ich habe Drush 4.4 auf meinem Server. Ich benutze SVN über Unfuddle.com. Ich habe eine Seite, ich möchte viele Module aktualisieren. Ich möchte nur den Code aktualisieren, dann überprüfen, ob er funktioniert (DB-Updates sind derzeit kein Problem), und dann den entsprechenden Code festschreiben.

Früher war es so, dass drush dl den Modulcode einfach über das alte Modul herunterlud, ohne ihn zu entfernen. Das ist nicht mehr der Fall. Jetzt entfernt AFAICT, drush das Modulverzeichnis und ersetzt es durch die neuere Version. Das ist alles schön und gut, denn es löst das Problem, dass alte Dateien, die sich nicht mehr im aktualisierten Modul befinden, zurückbleiben.

Bei Verwendung der Befehle drush dl oder upc stecke ich jedoch fest, da das Ausführen dieser Befehle zwar die neuere Version erhält, dabei jedoch den SVN-Datenordner zerstört, sodass ich überall Probleme mit "! Module / file.php" habe Dateien, die nicht mehr da sind.

Ich wurde darauf hingewiesen, dass "drush upc / dl modulename --version-control = svn" funktionieren sollte, aber es funktioniert nicht. Die SVN-Daten werden weiterhin zerstört.

Dies lässt mich mit dem potenziellen Albtraum zurück, dass ich: svn del module, svn commit -m "Entferntes Modul", drush dl Modul (teste das Modul), svn add module, svn commit -m "Added module" - für jedes einzelne Modul, das ein totaler Horror ist.

Ich möchte drush nicht so einrichten, dass meine Änderungen automatisch festgeschrieben werden. Ich möchte sie nur herunterladen und am Ende alle manuell festschreiben, wenn ich mit den Änderungen zufrieden bin. Das kann nicht so schwer sein, aber ich kann es einfach nicht zum Laufen bringen.

Ich wurde auch darauf hingewiesen, dass der Wechsel zu Git (ja, ich bin mir bewusst, dass Unfuddle Git unterstützt!) Auch eine Lösung ist, aber keine unmittelbare und zu diesem Zeitpunkt nicht zufriedenstellende.

Kann jemand bitte etwas Licht ins Dunkel bringen?!


Könnte einfacher sein, Git zu lernen.
Chrisjlee

Antworten:


6

weil das Ausführen dieser Befehle zwar die neuere Version erhält, dabei aber den SVN-Datenordner zerstört und mich mit "! module / file.php" zurücklässt.

Ich verwende Drush 4.4 und dies scheint bei mir nicht der Fall zu sein. Wird ausgeführt drush upcoder drush uphält Ihre .svnVerzeichnisse intakt. Sie können svn statusdie Änderungen an den Modulen überprüfen. Neue Dateien werden durch ?und entfernte Dateien durch angezeigt !.

Testen Sie die Funktionalität Ihrer Site. Wenn Sie zufrieden sind, dass die Module noch ordnungsgemäß funktionieren, können Sie sie mit einem Snippet wie dem folgenden hinzufügen / entfernen:

hinzufügen:

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

entfernen:

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

Vielleicht war "Zerstört SVN-Daten" ein Fehler von meiner Seite - vorher habe ich keine gesehen! aber nur?, was ich gebührend hinzugefügt habe. Dies ist vielleicht ein Punkt der Unwissenheit meinerseits. Ich nehme an, es war die Erwartung der Leichtigkeit der vorherigen Art und Weise, in der ich gearbeitet habe, die (aufgrund von etwas, das jetzt in Drush fixiert ist) tatsächlich falsch war.
NikLP

4

Sie sollten --svnsyncIhrem Befehl hinzufügen .

Beispiel:

 drush pm-update module_to_update --version-control=svn --svnsync 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.