web-dev-qa-db-ja.com

Subversionリポジトリを壊さずにGUIを使ってプラグインを更新するにはどうすればいいですか?

WordPressインストールでの開発はSubversionバージョン管理下にあります。私たちはプラグインをリンクするために外部を使用していません - プラグインはコンテンツを担当する非開発者によってインストール/アップデートされています。

プラグインを更新するとディレクトリ(すべての.svnフォルダを含む)が削除されてから再作成されるため、特にバージョン管理下にあり、最新バージョンに更新中のプラグインの場合、リポジトリ内で問題が発生します。

これが典型的なシナリオです、それは私に悲しみの終わりをもたらしません:

  1. 既存のWordPressサイトを新しいレポジトリのバージョン管理下に置きます。この既存のサイトにはすでにいくつかのプラグインがあります。これらのプラグインのいくつかは古くなっています
  2. さて、管理者に行き、それらのプラグインを更新してください
  3. svn stを実行すると、次のようになります。

    〜addthis

    〜google-analytics-for-wordpress

    等...

チルダ〜は "厄介です、私はdunno wha happuh"を意味し、SVNは単なるcacksなので特に厄介です。コピー、削除、削除、復元、元に戻す、コミットしようとすることすらありません。

多くの人がsvn:externalsを使用するか手動でアップデートをFTPで送信することをお勧めします。私がコアで見ることができるものから、WPがフォルダー、または.svnフォルダーを削除しないように説得するのに使用できるフックはありません。できることはありますか?

6
Tom Auger

上記のすべてを考慮に入れた本当の答え:

.svnディレクトリについて:Subversion 1.7は1年以上前にリリースされました( http://svn.haxx.se/dev/archive-2011-10/0152.shtml )そして作業コピーはもはやすべてのフォルダに.svnディレクトリを含みません。かなり大きなパフォーマンスの向上と共に、ルートに単一の.svnディレクトリが含まれています。今日、SVNはバージョン1.7.7までです。あなたはあなたのsvnクライアントをアップグレードして、これを何らかの問題として排除するべきです。

WPディレクトリを削除してディレクトリを再作成することは、もはや実際には問題にならないためです。 Subversion 1.7以降で作成された作業コピーを台無しにすることはありません。しかし、本番展開や開発/テスト環境に関するリポジトリ管理の大きな問題には答えられません。

基本的に、生産機械をどのように管理するかはあなた次第です。実際に「本番」の環境がある場合は、パーミッションスキームやプラグインを使用して、ユーザーがシステムを直接アップグレードする機能を無効にする必要があります。ユーザーは制作を変更できません。それは「プロダクション」と呼ぶ意味のようなものです。そのような場合の変更は、開発者によって行われ、最初にテストやQAシステムを通じて実行されます。そのような環境があり、そのようなレベルの制御が本当に必要な場合は、アップグレードを完全に無効にすることをお勧めします。

一体、私は自分自身でそのような環境を使っていますが、私は開発、テスト、そして運用をずっと管理しています。サイト全体がSVNリポジトリにあります。そのうちのいくつかは実際に外部を使用し(私はWP trunk、私がトランクバージョンとして使用するいくつかのプラグインを使用します)、それのいくつかは使用せず、リポジトリにローカルです。私にとって、本番環境に変更を適用することは、基本的にこれらのボックスにsvn upを実行することを意味します。これらのboxファイルシステムに直接変更を加えることはできません。

一方、私が運営しているサイトの中には、定期的にバックアップを取っているものもあります。私の個人的なサイトがちょっとおかしいのであれば、それは本当に私には影響を与えません。私はWPアップデータをちょうどいいものに使っています。さて、私はこれらのサイトをリポジトリで運営しているのではなく、全体の定期的なバックアップを取っているだけです。実際のところ、私は個人用サイトでVaultPressを使用していますが、どのようなバックアップ方法でもお勧めです。これは、私が開発/テスト環境を必要としない別の種類の管理です。

WordPressはあなたがその周りに作りたいどんな種類のシステムでもうまく動作しますが、そのシステムはWordPressの外部にあり、それをどのように管理するかはWPではなくどのように管理したいかの問題です。本当に。

7
Otto

まだテストされていませんが、add_filter('upgrader_clear_destination', array(&$this, 'delete_old_plugin'), 10, 4);はよさそうです。プラグインを更新する前にwp-admin/includes/class-wp-upgrader.phpフィルタを削除してください。削除するには正しい関数名を検索する必要があるため、これは少し面倒です。 Toschoは匿名フックの削除(ドイツ語)についての投稿を書きました

しかしapply_filters('upgrader_pre_install', true, $hook_extra);(上記と同じファイル)がより良い解決策のようです。 'upgrader_pre_install'にフックして、.svnディレクトリを保存します。 'upgrader_post_install'にもフックしてください。このフックは更新後に行われます。プラグインを更新したら、単に.svnディレクトリをコピーしてください。

2
Ralf912

あなたがバージョン管理を通してあなたのWordPressインストールを管理したいならば、私はあなたがWordPress管理者パネルだけからプラグインを更新することと共にあなたがそうすることができる方法を見ません。

理想的にはこのようにするべきです:

  • あなたのレポのコピーをローカルでチェックアウトしてください。
  • WP adminからプラグインを更新します。
  • テスト
  • コミット
  • 実稼働時に最新バージョンをチェックアウトします(チェックアウトはそれらのコミットのデプロイを意味します)。

そしてこれはGITでも完璧に動作します。 SVNでは、各ディレクトリに.svnディレクトリがあるので問題になる可能性がありますが、ルートには.svnディレクトリが1つしかないため、Ottoが提案したSVN 1.7が役に立ちます。

1
Ashfame

これを手助けするためにプラグインが作成されたようです。

http://plugins.svn.wordpress.org/svn-auto-upgrade/trunk/

または、WPバックエンドのプラグインブラウザに「SVN Auto Upgrade」と入力するだけです。

0
Tom Auger