svn使用教程(Mac、Linux)

1. 基础知识

1) 版本库布局

版本库一般的布局结构为trunk(主干)、branches(分支)、tags(标签)。

i. trunk主干

trunk就是开发的主线,一般项目都是导入到主线来开发的。

ii. branches分支

branches一般是trunk某个版本的拷贝,如果你想在某一段时间单独对某个功能进行开发,而不像和其它功能混在一起,这时候branches是一个很好用的方式。你不会想在trunk里一直开发这个功能,不提交,直到开发完成吧。一般也会合并的trunk中的。

iii. tags标签

tags是啥?标签,顾名思义,就是某个版本的记录啦,就好像看一本厚厚的,看到哪一页了,做个记号,方便以后查阅。
迭代开发时,在某个版本发布应用,为了做个记录,这时候打个tag很实用。发布后,线上出现了一个bug,可以根据这个tag进行修复再发版本。

2. 使用

理解了主干、分支、标签的作用,下面说下svn的使用。我在项目中常用的功能一般是checkout、commit、update、分支管理、标签管理、版本回退。

checkout

代码检出比较简单,执行以下命令,$project_name表示项目名称:
svn co svn://.../path $project_name
有时想检出某个历史版本,$version标识版本号:
svn co svn://.../path@$version $project_name

commit

提交代码都会用,不多说:
svn ci -m "更新说明"
有时只想提交某个文件:
svn ci path_to_file -m "更新说明"

update

工作中尽量多的update,执行命令
svn update

分支

  • 增加分支
    增加一个分支,实际上就是把trunk复制到branches目录下,起一个特定的名字,表示该分支的作用;
    svn copy svn://../trunk/project svn://../branches/project_buy -m "添加购买功能分支"
    之后就可以在该分支上单独开发购买功能了,不会影响trunk的正常开发喽。
  • 合并分支
    购买分支上的功能开发完毕了,要合并到trunk中;
    • 合并到trunk需要在trunk的分支下操作;
      svn merge -r r1:r2 svn://../branches/project_buy ./
      r1:r2表示从版本记录r1和r2之间的变化合并到当前工作目录中。
    • 然后提交
      svn ci -m "合并购买功能到主干"
    • 删除分支
      有时不需要某些分支了,删掉
      svn delete svn://../branches/project_buy -m "删除购买功能到主干"

标签

  • 标签创建
    svn copy svn://../trunk/project svn://../tags/project_tag1 -m "创建标签1"
  • 标签删除
    svn rm svn://../tags/project_tag1 -m "删除标签1"

版本回退

版本回退这个功能很实用,开发过程中难免思路问题,回退代码。
- 没有提交的代码回退
svn revert svn://../path_to_file
- 已提交代码回退
svn merge -r r2:r1 svn://../path_to_file merge_file
好面熟啊,这个怎么跟分支合并差不多尼。本质上是一样的啦。r2:r1从高版本到低版本可不就是回退了嘛。从低版本到高版本增加记录,就是添加喽。

其它一些基础命令

  • 记录查看log
    查看版本历史记录
    svn log | more
    按n进行下翻,按q退出
    查看版本历史记录,并看修改了哪些文件
    svn log -v | more
  • 查看文件变化diff
    本地文件和版本库的变化
    svn diff path_to_file | more
    版本库版本的变化
    svn diff -c r svn://../path_to_file | more

3. 结束语

