Drupal Subversion Repository

Transmachina gebaut hat und unterhält eine Reihe von Drupal-basierte Websites. Durch die aktive Community, kommen Updates für den Kern Drupal-Code und die Module häufig und kann eine Menge Zeit in Anspruch nehmen zu einer Drupal-Installation up-to-date und sicher zu halten. Als Ergebnis hat Transmachina ein Subversion-Repository für die Verfolgung von Drupal Versionen entwickelt und beschlossen haben, um diese zu öffnen, um die Open Source Community. Das Repository wird unter http://svn-drupal.transmachina.net/ und kann mit den anonymen Zugriff gelesen werden. Derzeit sind alle Updates von Transmachina Personal durchgeführt, aber wir wären daran interessiert, Freiwillige in der Gemeinde zu helfen, mit diesem Prozess.

Was wir tun

Jedes Mal, wenn eine neue Version von Drupal wird, laden wir die Quelle und die Nutzung von Subversion svn_load_dirs script unseren 5.x "aktuellen" Release Code auf diese neue Version zu aktualisieren. Das Skript fügt automatisch neue Dateien, entfernt sank Einsen und Updates alle vorhandenen Dateien. Der "Unterschied" ist in Subversion in einer effizienten Art und Weise gespeichert werden. Mit einem Tool wie TortoiseSVN können Sie sich schnell einen Überblick über die Änderungen bei jedem Release. Wir fügen auch eine Kopie der Veröffentlichung als Ganzes in / trunk/drupal/5.10 zum Beispiel.

Wie kann ich es nutzen?

Der Start einer neuen Drupal-Projekt

  • Exportieren Sie die neueste Version aus dem Repository, svn export http://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal (dies wird in einem lokalen Ordner "mydrupal", die Sie lokal bearbeiten zu schaffen.
  • Fügen Sie die mydrupal Ordner in Ihrem System zur Versionskontrolle (alle funktionieren sollte), zum Beispiel svn add mydrupal dann svn commit mydrupal-m "Das Hinzufügen von neuen frischen drupal Installation für myproject"
  • Sie können jetzt neue Module und sogar Änderungen an Core-drupal-Dateien (Sie sollten wirklich wissen, was Sie tun, wenn Sie Core-Dateien zu ändern)
  • Sie sollten regelmäßig begehen Änderungen zurück auf Ihren Source-Control-System, so dass Sie Änderungen, die Sie und "roll back" diese Änderungen, wenn Sie etwas zu Bruch zu verfolgen.
  • Wenn eine neue Version von Drupal veröffentlicht wird, aktualisieren wir unsere Repository. Sie können dann Ihre lokale Drupal-Projekt (ohne Ihren lokalen Anpassungen auf der Drupal-Kern), indem Sie:
    svn merge http://svn-drupal.transmachina.net/trunk/drupal/ http://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal
    Sie sollten ersetzt werden mit der Version von Drupal, dass Sie derzeit sagen, "5.10". Dieses Verfahren überprüfen Sie die Transmachina Repository für alle Änderungen aus Ihrer Version von Drupal auf die aktuelle Version und Patches Ihrer Arbeitskopie mit den diffs.
  • Sie sollten das Upgrade vor Ort testen und dann die Änderungen wieder in Ihr System zur Versionskontrolle.
  • Sie haben erfolgreich den Drupal-Kern, ohne alle lokalen Änderungen aktualisiert!

Der Umbau einer vorhandenen Drupal-Projekt

Wenn Sie bereits mit Drupal und wollen einfach nur auf die neueste Version zu aktualisieren, ohne dass Ihre lokalen Änderungen, die einfach ist zu! Sie sollten wahrscheinlich zu begehen alle lokalen Änderungen mit Ihrem Repository und Tag der Veröffentlichung, so dass Sie leicht Rollback bei einen Fehler in den folgenden Schritten.
  • Führen Sie einfach:
    svn merge http://svn-drupal.transmachina.net/trunk/drupal/ http://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal
    Sie sollten ersetzt werden mit der Version von Drupal, dass Sie derzeit sagen, "5.10".
Hinweis: Sie können die aktuelle Version Ihrer Drupal-Installation entweder durch die Navigation zu finden http:/// Admin / logs / status oder durch einen Blick in / modules / drupal / drupal.info auf die Zeile, die "version ="

Weitere Details

Aktualisieren des Repository

Für diejenigen, die daran interessiert sind, haben wir ein einfaches Skript entwickelt, um unseren Subversion-Repository schnell zu aktualisieren, nach jedem drupal freizugeben.
#!/bin/sh
# $1 drupal version
# the base of the WC
repobase=/home//drupal/trunk

