Lägg till ny kommentar

Drupal subversionförrådet

Transmachina har byggt och underhåller ett antal Drupal-baserade webbplatser. På grund av aktivt community, uppdateringar till både kärnan Drupal koden och modulerna kommer ofta och kan ta mycket tid att hålla en Drupal installation up-to-date och säkra. Som ett resultat har Transmachina utvecklat en subversionförrådet för att spåra Drupal utsläpp och har beslutat att göra denna öppen för öppen källkod. Förvaret finns på http://svn-drupal.transmachina.net/ och kan läsas med anonym åtkomst. För närvarande alla uppdateringar utförs av Transmachina personal, men vi skulle vara intresserade av frivilliga i samhället för att hjälpa till med denna process.

Vad vi gör

Varje gång en ny version av Drupal görs hämta vi källan och använder subversion: s svn_load_dirs skript för att uppdatera vår 5.x "nuvarande" release kod för att den nya versionen. Skriptet lägger automatiskt nya filer, bort tappade ettor och uppdateringar befintliga filer. Den "diff" lagras i subversion på ett effektivt sätt. Med ett verktyg som TortoiseSVN kan du snabbt se en översikt av förändringar som gjorts under varje release. Vi lägger också en kopia av utsättningen som helhet / trunk/drupal/5.10 till exempel.

Hur använder jag det?

Starta ett nytt Drupal projekt

  • Exportera den senaste versionen från arkivet, svn export http://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal (detta kommer att skapa en lokal mapp "mydrupal" som du redigerar lokalt.
  • Tillsätt mydrupal mappen i din version styrsystem (något bör fungera), till exempel svn lägga mydrupal sedan svn commit mydrupal-m "Lägga till ny fräsch Drupal installation för myproject"
  • Du kan nu installera nya moduler, och även göra ändringar i centrala drupal filer (du borde verkligen vet vad du gör när du ändrar core-filer)
  • Du bör regelbundet bekräfta förändringarna tillbaka till din källa styrsystemet, så att du kan spåra ändringar du gör och "rulla tillbaka" de ändringar om du bryter något.
  • När en ny version av Drupal släpps, kommer vi att uppdatera vårt arkiv. Du kan sedan uppdatera din lokala Drupal projekt (utan att förlora din lokala tweaks till Drupal core) genom att köra:
    svn merge http://svn-drupal.transmachina.net/trunk/drupal/ http://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal
    Du bör byta med den version av Drupal som du för tillfället använder säger "5,10". Detta förfarande kontrollera Transmachina slutförvaret för alla ändringar från din version av Drupal till den senaste versionen, och patchar din arbetskopia med de Diffs.
  • Du bör testa uppgraderingen lokalt och sedan begå ändringarna tillbaka till din version styrsystem.
  • Du har uppgraderat Drupal kärnan utan att förlora några lokala ändringar!

Uppgradering av befintlig Drupal projekt

Om du redan kör Drupal och vill helt enkelt uppgradera till den senaste versionen utan att förlora dina lokala ändringar, som är lätt för! Du bör nog begå alla lokala ändringar tillbaka till förvaret och tagga lanseringen så att du lätt kan rollback i händelse av ett misstag i följande steg.
  • Helt enkelt köra:
    svn merge http://svn-drupal.transmachina.net/trunk/drupal/ http://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal
    Du bör byta med den version av Drupal som du för tillfället använder säga "5,10".
Notera: Du hittar den senaste versionen av din Drupal installation genom att antingen navigera till http:///admin / logs / status eller genom att titta i / modules / drupal / drupal.info på raden som börjar "version ="

Mer detaljer

Uppdatera slutförvaret

För dem som är intresserade har vi utvecklat ett enkelt skript för att uppdatera vårt Subversion-förråd snabbt efter varje drupal frigivning.
#!/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"

Uppdatera en arbetskopia

Vi har ett script för att uppdatera alla våra arbetsmetoder exemplar också:
#!/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
När du först får detta går, kan det vara värt att köra med - dry-run rad i stället. Detta alternativ kommer att skriva ut alla de förändringar som kommer göras för att din arbetskopia utan att egentligen ändra någonting. Om det finns fler än ca 40 uppdateringar och 3-4 konflikter något som antagligen har gått fel. Om sammanslagningen gör en röra av din arbetskopia, kan du försöka
svn revert -R mydrupal
att rekursivt återställa alla lokala ändringar tillbaka till den senaste gången du förpliktigad till slutförvaret. I dig värsta fall kan du använda TortoiseSVN (endast på Windows tyvärr) för att rulla tillbaka en hel installation till en tidigare revision - det i princip inte de senaste anvisade förändringarna i omvänd.

Tack

Många tack till David Grant att arbeta ut hur detta skulle kunna uppnås och för att förklara processen på sin plats http://www.davidgrant.ca/maintaining_vendor_sources_with_subversion

Feedback

Vi hoppas att samhället kommer att finna denna nyttiga, och välkomnar all feedback du har, särskilt förslag på att förbättra våra manus och service till samhället. Vi planerar att lägga Drupal 6.x pressmeddelanden och moduler inom en snar framtid.