Composer/WordPress:wp-content目录应该被提交还是不应该被提交?

15

最近我根据这个教程开始在WordPress中使用Composer。

这是我的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"
    }
}

一切都很顺利,我得到了这个文件夹结构:

enter image description here

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

一切都运行良好,直到这一点:

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

因此,除了public/wp文件夹之外,似乎所有内容都可以提交和推送。(包括wp-content文件夹)

有一件事我不明白。我们必须提交/推送wp-content目录,因为它的位置与原来的不同,但同时这个wp-content文件夹包含pluginsthemes文件夹,在其中使用composer添加插件和主题应该不会被提交/推送对吗?

插件和主题也将在开发环境中使用composer添加,因此我们不能提交它们,但它们位于应该提交的wp-content目录中?

在另一个类似的教程wp-content设置为.gitignore文件中的内容,这意味着不应该提交/推送。但如果是这样的话,谁会移动(以及如何移动)开发环境中的wp-contentwp目录之外。

请有人解释一下这个方面吗?


我提交wp-content和我的主题,并使用.gitignore排除所有其他内容 - 然后我使用composer通过http://wpackagist.org/引入所有需要的插件 - 因此,您的git包含wp-content但仅包含主题而没有其他任何内容(如果您想要,也可以使用composer将主题带入,但对我来说,这就像为一个站点拥有两个存储库)。 - Simon Pollard
2个回答

2
很好,您已经将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拉取的所有插件都会被忽略,但是针对当前项目特定的插件,您不会在其他地方使用,应该进行提交。
希望这可以帮到您。

0

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

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

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

总的来说,人们通常将版本控制与部署区分开来。移动内容是在部署期间进行的操作,例如通过钩子将正确的资源移动到正确的位置。


生成的意思是什么?版本化的意思又是什么?你能再详细解释一下吗?因为我不太理解。 - paulalexandru
是的,但 wp-content 文件夹没有被生成,这意味着我应该提交它吗?因为里面的文件夹是自动生成的。 - paulalexandru
那么我应该提交wp-content目录本身吗?你说的“这意味着服务器端的post-receive hook将负责根据新推送的源生成正确的内容,并移动/复制wp-content文件夹,一旦其内容已被刷新。”是什么意思? - paulalexandru
@paulalexandru git不会提交整个文件夹,只提交文件夹内容(例如文件)。如果wp-content包含非生成的文件,则这些文件应该被版本化。 - VonC
正如您在第二个教程中的问题所示,wp-content目录被设置为.gitignore文件,这意味着我们不应该提交此文件夹。但是如果我们不提交,这意味着在开发环境中,此文件夹仍将位于wp文件夹内。 - paulalexandru
显示剩余9条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接