【问题标题】:Cannot commit jar file to svn after merge: 502 'Bad Gateway'合并后无法将 jar 文件提交到 svn:502 'Bad Gateway'
【发布时间】:2018-10-01 05:28:18
【问题描述】:

我们在客户端使用带有tortoiseSVN 的visualsvn 来控制二进制文件的版本。也就是说,当我们要测试一个项目时,将 test 分支与 build 分支合并。这实质上是将 jar 文件更新为较新的版本。

由于某种原因,我无法提交现在合并的测试分支,我收到 502 'Bad Gateway' 错误。 我可以提交一些更新的文件,我已经提交了旧 jar 文件的删除,但我无法提交新的 jar。

我得到的错误指向构建分支,而不是测试分支,我认为这可能是原因。我已尝试删除有问题的文件并将其替换为构建中的副本(某种手动合并)。但我得到了同样的错误。

Commit failed (details follow):
Unexpected HTTP status 502 'Bad Gateway' on
'/svn/binaries/!svn/rvr/11730/myProject/branches/build/newestversion.jar'

编辑:该错误与合并有关。撤消 add 后,我已将 jar 文件复制到测试目录中,添加并提交,没有任何问题。

错误传播:在将 staging 与 test 合并后,我得到与上面相同的错误,但是:

'/svn/binaries/!svn/rvr/11737/myProject/branches/tst/newestversion.jar'

【问题讨论】:

  • 一个 n t i v i r u s 或 p r o x y
  • 如果是防病毒或代理,我将无法提交刚刚添加但未合并的 jar。

标签: svn merge tortoisesvn visualsvn


【解决方案1】:

根据 support@visualsvn.com 的调查,根本原因是 %VISUALSVN_SERVER%conf\httpd-custom.conf 文件中的以下行:

RequestHeader edit Destination ^https http early

删除此行可以解决问题。

顺便说一句,我可以猜测添加该行是为了实现从 HTTP 到 HTTPS 的自动重定向。使用现代 VisualSVN 服务器版本,您可以通过 VisualSVN 服务器管理器控制台启用此重定向。因此,无需将该行添加到 conf 文件中。

您可以按照以下步骤操作:

  1. 启动 VisualSVN 服务器管理器 控制台。
  2. 点击操作|属性
  3. 点击网络标签。
  4. 选择自动将 HTTP 重定向到 HTTPS(侦听端口 80) 选项。
  5. 点击应用

【讨论】:

    【解决方案2】:

    HTTP 状态码 502 是服务器端错误:

    RFC 7231 section 6.6.3:

    502(坏网关)状态码表示服务器,而 作为网关或代理,从 它在尝试完成请求时访问的入站服务器。

    当您检查二进制文件时,可能是您和 svn servern 之间的服务器超时,因为检查时间过长。所以你应该检查svn服务器以及你和svn服务器之间的任何服务器。

    【讨论】:

    • 因为它可能是 .jar 的大小,我尝试提交一个相当大的测试文件(30 mb 对 20 mb),但效果很好。
    • 删除文件并撤消添加(从版本控制中删除)后,我提交了同一文件的副本,没有任何问题。不知何故,合并导致了这个问题。
    • 你能在服务器日志中看到什么吗?
    • 很遗憾没有。我们在 Windows 上有 VisualSVN,事件查看器什么也没告诉我。我可以确认该问题仅在我尝试与新文件合并时发生,并且每次使用新文件时都会发生。
    【解决方案3】:

    就我而言,我使用的是 RouixSVN,我只需要清除我计算机上的 SVN 身份验证数据,然后再次登录即可有效。希望对其他人有所帮助。

    在 Ubuntu 系统上,这是通过删除来完成的:

    ~/.subversion/auth
    

    在 Windows 上:

    %APPDATA%\Subversion\auth 
    

    【讨论】:

      【解决方案4】:

      我解决了这个问题。我看到的问题是分支要求发生 SVN COPY,这是在 HTTP 中完成的,并在 HTTPS 下中断。所以我创建了一个运行 DAV 的 localhost:9005 虚拟主机,添加了 localhost:9005 列表器,并将我的 SSL 虚拟主机更改为代理到 localhost:9005。

      ... SSLCertificateFile /etc/ssl/certs/server.cer SSLCertificateKeyFile /etc/ssl/certs/server.key SSLCertificateChainFile /etc/ssl/certs/domain.cer
      ProxyRequests           On
      ProxyPreserveHost       On
      
      ProxyPass           /svn    http://localhost:9005/svn
      ProxyPassReverse    /svn    http://localhost:9005/svn
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-29
        • 1970-01-01
        • 1970-01-01
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        • 2014-07-08
        • 1970-01-01
        相关资源
        最近更新 更多