web-dev-qa-db-ja.com

Wordpressプラグインを更新するとSVNが壊れる

私は私が内部svnリポジトリにコミットする必要があるすべてのプラグインを含むブログを持っています。 Wordpressはいくつかのプラグインが更新される必要があることを示しています、しかし私がそうするとき、Wordpressは.svnファイルが同様に削除されるのでそのプラグインのためのフォルダーを削除するでしょう。これはそのプラグインのリポジトリを壊します。これを回避する方法はありますか。

3
Matthew Xerri

これを回避する簡単な方法は、プラグインリポジトリからSVNでプラグインを更新することです。

3
Bainternet

私はちょうどこれを修正するためにコアにパッチを当てることにしました。私たちはワードプレス上に構築された多くの別々の開発プロジェクトを管理しています、そして私たちは外部の関連する煩わしさなしに私たち自身の制御下でプラグインの更新を維持したいです。私はフックを好みますが、存在しません。そのような低レベルのアクションにはフックを提供しないのがおそらく最善です。しかしプラス面では、変更はclass-wp-filesystem-direct.phpファイル内の単一の関数にのみ影響し、そのファイルは2年近く変わっていません。

//@version 3.4

function delete($file, $recursive = false, $type = false) {
    if ( empty($file) ) //Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem.
        return false;
    $file = str_replace('\\', '/', $file); //for win32, occasional problems deleting files otherwise

    if ( 'f' == $type || $this->is_file($file) ) 
        return @unlink($file);
    if ( ! $recursive && $this->is_dir($file) ) 
        return @rmdir($file);

    //At this point its a folder, and we're in recursive mode
    $file = trailingslashit($file);
    $retval = true;

    //preserve svn folders
    if (preg_match("|\/\.svn\/$|", $file))
        return $retval;

    $filelist = $this->dirlist($file, true);

    if ( is_array($filelist) ) //false if no files, So check first.
        foreach ($filelist as $filename => $fileinfo)
            if ( ! $this->delete($file . $filename, $recursive, $fileinfo['type']) )
                $retval = false;

    //don't worry if directories are left behind
    if ( file_exists($file) ) @rmdir($file);

    return $retval;
}

主な違いは/.svn/フォルダを完全に無視し、ディレクトリを削除できなくても失敗しないことです。子の.svnフォルダが含まれていない場合でも、それらは削除されます。その結果、あなたは時々2つの "空の"ディレクトリを整理する必要があるかもしれませんが、私はまだそれをする必要はありませんでした。もちろん、コアを更新するたびにファイルにパッチを適用する必要があります。

別の選択肢は、ワードプレスプラグインディレクトリからZipファイルとしてプラグインをダウンロードし、ファイルマネージャユーティリティを使用して一方向のマージまたは2つのディレクトリ間の同期を行うことです。新しいプラグインフォルダを既存のフォルダの上にドラッグアンドドロップするだけで、Windowsエクスプローラはこれをネイティブに実行します。しかし、wp-admin領域にあるこのリンクをクリックする方がはるかに簡単です。

1
Marcus Pope

どのようにしてプラグインをアップデートしていますか?

これを回避する唯一の方法は、フォルダを置き換えることなく、各フォルダに移動してファイルをフォルダごとに置き換えることです。痛みですが、それが私が知っている唯一の方法です。

0
Alex Older