如何处理分布式开发工作流

时间:2012-07-05 作者:KevDog

我正在尝试为两个人(现在)设计一个工作流。其中一人将做主题工作,另一人将写内容。我们不在同一地点,短期内不会。

作者对源代码管理非常不熟悉,因此最好是第二阶段。我可以把MAMP放在她的盒子上,让她写在那里,如果这是一种方法,那么如何最好地集成这两种解决方案呢?

我读过这个问题:How to best setup for development for a two person bi-coastal team? 但因为它已经两年了,我想我会看看是否有什么变化。

1 个回复
SO网友:chrisguitarguy

注意:前面的想法非常以mac/linux/unix为中心。包括许多命令行fu。

将所有代码置于版本控制之下,我喜欢git。Mark Jaquith对k有一些很好的建议eeping an entire site under version control 为WordPress核心使用git和子模块。您还可以将插件作为git子模块放入。

团队的开发人员端将在本地工作,测试并提交任何更改,然后将代码推送到一个中央存储库(Github带有私有repo、Beanstalk、您的服务器,这无关紧要)。从那里,您可以使用部署工具(Capistrano等)或简单地将SSH连接到开发服务器中(请参见步骤2),然后git pull 在您的更改中。

确保将静态文件目录(例如上载的图像和内容)添加到.gitignore 文件

设置一个开发服务器,例如在主站点的子域上安装WordPress,如staging.yoursite.comdev.yoursite.com. 这是新代码的测试场,您的内容制作人将在这里工作。我建议把它完全放在单独的服务器上。

为内容产品提供登台站点的用户名和密码,并让他们在那里生成和写入所有内容。在将最新的代码更改推送到生产(实时)站点之前,您还将在此站点中引入最新的代码更改进行测试。

从开发服务器,您可以进行硬数据库导出,并使用该导出将所有内容放在实时站点上。

在开发服务器上:

shell$ mysqldump -p -u your_dbuser yourdatabase > the-file.sql
通过生产服务器发送文件,然后。。。

shell$ mysql -p -u your_dbuser your_database < the-file.sql
我最近有幸与另一个选择合作,叫做RAMP by Crowd Favorite. 它将为您将内容从一台服务器部署到另一台服务器。太棒了。强烈推荐。

一切就绪后,将内容和代码推送到实时站点。

最后一句警告:IP限制您的开发站点,因此不是每个人都可以访问它。

同步本地开发站点显然,如果您打算在本地工作,您希望本地站点与开发和生产站点保持同步。您的所有代码都将在版本控制下,所以这没有问题。但同步数据库和静态文件是另一回事。

Syncing the Database

这里有两个选项。

您可以每隔一段时间用SSH将数据库转储到一个文件中,然后下载并导入到本地计算机。使用上述命令示例mysqldump 有一个主机。

shell$ mysqldump -p -u your_dbuser -h the-externa.db.host.com the_database > the-file.sql
您还可以登录到主机PHPMyAdmin并从那里导出。

Syncing Static Files (Uploaded Images, etc)

rsync 是你的朋友。它允许您从一个位置到另一个位置进行增量更新,包括通过SSH进行更新。换句话说,您可以使用它只下载您没有本地计算机的文件。

示例:

shell$ rsync -avze ssh [email protected]:/path/to/static/files/ /path/to/your/local/static/files/
假设您的主机使用密码进行SSH访问,则在运行该命令后会提示您输入密码。如果您的主机不这样做,例如使用无密码、公钥SSH访问,那么您需要使用一个使用SSH代理的小shell脚本跳过一些障碍:

#! /bin/bash

eval "$(ssh-agent)" # start ssh-agent user daemon
ssh-add /path/to/your/id_rsa # add your public key

rsync -avze ssh [email protected]:/path/to/static/files/ /path/to/your/local/static/files/

kill $SSH_AGENT_PID # kill the ssh agent
您还可以使用rsync 使静态文件在生产服务器和开发服务器之间保持同步。

以上是我如何与我的个人网站和一些客户的网站。

结束

相关推荐

我是否应该转义WordPress函数,如_title、_Excerpt、_Content

我看过代码,但在函数上看不到任何转义,例如the_title the_content the_excerpt等等。我可能读得不对。我是否需要在主题开发中避开这些功能,例如:esc_html ( the_title () )编辑:正如下面的答案所指出的,无论怎样,上述代码都是错误的-代码应该已经阅读esc_html ( get_the_title () )