2

我目前正在与合作伙伴合作开发一个 PHP 项目。

我们都直接编辑到本地服务器(所有文件都存储在服务器上,该服务器也运行 WAMP 堆栈)。我正在寻找一个 SVN 客户端,它将监视和保存对 htdocs 文件夹的所有更改,并将通过 web 更新远程 SVN 存储库。

如果我可以通过 Web 界面操作 SVN 客户端,那将是一个很大的好处。

例如,假设我保存file1.php到服务器。它将file1.php在 svn 网站上更新。如果我突然发现我对文件的最新版本不好,我可以转到服务器(或使用我计算机上的一些 Web 界面),并file1.php用旧版本替换。

我不想只在我们的本地机器上安装一个 SVN 服务器,因为我总是希望远程保存一份带有最新更改的副本。

有什么建议吗?

4

7 回答 7

7

我不知道有什么软件可以做到这一点。使用标准命令行 svn 客户端编写脚本可能并不难。即有一个定期运行的批处理/shell 脚本并检查所有已更改的内容。

也就是说,我强烈建议不要这样做!

源代码控制的正常工作模型是每个人都有一个本地副本可以工作,然后将他们的更改签入中央存储库。

显式手动签入确保您只签入(通常)有效的东西,并让您提供有价值的签入评论。

然后可以使用源代码控制存储库中的已知良好版本更新服务器。

听起来您正在开发生产系统。我强烈建议考虑使用开发环境和上述方法。

于 2009-06-10T09:47:36.267 回答
1

如果我做对了,您的意图是使用 SVN 作为版本化的自动备份系统。如果是这种情况,最直接的方法是使用文件监控工具,然后调用 svn 命令行客户端来查看更改的文件以将它们提交到 SVN。

于 2009-06-10T09:45:17.410 回答
1

我还没有尝试过,但SVN-Monitor可能有用。您将需要上面提到的 ToirtoiseSVN 客户端才能使用它。

于 2009-06-10T09:52:32.513 回答
1

我还没有找到任何(我也有同样的麻烦)。

我们分两步进行。

当我必须开发软件的一部分时 - 我分支主干并在其他人做同样的事情以完成他们的任务时对其进行修改。然后我们合并分支并测试它们。测试后,该合并补丁正在更新主干。

最后 cronjob(或手动)运行脚本,将资源设置为维护模式,删除 htdocs 并在那里导出新的主干,然后根据需要 chown/chmod 一切。

这个脚本我们可以随时从管理面板运行,如果我们需要快速恢复错误的更改,可以设置必要的修订......

于 2009-06-10T09:56:38.853 回答
0

您可能需要为您提议的场景考虑一个分布式源代码控制解决方案(Bazaar、Git、Mercurial),其中有两个提交者针对两个代码库工作。然后,您可以进行本地提交,并根据需要将更改推送和拉取到两个目的地。

但是要解决您眼前的问题,您可能需要某种实用程序来监视两端的文件更改,然后在检测到更改后立即调用 svn client 命令

于 2009-06-10T09:49:06.387 回答
0

我不相信这是可能的或那么容易。

当您在客户端的 SVN 下放置一个文件夹时,会创建一个特定的文件夹结构来跟踪哪些文件被锁定、更改等。尝试在不先签出文件的情况下更新服务器 SVN 文件夹或在不签出文件的情况下编辑文件(就像您想做的那样)是一个坏主意。

将您的 htdocs 文件夹收集到 zip 文件中的计划作业,通过文件名对其进行版本化,然后将其上传到某个远程存储,这可能是一种更轻松、更快捷的管理方式。

于 2009-06-10T09:50:56.227 回答
0

如果脚本正确,我不知道 svn post-commit 钩子是否有用?您可以将当前修订版(即在调用挂钩之前刚刚创建的修订版)中的更改自动部署到生产系统。我想这就是你要求的那种东西?

我不得不说我同意这里关于你所提议的内容的不可取性的其他一些评论。我建议您手动启动部署过程,然后从存储库中提取源代码的解决方案。

抱歉,如果我误解了。

编辑:重新阅读问题后,我认为您正在寻找存储库中的自动提交,而不是自动部署。既然如此,其他人提出的预定脚本解决方案也是我能想到的最好的方法。+1 给那些建议的人。

于 2009-06-10T10:10:32.430 回答