要求
将对 REPO 目录进行更改,并且这应该更新为 wc(工作副本),而不是正常的 WC > REPO 方式。
场景:
我的 svn 仓库- /var/www/svn/drupal
我的 checkout-dir/working-copy- /var/www/html/drupalsite
所以我做了:
编辑提交后钩子以包含:“/usr/bin/svn update /var/www/html/drupalsite”
我不会对 svn WC 进行任何更改。我将对 svn REPO- /var/www/svn/drupal 进行更改。
对 svn repo 进行更改后,运行“svn commit /var/www/html/drupalsite”。这将触发提交后挂钩。这反过来将运行“svn update /var/www/svn/drupal”,因此我的 WC 将使用 REPO 的更改进行更新。
询问
a. 上述步骤 1-3 是否有助于实现我的“要求”?
b. 我需要建议如何测试上述设置是否成功运行。我不知道步骤 1-3 是否成功,也不知道为什么存在查询 (a)。这对我来说有点令人担忧。
注意:我是 Subversion 的新手。到目前为止,我所做的任何配置都是通过阅读在线文章完成的。提出问题 (b) 的原因是我不从事开发。它似乎是一个 php drupal 网站,我恰好正在设置它。所以我不知道如何在 REPO 中进行“正确”更改,以便它反映在 WC 中。如果反映出来,我的配置是正确的,团队可以开始开发。我手动将一个随机文件/文件夹放入 REPO 目录中以查看 WC 中的变化,并运行步骤 1-3,但无济于事,后来我了解到这不是更改 REPO 的方法。
请提供意见。谢谢
答案1
- 您不能直接在存储库中进行更改 - 它是数据库,而不是“真实树的镜像”
- 你不能执行“奇怪的”、错误的命令(
svn commit /var/www/html/drupalsite
)并等待并得到预期的结果好的命令结果
当你有固定的工作流程时,你的工作流程(“站点作为工作流,通过钩子更新来自另一个工作流的提交”)将会起作用
如何运作
- 在路径上创建(或拥有)SVN 存储库
/var/www/svn/drupal
- 定义自己的工作副本(以下简称 WC-Work)的位置,您将在其中更改代码(可以是包含 Repo 和站点的同一主机,或者任何其他可从中访问 Repo 的主机)
- 根据 WC-Work 位置的选择,可能需要在 Repo 主机上配置并运行 SVN 服务器(远程访问时使用 svn:// 或 http://)。检测并记住存储库的 URL(以下简称 REPO-URL)
- 转换
/var/www/html/drupalsite
为存储库的工作副本(以下简称 WC-Site):svn co REPO-URL
- 使用 .htaccess 规则保护 WC-Site 的 .svn 目录
- 准备 WC-Work:
svn co REPO-URL
- 将提交后钩子添加到 repo(你的钩子是可接受的起点)
- 在 WC-Work 中工作-工作-工作
- 提交来自 WC-Work 的更改
- 检查站点状态
需要改进的地方
对于第 3 点:你可以将 WC-Site 的用户定义为只读用户,该用户在任何情况下都不能提交到网站
对于第 7 页:hook 只能从 WC-Work 用户发布到 WC-Site 修订版,仅一些 URL可能必须发布(不止一个,最初签出,如果它是正确的 - WC-Site 必须在更新之前重新定位),在“单点发布”策略的情况下:发布点之外的提交可以被忽略(如果只提升主干,我们对提交到分支|标签什么也做不了)