it-swarm.com.de

Das Aktualisieren eines Wordpress-Plugins unterbricht SVN

Ich habe ein Blog mit allen Plugins, die ich benötige, in einem internen SVN-Repository. Wordpress zeigt an, dass einige Plugins aktualisiert werden müssen. In diesem Fall löscht Wordpress jedoch den Ordner für dieses Plugin, sodass auch die .svn-Dateien gelöscht werden. Dadurch wird das Repository für dieses Plugin beschädigt. Irgendwie darum herum?

3
Matthew Xerri

eine einfache Möglichkeit, dies zu umgehen, besteht darin, die Plugins über SVN aus dem Plugin-Repository zu aktualisieren.

3
Bainternet

Ich habe gerade beschlossen, den Kern zu patchen, um dies zu beheben. Wir verwalten eine Menge separater Entwicklungsprojekte, die auf WordPress aufbauen, und wir möchten, dass Plug-In-Updates unter unserer eigenen Kontrolle bleiben, ohne die damit verbundenen Probleme von außen. Ich würde einen Haken bevorzugen, aber einen gibt es nicht und es ist wahrscheinlich am besten, keinen für solche Aktionen auf niedriger Ebene bereitzustellen. Aber auf der positiven Seite wirken sich die Änderungen nur auf eine einzelne Funktion in der Datei class-wp-filesystem-direct.php aus, und diese Datei hat sich seit fast zwei Jahren nicht wesentlich geändert.

//@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;
}

Die Hauptunterschiede bestehen darin, die Ordner /.svn/ vollständig zu ignorieren und dann nicht zu scheitern, wenn Verzeichnisse nicht entfernt werden können. Sie werden weiterhin entfernt, wenn sie keine untergeordneten .svn-Ordner enthalten. Infolgedessen müssen Sie möglicherweise von Zeit zu Zeit ein paar "leere" Verzeichnisse entfernen, aber das musste ich noch nicht. Und Sie müssen die Datei natürlich jedes Mal neu patchen, wenn Sie den Core aktualisieren.

Eine andere Möglichkeit besteht darin, das Plugin als Zip-Datei aus dem WordPress-Plugins-Verzeichnis herunterzuladen und mit einem Dateimanager-Dienstprogramm eine einseitige Zusammenführung oder Synchronisierung zwischen den beiden Verzeichnissen durchzuführen. Windows Explorer wird dies automatisch tun, wenn Sie den neuen Plug-in-Ordner einfach über den vorhandenen ziehen und ablegen. Aber es ist viel einfacher, auf diesen Update-Link im Bereich wp-admin zu klicken.

1
Marcus Pope

Wie aktualisierst du die Plugins?

Der einzige Weg, den ich gefunden habe, ist, in jeden Ordner zu gehen und Dateien Ordner für Ordner zu ersetzen, ohne einen Ordner zu ersetzen. Ein Schmerz, aber es ist der einzige Weg, den ich kenne.

0
Alex Older