掌握常用的这几个svn命令足以对付大部分日常工作了,理解之后,日常svn的操作并不需要工具的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 介绍 Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 安装Subversion Subversion的组件 快速入门 2. 基本概念 版本库 版本模型 文件共享的问题 锁定-修改-解锁 方案 拷贝-修改-合并 方案 Subversion实战 工作拷贝 修订版本 工作拷贝怎样追踪版本库 修订版本混合的限制 摘要 3. 指导教程 帮助! 导入 修订版本: 号码、关键字和日期,噢,我的! 修订版本号 修订版本关键字 修订版本日期 初始化的Checkout 基本的工作周期 更新你的工作拷贝 修改你的工作拷贝 检查你的修改 svn status svn diff svn revert 解决冲突(合并别人的修改) 手工合并冲突 拷贝覆盖你的工作文件 下注:使用svn revert 提交你得修改 检验历史 svn log svn diff 比较本地修改 比较工作拷贝和版本库 比较版本库与版本库 svn cat svn list 关于历史的最后一个词 其他有用的命令 svn cleanup svn import 摘要 4. 分支与合并 什么是分支? 使用分支 创建分支 在分支上工作 分支背后的关键概念 在分支间拷贝修改 拷贝特定的修改 合并背后的关键概念 合并的最佳实践 手工追踪合并 预览合并 合并冲突 关注还是忽视祖先 常见用例 合并一条分支到另一支 取消修改 找回删除的项目 常用分支模式 发布分支 特性分支 转换工作拷贝 标签 建立最简单的标签 建立复杂的标签 分支维护 版本库布局 数据的生命周期 摘要 5. 版本库管理 版本库基本知识 理解事务和修订版本 未受版本控制的属性 版本库数据存储 Berkeley DB FSFS 版本库的创建和配置 钩子脚本 Berkeley DB配置 版本库维护 管理员的工具箱 svnlook svnadmin svndumpfilter svnshell.py Berkeley DB工具 版本库清理 管理磁盘空间 版本库的恢复 版本库的移植 版本库备份 添加项目 选择一种版本库布局 创建布局,导入初始数据 摘要 6. 配置服务器 概述 网络模型 请求和响应 客户端凭证缓存 svnserve,一个自定义的服务器 调用服务器 内置的认证和授权 创建一个用户文件和域 设置访问控制 SSH认证和授权 SSH配置技巧 初始设置 控制调用的命令 httpd,Apache的HTTP服务器 必备条件 基本的Apache配置 认证选项 基本HTTP认证 SSL证书管理 授权选项 整体访问控制 每目录访问控制 关闭路径为基础的检查 额外的糖果 版本库浏览 其它特性 支持多种版本库访问方法 7. 高级主题 运行配置区 配置区布局 配置和Windows注册表 配置选项 服务器 config 属性 为什么需要属性? 处理属性 特别属性 svn:executable svn:mime-type svn:ignore svn:keywords svn:eol-style svn:externals svn:special 自动属性设置 Peg和实施修订版本 外部定义 卖主分支 常规的卖主分支管理过程 svn_load_dirs.pl 本地化 理解地区 Subversion对地区的支持 Subversion版本库URL 8. 开发者信息 分层的库设计 版本库层 版本库访问层 RA-DAV(使用HTTP/DAV版本库访问) RA-SVN(自定义协议版本库访问) RA-Local(直接版本库访问) 你的RA库在这里 客户端层 使用API Apache可移植运行库 URL和路径需求 使用C和C++以外的语言 进入工作拷贝的管理区 条目文件 原始拷贝和属性文件 WebDAV 使用内存池编程 为Subversion做贡献 加入社区 取得源代码 开始熟悉社区政策 作出修改并测试 贡献你的修改 9. Subversion完全参考 Subversion命令行客户端:svn svn选项 svn子命令 svn add svn blame svn cat svn checkout svn cleanup svn commit svn copy svn delete svn diff svn export svn help svn import svn info svn list svn log svn merge svn mkdir svn move svn propdel svn propedit svn propget svn proplist svn propset svn resolved svn revert svn status svn switch svn update svnadmin svnadmin Switches svnadmin Subcommands svnadmin create svnadmin deltify svnadmin dump svnadmin help svnadmin hotcopy svnadmin list-dblogs svnadmin list-unused-dblogs svnadmin load svnadmin lstxns svnadmin recover svnadmin rmtxns svnadmin setlog svnadmin verify svnlook svnlook选项 svnlook svnlook author svnlook cat svnlook changed svnlook date svnlook diff svnlook dirs-changed svnlook help svnlook history svnlook info svnlook log svnlook propget svnlook proplist svnlook tree svnlook uuid svnlook youngest svnserve svnserve选项 svnversion svnversion mod_dav_svn mod_dav_svn Configuration Directives A. Subversion对于CVS用户 修订版本号现在不同了 目录的版本 更多离线操作 区分状态和更新 分支和标签 元数据属性 冲突解决 二进制文件和转化 版本化的模块 认证 转化CVS版本库到Subversion B. 故障解决 共同问题 使用Subversion的问题 每当我尝试访问版本库,我的Subversion客户端挂起。 每当我尝试运行svn,它告诉我工作拷贝已经锁定。 我在查找和打开版本库时得到错误,而我知道我的版本库URL是正确的。 我怎样在file://的URL中指定一个Windows驱动器盘符? 通过网络对Subversion版本库进行写操作发生问题。 在Windows XP下,Subversion服务器有时候看起来发送损坏的数据。 跟踪Subversion客户端和Apache服务器通话最好的方法是什么? 我刚刚编译了二进制分发版本,当我尝试检出Subversion,我得到一个“Unrecognized URL scheme”错误。 为什么svn revert命令要有一个明确的目标?为什么缺省不是递归的?它的行为方式与大多数其它子命令不同。 当我启动Apache,mod_dav_svn抱怨说发现一个“bad database version”,它发现了db-3.X而不是db-4.X。 我在RedHat 9得到“Function not implemented”错误,无法工作,我如何修正这个问题? 为什么日志说通过Apache(ra_dav)提交或导入的文件“(no author)”? 我偶然在Windows得到“Access Denied”错误,它们看起来随即出现。 在FreeBSD,某些操作(特别是svnadmin create)有时会挂起。 我可以在web浏览器看到我的版本库,但是svn checkout给我一个301 Moved Permanently错误。 我尝试察看我的文件的一个老版本,但是svn告诉我“path not found”。 C. WebDAV和自动版本化 WebDAV基本概念 仅是平常的WebDAV DeltaV扩展 Subversion和DeltaV 影射Subversion到DeltaV 自动版本化支持 选择mod_dav_lock 自动版本化交互性 Win32网络文件夹 Mac OS X Unix: Nautilus 2 Linux davfs2 D. 第三方工具 客户端和插件 语言绑定 版本库转化 高级工具 版本库浏览工具 E. 版权 术语表 插图清单 1.1. Subversion的架构 2.1. 一个典型的客户/服务器系统 2.2. 需要避免的问题 2.3. 锁定-修改-解锁 方案 2.4. 拷贝-修改-合并 方案 2.5. 拷贝-修改-合并 方案(续) 2.6. 版本库的文件系统 2.7. 版本库 4.1. 分支开发 4.2. 开始规划版本库 4.3. 拷贝后的版本库 4.4. 一个文件的分支历史 8.1. 二维的文件目录 8.2. 版本时间—第三维! 表格清单 2.1. 版本库访问URL 5.1. 版本库数据存储对照表 6.1. 网络服务器比较 8.1. Subversion库的摘要目录 范例清单 5.1. 使用svnshell浏览版本库 5.2. txn-info.sh(异常事务报告) 6.1. 匿名访问的配置实例。 6.2. 一个认证访问的配置实例。 6.3. 一个混合认证/匿名访问的配置实例。 6.4. 关闭所有的路经检查 7.1. 注册表条目(.reg)样本文件。 8.1. 使用版本库层 8.2. 使用Python处理版本库层 8.3. 一段检出工作拷贝的简单脚本 8.4. 典型的.svn/entries文件内容 8.5. 有效地池使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值