SVN安装及报错的解决方法

1. Centos7系统下svn的安装与配置

参考网址:
Linux centos7系统下svn的安装与配置
linux安装svn服务器(yum方式)

前提概要:

安装完毕后,需要手动创建仓库:选定目录/data/svn作为仓库总目录,在其中创建子目录/data/svn/repo111 /data/svn/repo222作为各项目的仓库。操作步骤如下:

  1. 安装SVN服务端:yum -y install subversion

  2. 创建各项目的仓库目录:mkdir -p /data/svn/repo111

  3. 生成仓库文件:svnadmin create /data/svn/repo111

  4. 创建用户密码:修改文件vi /data/svn/repo111/conf/passwd

    [users]
    name=password
    

    name为用户名,password为密码

  5. 配置权限:修改文件vi /data/svn/repo111/conf/authz

    #设置[/]代表根目录下所有的资源
    [/]
    name=rw
    

    设置[/]代表根目录下所有的资源,可以修改为具体路径,以此进行精细控制。

    name即用户名,rw为读写权限

  6. 配置服务:修改文件vi /data/svn/repo111/conf/svnserve.conf

    [general]
    #匿名访问的权限,可以是read,write,none,默认为read
    anon-access=none
    #使授权用户有写权限 
    auth-access=write
    #密码数据库的路径 
    password-db=passwd
    #访问控制文件 
    authz-db=authz
    #认证命名空间,subversion会在认证提示里显示,并且作为凭证缓存的关键字 
    realm=/data/svn/repo111
    
  7. 启动SVN服务:svnserve -d -r /data/svn --listen-port=3690

  8. 在客户端上的空文件夹里直接检出,地址填写svn://IP地址/repo111即可。

注意事项:

1、以上语句都必须顶格写,左侧不能留空格,否则会出错。
2、第4步可以修改[/]为具体路径,以此进行精细控制。
3、第6步中的--listen-port=3690可以省略,则默认使用3690端口访问。
4、可以在SVN服务端运行时直接新建新的项目仓库,并且不必重启服务端就能在客户端直接检出。

特别说明: Linux中与Windows中的SVN服务端有所不同。

  • Windows中是创建全局的用户和权限,再给每个用户分配各个项目仓库的读写权限。
  • 而Linux中是先创建项目仓库,再在每个项目仓库中单独创建用户和权限。也就是说各个项目仓库之间是没有任何联系的,用户也不通用。

其它指令(Linux):

  • 查看版本:rpm -qa subversion

  • 查看安装位置:rpm -ql subversion

  • 查看svn服务是否启动:ps aux|grep svnserve

    • 若已启动,则会出现两条,其中一条带有仓库总目录的地址信息。
    • 若只有一条且没有仓库总目录的地址信息,则说明启动失败。
  • 启动SVN服务:svnserve -d -r 仓库总目录 --listen-port=3690

  • 停止SVN服务:kill -s 9 SVN服务的PID

2. SVN服务端迁移(Windows)

1、导出:svnadmin dump 项目仓库的完整路径 > 导出的保存位置
例如 将项目MyProject导出为文件并放到桌面:
svnadmin dump C:\Repositories\MyProject > C:\Users\Administrator\Desktop\MyProject.dump

2、导入:
在目标主机上,使用svn server新建一个空的Repository
svnadmin load 空项目仓库的完整路径 < dump文件的完整路径
例如 将项目MyProject导入到新仓库MyProject2:
svnadmin load D:\Reposiories\MyProject2 < C:\Users\Administrator\Desktop\MyProject.dump

3. 删除刚提交的版本

参考网址: 从SVN删除已提交的版本号

操作步骤:

