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

所以我的问题是,有人能自动完成此操作吗?如果是的话,您是如何做到的? br />

评论

虽然我认为这是一个有趣且有用的问题,但它也超出了范围,因为它涉及Git和Subversion的交互,并且它与WordPress无关。我需要考虑什么是最好的行动...

我已经开始对meta问题进行讨论。

@Rarst对此表示感谢,很抱歉将问题放错了地方

#1 楼

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

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

评论


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

–studioromeo
2012年1月25日23:44

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

–奥托
2012年1月26日,0:19

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

–studioromeo
2012年1月26日,0:33

对Git更改进行交互式重新配置,可以将它们组合为一个SVN提交。有关如何执行此操作的更多信息,请参见:stackoverflow.com/questions/158514/…

–奥托
2012年1月26日,0:36

@Otto“说实话,我不知道我不使用Git。我觉得这很烦人。”可以用另一句话(直接从您这里得到答案)回答:“我个人将找到您并用棍棒击败您作为我的人生目标”

– kaiser
2012年1月26日11:32



#2 楼

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

各种插件,处理已删除的文件以及基于git标签自动更新svn标签。

#3 楼

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

评论


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

–奥托
2012年1月26日,0:33

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

– fuxia♦
2012年1月26日,下午1:27

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

– MikeSchinkel
2012年1月26日13:30



#4 楼

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

著名的10up公司创建了“ Action WordPress Plugin Deploy”。 。按照@otto的说法,我们不需要将每个更改都推送到svn,因此,我们可以在github上创建新标签的同时设置自动化。我们创建新的发行标签时的资源库。

有用的链接:


来源:如何从GitHub部署WordPress插件

GitHub动作:GitHub动作

10up动作WordPress插件部署:
GitHub存储库



#5 楼

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

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

stable tag设置为trunk,然后准备发布时,将其标记在Git中,然后立即推入主干。不用担心推送到SVN /tags,因为您的发布历史记录在Git(和Github)中是安全的。

就是这样。 SVN会忽略.svn.gitignore.git(以及tests/phpunit.xml等)。

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

git tag 
svn ci -m"Release: "