DrupalのSubversionリポジトリの
TransmachinaはDrupalベースのWebサイトの数を構築し、維持している. 活発なコミュニティのために、コアDrupalコードとモジュールの両方への更新は頻繁に来て、最新かつ安全Drupalのインストールを維持するために多くの時間を取ることができます. その結果、Transmachinaは、Drupalのリリースを追跡するためのSubversionのリポジトリを開発し、オープンソースコミュニティにこれはオープンすることに決めました. リポジトリがhttp://svn-drupal.transmachina.net/で利用可能で、匿名アクセスで読み取ることができます。. 現在すべての更新がTransmachinaのスタッフによって行われますが、我々はこのプロセスを助けるためにコミュニティのボランティアに興味がある. /管理/ログ/ステータスまたは行の先頭に/モジュール/ drupalの/ drupal.infoで見ることによって "バージョン="
我々は何をすべきか
Drupalの新しいリリースが行われるたびに、我々はソースをダウンロードし、この新しいバージョンに我々5.xの "現在"のリリースコードを更新するためにSubversionのsvn_load_dirsスクリプトを使用して. スクリプトが自動的に削除のものとアップデート既存のファイルを、新しいファイルを追加削除. "差分"は、効率的な方法でSubversionに格納されています. そのようなTortoiseSVNのようなツールを使用して、すばやく各リリースの間に加えられた変更の概要を見ることができます. 我々はまた、例えば/ trunk/drupal/5.10全体としてのリリースのコピーを追加.私はそれをどのように使うのですか?
新しいDrupalののプロジェクトを開始
- SVNの輸出http://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal(これはローカルで編集してローカルフォルダ "mydrupal"を作成し、リポジトリから最新のコピーをエクスポート.
- バージョン管理システム(いずれかが動作するはずです)にmydrupalフォルダを追加するたとえば、svnはその後mydrupalを追加SVNのコミット "MyProjectの新しい新鮮なDrupalのインストールの追加"を参照してmydrupal-M
- あなたは今、新しいモジュールをインストールし、さらにコアDrupalのファイルに変更を加えることができます (あなたは本当にあなたがコアファイルを変更したときに何をしているか知っている必要があります)
- あなたが定期的にあなたが何かを破る場合、あなたが加えた変更を追跡し、それらの変更を "ロールバック"することができるように、ソースコントロールシステムに変更をコミットする必要があります.
- Drupalの新バージョンがリリースされた場合、我々は、リポジトリを更新します。. 次に、実行することにより、(Drupalのコアにローカル調整を失うことなく)ローカルDrupalプロジェクトを更新することができます:
svn merge http://svn-drupal.transmachina.net/trunk/drupal/
あなたが交換する必要がありますhttp://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal あなたは現在、 "5.10"と言うを使用していることをDrupalのバージョンと. この手順は、Drupalのバージョンから最新のリリースに対するすべての変更のためにTransmachinaリポジトリをチェックし、それらの差分を作業コピーにパッチを適用. - あなたは、ローカルでアップグレードをテストしてから、バージョン管理システムに戻って変更をコミットする必要があります.
- あなたは、正常にローカルの変更を失うことなく、Drupalののコアをアップグレードした!
既存のDrupalのプロジェクトをアップグレードする
あなたがすでにDrupalを実行し、単純にローカルの変更を失うことなく、最新リリースにアップグレードしたい場合は、それはあまりにも簡単です。! おそらくあなたのリポジトリにすべてのローカル変更をコミットし、リリースタグを付けるべきは、次の手順で間違いの場合はロールバックを簡単にできるように.- 単に実行:
svn merge http://svn-drupal.transmachina.net/trunk/drupal/
あなたが交換する必要がありますhttp://svn-drupal.transmachina.net/trunk/drupal/5.x mydrupal あなたは現在、 "5.10"と言うを使用していることをDrupalのバージョンの。
詳細
リポジトリを更新
興味がある人のために、我々は各Drupalのリリース後すぐに私たちのSubversionリポジトリを更新する簡単なスクリプトを開発しました.#!/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"
作業コピーを更新
また、当社は作業コピーの各々を更新するスクリプトを持って:
#!/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
代わりにドライランライン - あなたが最初にこれが起こっ取得しているとき、それはで実行されている価値があるかもしれません. このオプションは、実際には何も変更せずに、作業コピーに対して行われるすべての変更をプリントアウトします。. 以上の約40以上のアップデートと3-4競合がある場合は、おそらく何か間違っている. マージは作業コピーの混乱を行う場合は、試すことができます svn revert -R mydrupal 再帰的に最後の時間に戻ってすべてのローカル変更を元に戻すには、リポジトリにコミット. あなた最悪のケースでは、以前のリビジョンにロールバックするインストール全体をTortoiseSVNはを(Windowsのの場合のみ、残念ながら)を使用することができます - それは基本的には逆に最後にコミットさを変更しない. 
コメント
デビッド·グラント (未認証ユーザー)
火、2008年9月16日夜11時49分
パーマリンク
素晴らしい!
私はいつもこれを行うと考えてきたが、実際につい最近、私はまた、http経由で誰でも利用可能ですSVNサーバー上の私のdrupalのリポジトリを置く (以前、私のリポジトリには、ssh経由でしか利用できませんでした). でも、私はここにURLを公開し、それ以来でしょうあなたの努力水ダウン。邪魔されません
私は、最近発表されたSubversionの作業ディレクトリにDrupalのモジュールを更新するためのスクリプトを 。それは次のようなsvn_load_dirsのようなものだ。それは基本的には削除するモジュールディレクトリ内のすべてのファイル(。のsvn dirsにを除く)し、新しいモジュールをuntars。それは、 "SVNステータス"の出力を見て、 "M"を探して "?"や "!"したがって、新しいバージョンにモジュールを育て、それぞれの追加、コミット、またはコミット、削除、コミットされます。
この問題は、私はしかし、私はいつもは "svn log"を実行し、戻ってリポジトリにいくつかの古い変更をマージすることができ、私のローカルの変更を失うことです。. 私は、スクリプトも同様にこれを行うことができる. "アップデートモジュール"私は、上記のステップからのコミットメッセージは、常にメッセージの同じ自動生成型であるため、私はSVNのログ出力でそれらを検索し、変更が自分のしたかを検出できます。. 私は、頭の上にそれらのバックアップを自動でマージすることができます. :-)