zoukankan      html  css  js  c++  java
  • 解决svn: Cannot negotiate authentication mechanism错误问题

    解决svn: Cannot negotiate authentication mechanism错误问题
    作者:wangzz
    转载请注明出处

    前言:

    在企业项目开发中,svn是很常用的代码版本管理工具,我习惯了使用Xcode配合命令行进行svn管理。最近换了公司,郁闷的是新公司只能使用第三方svn管理工具,比如cornerstone来管理svn。

    问题描述:

    在Xcode上配置svn响应源的时候直接报错:Host is unreachable

    通过命令行访问svn的时候,比如执行svn update命令时,报错:svn: Cannot negotiate authentication mechanism(无法协商认证机制)

    原因定位:

    针对上述问题,开始想解决办法。

    1、由于公司的svn使用的是VPN网络,首先怀疑是VPN捣的鬼,因此开始着手配置VPN网络,倒腾了半天,问题未解决,此路不通。

    2、求助李鹏同学,他在一个论坛里找到了问题原因:是由于svn服务器开启了sasl加密,本地的Xcode和命令行中的svn不支持sasl加密导致无法协商认证机制问题。至此开始朝为电脑安装sasl的方向努力。很兴奋的到网上下了一个sasl安装包,安装以后并未起作用,很是纳闷。后来偶尔在一篇博客中看到,较高版本的svn已经支持sasl加解密了,于是开始着手升级svn版本。目前我用的MAC OS10.8系统支持的svn最新版本是:1.7.11,而10.8系统和我的Xcode4.5.2自带的的svn版本是1.6.18,开始寻找升级方案。

    问题解决:

    从网上找了svn安装包的下载地址:http://www.wandisco.com/subversion/download#osx

    找到了自己系统支持的版本,由于是dmg文件,安装很方便,程序会安装到/opt/subversion目录下面。接下来还需要做些配置设置:

    1、替换系统原来的svn

    系统的svn安装目录是:

    /usr/bin/svn

    可以通过以下方式查看:

    $ ls /usr/bin/svn* 
    /usr/bin/svn           /usr/bin/svndumpfilter /usr/bin/svnrdump      /usr/bin/svnsync 
    /usr/bin/svnadmin      /usr/bin/svnlook       /usr/bin/svnserve      /usr/bin/svnversion 

    ①先把这些文件删除,不放心的话可以先备份一下,执行以下删除命令:

    sudo rm -rf /usr/bin/svn*

    ②建立svn安装目录到系统安装目录的链接,执行以下命令:

    sudo ln -s /opt/subversion/bin/svn* /usr/bin/ 

    ③验证是否升级成功

    执行命令:

    svn --version

    验证是否安装了新的svn版本。

    2、替换Xcode中的svn

    由于系统和Xcode中使用的是两个不同的svn,要想在Xcode中使用svn还要单独配置。

    不同版本的Xcode的svn目录可能稍有不同,我的4.5.2版本svn路径是:

    /Applications/Xcode.app/Contents/Developer/usr/bin/

    进到该目录后,执行以下命令,查看跟svn想管的文件:

    $ ls svn*
    svn		svnadmin	svndumpfilter	svnlook		svnrdump	svnserve	svnsync		svnversion

    ①删除原来的svn文件,执行下面的命令:

    sudo rm -rf svn*

    ②创建文件连接:

    sudo ln -s /opt/subversion/bin/svn* .

    3、升级旧版本svn更新下来的代码
    如果你使用1.6版本的SVN客户端检出了代码,使用1.7版本的客户端的时候,可能会出一些版本不兼容的问题,解决办法是切入到代码工程所在根目录,执行以下命令进行转换

    $ svn upgrade 

    至此,问题解决!



  • 相关阅读:
    ubuntu下如何关闭某个端口?
    linux如何将某个用户加入到其它组?
    linux如何离线加载docker镜像?
    linux下如何查看当前内核的配置?
    linux下如何单独编译设备树?
    在编译内核之前到底应该使用make mrproper,make distclean,make clean中的哪个命令呢?
    dts是如何来描述iommu与PCI(e)之间的关系?
    iommu是干什么的呢?
    ubuntu下如何使用apt-get安装arm64的交叉编译工具链?
    oracle 10g函数大全--日期型函数
  • 原文地址:https://www.cnblogs.com/james1207/p/3289833.html
Copyright © 2011-2022 走看看