svn入门文档

命令 svn import 可以快速地向仓库中添加新文件 或目录. 

svn import 不要求工作副本, 新增的文件会 马上提交到仓库中.  
大多数项目都有一条公认的开发 “主线”, 或者叫作 主干 (trunk); 还有一 些 分支 (branches), 分 支是某一条开发线的分叉; 还有一些 标签 (tags),标签是某一条开发线的稳定版快照. 我们首先建议 每一个项目在仓库中都一个公认的 项目根目录 (project root), 目录中只存放和该项目相关的 数据. 然后, 我们建议每一个项目根目录下都有一个表示开发主线的 trunk 子目录, 存放所有分支的branches 子目录, 存放所有标签的 tags 子目录. 如果仓库只存放单个项目, 那么仓库的根目录也可以作为项目根目录.  
检出仓库中的目录将会在用户的 本地主机上创建一个该目录的工作副本. 除非特意指定, 否则这个副本将包 含仓库最新版本的数据:
svn checkout http://svn.example.com/svn/repo/trunk 
工作周期:
1. 更新工作副本. 这会用到
-- 命令 svn update.
2. 修改. 最常见的修改就是编辑已有文件的内容, 但有时还要添加, 删除, 复制和移动文件或目录 
—- 命令 svn add, svn delete, svn copy 和 svn move 负责 处理工作副本的结构性调整.
3. 审查修改. 用
-- 命令 svn status 和 svn diff 查看工作副本发生了哪些变化.
4. 修正错误. 人无完人, 在审查修改时用户可 能会发现某些修改是不正确的. 有时候修正错误最简单的方式是撤消所有的修改, 重新开始. 
-- 命令 svn revert 可以把文件或目 录恢复到修改前的样子.
5. 解决冲突 (合并其他人的修改). 当一个用户 正在修改文件时, 其他人可能已经把自己的修改提交到了服务器上. 为了防止 在提交修改时, 由于工作副本过旧导致提交失败, 用户需要把其他人的修改 更新到本地, 用到的命令是 svn update. 如果命令 的执行结果有冲突产生, 用户需要用命令 svn resolve 解决冲突.
6. 发布 (提交) 修改. 
-- 命令 svn commit 把工作副本的修改提交到仓库中, 如果修改 被接受, 其他用户就可以看到这些修改.

解决冲突

(e) edit [edit]
使用环境变量 EDITOR 定义的编辑器打开 发生冲突的文件.
(df) diff-full
按照标准差异格式显示基础修订版和冲突的文件之间的差异.
(r) resolved
编辑完成后, 告诉 svn 用户已经解决了冲突, 现在应该接受文件的当前内容.
(dc) display-conflict
显示冲突的区域, 忽略合并成功的修改.
(mc) mine-conflict [mine-conflict]
丢弃从服务器收到的, 与本地冲突的所有修改, 但是接受不会产生 冲突的修改.
(tc) theirs-conflict [theirs-conflict]
丢弃与服务器产生冲突的所有本地修改, 但是保留不会产生冲突 的本地修改.
(mf) mine-full [mine-full]
丢弃从服务器收到的该文件的所有修改, 但是保留该文件的 本地修改.
(tf) theirs-full [theirs-full]
丢弃该文件的所有本地修改, 只使用从服务器收到的修改.
(m) merge
打开一个内部文件合并工具来解决冲突, 该选项从 Subversion 1.8 开始支持.
(l) launch
打开一个外部程序来解决冲突, 在第一次使用该选项之前需要完成 一些准备工作.
(p) postpone [postpone]
让文件停留在冲突状态, 在更新完成后再解决冲突.
(s) show all
显示所有的, 可以用在交互式的冲突解决中的命令.
 如果用户决定只想使用本地修改, 或者是只使用从服务器收到 的修改, 可以分别选择 mf (mine-full) 与 tf (theirs-full).
