启动 SVN 服务器端程序

  • 1 为客户端开启权限
  • 2 常用命令
  • 2.1 检出 checkout
  • 2.2 纳入版本控制 add
  • 2.3 提交 commit
  • 2.4 更新 update
  • 2.5 查看工作副本信息
  • 2.6 查看目录或文件日志信息
  • 3 工作副本中文件的几种状态
  • 3.1 没有修改,现行版本
  • 3.2 本地修改,现行版本
  • 3.3 没有修改,过时版本
  • 3.4 本地修改,过时版本


1 为客户端开启权限

不开启权限就不能提交文件到SVN服务器保存的

暂时先开启匿名访问权限

  • ① 进入对应的版本库目录下的 conf 目录
  • ② 打开 svnserve.conf
  • ③ 将19行的 # anon-access = read 改为 anon-access = write,也就是去掉“# ”,将 read 改为 write 。注意前面不要留空格,一定要顶格写

2 常用命令

命令中的 [] 表示选填

2.1 检出 checkout

  • 命令:svn checkout svn://localhost/[文件名]
  • 在命令行中进入工作目录,执行命令,检出命令会在工作目录下创建 指定文件名 项目目录,这一目录下创建一个隐藏目录 .svn,用来保存与服务器交互的重要信息,其中包括从服务器端取回的最新版本信息、文件状态、更新时间等等,这个文件不能动,也不能改

2.2 纳入版本控制 add

  • 命令: svn add 纳入版本控制的文件名

2.3 提交 commit

  • 命令:svn commit -m “本次提交的注释说明,主要写明本次提交做了哪些修改,方便以后回溯” [提交的文件名]

2.4 更新 update

  • 命令:svn update [文件名]
  • 回到指定版本: svn update [文件名] --revision 指定的版本号

2.5 查看工作副本信息

  • 命令: svn info [指定文件名]
  • 注意:要进入到本地副本的项目目录执行这个命令在 DOS 里

2.6 查看目录或文件日志信息

  • 命令:svn log [指定文件名]
  • 注意:要进入到本地副本的项目目录执行这个命令在 DOS 里

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

3.1 没有修改,现行版本

本档案在工作目录中没有被修改,而且自当前版本之后,其他终端也没有任何该文件的修改被提交到服务器,即当前工作副本的版本和服务器端最新版本是一致的。对它执行 svn commit 和 svn update 都不会发生任何事

3.2 本地修改,现行版本

这个文件被修改过,但这个修改还没有提交到服务器,而且自当前版本之后,其他终端也没有任何该文件的修改被提交到服务器,所以当前工作副本的版本和服务器端最新版本仍然是一致的。由于有尚未送交回去的本地修改,所以对它的 svn commit 会成功提交你的修改,而 svn update 则不会作任何事

3.3 没有修改,过时版本

这个文件没有修改,但是版本库中有其他终端提交的修改。此时当前工作副本的版本比服务器端的版本落后了,我们称之为“过时”。对当前文件的 svn commit 不会发生任何事,而 svn update 会让工作目录中的文件更新至最新版本

3.4 本地修改,过时版本

服务器端存在没有更新到本地的修改,导致当前版本过时。如果这个文件在本地有未提交的修改,则无法提交,对它执行 svn commit 会产生 “out-of-date” 错误。此时应该先尝试更新本地文件。更新时 SVN 会尝试将服务器端的更新与本地文件进行合并,合并的结果有两种可能:一个是服务器端和本地修改位于文件的不同位置,合并成功;另一个是服务器端的修改正好和本地修改位于同一个位置,发生冲突