Composer/WordPress : wp-content 目录应该或不应该提交

Posted

技术标签:

【中文标题】Composer/WordPress : wp-content 目录应该或不应该提交【英文标题】:Composer/WordPress : wp-content directory should or should not be committed 【发布时间】:2016-02-22 16:46:11 【问题描述】:

所以我最近开始根据this 教程将 Composer 与 WordPress 一起使用。

这是我的composer.json 文件:


    "repositories": [
        
            "type": "package",
            "package": 
                "name": "wordpress",
                "type": "webroot",
                "version": "4.3",
                "dist": 
                    "type": "zip",
                    "url": "https://github.com/WordPress/WordPress/archive/4.3.zip"
                ,
                "require" : 
                    "fancyguy/webroot-installer": "1.0.0"
                
            
        
    ],
    "require": 
        "wordpress": "4.*",
        "fancyguy/webroot-installer": "1.0.0"
    ,
    "extra": 
        "webroot-dir": "public/wp",
        "webroot-package": "wordpress"
    

效果很好,我得到了这个文件夹结构:

正如教程中提到的,我将index.phpwp-config.phpwp-content 目录复制到wp 目录之外并替换了路径。

到目前为止一切都很完美:

关于使用源代码管理工具的内务管理。你会想忽略 composer.phar 文件和 public/wp 目录。 其他所有内容都可以提交和推送。

所以看起来除了public/wp文件夹之外,一切都可以提交和推送。 (包括 wp-content 文件夹)

这是我不明白的事情。我们必须提交/推送wp-content 目录,因为它具有与以前不同的位置,但同时此wp-content 文件夹包含pluginsthemes 文件夹,我们的插件和主题将在其中使用不应提交/推送正确的作曲家添加?。

插件和主题也会使用composer添加到开发环境中,所以我们不能提交它们,但它们在wp-content目录中应该提交?

在another 类似教程中,wp-content 被设置到.gitignore 文件中,这意味着它不应该被提交/推送。但如果是这样,谁将(以及如何)将 wp-content 移动到开发环境中的 wp 目录之外。

有人可以澄清一下这个方面吗?

【问题讨论】:

我提交 wp-content 和我的主题并使用 .gitignore 排除其他所有内容 - 然后我使用 composer 通过wpackagist.org 引入我需要的所有插件 - 所以你的 git 包含 wp-content 但是只有主题,没有别的(如果你愿意,你也可以将主题与作曲家一起引入,但对我来说,这就像一个网站有两个 repos) 【参考方案1】:

很高兴您将wp-content 拆分到一个单独的目录中。

我个人只提交wp-content 中属于当前项目的项目。另一种思考方式是提交任何使用 Composer 添加的内容。

例如,您可能正在使用一个具有父主题的网站,您正在使用 Composer 将其拉入并且将保持不变,并且您正在对其进行更改。

在此示例中,应提交子主题并忽略父主题,因为您只更改子主题中的代码。

.gitignore 文件如下所示:

# Ignore everything in wp-content
wp-content/*

# Do not ignore the themes directory. This is needed to add the child theme (below)
!wp-content/themes

# Ignore all of the themes directory contents, including the parent theme
wp-content/themes/*

# Do not ignore the child theme
!wp-content/themes/child-theme/

我通常也会对插件做同样的事情。任何由 Composer 引入的插件都会被忽略,但特定于当前项目且不会在其他地方使用的插件会被提交。

希望这会有所帮助。

【讨论】:

【参考方案2】:

这个想法是:任何生成的东西都不应该被版本化。

谁将(以及如何)将wp-content 移动到开发环境中的wp 目录之外。

这是一个部署问题,是发布管理的一部分。 这意味着服务器端的 post-receive 挂钩将负责根据新推送的源生成正确的内容,并在其内容刷新后移动/复制 wp-content 文件夹。

一般要点是:通常将版本控制与部署区分开来。移动内容是在部署时完成的,在发布管理期间,例如通过一个挂钩将正确的资源移动到正确的位置。

【讨论】:

生成是什么意思,版本化是什么意思。因为我不明白,你能解释一下吗? @paulalexandru "generated" 意味着你可以调用一个命令来生成 wp-content 中的全部或部分内容。 “版本化”意味着添加了源代码控制(git add、git commit) 是的,但是没有生成 wp-content 这意味着我应该提交它吗?因为里面的文件夹是生成的。 @paulalexandru 您可以添加和提交仅在wp-content 中未生成的内容,但排除(在.gitignore 中声明)在wp_content 中生成的内容。 那么我应该提交它自己的 wp-content 目录吗?你是什​​么意思这意味着服务器端的接收后挂钩将负责根据新推送的源生成正确的内容,并在其内容被刷新后移动/复制 wp-content 文件夹。 ?

以上是关于Composer/WordPress : wp-content 目录应该或不应该提交的主要内容,如果未能解决你的问题,请参考以下文章

csharp 检查区间或范围[N ... M]中的素数。从C#http://www.introprogramming.info/wp-c的计算机编程基础知识

csharp 检查区间或范围[N ... M]中的素数。从C#http://www.introprogramming.info/wp-c的计算机编程基础知识

基于 CentOS 搭建 WordPress 个人博客

鼠标滚动时移动视频背景

CSS图像父P标签高度保持为零[关闭]