比如刚上传了版本,版本号为667,发现提交有误需要删除667回到666。

  1. 在服务端停止SVN服务;

    • Linux:执行ps -ef | grep svnserver 查看进程ID,再执行kill -s 9 进程ID
    • Windows:待补充…
  2. 进入项目仓库地址\项目名\db文件夹,使用navicat打开rep-cache.db文件,进入rep_cache表,找到revision字段值为667的记录并删除;

    1、如果是Linux机器,则将rep-cache.db文件弄到Windows机器上,操作完毕再弄回去覆盖原文件;

    2、打开rep-cache.db文件的方式:鼠标右键该文件,在打开方式中选择navicat即可;

    3、本步骤还有一个简单方法:直接删除rep-cache.db文件。但我不知道会不会造成其它影响,所以不建议。

  3. 进入项目仓库地址\项目名\db\revprops\0文件夹,删除其内的667文件;

  4. 进入项目仓库地址\项目名\db\revs\0文件夹,删除其内的667文件;

  5. 进入项目仓库地址\项目名\db文件夹,修改current文件和txn-current文件,将两个文件中的值都改为666;

  6. 重新启动服务端;

    • Linux:执行svnserve -d -r 项目仓库地址
    • Windows:待补充…
  7. 在客户端清除项目的SVN缓存;

    但是我不知道该咋清缓存(欸嘿 (╹ڡ╹ ))。
    因为此时服务端的最新版本已经回到666版本了,所以我的做法是从服务端重新检出项目的最新版本的全部文件,然后将其中的.svn文件夹替换掉原先项目的.svn文件夹,其它文件就可以全部删除了。

  8. 在客户端检查667版本是否已消除,并重新提交667版本,完毕。

强调说明:
该方法仅限删除最新且连续的版本号,比如最新版本是667则可以删除667或665-667或660-667或100-667等等。
但绝对不能删除中间的版本号,比如最新版本是667,则不能删除666或660-666或600-610等等。否则会造成服务端检索异常且一直存在该异常。

4. 客户端命令行指令

参考网址: https://www.cnblogs.com/wpcnblog/p/8961051.html

查询svn命令的帮助:svn help
查询子命令的帮助:svn help [子命令],如svn help ci

svn relocate 旧地址 新地址
在工作目录下更改服务端地址:svn relocate svn://192.168.1.100/Notes svn://192.168.2.200/Notes

常用命令格式与举例
导入项目
svn import http://svn.chinasvn.com:82/pthread --message “Start project”

导出项目
svn checkout http://svn.chinasvn.com:82/pthread

采用 export 的方式来导出一份“干净”的项目
svn export http://svn.chinasvn.com:82/pthread pthread

为失败的事务清场
svn cleanup

在本地进行代码修改,检查修改状态
svn status -v
svn diff

更新(update)服务器数据到本地
svn update directory
svn update file

增加(add)本地数据到服务器
svn add file.c
svn add dir

对文件进行改名和删除
svn mv b.c bb.c
svn rm d.c

提交(commit)全部本地文档到服务器
svn commit
svn ci
svn ci -m “commit”
提交指定文档
svn changelist 任意命名 文件路径及文件名名
svn commit --changelist 任意命名 -m “说明信息”

查看日志
svn log directory
svn log file

5. SVN报错

5.1 SVN报错:E160028

详细描述: 提交代码失败,报错:svn: E160028: Directory '/' is out of date

原因分析: 不明。客户端与服务端不一致。

解决方法: 先更新,再重新提交。

5.2 SVN报错:E170013、E230001

详细描述: 无故报错: Error:svn: E170013: Unable to connect to a repository at URL 'https://192.168.43.101:8443/svn/AccountBook/trunk' svn: E230001: Server SSL certificate verification failed: certificate issued for a different hostname, issuer is not trusted

原因分析: 不明。可能是什么原因导致证书验证失败。

解决方法: 原项目不用操作,然后新建一个文件夹重新检出该项目,在弹框中选择“永久接受certificate”,然后就可以正常操作原项目了。

5.3 SVN报错:拒绝访问

详细描述: 鼠标右键在空目录中检出项目时报错:无法创建目录 “D:\Program Files\Passware Kit 2022 zh\resources\locales\en\.svn”: 拒绝访问

原因分析: 上级目录D:\Program Files需要管理员权限才能操作,而右键检出功能无法改为管理员权限来运行。

解决方法: 用管理员权限打开CMD,再在CMD中用指令检出项目:svn checkout "http://ip:端口号/仓库名称/文件路径"

5.4 SVN报错:E200009

详细描述: 新建项目并使用IDEA提交到SVN时报错:svn: E200009: Commit failed (details follow): svn: E200009: 'D:\workspaces\project\鏈哄櫒鎬ц兘.xmind' is not under version control

原因分析:

  • 某种原因导致读到中文文件名乱码,而SVN按乱码后的文件名去找文件发现找不到,就报了这个错误。
  • 网上还看到有说,如果文件名有空格也会导致报这个错误。

解决方法:

  • 在IDEA中先将项目里没有中文的文件上传完毕;
  • 再打开CMD并进入项目目录(通常是有.svn文件夹的那个目录),执行指令:svn ci -m "备注说明",即可。

5.5 SVN报错:

详细描述: 遇到了再补充

原因分析:

解决方法:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值