嗨,我在将 php 脚本提交到 subverison 时遇到了麻烦。我使用 Nginx Web 服务器向 apache 服务器发送请求,并使用 nginx 的 mod_proxy 设置提交文件,svn checkout 和更新工作正常。
服务器 { 听80; 服务器名称svn.server; 地点 / { 访问登录关闭; 代理通过 http://localhost:8081; proxy_set_header X-真实IP $remote_addr; proxy_set_header 主机 $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 位置 ~ ^/repos/.*.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index索引.php; 包括 fastcgi_params; } }
答案1
问题在于 PHP 的 fastcgi 设置的位置块。当 SVN 提交时,它会对以文件名结尾的 URI 执行 PUT,例如
PUT /svn-test-work/repositories/authz_tests-7/!svn/txr/1-1/A/D/G/rho
repo 里面的路径在哪里/A/D/G/rho
。
您没有看到更新和签出问题的原因可能是您使用的客户端或服务器仍在使用批量更新。批量更新意味着所有内容都包含在 REPORT 请求中,而不是对文件发出 HTTP GET 请求。较新的客户端将发出 GET 请求,并且也会看到签出和更新问题。
我猜想 php fastcgi 设置是针对您的 SVN 服务器的某种基于 Web 的 UI。您需要将其放置在唯一的 URL 上,而不是与您的存储库相同的 URL 下。