VisualSVN Server[1] 是 Windows 平台上流行的 SVN 形式的代码管理工具。以下我们将介绍把 NAS SMB 卷作为 VisualSVN 代码库存储中心时会遇到的几个问题以及相应的解决方法。
1. 安装错误的解决方法
我们以 VisualSVN Server 3.3.1 版本为例,在安装 VisualSVN Server 时我们可以选择使用 NAS SMB 卷的 UNC 路径作为 repo ,但是这样选会提示无法安装:
![9bfe04e7ba409dd95657e5b4a4fae413.png](https://img-blog.csdnimg.cn/img_convert/9bfe04e7ba409dd95657e5b4a4fae413.png)
接着我们尝试将NAS SMB卷挂载到一个盘符上然后再安装,安装过程中会出错:
![5b679c9a35f236dfe772efd07721ea90.png](https://img-blog.csdnimg.cn/img_convert/5b679c9a35f236dfe772efd07721ea90.png)
1.1. 解决方法
这个问题的解决办法就是用 SYSTEM 账号挂载 NAS SMB 卷,然后用新挂载的盘符作为 repo 的安装地址。具体 SYSTEM 账号挂载 NAS SMB 卷的方法请参见 以SYSTEM身份挂载文件卷解决SQLServer使用NAS SMB文件卷等问题[2](https://yq.aliyun.com/articles/715687)。
注意 SYSTEM 账号挂载成功之后在文件管理器上会显示成叉号,但是是可以使用的。
![11bc12a6422ea9af246e0028f8dbadc7.png](https://img-blog.csdnimg.cn/img_convert/11bc12a6422ea9af246e0028f8dbadc7.png)
在 Y: 盘安装,
![d6da93e6bc420a3649b1196e7152d4c0.png](https://img-blog.csdnimg.cn/img_convert/d6da93e6bc420a3649b1196e7152d4c0.png)
提示要用 UNC 路径,请忽略,
![3c3c29e5933e64cf69302da2fbe6e91a.png](https://img-blog.csdnimg.cn/img_convert/3c3c29e5933e64cf69302da2fbe6e91a.png)
最终 VisualSVN 安装成功。
![e7c04f0ba820980cb1a814891779d3d2.png](https://img-blog.csdnimg.cn/img_convert/e7c04f0ba820980cb1a814891779d3d2.png)
2. 打开代码库 URL 时提示内部错误
创建代码库 repo 之后,打开代码库的 URL 时会提示内部错误:
![78db9c46f76909890ae3e1a3a1acf4c4.png](https://img-blog.csdnimg.cn/img_convert/78db9c46f76909890ae3e1a3a1acf4c4.png)
![6d8449d2a255cce2ae4c97bb68e4f3a0.png](https://img-blog.csdnimg.cn/img_convert/6d8449d2a255cce2ae4c97bb68e4f3a0.png)
查看日志可以发现如下错误:Could not open password file: Y:/Repositories/htpasswd
![05ac3f4ad138934eab202ab718f5a055.png](https://img-blog.csdnimg.cn/img_convert/05ac3f4ad138934eab202ab718f5a055.png)
2.1. 解决方法
经过实验后发现安装AD服务可以解决这个错误。安装AD的方法可以参考这一篇文章:通过安装和配置AD域解决Windows Server 2016的IIS无法加载SMB文件卷文件的问题[3](https://yq.aliyun.com/articles/692463)。
配置AD域控制器结束后会重启,重启完成之后登陆新的代码库 URL 就不会出现错误了。这时候需要在代码库上配置一个用户,然后就可以登陆进代码库网页。
忽略这个证书错误:
![675d3dce48514e76369a551849d8a956.png](https://img-blog.csdnimg.cn/img_convert/675d3dce48514e76369a551849d8a956.png)
不会出现 internal error:
![fa338a5e82b9ebb67759d3e7469fe8ac.png](https://img-blog.csdnimg.cn/img_convert/fa338a5e82b9ebb67759d3e7469fe8ac.png)
配置 VisualSVN 用户:
![078b4b380322005f276245410e17fa6c.png](https://img-blog.csdnimg.cn/img_convert/078b4b380322005f276245410e17fa6c.png)
登陆成功:
![ffa09df9752d3e0ca768bc8f36863cf1.png](https://img-blog.csdnimg.cn/img_convert/ffa09df9752d3e0ca768bc8f36863cf1.png)
3. 如何使用 SVN 上传下载代码
在 Windows 环境下比较常用的办法是使用 TortoiseSVN 客户端或者 VisualStudio SVN 插件来连接 SVN 上传下载代码。
3.1. TortoiseSVN
TortoiseSVN 可以在其官网下载。
![80b398ef1449e74ab45e0f9e23f9a933.png](https://img-blog.csdnimg.cn/img_convert/80b398ef1449e74ab45e0f9e23f9a933.png)
安装完成之后打开命令行,使用以下命令:
svn checkout https://iis-test-2019.iis-test2016.com/svn/repo/
svn add helloworld.txt
svn status
svn commit -m "Initial Commit"
![1108463f6c289ed4c2928c1b883c6639.png](https://img-blog.csdnimg.cn/img_convert/1108463f6c289ed4c2928c1b883c6639.png)
![24a5c735d83fbffc29e50e2738f599ab.png](https://img-blog.csdnimg.cn/img_convert/24a5c735d83fbffc29e50e2738f599ab.png)
![91afb6707fde82218876bac6ae8718c1.png](https://img-blog.csdnimg.cn/img_convert/91afb6707fde82218876bac6ae8718c1.png)
![e09e7df401208798c2b5ff6e2d9f9526.png](https://img-blog.csdnimg.cn/img_convert/e09e7df401208798c2b5ff6e2d9f9526.png)
以上就是 svn 命令行加 VisualSVN 在 NAS SMB 卷上的基本使用方法。
3.2. Visual Studio Code SVN 插件
Visual Studio Code 是 Windows 平台广泛使用的开发 IDE。它可以通过安装插件的方式支持 SVN。
![d9f718b82eea11ce44dda08351b00e73.png](https://img-blog.csdnimg.cn/img_convert/d9f718b82eea11ce44dda08351b00e73.png)
安装完插件之后打开刚才svn同步下来的文件夹,就可以看到SVN历史以及添加和上传新文件。
![4989527c0757d694905ecfd804e8288c.png](https://img-blog.csdnimg.cn/img_convert/4989527c0757d694905ecfd804e8288c.png)
![b28d76cfd5a8c1b63a9e73cdcf70e8dd.png](https://img-blog.csdnimg.cn/img_convert/b28d76cfd5a8c1b63a9e73cdcf70e8dd.png)
![ea3eb437c4acf483d8e357e57f78e331.png](https://img-blog.csdnimg.cn/img_convert/ea3eb437c4acf483d8e357e57f78e331.png)
3.3. Visual Studio SVN 插件
可以在 Visual SVN 官网下载 VisualSVN for Visual Studio插件。
安装完插件之后打开刚才svn同步下来的文件夹,创建helloworld3.txt,并添加到 SVN
![b394670edf485189151bd30f658c3c94.png](https://img-blog.csdnimg.cn/img_convert/b394670edf485189151bd30f658c3c94.png)
![af102bd1ba1db9d2abe8ea8fe14f9513.png](https://img-blog.csdnimg.cn/img_convert/af102bd1ba1db9d2abe8ea8fe14f9513.png)
![91c46d164336236ad4b0cc44e3c4a00b.png](https://img-blog.csdnimg.cn/img_convert/91c46d164336236ad4b0cc44e3c4a00b.png)
![40fb085794a065d1f67715557c7017a4.png](https://img-blog.csdnimg.cn/img_convert/40fb085794a065d1f67715557c7017a4.png)
4. 参考文档
4.1. VisualSVN Server: https://www.visualsvn.com/server/
4.2. 以SYSTEM身份挂载文件卷解决SQLServer使用NAS SMB文件卷等问题:https://yq.aliyun.com/articles/715687
4.3. 通过安装和配置AD域解决Windows Server 2016的IIS无法加载SMB文件卷文件的问题:https://yq.aliyun.com/articles/692463
本文为云栖社区原创内容,未经允许不得转载。