zoukankan      html  css  js  c++  java
  • svn基础知识一

    重要:

    SVN不是记录每一个版本的实际内容,只是记录版本间的差异

    SVN使用延迟拷贝来实现svn copy,其只是原始文件的一个链接,对拷贝的修改被svn记录为相对于原始文件的修改

    1.创建存储库

       假设d:/dev/svnrepo为存放svn存储库的目录

       svnadmin create d:/dev/svnrepo/test   创建一名为test的存储库

    2.导入项目

       假设你的项目在d:/dev/eclipse中的Test文件夹,你的当前目录为d:/dev/eclipse,你的svn存储库路径为http://localhost/svn/test

       svn import Test http://localhost/svn/test/OnlyTest -m "Initial Import"

       解释:导入的是Test文件夹下的内容 ;另外,注意要起一个路径名OnlyTest,否则全导入到http://localhost/svn/test下了;-m 为日志

    3.导出项目

       svn export <项目文件夹> <你的文件夹>

       svn export -r <version> <项目文件夹> <你的文件夹>

    -------------------------

    4.取出

       svn co(checkout) http://localhost/svn/test/OnlyTest   ---   将OnlyTest文件夹其下的文件取出来并建立默认文件夹OnlyTest

       svn co -r <url>  -- 取出特定版本

       svn co http://localhost/svn/test/OnlyTest MyTest  -- 将OnlyTest文件夹下的文件取出,放入新建立的文件夹MyTest中

    5.添加

      svn add *  --  svn会将未纳入版本控制的文件加入版本控制中(必须svn commit)

      svn add --non-recursive *   非递归添加

    6.删除

       svn delete(rm,remove,del) <filename>  -- 删除文件和目录(必须svn commit)

    7.提交

       svn commit -m "you log"  -- 提交

       svn commit --changelist <changelist name>  -- 提交指定的changelist

    8.创建目录

       svn mkdir <dirname>

       svn mkdir <url>

    9.移动文件或目录

       svn move <source_name> <dist_name>

       svn move <source_url> <dist_url>

    10.输出特定文件或URL的内容

       svn cat <file or url> --  输出特定文件或URL的内容

       svn cat -r <version> <file or url>

    ------------------------------

    11.显示本地或远程某一文件或目录的详细信息

       svn info <filename>

       svn info -r <version> <filename>

    12.列表

       svn list(ls)

       svn list -r <version>

    13.当前目录或文件的状态

       svn status <filename>

       svn status --show-updates(或-u)  从项目存储库中找出哪些文件有更新

    状态:

    第一列:指出条目的状态

    空  无改动

    A   添加

    C   冲突

    D   删除

    G   合并

    M   修改

    X    无版本记录,被svn:externals使用

    ?    未用版本控制管理

    第二列:属性状态

    空  无改动

    C   冲突

    M   修改

    第三列:工作拷贝是否被锁定

    空   未锁

    L    锁了

    14.清理

       svn cleanup  --  递归清理工作拷贝

    15.帮助

       svn help

       svn help <subcommand>  -- 显示子命令的帮助,如:svn help add

    -----------------------

    18.锁定某一目录或文件

       svn propset svn:needs-lock true  <二进制文件>  -- 设定需要锁[svn会将其设置为只读,提示用户编辑这个文件前先加锁]

       svn lock <dir or file>

       svn lock --force <dir or file>  -- 强制对文件加锁,即使此文件已被别人加锁

    19.解锁

       svn unlock <dir or file>

       svn unlock --force <dir or file>  -- 可以解锁其他用户锁定的文件

    20.显示特定文件和URL每一行的作者和修订版本信息

       svn blame <file or url>  --  每一行文本在开头都放了最后修改的作者(用户名)和修订版本号。

       svn blame -r <version> <file or url>

    21.更新

       svn update ---- 把版本库的修改带到工作拷贝

       svn update -r<version>  --  改变到某一个版本

    状态:

    A   添加   add

    D   删除   delete

    U   更新   update

    C   冲突   conflict

    M   合并   merge

    22.找不同

       svn diff <file>  -- 找出工作版本和最后更新的版本中的不同

       svn diff -c <version> <file>   查看文件<file>在修订版本<version>修改的内容,是version和version-1比较

       svn diff -r <version> <file>   察看你的工作拷贝对旧的修订版本<version>的修改

       svn diff -r <version1>:<version2> <file> 使用范围符号来比较修订版本<version1>和<version2>

       svn diff -r <version1>:<version2> <url>

       svn diff --changelist <changelist name>

    23.拷贝

       svn copy <source> <dist>  --  其中source和dist既可以是工作目录文件也可以是url

       如:svn copy foo.txt bar.txt

             svn copy near.txt file:///tmp/repos/test/far-away.txt -m "Remote copy."

             svn copy file:///tmp/repos/test/far-away near-here

             svn copy file:///tmp/repos/test/far-away file:///tmp/repos/test/over-there -m "remote copy."

    24. 显示提交日志信息

       svn log -r <version> <path>

       svn log -r <version1>:<version2> <path>

       svn log <path>

       svn log -r {iso8601日期}  <path>

       svn log -r {iso8601日期}:{iso8601日期} <path>

       svn log -v <path>  显示详细的信息(包括每个版本有哪些文件有变动)

       svn log --stop-on-copy <path>  得出分支是什么时候创建的

    25.删除工作拷贝文件或目录的“冲突”状态(相关的冲突文件文件)

       svn resolved <path>

    26.取消所有的本地编辑

       svn revert <path>

       svn revert --recursive <path>  递归

    27.解决冲突

       svn resolve --accept <status> <path>

       status:

          base:选择你更新你的工作拷贝前的你checkout出的未经修改的版本

          working:手工处理后,选择当前你工作拷贝中的版本

          mine-full:选择在你svn update前的工作拷贝

          theirs-full:选择svn update取出的文件拷贝

    28.将文件放入到一个改变列表中

        svn changelist(cl) <changelist name> <path1> <path2> <path...>

        svn commit --changelist <changelist name> -- 只提交此change list的文件

    29.版本号标识

    (1)号  87

    (2){日期}  {2009-09-09}

    (3)HEAD  存储库中最新版本

    (4)BASE   工作拷贝中你最后签出的版本

    (5)COMMITED  最后改动版本,等于或早于BASE

    (6)PREV  COMMITED之前的一个版本

    30.产生和应用补丁

    svn diff > file.patch

    patch <options> file.patch

    31.svn项目组织

        project/

            trunk/    --主干

            branches/   --分支

            tags/  --标签

    32.常用示例

    (1)提交改动

    svn update  -- 更新到项目的当前状态

    # resolve conflicts  解决冲突

      编辑文件

      svn resolved

    # run tests  运行测试

    svn commit -m "your logs"  -- 提交

    (2)简单bug修正

    a.在一个分支中修正bug并提交

    b.将其合并到存在此bug的其他分支中(svn merge -r<version1>:<version2>)

    (3)复杂bug修正

    a.创建一个bug修正分支(svn copy)  name=bug-trackid

    b.为这个修正分支在修正前打标签(svn copy) name=bugpre-trackid

    c.修正bug

    d.为这个修正在修正后打标签(svn copy) name=bugpost-trackid

    e.合并此bug修正到其他分支(svn merge -r bugpre-trackid:bugpost-trackid)

  • 相关阅读:
    Element-UI中Upload上传文件前端缓存处理
    Puppeteer前端自动化测试实践
    javascript-高级用法
    什么是闭包?闭包的优缺点?
    浅谈网站性能之前端性能优化
    2019前端面试题汇总(主要为Vue)
    从官网学习Node.js FS模块方法速查
    这才是官方的tapable中文文档
    面试官问:JS的this指向
    开启梦幻般的webrtc之旅
  • 原文地址:https://www.cnblogs.com/guanghuiqq/p/2658752.html
Copyright © 2011-2022 走看看