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 本地文件存在差异的行号
           +<html>                                          存在差异的内容
           +    <head>
           +        <meta charset="UTF-8">
           -        <title>title</title>                   会把减号的内容删除
           +        <title>index title</title>          会把加号的内容添加进去
           +    </head>
           +    <body>
           +        <p>This is  the 1st line content in index.html.</p>
           +        <p>This is  the 1st line content in index.html.</p>
           +        <p>This is  the 1st line content in index.html.</p>
           +    </body>
           +</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>title</title>
    </head>
    <body>
                      +<<<<<<< .mine
                     +      <p>I am B</p>                     自己的版本
                     +=======
                     +      <p>I am a</p>                      对方的版本
                     +>>>>>>> .r5
             <p>This is  the 1st line content in index.html.</p>
             <p>This is  the 1st line content in index.html.</p>
                     <p>This is  the 1st line content in index.html.</p>
                        </body>
                      </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 









    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容