zoukankan      html  css  js  c++  java
  • 03-客户端访问SVN服务器

    使用命令行模式访问SVN服务器

    1. 检出

    ①首先进入自己的工作目录,例如:D:DevWorkSpaceSVNSpace
    ②运行svn checkout命令,命令格式如下

    格式 svn checkout svn://SVN服务器主机地址/具体仓库目录 保存检出内容的目录
    举例 svn checkout svn://localhost/ERP MyERP
    运行结果 取出版本 0
    ③工作副本
    运行checkout命令后进入MyERP目录,看到里面什么都没有。真的什么都没有吗?不是的。检出命令会在这一目录下创建一个隐藏目录.svn,用来保存与服务器交互的重要信息,其中包括从服务器端取回的最新版本信息、文件状态、更新时间等。SVN正是以此为依据判断当前目录中文件的状态。所以这个隐藏目录千万不要删除或修改其中的内容——完全无视它的存在吧。如果服务器端保存的文件可以视为一个“正本”,那么每个开发人员检出到本地目录的文件可以视为“副本”,通常称为工作副本。

    2. 提交

    ①进入D:DevWorkSpaceSVNSpaceMyERP目录
    ②创建一个文件test.txt
    ③执行svn commit命令,运行结果是

    D:DevWorkSpaceSVNSpaceMyERP>svn commit test.txt
    svn: E200009: 提交失败(细节如下):
    svn: E200009: “D:DevWorkSpaceSVNSpaceMyERP est.txt” 尚未纳入版本控制

    说明一个文件必须纳入版本控制才可以提交到服务器端。
    ④执行svn add命令,将test.txt纳入版本控制

    D:DevWorkSpaceSVNSpaceMyERP>svn add test.txt
    输出结果:A test.txt【A就代表刚加入版本控制】
    ⑤再次执行svn commit命令
    D:DevWorkSpaceSVNSpaceMyERP>svn commit test.txt
    svn: E205007: 提交失败(细节如下):
    svn: E205007: 无法使用外部编辑器获得日志信息;考虑设置环境变量 $SVN_EDITOR,或者使用 --message (-m) 或 --file (-F) 选项
    svn: E205007: 没有设置 SVN_EDITOR,VISUAL 或 EDITOR 环境变量,运行时的配置参数中也没有 “editor-cmd” 选项

    此时要求附加日志信息
    ⑥使用-m参数附加日志信息

    D:DevWorkSpaceSVNSpaceMyERP>svn commit -m "My first commit" test.txt
    svn: E170001: 提交失败(细节如下):
    svn: E170001: 认证失败

    原因是没有权限
    ⑦暂时先开启匿名访问权限
    [1]进入对应的版本库目录下的conf目录:D:DevRepositorySubversionERPconf
    [2]打开svnserve.conf
    [3]将第19行的# anon-access = read改为anon-access = write,也就是去掉“# ”,将read改为write。注意前面不要留空格,一定要顶格写。
    [4]不需要重启SVN服务,甚至命令行窗口都不需要重新打开。
    ⑧重新执行提交命令

    D:DevWorkSpaceSVNSpaceMyERP>svn commit -m "My first commit" test.txt
    正在增加 test.txt
    传输文件数据.
    提交后的版本为 1。

    说明提交成功了。
    ⑨其实svn commit命令最后可以不指定具体文件,此时表示提交当前工作副本中的所有修改。

    3. 更新

    ①将服务器端文件检出到一个新的目录,模拟另外一个终端

    D:DevWorkSpaceSVNSpace>svn checkout svn://localhost/ERP TomERP
    A TomERP est.txt
    取出版本 1。

    D:DevWorkSpaceSVNSpace>svn checkout svn://localhost/ERP TomERP
    A TomERP est.txt
    取出版本 1。
    ②回到MyERP目录,对test.txt文件修改后提交。
    ③进入TomERP目录
    ④执行svn update命令

    D:DevWorkSpaceSVNSpaceTomERP>svn update
    正在升级 '.':
    U test.txt
    更新到版本 2。

    这样我们就可以在TomERP目录下看到MyERP目录下提交的修改。
    ⑤思考:更新和检出的相同点和不同点分别是什么?

    检出 更新
    相同点 从服务器端下载最新内容
    不同点1 下载整个项目 下载与本地工作副本不同的内容
    不同点2 创建.svn目录,使检出目录成为工作副本 依赖.svn目录
    不同点3 只能操作1次 可以操作多次

    4. 将工作副本整体回复到某一个历史版本

    ①假设当前版本为12,想要取回版本9
    ②执行svn update命令

    格式 svn update --revision 想要取回的版本号
    举例 svn update --revision 1
    运行结果 正在升级 '.':
    D pp.txt
    U test.txt
    更新到版本 1。
    ③这里需要注意的是,SVN版本号并不是对某一个文件进行编号,而是对应整个版本库总体状态的一个“快照”,取回某个版本不是取回版本号对应的某个文件,而是整个项目的一个快照。

    5. 将某个文件恢复到某个版本中的状态,同时不涉及其他文件

    ①假设想要取回pp.txt在版本10时的状态
    ②执行svn update命令

    格式 svn update 文件名 --revision 想要取回的版本号
    举例 svn update pp.txt –revision 10
    运行结果 正在升级 'pp.txt':
    U pp.txt
    更新到版本 10。

    ③综合这两个例子,我们可以认为版本号和文件名构成了一个横纵坐标系,通过文件路径和版本号定位其在某一个时刻的状态。

    5. 工作副本中文件的几种状态

    ①没有修改,现行版本
    本档案在工作目录中没有被修改,而且自当前版本之后,其他终端也没有任何该文件的修改被提交到服务器,即当前工作副本的版本和服务器端最新版本是一致的。对它执行svn commit和svn update都不会发生任何事。
    ②本地修改, 现行版本
    这个文件被修改过,但这个修改还没有提交到服务器,而且自当前版本之后,其他终端也没有任何该文件的修改被提交到服务器,所以当前工作副本的版本和服务器端最新版本仍然是一致的。由于有尚未送交回去的本地修改,所以对它的 svn commit会成功提交你的修改,而 svn update 则不会作任何事。
    ③没有修改,过时版本
    这个文件没有修改,但是版本库中有其他终端提交的修改。此时当前工作副本的版本比服务器端的版本落后了,我们称之为“过时”。对当前文件的 svn commit 不会发生任何事,而 svn update 会让工作目录中的文件更新至最新版本。
    ④本地修改,过时版本
    服务器端存在没有更新到本地的修改,导致当前版本过时。如果这个文件在本地有未提交的修改,则无法提交,对它执行svn commit 会产生“out-of-date”错误。
    此时应该先尝试更新本地文件。更新时SVN会尝试将服务器端的更新与本地文件进行合并,合并的结果有两种可能:一个是服务器端和本地修改位于文件的不同位置,合并成功;另一个是服务器端的修改正好和本地修改位于同一个位置,发生冲突。

    6.VisualSVN Server Manager服务器的安装

    双击,下一步下一步安装即可
    SVN帐户配置

    • 添加成员项目到组【创建一个教育组-成员有zhangsan,lisi,wangwu】
      SVN创建代码目录结构
    • trunk为主开发目录 =trunk放正在开发的版本
    • branches为分支开发目录 =branches放以前发布的版本
    • tags为tag存档目录(不允许修改)

    去除HTTPS

    在浏览器访问truck目录
    访问路径:http://192.168.1.128/svn/education/trunk
    注意IP地址改成你本机的IP地址

  • 相关阅读:
    VC 捕获Windows关机事件
    JAVA多态计算面积main函数调用方法
    Spring MVC 和 Spring 总结
    css知识总结
    数据库mysql大全(高级版)
    springboot+springcloud微服务项目全套资料(笔记+源码+代码)
    eclipse上的maven,添加依赖后无法自动下载相应的jar包
    使用angularJS接收json数据并进行数据的显示
    mybatis的基本语句的应用
    Idea集成maven插件
  • 原文地址:https://www.cnblogs.com/zhy0720/p/10462145.html
Copyright © 2011-2022 走看看