【问题标题】:Create release zip file on Github without tag name in it在 Github 上创建没有标签名称的发布 zip 文件
【发布时间】:2014-07-01 18:50:07
【问题描述】:

我在 Github 上有这个 repo - https://github.com/ronakg/awesome-flickr-gallery-plugin。这是一个 wordpress 插件,用于从存储在 Flickr 上的照片创建照片库。

现在我想要实现的是 - 当我为我的插件创建一个新的发布 zip 时,它不应该使用标签名称。

例如,我创建了 3.5.0 和 3.6.0 版本。两个版本的文件夹结构应该相同。

awesome-flickr-gallery-plugin
  /index.php
  /README.txt
  .
  .

现在它会像这样创建发布 zip 文件:

awesome-flickr-gallery-plugin-3.5.0
   /index.php
   /README.txt
   .
   .

这对我来说很重要,因为我想直接将此 zip 文件作为 WordPress 插件更新提供给我的用户。这种不同的文件结构破坏了 WordPress 中的插件更新过程。

有什么想法吗?

【问题讨论】:

    标签: php wordpress git github release


    【解决方案1】:

    我遇到了前缀为-mastera similar problem 并使用以下过滤器upgrader_source_selection 解决了。我的存储库是github-plugin-for-wordpress,请自行调整。

    /**
     * Access this plugin’s working instance
     *
     * @wp-hook plugins_loaded
     * @return  object of this class
     */
    public function plugin_setup()
    {
        add_filter( 'upgrader_source_selection', array( $this, 'rename_github_zip' ), 1, 3);
    }
    
    /**
     * Removes the prefix "-master" when updating from GitHub zip files
     * 
     * See: https://github.com/YahnisElsts/plugin-update-checker/issues/1
     * 
     * @param string $source
     * @param string $remote_source
     * @param object $thiz
     * @return string
     */
    public function rename_github_zip( $source, $remote_source, $thiz )
    {
        if(  strpos( $source, 'github-plugin-for-wordpress') === false )
            return $source;
    
        $path_parts = pathinfo( $source );
        $newsource = trailingslashit( $path_parts['dirname'] ) . trailingslashit( 'github-plugin-for-wordpress' );
        rename( $source, $newsource );
        return $newsource;
    }
    

    【讨论】:

    • 我对 zip 文件名没有问题,WordPress 处理得很好。问题在于提取后创建的压缩目录。我希望它始终创建 awesome-flickr-gallery-plugin 而不是在末尾包含标签名称。
    • 这段代码就是这样做的,IIRC 压缩文件在 temp wp-content/upgrade 文件夹中带有后缀,因此带有后缀。
    • 它适用于您的情况,因为您总是从 master 创建 zip。我想从标签名称创建发布 zip。所以发生的情况是,当 zip 压缩时,它会显示为新插件。旧插件实例被停用和删除,用户必须再次激活更新的插件。
    • 我很肯定,调整方法内部的搜索/替换很简单,您是否尝试调试它?
    • 是的,它奏效了。我只是上次尝试的不够多。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    相关资源
    最近更新 更多