为什么Subversion不允许提交.htaccess文件?

时间:2009-10-15 19:53:15

标签: svn apache .htaccess rhel5 tortoisesvn

我无法从Windows SVN客户端(TortoiseSVN)提交.htaccess文件。返回的错误是:

  

无法读取状态行:远程主机强行关闭现有连接。

这基本上是我的vhost在Apache中的样子:

<VirtualHost *:80>
  DocumentRoot /var/www/mydomain.com/legacy/trunk/html
  ServerName mydomain.com

  <Directory /var/www/>
    FileETag MTime Size
    AllowOverride All
  </Directory>

  <Directory /var/www/tools>
    AllowOverride All
  </Directory>

  <Location /svn>
    DAV svn
    SVNPath /var/svn/repos/MyRepo

    # Limit write permission to list of valid users.
    # Require SSL connection for password protection.
    # SSLRequireSSL
    ErrorDocument 404 default

    AuthType Basic
    AuthName "Authorization Realm"
    AuthUserFile /etc/httpd/conf/.htpasswd
    Require valid-user
  </Location>
</VirtualHost>

如何更改,以便可以提交.htaccess文件?

6 个答案:

答案 0 :(得分:5)

刚刚找到了解决该问题的方法 - 只需将其置于虚拟主机配置中即可覆盖全局http.conf:

<Files ~ "^\.ht">
    Order allow,deny
    Allow from all
    Satisfy All
</Files>

Source

这是肯定(测试)的正确答案,但是op放弃了他的问题:/

答案 1 :(得分:1)

Subversion正在从也使用.htaccess进行访问控制的Apache服务器提供服务,所以它可能会妨碍你做一些你不太想要的事情。

答案 2 :(得分:0)

检查apache错误日志文件。您可能会看到有关svn服务器未能完成提交的其他信息。

答案 3 :(得分:0)

检查其他apache配置文件。在我的默认/etc/apache2/modules.d/00_default_settings.conf(在gentoo安装上),我有一个FilesMatch "^.ht"部分Deny from all

我建议从/ etc / apache或/ etc / httpd或/ etc / apache目录运行grep -r -i "\\.ht" *,看看你提出了什么。

它也可能是AccessFileName指令,所以grep也是如此。

答案 4 :(得分:0)

其他文件是否来自TortoiseSVN?

如果提交是在同一个工作副本上与TortoiseSVN在同一个盒子上的SVN客户端工作(你可以验证吗?),那么我的猜测就是不同的SVN和TortoiseSVN客户端版本会导致问题。

TortoiseSVN -> About将报告SVN客户端版本是否已构建。检查您的客户端/服务器版本是否为compatible

答案 5 :(得分:0)

import java.util.HashMap;
import java.util.Map;

class Example {

  static void factor(long N, Map<Long, Short> primesWithMultiplicity) {
    // some arg checking and trivial cases
    if(N<0) N=-N;
    if(0==N) {
       throw new IllegalArgumentException(
         "Are you kidding me? Every number divides 0, "+
         "you really want them all listed?"
       );
    }
    if(1==N) {
      primesWithMultiplicity.put(1L,(short)1);
      return;
    }

     // don't try divisors higher than sqrt(N), 
    // if they would have been detected by their composite-complement 
    for(long div=2; div*div < N; ) {
      short multiplicity=0;
      while((N % div)==0) {
        multiplicity++;
        N /= div; // reduce N
      }
      if(multiplicity>0) {
        primesWithMultiplicity.put(div, multiplicity);
      }
      div+= (div == 2 ? 1 : 2); // from 2 to 3, but then going only on odd numbers
    }
    // done.. well almost, if N is prime, then 
    // trying to divide up to sqrt(N) will lead an empty result. But,
    // in this case, N will still be at original value (as opposed 
    // to being 1 if complete factored)
    if(N>1) {
      primesWithMultiplicity.put(N, (short)1);
    }
  }

  static int countDistinctCompositePairs(long N) {
    HashMap<Long, Short> factoringResults=new HashMap<>();
    factor(N, factoringResults);
    int ret=1;
    for(short multiplicity : factoringResults.values()) {
      ret*=multiplicity;
    }
    return ret/2;
  }

  static public void main(String[] args) {
    System.out.println(countDistinctCompositePairs(24));
  }
}

这对我也有用。稍微复杂一点,我是在plesk服务器上做的。

将上面的行添加到我在

中创建的vhost文件中
<Files ~ "^\.ht">
    Order allow,deny
    Allow from all
    Satisfy All
</Files>

我运行以下来重建conf文件

/var/www/vhosts/system/[your domain]/conf

并且comit工作了!

谢谢,希望这可以帮助人们使用plesk