svn update 增加一个参数 --non-interactive, 此时发生冲突的文件会被自动 标记为 C.
C (Conflicted) 表示来自服务器的修改和用户的本地修改有所重叠, 用户在更新完成后必须 手动加以选择. 如果用户推迟解
决冲突, svn 通常 会从三个方面帮助用户解决冲突:
• 如果在更新过程中产生了冲突, Subversion 就会为含有冲突的 文件打印一个字符 C, 并记住 该文件处于冲突状态.
• 如果 Subversion 认为文件是支持合并的, 它就会把 冲突标记 (conflict markers)—一段给冲突划分 边界的特殊文本—插
入到文本中来显式地指出重叠区域 (Subversion 使用属性 svn:mime-type 来判断 一个文件是否支持基于行的合并, 见
“文件内容类型”一节).
• 对每一个产生冲突的文件, Subversion 都会在工作副本中生成 三个额外的文件, 这些文件不在版本控制的名单中:
filename.mine
该文件的内容和用户执行更新操作前的文件内容相同, 它 包含了当时所有的本地修改 (如果 Subversion 认为该文件
不 支持合并就不会创建 .mine).
filename.rOLDREV
该文件的内容和版本号 BASE 对应 的文件内容相同, 也就是在执行更新操作前工作副本中未修改 的版本, OLDREV
是基础版本号.
filename.rNEWREV
该文件的内容和从服务器收到的版本相同, NEWREV 等于更新到的版本号 (如果没有额外指定的话, 就是 HEAD).
使用命令 svn resolve --accept=working 移除文件的冲突状态
svn resolve --accept working sandwich.txt
更新时产生了冲突, 而你想要完全丢弃自己的修改, 就执行 svn resolve --accept theirs-full CONFLICTED-PATH , 此时 Subversion 就会丢弃用户的本地修改, 并 删除临时文件
决定丢弃当前的所有修改 (无论是在冲突后, 还是在任何时候), 就 用 svn revert:svn revert sandwich.txt
提交修改,选项 --message (-m) 直接在命令行上输入日志svn commit -m "hello."
在 提交时直接从该文件中读取日志, 这可以通过选项--file (-F) 实现:svn commit -F logmsg
下面几个命令提供了检索历史数据的功能:svn diff从行的级别上查看修改的内容svn log和版本号绑定的日志消息, 及其日期, 作者, 以及受影响的文件 路径.svn cat根据给定的版本号, 输出文件在该版本下的内容.svn annotate根据给定的版本号, 查看该版本下的文件的每一行的最后一 次修改信息.svn list根据给定的版本号, 列出仓库在该版本下的文件与目录清单.
svn export在本地创建一份仓库的完整或部分副本, 但是没有 .svn 目录. 命令的基本语法和 svn checkout 相同:svn export http://svn.example.com/svn/repo/trunk trunk-export
版本号关键字Subversion 支持理解的版本号关键字有很多个, 可以用这些关键字替换 选项 --revision (-r) 后面的整数, 这些关键字会被 Subversion 解释成特定的版本号:-- HEAD仓库中最近的 (或最年轻的) 版本号.-- BASE工作副本中的某一项目的版本号, 如果该项在本地被修改了, 则该 版本号引用的是修改前的项目.-- COMMITTED等于或早于 BASE 并且离它最近的一个版本号, 在该版本号中项目被修改了.-- PREV项目最后一次被修改时的版本号的前一个版本号, 从技术上讲它 就是 COMMITTED-1.从它们的描述可以看出, PREV, BASE 和 COMMITTED 只能引用工作 副本中的路径, 而 HEAD 既可以引用工作副本中的路径, 也可以引用仓库的 URL.
命令 svn merge URL 告诉 Subversion 把 URL 上的所有未被合并 的修改都合并到当前工作副本上 (在典型的情况下, 也就是你的工作副本的 根目录). 注意到我们用的是带有脱字符 (^) 的语法 , 这样我们 就不用输入完整的主干 URL 地址.使用 svn merge, 则命令接受三个参数:1. 一个初始的仓库目录 (通常被叫作比较的 左侧 (left side))2. 一个最终的仓库目录 (通常被叫作比较的 右侧 (right side)3. 接受差异的工作副本 (通常被叫作合并的 目标 (target))
运行 svn log--verbose, 选项 --verbose (-v) 显示了在每个版本号中 被修改的所有项目, 你所要做的就是找到那个删除了文件或目录的版本号.svn log -v --limit 3
仓库布局/   -- 主线	trunk/	-- 分支	branches/	-- 标签	tags//	paint/		trunk/		branches/		tags/	calc/		trunk/		branches/		tags/
仓库ls reposconf/ db/ format hooks/ locks/ README.txt下面是关于目录中的文件及其子目录的简单介绍.	conf/存放配置文件的目录.	db/该目录包含了与所有版本化数据相关的数据. 	format该文件描述了仓库的内部组织结构. (目录 db/ 有时候也会有一个叫做 format 的文件, 这个 format 仅仅是在描述 db/ 的内容, 这两个 format 之间并没有关系.)	hooks/该目录包含了钩子脚本模板和已安装的钩子脚本.	locks/Subversion 用该目录存放仓库的锁文件, 锁文件用于管理仓库的并发 访问.	README.txt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值