如何:将GitHub存储库推送到Wordpress插件服务器


21

我在github上开发了我的插件,但是在部署时,我必须以某种方式将所做的更改复制到Wordpress SVN中。目前,我手动执行此操作,并分别复制每个目录中的每个文件,但这既耗时又容易出错。

我已经看过并尝试了一些脚本,但是我认为我必须在错误的环境下运行它们,因为它们要么出错要么无法正确复制文件。

所以我的问题是,有人能自动实现吗?如果是,您是如何做到的?

谢谢!


尽管我认为这是一个有趣且有用的问题,但它也超出了范围,因为它涉及Git和Subversion的交互,并且它与WordPress无关。我需要考虑一下什么是最好的措施……
拉斯特(Rarst)2012年

我已经开始对meta问题进行讨论。
拉斯特(Rarst)2012年

@Rarst对此表示感谢,很抱歉
未能

Answers:


1

请参阅我们团队的同事提供的本教程:http : //www.farbeyondprogramming.com/2011/09/81-how-to-deploy-a-wordpress-plugin-with-git-svn

但他不使用该解决方案,它更容易分开工作:(


谢谢@bueltge。我认为他已恢复为手动方法,对吗?
studioromeo 2012年

4
为了爱所有神圣的事物,请勿遵循该站点上的指示。如果您突然对我们的SVN进行了数百次提交,那么我个人将找到您并用棍子击败您作为我的人生目标。或者,也许只是禁止您访问WordPress.org。;)请仅提交最终版本,而不是提交给git的每一项更改。我们确实重视您的历史,但只重视有意义的历史。git的问题在于,人们会提交大量无用的废话,而且一般而言,我们不需要了解所有这些东西。
奥托(Otto)

@Otto哈哈!不,我只是想将更改部署到SVN存储库中。目前,这样做是在我签出的svn repo中手动覆盖文件,但是那很繁琐且容易出错。你有什么建议吗?
studioromeo 2012年

3
对Git更改进行交互式重新配置,可以将它们组合为一个SVN提交。有关如何执行此操作的更多信息,请点击这里:stackoverflow.com/questions/158514/…–
奥托(Otto)

1
@Otto“ 老实说,我不知道我不会使用Git。我觉得这很烦人。 ”(直接引用您的话)可以回答“ 我个人将找到并击败您作为我的人生目标用棍子 “ :)
kaiser 2012年

1

阅读这些回复后,我将我的一个插件推送到GitHub并编写了release.sh脚本。这个脚本使用得到我的插件的部分结账从plugins.svn.wordpress.org --depth immediates,并在更新文件trunk/assets/。使用wordpress.org存储库标记版本,而不是保留开发历史记录,这应该简化对svn的定期推送:

./release.sh
svn cp trunk tags/0.6
svn ci "Sending 0.6 from https://github.com/foo/bar to wordpress.org"

通用性更高的版本可能与更广泛的插件配合使用,处理已删除的文件并根据git标签自动更新svn标签。


1

有关详细说明,请参见如何@EAMann 发布WordPress插件– Git


如果要执行此类操作,请进行交互式变基,然后更改要压缩的所有提交,以免对SVN服务器进行数十次小的提交。有关如何执行此操作的更多信息,请点击此处:stackoverflow.com/questions/158514/…–
奥托(Otto)

5
@Otto虽然我完全理解您希望减轻服务器负载的愿望:)如果必须调试其他人的代码,我真的非常喜欢原子提交。嗯……自动链接到具有完整提交历史记录的公共Git存储库可能是对插件目录的有用增强。
fuxia

3
对此我必须同意@Otto。WordPress.org的SVN应该确实是发布存储库,而不是开发存储库。
MikeSchinkel,2012年

1

这个问题很老,但是现在该解决方案现在可以通过GitHub操作使用。最近,GitHub为GitHub存储库添加了Github Actions的自动化工作流。

著名的公司10up创建了“ Action WordPress Plugin Deploy”。

设置非常容易。正如@otto所说,我们不需要将每个更改都推送到svn,因此,我们可以在github上创建新标签的同时设置自动化。

因此,当我们创建新的发布标签时,我们的github插件会自动将代码推送到WordPress存储库。

有用的链接:


0

我不会自动执行此操作,但这很简单:

将SVN truck和Git master检出在同一目录中。将Git几乎用于所有内容,就像使用任何仅Git的项目一样。

将设置stable tagtrunk,然后准备进行释放时,将其标记在Git中,然后立即推到行李箱。不必担心使用SVN /tags,因为您的发布历史记录在Git(和Github)中是安全的。

就是这样

把它清理干净,我想补充.svn.gitignore,和.git(与tests/phpunit.xml等)通过SVN忽视。

release.sh脚本实际上只不过是以下内容(一旦代码中的版本号已更新,并且全部提交给Git):

git tag $1
svn ci -m"Release: $1"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.