svn 从入门到放弃

1. 安装 svn   yum install subversion  安装svn扩展
2. mkdir /svnroot  创建svn文件夹
3. svnadmin create /svnroot/imooc 创建版本库 (绝对路径)
4. cd /svnroot             进入svn目录
5. svnadmin create imooc2   创建版本库(相对路径)
6. rm -rf /imooc2  (删除版本库 请再三确保版本库没用了) 
7.  conf/    文件简介
          authz     配置用户组以及用户组权限
          passwd  配置用户名和密码
          svnserve.conf  配置默认权限、权限配置文件及密码配置文件
8. 概念说明:
       更新    从服务器上下载最新的文件
       提交    从本地上传最新的文件
9. 修改配置文件 svnserve.conf
     # anon-access = read   未经验证用户(没有用户名密码)可以干什么(更新)
     # auth-access = write     通过验证的用户可以干什么 
     注: 去掉这两行注释   可选值有3个  none 什么都干不了  read  可以更新    write 允许提交和更新代码
     # password-db = passwd    指定用户名及密码配置文件路径  
     # authz-db = authz              指定权限分组配置文件路径
     注: 去掉这两行注释    路径支持绝对和相对 默认为conf文件下同级文件   修改后注意文件需要读写权限
10. 修改配置文件 password  (存放当前版本库用户名和密码) 增加相应用户名和密码 (顶格写 千万别有空格)
 11. 修改配置文件 authz 
        [aliases]    别名  暂时先不管
        [groups]    组配置
          @组名 =  用户,用户   @必须加
         [/]   版本库根目录
         @组名 =  权限 
         [imooc:/]
          只针对指定版本库制定权限
          cdd = rw   对单个用户制定权限
         [repos:/xxx]  版本库下文件夹制定权限
          * = r   所有人都有r权限
      例:
       [aliases]
       # joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, 
       Ltd./OU=Research Institute/CN=Joe     Average
  
       [groups]
        # harry_and_sally = harry,sally
       # harry_sally_and_joe = harry,sally,&joe
       dev = cdd
  
       [/]
       @dev = rw
  
       [imooc:/]
       @dev = rw
       cdd = rw


 12.  svnserve -d -r /svnroot/imooc/    启动版本库
       svnserve -d -r /svnroot/hello --listen-port 3691   启动另一个版本库修改其端口号
 13. svn co svn://127.0.0.1   连接svn (回到你自己想要的目录下)
       svn co svn://127.0.0.1:3692   cdd1  连接svn 指定端口号和目录
 14. ls -a 能查看到 .svn 证明成功
    附: windows svn客户端下载地址 
    链接:http://pan.baidu.com/s/1mhXpNRE 密码:v4gh
 15. windows操作: 新建一个文件夹右键检出  地址例: svn:// xxxx
文件夹里有.svn隐藏文件 就妥了



  16.   svn开机启动
         vim /etc/rc.d/rc.local
         /usr/bin/svnserve -d -r /svnroot/imooc (加入一行)
         chmod +x rc.local   给下执行权限


checkout  检出      检出文件包含.svn文件夹
  svn checkout svn://127.0.0.1/imooc
export 导出           导出文件不包含.svn文件夹

客户端命令
  add   添加到版本控制
     svn add index.html 一次添加一个文件
     svn add js --non-recursive   只添加文件夹 不添加下面的文件 
     svn add *  添加所有文件  如果文件夹已经存在 则不扫描里面文件
     svn add * --force   添加所有文件  强制执行   有文件夹也扫描里面文件

commit = ci  把记录提交到服务器
    svn ci -m "new message" *    把所有记录提交到服务端
    
update  up   更新  (系统只会更新一次文件 想强制更新 加* 或者删除文件重新更新)
   svn up  获取服务器上最新的数据
   svn up -r 1 index.html      svn  up  -r  版本号 文件名  
   svn up * 强制更新所有文件

delete del remove rm 
  svn rm contact.html  从版本库中删除一个文件
  
diff di  版本差异比较
 svn di index.html      svn di 需要比较的文件
例子:
            Index: index.html              对比的文件
           ===================================================================
           --- index.html   (revision 3)          -号代表最后一次获取的内容  revision3 版本3        
           +++ index.html   (working copy)    +号表示工作副本中修改的内容
           @@ -0,0 +1,11 @@                      -0,0  存在差异的文件行号   +1,11 本地文件存在差异的行号
           +                                          存在差异的内容
           +    
           +        
           -        title                   会把减号的内容删除
           +        index title          会把加号的内容添加进去
           +    
           +    
           +        

This is the 1st line content in index.html.

+

This is the 1st line content in index.html.

+

This is the 1st line content in index.html.

+ + svn di -r 2 index.html 比较当前文件和版本2文件的差异 svn di -r 1:3 index.html 比较版本1和版本3文件的差异 svn di 扫描所有文件 列出有修改的所有文件的对比 mkdir 创建目录并增加到版本控制 svn mkdir abc svn mkdir 文件夹名 创建一个文件夹 并上传到版本库中 cat 不检出工作副本直接查看制定文件 svn cat svn://127.0.0.1/index.html svn cat svn完整路径+要看的文件 revert 工作副本还原 (默认情况下只会扫描当前目录) svn revert index.html 复原index.html 到版本库上最新版本 svn revert * 复原所有文件到版本库上最新版本 svn revert --recursive * 递归扫描所有文件复原到版本库上最新版本 文件冲突 Select: (p) postpone, (df) diff-full, (e) edit, p 延迟处理 df 显示差异 e 编辑 (mc) mine-conflict, (tc) theirs-conflict, mc 保留我的版本 tc保留他人的版本 (s) show all options: df 例: title +<<<<<<< .mine +

