Making WordPress.org

Changeset 13709


Ignore:
Timestamp:
05/16/2024 01:30:50 AM (5 weeks ago)
Author:
dd32
Message:

Plugin Directory: SVN: Watch for Tag deletions, such that we can properly handle cases when a tag is deleted.

See #3263, #5900.

Location:
sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/cli/class-svn-watcher.php

    r8337 r13709  
    105105                $plugins[ $plugin_slug ] = array(
    106106                    'tags_touched'   => array(), // trunk is a tag too!
     107                    'tags_deleted'   => array(),
    107108                    'readme_touched' => false, // minor optimization, only parse readme i18n on readme-related commits
    108109                    'code_touched'   => false,
     
    116117            $plugin['revisions'][] = $log['revision'];
    117118            foreach ( $log['paths'] as $path ) {
    118                 $path_parts = explode( '/', trim( $path, '/' ) );
     119                $path_parts  = explode( '/', trim( $path, '/' ) );
     120                $is_deletion = ( isset( $log['actions'][ $path ] ) && 'D' === $log['actions'][ $path ] );
    119121
    120122                if ( ! isset( $path_parts[1] ) ) {
    121123                    continue;
    122124                }
    123 
     125       
    124126                if ( 'trunk' == $path_parts[1] ) {
    125127                    $plugin['tags_touched'][] = 'trunk';
    126 
     128       
    127129                } elseif ( 'tags' == $path_parts[1] && isset( $path_parts[2] ) ) {
    128                     $plugin['tags_touched'][] = $path_parts[2];
     130                    if ( $is_deletion && ! isset( $path_parts[3] ) /* not a file deletion */ ) {
     131                        $plugin['tags_deleted'][] = $path_parts[2];
     132                    } else {
     133                        $plugin['tags_touched'][] = $path_parts[2];
     134                    }
    129135
    130136                } elseif ( 'assets' == $path_parts[1] ) {
    131137                    $plugin['assets_touched'] = true;
    132 
     138       
    133139                }
    134140
     
    141147                }
    142148            }
     149
    143150            $plugin['tags_touched'] = array_unique( $plugin['tags_touched'] );
    144151        }
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/tools/class-svn.php

    r11918 r13709  
    403403                foreach ( $simple_xml->logentry as $entry ) {
    404404                    $revision = (int) $entry->attributes()['revision'];
     405                    $actions  = array();
    405406                    $paths    = array();
    406407
    407408                    foreach ( $entry->paths->children() as $child_path ) {
    408                         $paths[] = (string) $child_path;
     409                        $path   = (string) $child_path;
     410                        $action = (string) ( $child_path->attributes()['action'] ?? 'M' );
     411
     412                        $paths[]          = $path;
     413                        $actions[ $path ] = $action;
    409414                    }
    410415
     
    414419                        'date'     => strtotime( (string) $entry->date ),
    415420                        'paths'    => $paths,
     421                        'actions'  => $actions,
    416422                        'message'  => (string) $entry->msg,
    417423                    );
Note: See TracChangeset for help on using the changeset viewer.