美文网首页
SVN 常用的一些命令

SVN 常用的一些命令

作者: DayDayUpppppp | 来源:发表于2019-01-27 17:21 被阅读0次
    服务器端的安装和配置
    apt get install 
    
    1. 创建代码仓库
    cd ~/zz/test_svn
    mkdir  myCode
    svnadmin create myCode   
    
    1. 配置
    zz@ubuntu:~/test_svn/myCode$ tree -L 1
    .
    ├── conf
    ├── db
    ├── format
    ├── hooks
    ├── locks
    └── README.txt
    4 directories, 2 files
    

    修改svnserve.conf文件,将下列配置项前面的#和空格都去掉

    # 去掉注释
    auth-access = write
    password-db = passwd
    authz-db = authz
    
    # 修改
    anon-access = none   
    

    修改passwd文件

    修改passwd文件,在[users]下面添加账号和密码,如:
    [users]
    henry = 725
    cathy = 111
    roger = 121
    

    修改authz文件,配置用户组和权限
    将不同的用户进行分组,对组中用户进行统一管理

    [groups]
    topgroup = henry,cathy
    [/]
    @topgroup = rw
    

    启动服务

    zz@ubuntu:~/test_svn$ svnserve  -d  -r ./myCode/
    

    客户端配置
    • 项目代码导入
    zz@ubuntu:~/test_svn$ svn import /home/zz/code/train svn://localhost/mycode/prj --username=henry --password=725 -m"初始化导入" 
    Adding         /home/zz/code/train/searchTrain.py
    Adding         /home/zz/code/train/stations.py
    Committing transaction...
    Committed revision 1.
    
    • 项目代码拉取
    sudo svn checkout svn://localhost/mycode/prj /usr/local/svnrep/ --username=cathy --password=111
    

    常用的几个svn的命令
    • 拉代码
    svn co svn+ssh://xxxxxxx
    
    • 更新
    # 更新到最新的版本
    svn update 
    
    # 更新到某一个版本
    svn update -r xxxx
    
    • 查看版本的信息
    svn log | less
    svn log -v | less
    
    • 查看变更
      比如,拉下来一份代码,然后在本地修改了一些,想看一下哪些文件修改了。
    svn st
    svn st -q
    
    A 新增
    D 删除
    M 修改
    R 替代
    C 冲突
    I 忽略
    ? 未添加到版本管理
    ! 文件丢失
    
    • 还原 revert( 修改过的东西没有提交 commit )
      丢弃掉本地的更改
    ## 还原一个文件
    svn revert xxxx.c
    
    ## 还原一个目录
    svn revert -R xxxx   # -R 表示递归 
    
    svn revert -R .    # 将当前目录下面的修改过的文件丢弃掉
    
    • merge
    
    

    查看指定版本的文件

    svn cat -r 3 readme.md      # 查看指定版本文件
    
    • 查看变更
    svn diff        # 对比当前本地的工作拷贝文件(working copy)和缓存在.svn下的版本库文件的区别
    svn diff -rA    # 对比当前本地的工作拷贝文件(working copy)和任意版本A的差异
    svn diff -rA:B  # 对比任意历史版本A和任意历史版本B的差异
    
    • 提交代码
    svn commit -m 'xxxxx'
    
    • 查看某个版本提交了哪些文件
    svn log -r2138 -v
    
    • 查看某个版本改动的较上一个版本改动了哪些文件
    svn diff -c 2138
    
    • 把某个文件还原到历史上的某一个版本
    # svn log myfile.py
    svn up -r 147 myfile.py
    
    • 查看当前目录下面哪些文件在版本库中
    svn list
    
    • svn提交之后回滚
    svn已经commit之后,需要回滚
    1. 找到自己提交错误的版本号,比如1000
    2. svn merge回滚:svn merge -r 10000:9999 ./
    

    svn 冲突的时候的解决办法

    冲突的原因:
    在update 到 commit 之间,只要有人commit 同一份文件,那么我的 commit 就会出现冲突,提示 提交不成功。

    选择的做法有:

    选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,
    (mc) 我的版本, (tc) 他人的版本,
    (s) 显示全部选项:
    

    如果选择p:

    test.php.mine  test.php.r123  test.php  test.php.r107
    

    .mine 是我的修改,尚未update前的 test.php。
    .r107 是别人提交前的版本,尚未导致冲突的版本。
    .r123 是别人提交后的版本,导致冲突的版本。

    # 文件冲突原因:
    当两个或者两个以上开发人员同时修改一个文件的同一个地方,就会出现冲突
    
    # eg:
    A和B两位工程师,版本库最新版本为10,A和B checkout,版本都是10,没问题
    
    A 修改文件test的第一行为 A,然后提交到版本库,没问题,此时版本号已经是11了
    
    B 修改文件test的第一行为 B, 然后提交到版本库,svn提示需要更新本地工作区副本至最新版本11
    然后B执行 svn update , 又报错,提示文件冲突,需要手动解决,选择p
    
    这时候工作区出现了4个文件
    test    test.mine   test.r10    test.r11
    
    test        冲突后的文件,主要就是手动修改此文件就行
    test.mine   B修改后的文件test
    test.r10    B提交前的版本,也就是没有导致冲突的版本
    test.r11    A提交后的版本,就是A修改的文件test, 导致冲突
    
    ## 分两种情况
    1. A和B讨论后,决定保留A的修改,放弃B的修改:
    svn resolve --accept theirs-full test
    svn ci -m '保留A的更改'
    
    1. A和B讨论后,决定保留B的修改,放弃A的修改:
    svn resolve --accept working test
    svn ci -m '保留B的修改'
    
    # svn resolve 用法
    svn resolve --accept base FILE/DIR              # 保留test.r10
    svn resolve --accept working FILE/DIR           # 保留test
    svn resolve --accept mine-full FILE/DIR         # 保留test.mine
    svn resolve --accept theirs-full FILE/DIR       # 保留test.r11
    svn resolve --accept mine-conflict FILE/DIR     # 冲突部分以test.mine的为准
    svn resolve --accept theirs-conflict FILE/DIR   # 冲突部分以test.r11的为准
    

    参考:

    1. svn 配置 https://www.jianshu.com/p/a27849bde1d3

    2. svn 配置 https://blog.csdn.net/tojohnonly/article/details/79765583

    3. svn 命令 https://blog.csdn.net/yangzhongxuan/article/details/7018168

    4. https://www.cnblogs.com/laoguigame/p/4619348.html

    5. 一个不错的svn教程 : https://www.zfl9.com/svn.html#more


    svn log 可不读
    svn: E220001: Item is not readable
    解决 : https://blog.csdn.net/test1280/article/details/71022915

    相关文章

      网友评论

          本文标题:SVN 常用的一些命令

          本文链接:https://www.haomeiwen.com/subject/grsijqtx.html