I am B

自己的版本 +======= +

I am a

对方的版本 +>>>>>>> .r5

This is the 1st line content in index.html.

This is the 1st line content in index.html.

This is the 1st line content in index.html.

解决冲突 svn resolve --accept [base | working | mine-conflict | theirs-conflict | mine-full | theirs-full] [conflicting file] base 将[your_file].merge-left.[version]做为最终结果 working 把[your_file]解决冲突后的结果做为最终结果 mine-conflict 将[your_file].working做为最终结果 theirs-conflict 将[your_file].merge-right.[version]做为最终结果 mine-full 将所有[your_file].working做为最终结果 theirs-full 将所有[your_file].merge-right.[version]做为最终结果 resolved 告诉服务器冲突已经解决 svn resolved index.html 告诉服务器你的冲突解决了 svn resolved 文件名 lock 锁定 svn lock index.html 锁定index.html 锁定过程中别人无法提交 自己提交后默认会解锁 unlock 解锁 svn unlock index.html 解除锁定 解除后其他人能正常操作 svn ci -m ‘’ --no-unlock index.html 提交后不解除锁定 进阶应用 ls list 列出当前目录下处于版本控制的所有文件 svn ls 列出当前目录下处于版本控制的所有文件 不会列出文件夹下的文件 svn ls --recursive 列出当前目录下处于版本控制的所有文件包括文件夹下子文件 svn ls -v 列出文件的详细信息 svn ls -v --recursive 递归列出文件和文件夹下的子文件的详细信息 st status 列出工作副本中的文件(夹)的状态 svn st 列出工作副本中的文件(夹)的状态 例: ? test.html 参数: ? 无版本控制 D 已被标记从版本库中删除 M 已经被编辑过 A 已被标记增加到版本控制中 R 文件被替换 C 文件存在冲突 ! 文件缺失 log 查看提交日志(来自svn ci 的 -m 参数) svn log 列出版本更新记录 以及备注信息 svn log index.html 只列出index.html 的版本更新记录 info 工作副本及文件(夹)的详细信息 svn info 查看工作副本及文件(夹)的详细信息 svn info index.html 只查看index.html的详细信息 svn info --xml 查看工作副本及文件(夹)的详细信息以xml格式显示 多版本库解决办法 1. 指定端口号例: svnserve -d -r /svnroot/hello --listen-port 3691 启动时指定端口号 svn co svn://127.0.0.1:3691 连接时指定端口号 2. 创建版本库父级 svnserve -d -r /svnroot/ 启动版本库指定父级目录 svn co svn://127.0.0.1/imooc 连接时指定版本库文件夹 进行连接 cp copy 复制命令 本地->本地 svn cp index.html cpindex.html 复制并上传到版本库 svn cp -r 4 index.html index4.html 复制版本4的文件到版本库 本地->版本库 svn cp index.html svn://127.0.0.1/imooc/target1.html -m "copy a file" 直接复制到版本库 不经过本地文件 (不支持跨库操作) svn cp -r 4 index.html svn://127.0.0.1/imooc/target1.html -m "copy a file" 指定某版本直接复制到版本库 不经过本地文件(不支持跨库操作) 版本库->本地 svn cp svn://127.0.0.1/imooc/index.html demo.html 从版本库中复制文件到本地 并加入版本库 svn cp svn://127.0.0.1/hello/index.html demo2.html 跨版本库复制文件到本地 并加入版本库 版本库->版本库 svn cp svn://127.0.0.1/imooc/ svn://127.0.0.1/imooc/trunk -m "set a trunk" 从版本库赋值到版本库 不能跨版本库 所有只能复制到子目录 主干版本 svn cp svn://127.0.0.1/imooc/ svn://127.0.0.1/imooc/brank -m "set a brank" 从版本库赋值到版本库 不能跨版本库 所有只能复制到子目录 分之版本 推荐 新建版本库时 默认创建上面2个版本库 svn 管理员操作 hooks/ 钩子 start 数据传输开始之前 pre 数据传输之后写入数据之前 post 写入版本库之后 使用方法 赋值一份钩子 去掉.tmpl 在里面写自己的shell脚本 例: 修改文件:post-commit chmod +x post-commit 记得给执行权限 svn info svn://47.93.0.92/imooc --xml >> /usr/local/nginx/html/repo.xml killall svnserve svnserve -d -r imooc 结束进程 重启svn版本库 丢弃与精简版本库 killall svnserve 停止服务 svnadmin dump /svnroot/imooc/ -r 6:16 > ~/imooc.repo 复制版本库6~16 保存到制定文件 svnadmin dump 服务器路径 svnadmin create /svnroot/newimooc/ 创建版本库 svnadmin load svnroot/newimooc/ < ~/imooc.repo 导入版本库 cp -av /svnroot/imooc/conf/* /svnroot/newimooc/conf/ 复制所有配置文件 rm -rvf /svnroot/imooc 删除版本库 svnserve -d -r /svnroot/ 启动新版本库 svn checkout svn://127.0.0.1/imooc 用户重新检出版本库 版本库迁移 1. 复制版本库第一条到最新一条 然后到新服务器导入 重新运行 2. 打包版本库文件 到新版本库解压运行 svn switch(sw) --relocate svn://127.0.0.1/word svn://127.0.0.1/newword

你可能感兴趣的:(svn 从入门到放弃)