问题 1:
我正在为开发设置一个 SVN 服务器,我该如何从/var/www/
我的网站的根目录中提供文件,我想通过 SVN 管理这些文件,以反映/var/www/
我提交给我的服务器的更改的根目录。
目前我的开发文件已经存在,/var/www/
但是按照教程位于/home/svn/
,我该如何将其更改为网站根目录 ( /var/www/
) 而不是/home/svn/
?
问题2:
此外,当我运行此命令时,我还有另外两个相关问题:
svnserve -d --foreground -r /home/svn
我可以连接到我的 SVN 服务器,但是命令似乎没有完成,运行命令时似乎正在等待响应,因此我通过执行ctrl& c(^C) (Mac) 来停止它,这会停止连接,使我不再连接到服务器。那么,当我不使用终端进行开发时,如何保持它处于活动状态?
问题 3:
还有一个问题,当我使用浏览器浏览到:
我得到这个输出:
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops partial-replay ) ) )
这是否是一种安全风险?如果是,我应该怎么做才能避免这种风险?
这是我要问的三个问题。
答案1
首先,您似乎混淆了 Subversion 和 Web 服务器。
- 您可能希望使用 在磁盘上的某个位置(例如 /data/svn)创建一个 Subversion 存储库
svnadmin
。接下来,检出所述存储库并将 Web 根目录中的所有文件添加到其中。最后,使用 将存储库检出到 /var/wwwsvn co
。 - 不要运行
svnserve
---foreground
该选项会按照您的预期运行!如果您只是运行,svnserve -d
那么它将作为后台守护程序运行。 - 您将 svnserve 与 Web 服务器混淆了。端口 3690 是 svnserve 端口,需要
svn
客户端使用其本机协议与其通信。如果您想通过 HTTP 进行通信,则需要添加类似mod_dav_svn
Apache 中的一些内容。
答案2
- 使用存储库作为站点源是不可能的 - 存储库是数据库,而不是物理文件
- 您可以使用工作副本存储库作为站点(
svn co
|的结果svn up
),但它存在(一些可能的)安全漏洞 - svnserve 启动守护进程,处理 svn:// 访问协议到存储库,运行它 a) 始终 b) 在后台
- svnserve 不是 http,您没有在 3690 端口上使用 svnserve 的基于 http 的 repo。在这种情况下,您必须使用 svn://mydomain:3690 访问 repo(无法详细讲述 svnserve 配置,从未使用过)