web-dev-qa-db-ja.com

SVNを壊さずにdrushでモジュールを更新しますか?

右、これは2日間私を壊しています。どこにも答えられない!

サーバーにDrush 4.4があります。 Unfuddle.com経由でSVNを使用しています。私はサイトを持っていますが、多くのモジュールを更新したいと思います。コードのみを更新し、機能していることを確認し(現時点ではDBの更新は問題ではありません)、関連するコードをコミットします。

以前は、drush dlは、モジュールコードを削除せずに単に古いモジュールの上にダウンロードするだけでした。それはもはやそうではありません。今、AFAICT、drushはモジュールディレクトリを削除し、新しいバージョンに置き換えます。更新されたモジュールに残っていない古いファイルの問題が解決されるため、これで問題ありません。

ただし、drush dlまたはupcコマンドを使用すると、これらのコマンドを実行すると実際に新しいバージョンが取得されるため、行き詰まりますが、プロセス内のSVNデータフォルダーが破棄され、「!module/file.php」の問題がどこにでも残ります。もう存在しないファイル。

「drush upc/dl modulename --version-control = svn」は機能するはずですが、機能しません。 SVNデータはまだ破壊されています。

これにより、svn del module、svn commit -m "Removed module"、drush dl module、(test the module)、svn add module、svn commit -m "Added module"-すべての場合の潜在的な悪夢が残りますモジュール、それは完全な恐怖です。

変更を自動コミットするようにDrushを設定したくありません。変更に満足したら、それらをダウンロードして最後にすべて手動でコミットしたいだけです。これはできない難しいですが、私はそれを機能させることができません。

Gitへの移行(そう、私はunfuddleがgitをサポートしていることを承知しています!)も解決策であるとアドバイスされましたが、すぐには解決できず、現時点では満足のいくものではありません。

誰かがこれにいくつかの光を当てることができますか?

8
NikLP

これらのコマンドを実行すると実際に新しいバージョンが取得されますが、プロセス内のSVNデータフォルダーが破棄され、「!module/file.php」が残ります。

Drush 4.4を実行していますが、これは私には当てはまらないようです。 drush upcまたはdrush upを実行すると、.svnディレクトリはそのまま残ります。 svn statusを使用して、モジュールへの変更を確認できます。新しいファイルは?で示され、削除されたファイルは!で示されます。

サイトの機能をテストします。モジュールがまだ正常に動作していることを確認したら、次のようなスニペットを使用してsvn add/removeを実行できます。

追加:

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

削除:

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

追加する必要があります--svnsyncをコマンドに追加します。

例:

 drush pm-update module_to_update --version-control=svn --svnsync 
4
claire_