SVN的使用记录

2018-07-24  本文已影响42人  呦释原点

新项目使用svn做版本控制了, 记得很久以前使用过tortoise, 但是也早抛到脑后了,以后对SVN的使用和查找的资料在此做个记录方便以后查看

1.mac搭建一个本地SVN

练习使用不好用公司的, 怕搞坏了。Git版本控制有github和码云,不知道subversion使用什么,就想到弄个本地的,搜一搜还真有参考链接。很顺利搭建本地SVN成功。
停止本地的SVN服务可以在活动监视器中做到

遇到的问题:
1.commit提交时报错 Can't open file '/Users/用户名xx/svn/mycode/db/txn-current-lock': Permission denied 解决办法

sudo chmod -R g+rws svn
后面的svn代表svn所在的路径

2.commit 提交时 svn: E170001: Authorization failed 因为注释没有打开

2. SVN原理 继续中。。。

svn官方网站: http://subversion.apache.org/ OR http://subversion.tigris.org/已被锁定
svn中文网站:http://www.iusesvn.com/各种有问题
svn官方手册:http://svnbook.red-bean.com/
svn客户端:https://tortoisesvn.net/
svn客户端 手册:https://tortoisesvn.net/downloads.html
svn源码下载地址:http://archive.apache.org/dist/subversion/
svn中文常见问题解答:https://subversion.apache.org/faq.zh.html

一:工作副本的工作原理
Subversion 为工作副本中的每一个文件记录两项信息:
1.文件的版本号 (这被称为文件的 工作版本号 (working revision))
2.一个时间戳, 记录了本地文件最近一次被仓库更新是在什么时候

有了这些信息后, 通过与仓库通信, Subversion 就可以判断出 每一个工作文件处于以下 4 种状态中的哪一种:

当前未修改的
文件在工作副本中未被修改, 并且在工作版本号之后还没有 人提交过该文件的修改. 对文件执行 svn commit 和 svn update 都不会产生任何效果.

当前已修改的
文件在工作副本中已被修改, 并且在一次更新以来还没有人 向仓库提交过该文件的修改. 本地有未提交的修改, 于是执行 svn commit 将会成功地把修改提交到仓库中, 而 svn update 不会产生任何效果.

过时未修改的
文件在工作副本中未被修改, 但是在上一次更新之后有人往 仓库提交了该文件的修改. 为了让文件和最新版本保持同步, 应 该执行更新操作. 对文件执行 svn commit 不会产生任何效果, 执行 svn update 将 把仓库中的最新修改合并到文件中.

过时且已修改的
文件在本地工作副本和仓库都被修改了. 对文件执行 svn commit 会由于文件已过时而失败. 首先应该更新文件, 命令 svn update 试图 把仓库的修改合并到本地. 如果 Subversion 不能自动地以一种 合理的方式完成合并, 就会把冲突交由用户来解决.

3.. SVN常用命令

帮助
$ svn help

添加到仓库
$ svn import /path/to/mytree \
             http://svn.example.com/svn/repo/some/project \
             -m "Initial import"

添加到副本
$svn add a/a.rtf

查看仓库结构
$ svn list http://svn.example.com/svn/repo/some/project

查看本地目录结构
$ svn list

查看 目录a下第20版本结构
$ svn list a/ -r 20

检出 已目录最后为名称
$ svn checkout http://svn.example.com/svn/repo/trunk

检出并重命名副本文件夹名称
$ svn checkout http://svn.example.com/svn/repo/trunk my-working-copy

更新
$ svn update

添加文件
$ svn add FOO
这个命令把文件, 目录或软链接 FOO 添加 到需要进行版本控制的名单中, 在下一次提交时, FOO 就会正式添加到仓库里. 如果 FOO 是一个目录, 那么目录内的所有内容都会 被添加到仓库中. 如果只想添加 FOO 它自己, 就带上选项 --depth=empty.

删除文件
svn delete FOO
上面的命令从工作副本中删除文件, 目录或符号链接 FOO, 在下一次提交时, FOO 就会从仓库中删除. (当然, 没有什么东西可以从仓库中被完全地删除干净 —它们只是从版本号 HEAD 中删除, 用户可以 从更早的版本中看到被删除的文件). [6]

svn copy FOO BAR
从 FOO 复制出一个 BAR, 并把 BAR 添加到 需要进行版本控制的名单中. BAR 被提交到仓库 后, Subversion 会记录它是由 FOO 复制得到的. 除非带上选项 --parents, 否则 svn copy 不会创建父目录.

svn move FOO BAR
这条命令等价于 svn copy FOO BAR; svn delete FOO , 也就是从 FOO 复制出一个 BAR, 然后再删除 FOO. 除非带上选项 --parents, 否则 svn move 不会创建父目录.

svn mkdir FOO
该命令等价于 mkdir FOO; svn add FOO, 也就是创建一个新目录 FOO, 并把它添加到仓库中.

查看状态
$ svn status

查看状态带版本号
$ svn status -v
$ svn status -u -v

查看具体修改内容,行级别
$ svn diff

创建补丁文件 补丁文件可修改  补丁文件就是修改内容的记录
$ svn diff > patchfile

应用补丁文件   也就是应用修改
$ svn patch patchfile

撤销/回滚本地副本中  修改的、 删除的、添加的等未被版本控制的
$ svn revert 

提交 以文字记录
$ svn commit -m "Corrected number of cheese slices."

提交 以文件记录
$ svn commit -F logmsg

svn diff
从行的级别上查看修改的内容

svn log
和版本号绑定的日志消息, 及其日期, 作者, 以及受影响的文件 路径.

svn cat
根据给定的版本号, 输出文件在该版本下的内容.

svn annotate
根据给定的版本号, 查看该版本下的文件的每一行的最后一 次修改信息.

svn list
根据给定的版本号, 列出仓库在该版本下的文件与目录清单.

4.. 使用SVN命令解决工作中的问题

5. 使用CornerStone解决工作中的问题

小惊喜

用了终端在使用CornerStone提示版本低,终端版本1.9.7 CornerStone版本1.7/1.8
不能用了。。。
意不意外
下载个最新的CornerStone,破解不了,把最新的保留旧版安装上,重命名,再打开旧的,提示没有了,没有了
惊喜不惊喜。。。

上一篇下一篇

猜你喜欢

热点阅读