工具&利器

svn使用记录

svn

中文手册 | Englis

env: svnserve, version 1.9.3 (r1718519)

svn有两种协议svn与http. 基于svnserve的,默认端口为3690, 基于Apache的, 默认端口为Apache的默认端口80.

tip: svnserve更改auth文件是即时生效的, 无需重启服务.

服务端配置

  • authz 设置用户或组对项目各目录的权限
  • passwd 设置用户与密码
  • svnserve.conf 服务主配置文件

auth配置

[group]
admin = aaa,bbb,ccc
vip = a1
man = b1
custom = c1   //这里先设定有这么多个角色和用户
        //假设库的名字叫cp
        //下面在cp下建立2个平行的目录vip和main
[/]
@admin=rw     //表示根目录下只有admin才有读写权限  
[cp:/]
*=r         //在cp库下,除了admin下,所有人都有读的权限
@admin=rw    //在cp库下,admin具有读写的权限
[cp:/vip] 
*=        //除了vip和admin之外,所有人没有任何权限
@vip=rw       //
@admin=rw        //
[cp:/main]
*=         //除了以下角色外,其他人没有任何权限
@admin=rw    //
@vip=rw    //
@man=r        //

tip: 如果上一级用户拥有权限但是没有拥有特定的这个权限的话, 是看不到的该文件夹的. 或者说, 拥有子目录权限但是没有主目录权限的话, 可以直接通过完全的子目录链接来达到访问的目的.

auth配置

客户端配置

rm ~/.subversion/auth/svn.simple/* 删除当前账户的所有旧svn密码记录 更多

界面操作

svn重命名

  1. 选中文件或者文件夹—右键—TortoiseSVN—改名。
  2. svn 提交

命令操作

svn add . --force 添加新文件及修改文件. tip: 通常情况下,命令svn add *会忽略所有已经在版本控制之下的目录,有时候,你会希望添加所有工作拷贝的未版本化文件,包括那些隐藏在深处的文件,可以使用svn add的–force递归到版本化的目录下. 更多 svn add * --force

svn add --non-recursive otherdir 只添加一个目录而不包括其内容 svn命令行忽略文件及文件夹

svn copy http://svn.example.com/project/trunk http://svn.example.com/project/branches/1.0 -m "Release 1.0" svn创建branches、tags命令 更多
svn rm http://svn.example.com/project/branches/1.0 -m "误创建" 删除branches, tags

svn switch svn://xx.com/repo/branches/TRY-something 把工作目录转到分支 tip: 切换之间要有关系 如 trunk branches之间可以切换 branches/ks branches/ks_1.0.1_beta之间不可以切换 错误信息: Path '.' does not share common version control ancestry with the requested switch location

cd br_feature001 svn merge http://svn_server/xxx_repository/trunk 合并主干上的最新代码到分支上 分支每次开发前要执行的命令. hook自动合并可否?

svn delete [文件] 删除文件

svn log -l 5 查看最后五条log 更多
svn ls svn://svn.example.com/tags 查看版本库的文件 ls -> log 可查看日志

撤销操作

svn revert --recursive example_folder 撤销svn add 

svn update -r [188-版本号]


svn: E220001: 遇到不可读的路径;拒绝访问.(SVN Error: Unreadable path encountered; access denied;)

在项目的conf/svnserve.conf 中, 设置 anon-access = none 即可. 然后重启Subversion 服务. tip: 如果本地SVN客户端查看过日志会有缓存, 需要在 设置->日志缓存->缓存的版本库 中删除有问题的版本缓存 再重新查看日志就好了. svn: E220001: 遇到不可读的路径,拒绝访问

当树冲突时 如错误提示出现

svn: E155015: 提交失败(细节如下):
svn: E155015: 提交终止: “/home/wwwroot/xxxxxx/Runtime/Cache” 处于冲突状态

svn resolved <文件名/文件夹名字 >

root@futongdai:~# cd /home/wwwroot/newcrm.ofim.com/
root@futongdai:/home/wwwroot/newcrm.ofim.com# svn up
正在升级 '.':
已跳过 'Admin/*****.php' -- 节点处于冲突状态
版本 1312。
冲突概要:
跳过的路径:1

解决方法

step1
root@futongdai:/home/wwwroot/newcrm.ofim.com# svn resolve --accept working Admin/*****.php
“Admin/*****.php”的冲突状态已解决
step2
root@futongdai:/home/wwwroot/newcrm.ofim.com# svn revert Admin/*****.php        
已恢复“Admin/*****.php”

svn 恢复 如果你 svn add * 后想取消 命令 svn revert * 或 svn revert * --depth infinity

查阅资料

SVN介绍及Linux下SVN命令收录
svn命令行创建和删除分支和tags 创建分支与合并, 写的很详细.

svn 回退/更新/取消至某个版本命令详解

发表评论