Echo downloading to tmp
# remove file so that it doesn't concat
rm -f /tmp/drupal-$1.tar.gz
# download the relase
wget -O /tmp/drupal-$1.tar.gz http://ftp.drupal.org/files/projects/drupal-$1.tar.gz
# extract contents to tmp folder
tar -C /tmp -xvzf /tmp/drupal-$1.tar.gz

echo Loading diff changes into repos
svn_load_dirs -svn_username  -svn_password  http://svn-drupal.transmachina.net/trunk/drupal/5.x . /tmp/drupal-$1

# and now add that relase as-is into subversion too
echo Copying new release from $1 to location drupal/$1
cp -R -v /tmp/$1 $repobase/drupal/$1

echo Queuing new release files to svn
svn add $repobase/drupal/$1

echo Commiting new release
svn commit $repobase/drupal -m "Adding new drupal release $1"

Aktualisieren einer Arbeitskopie

Wir haben ein Skript, um jedem unserer Arbeitskopien auch aktualisieren:
#!/bin/sh
# $1 drupal version of WC
# $2 location of WC drupal root
#svn merge --dry-run http://svn-drupal.transmachina.net/trunk/drupal/$1 http://svn-drupal.transmachina.net/trunk/drupal/5.x $2
svn merge http://svn-drupal.transmachina.net/trunk/drupal/$1 http://svn-drupal.transmachina.net/trunk/drupal/5.x $2
Dry-run Linie statt - Wenn Sie zunächst immer das geht, kann es sich lohnen läuft mit dem werden. Diese Option gibt alle Änderungen, die an der Arbeitskopie, ohne tatsächlich etwas zu ändern gemacht werden. Wenn es mehr als etwa 40 Updates und 3-4 Konflikte sind wahrscheinlich etwas falsch gelaufen. Falls nämlich das Zusammenführen macht ein Durcheinander aus Ihrer Arbeitskopie, können Sie versuchen,
svn revert -R mydrupal
rekursiv wieder alle lokalen Änderungen in der letzten Zeit, die Sie in das Repository. In Ihnen schlimmsten Fall, können Sie TortoiseSVN (nur unter Windows leider) ein Rollback verwenden eine ganze Installation zu einer früheren Version - es im Grunde nicht die letzte festgeschriebene Änderungen in umgekehrter Richtung.

Dank

Vielen Dank an David Grant, um herauszufinden, wie dies erreicht werden könnte und für die Erklärung des Prozesses auf seiner Website http://www.davidgrant.ca/maintaining_vendor_sources_with_subversion

Rückkopplung

Wir hoffen, dass die Gemeinde finden es nützlich, und freuen uns über jeden Feedback, das Sie haben, vor allem Vorschläge zur Verbesserung unseres Scripts und Dienst an der Gemeinschaft. Wir planen, Drupal 6.x Versionen und Module in der nahen Zukunft hinzuzufügen.

Kommentare

Ich habe immer zu tun, diesem Gedanken, und tatsächlich erst vor kurzem, habe ich auch meine drupal Repositories auf einem SVN-Server, die für jedermann zugänglich über http (vorher war mein Repository nur über ssh) ist. Ich werde nicht die Mühe, die Veröffentlichung der url hier aber, denn das würde Wasser-down Ihre Mühe.

Ich habe vor kurzem veröffentlichte ein Skript für die Aktualisierung von Drupal-Module in einem Subversion-Arbeitsverzeichnis. Es ist irgendwie wie svn_load_dirs. Es besteht im Wesentlichen nur löscht alle Dateien in einem Modul-Verzeichnis (mit Ausnahme von. Svn Verzeichnisse) und dann entpackt das neue Modul. Dann sieht es bei der "svn status"-Ausgang und sucht nach dem "M", "?" oder "!" und verpflichtet, Add-commit oder entfernen-commits, bzw., womit sich ein Modul bis zu einer neuen Version.

Das Problem dabei ist, dass ich meine lokalen Änderungen zu verlieren, aber ich kann immer ein "svn log" und verschmelzen einige alte Änderungen zurück in das Repository. Ich kann ein Skript, dies auch zu tun. Da die Commit-Nachricht aus dem "Update-Modul" Schritt, den ich oben beschrieben ist immer das gleiche automatisch generierte Typ der Nachricht, kann ich für sie in der svn log-Ausgang suchen und erkennen, welche Änderungen meiner eigenen. Ich kann dann auto-merge diese wieder an die Spitze des Kopfes. :-)