转换后为网页格式的<
SVN
操作手册
中
文版>
目录 译者序 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书组织结构 Subversion 1.1的新特性,
svn
客户端和linux下命令行。
1. 简介
1.1. 什么是 Tortoise
SVN
?
1.2. Tortoise
SVN
的历史
1.3. Tortoise
SVN
的特性
1.4. 安装 Tortoise
SVN
1.4.1. 系统要求
1.4.2.
1.4.3. 语言包
1.4.4. 拼写检查器
2. Basic Version-Control Concepts
2.1.
版本
库
2.2.
版本
模型
2.2.1. 文件共享的问题
2.2.2. 锁定-
修改
-解锁 方案
2.2.3. 复制-
修改
-
合并
方案
2.2.4. Subversion 怎么做?
2.3. Subversion 实战
2.3.1.
工作
副本
2.3.2.
版本
库的 URL
2.3.3. 修订
版本
2.3.4.
工作
副本
怎样跟踪
版本
库
2.4. 摘要
3.
版本
库
3.1. 创建
版本
库
3.1.1. 使用命令行工具创建
版本
库
3.1.2. 使用 Tortoise
SVN
创建
版本
库
3.1.3. 本地访问
版本
库
3.1.4. 访问网络共享磁盘上的
版本
库
3.1.5.
版本
库布局
3.2.
版本
库备份
3.3. 服务器端钩子脚本
3.4. 检出链接
3.5. Accessing the Repository
3.6. 基于
svn
serve 的服务器
3.6.1. 简介
3.6.2. 安装
svn
serve
3.6.3. 运行
svn
serve
3.6.3.1. 以服务形式运行
svn
serve
3.6.4.
svn
serve 与基本认证
3.6.5. 使用 SASL 以便更安全
3.6.5.1. 什么是 SASL?
3.6.5.2. SASL 认证
3.6.5.3. SASL 加密
3.6.6. 使用
svn
+ssh 认证
3.6.7.
svn
serve 基于路径的授权
3.7. 基于 Apache 的服务器
3.7.1. 简介
3.7.2. 安装 Apache
3.7.3. 安装 Subversion
3.7.4. 配置
3.7.5. 多
版本
库
3.7.6. 路径为基础的授权
3.7.7. 使用 Windows 域认证
3.7.8. 多重认证源
3.7.9. 用 SSL 使服务器更安全
3.7.10. 在虚拟 SSL 主机
中
使用客户端证书
4. 日常使用指南
4.1. 开始
4.1.1. 图标重载
4.1.2. 右键菜单
4.1.3. 拖放
4.1.4. 常用快捷方式
4.1.5. 认证
4.1.6. 最大化窗口
4.2. 导入数据到
版本
库
4.2.1. 导入
4.2.2. 导入适当的位置
4.2.3. 专用文件
4.3. 检出
工作
副本
4.3.1. 检出深度
4.4. 将你的
修改
提交到
版本
库
4.4.1. 提交对话框
4.4.2.
修改
列表
4.4.3. Excluding Items from the Commit List
4.4.4. 提交日志信息
4.4.5. 提交进程
4.5. 用来自别人的
修改
更新你的
工作
副本
4.6. 解决冲突
4.6.1. File Conflicts
4.6.2. Tree Conflicts
4.6.2.1. Local delete, incoming edit upon update
4.6.2.2. Local edit, incoming delete upon update
4.6.2.3. Local delete, incoming delete upon update
4.6.2.4. Local missing, incoming edit upon
merge
4.6.2.5. Local edit, incoming delete upon
merge
4.6.2.6. Local delete, incoming delete upon
merge
4.7. 获得状态信息
4.7.1. 图标重载
4.7.2. 在 Windows 资源管理器
中
的 Tortoise
SVN
列
4.7.3. 本地与远程状态
4.7.4. 查看差别
4.8.
修改
列表
4.9.
版本
日志对话框
4.9.1. 调用
版本
日志对话框
4.9.2.
版本
日志动作
4.9.3. 获得更多信息
4.9.4. 获取更多的日志信息
4.9.5. 当前
工作
副本
的
版本
4.9.6.
合并
跟踪特性
4.9.7.
修改
日志消息和作者
4.9.8. 过滤日志信息
4.9.9. 统计信息
4.9.9.1. 统计页
4.9.9.2. 作者提交次数统计页
4.9.9.3. 按日期提交统计页
4.9.10. 离线方式
4.9.11. 刷新视图
4.10. 查看差异
4.10.1. 文件差异
4.10.2. 行结束符和空白选项
4.10.3. 比较文件夹
4.10.4. 使用 TortoiseIDiff 进行比较的图像
4.10.5. 其他的比较/
合并
工具
4.11. 添加新文件和目录
4.12. Copying/Moving/Renaming Files and Folders
4.13. 忽略文件和目录
4.13.1. 忽略列表
中
的模式匹配
4.14. 删除、移动和改名
4.14.1. 正在删除文件/文件夹
4.14.2. 移动文件和文件夹
4.14.3. 改变文件名称大小写
4.14.4. 处理文件名称大小写冲突
4.14.5. 修复文件改名
4.14.6. 删除未
版本
控制的文件
4.15. 撤消更改
4.16. 清理
4.17. 项目设置
4.17.1. Subversion 属性
4.17.1.1.
svn
:keywords
4.17.1.2. 增加和编辑属性
4.17.1.3. Exporting and Importing Properties
4.17.1.4. 二进制属性
4.17.1.5. 自动属性设置
4.17.2. Tortoise
SVN
项目属性
4.18. External Items
4.18.1. External Folders
4.18.2. External Files
4.19. 分支/标记
4.19.1. 创建一个分支或标记
4.19.2. 检出或者切换
4.20. 正在
合并
4.20.1.
合并
指定
版本
范围
4.20.2. 复兴分支
4.20.3.
合并
两个不同的目录树
4.20.4.
合并
选项
4.20.5. 预览
合并
结果
4.20.6.
合并
跟踪
4.20.7. 子
合并
期间处理冲突
4.20.8.
Merge
a Completed Branch
4.20.9. Feature Branch Maintenance
4.21. 锁
4.21.1. 锁定在Subverion
中
是如何
工作
的
4.21.2. 取得锁定
4.21.3. 释放锁定
4.21.4. 检查锁定状态
4.21.5. 让非锁定的文件变成只读
4.21.6. 锁定钩子脚本
4.22. 创建并应用补丁
4.22.1. 创建一个补丁文件
4.22.2. 应用一个补丁文件
4.23. 谁
修改
了哪一行?
4.23.1. 追溯文件
4.23.2. 追溯不同点
4.24.
版本
库浏览器
4.25.
版本
分支图
4.25.1.
版本
图节点
4.25.2. Changing the View
4.25.3. 使用图
4.25.4. 刷新视图
4.25.5. Pruning Trees
4.26. 导出一个Subversion
工作
副本
4.26.1. 从
版本
控制里移除删除
工作
副本
4.27. 重新定位
工作
副本
4.28. 与 BUG 跟踪系统/问题跟踪集成
4.28.1. Adding Issue Numbers to Log Messages
4.28.1.1. Issue Number in Text Box
4.28.1.2. Issue Numbers Using Regular Expressions
4.28.2. Getting Information from the Issue Tracker
4.29. 与基于 WEB 的
版本
库浏览器集成
4.30. Tortoise
SVN
的设置
4.30.1. 常规设置
4.30.1.1. 右键菜单配置
4.30.1.2. T
SVN
对话框设置一
4.30.1.3. T
SVN
对话框设置二
4.30.1.4. Tortoise
SVN
颜色设置
4.30.2. Revision Graph Settings
4.30.2.1. Revision Graph Colors
4.30.3. 图标叠加设置
4.30.3.1. 图标集选择
4.30.4. 网络设置
4.30.5. 外部程序设置
4.30.5.1. 差异查看器
4.30.5.2.
合并
工具
4.30.5.3. 差异查看/
合并
工具的高级设置
4.30.5.4. 统一的差异查看器
4.30.6. 已保存数据的设置
4.30.7. 日志缓存
4.30.7.1. Cached Repositories
4.30.7.2. 日志缓存统计
4.30.8. 客户端钩子脚本
4.30.8.1. Issue Tracker Integration
4.30.9. TortoiseBlame 的设置
4.30.10. 注册表设置
4.30.11. Subversion 的
工作
文件夹
4.31. 最后步骤
5. SubWCRev 程序
5.1. SubWCRev 命令行
5.2. 关键字替换
5.3. 关键字例子
5.4. COM 接口
A. 常见问题(FAQ)
B. 如何实现 …
B.1. 一次移动或复制多个文件
B.2. 强制用户写日志
B.2.1. 服务器端的钩子脚本(Hook-script)
B.2.2. 工程(Project)属性
B.3. 从
版本
库里更新选定的文件到本地
B.4. Roll back (Undo) revisions in the repository
B.4.1. 使用
版本
日志对话框
B.4.2. 使用
合并
对话框
B.4.3. 使用
svn
dumpfilter
B.5. Compare two revisions of a file or folder
B.6. 包含一个普通的子项目
B.6.1. 使用
svn
:externals
B.6.2. 使用嵌套
工作
副本
B.6.3. 使用相对位置
B.7. 创建到
版本
库的快捷方式
B.8. 忽略已经
版本
控制的文件
B.9. 从
工作
副本
删除
版本
信息
B.10. 删除
工作
副本
C. Useful Tips For Administrators
C.1. 通过组策略部署 Tortoise
SVN
C.2. 重定向升级检查
C.3. 设置
SVN
_ASP_DOT_NET_HACK 环境变量
C.4. 禁用上下文菜单
D. Tortoise
SVN
操作
D.1. Tortoise
SVN
命令
D.2. TortoiseIDiff 命令
E. 命令行交叉索引
E.1. 约定和基本规则
E.2. Tortoise
SVN
命令
E.2.1. 检出
E.2.2. 更新
E.2.3. 更新到
版本
E.2.4. 提交
E.2.5. 差异
E.2.6. 显示日志
E.2.7. 检查所作的
修改
E.2.8.
版本
图
E.2.9.
版本
库浏览器
E.2.10. 编辑冲突
E.2.11. 已解决
E.2.12. 改名
E.2.13. 删除
E.2.14. 恢复
E.2.15. 清理
E.2.16. 获得锁
E.2.17. 释放锁
E.2.18. 分支/标记
E.2.19. 切换
E.2.20.
合并
E.2.21. 输出
E.2.22. 重新定位
E.2.23. 在当前位置创建
版本
库
E.2.24. 添加
E.2.25. 导入
E.2.26. 追溯
E.2.27. 加入忽略列表
E.2.28. 创建补丁
E.2.29. 应用补丁(Apply Patch)
F. 实现细节
F.1. 图标重载
G. 用 SSH 使服务器更安全
G.1. 配置 Linux 服务器
G.2. 配置 Windows 服务器
G.3. 用于 Tortoise
SVN
的 SSH 客户端工具
G.4. 创建 OpenSSH 证书
G.4.1. 使用 ssh-keygen 创建密钥
G.4.2. 使用 PuTTYgen 创建密钥
G.5. 使用 PuTTY 测试
G.6. 使用 Tortoise
SVN
测试 SSH
G.7. SSH 配置参数
6. IBugtraqProvider interface
6.1. The IBugtraqProvider interface
6.2. The IBugtraqProvider2 interface
目 录 为什么需要使用配置管理软件
SVN
相关的基本概念 T
SVN
的使用流程及图标说明 T
SVN
基本功能的介绍 常见问题
SVN
培训教程全文共43页,当前为第1页。 使用配置管理的理由 及时了解团队
中
其他成员的进度。 轻松比较不同
版本
间的细微差别; 记录每个文件成长的每步细节,利于成果的复用(reuse); 资料共享,避免以往靠邮件发送文件造成的
版本
混乱; 人人为我,我为人人。所有成员维护的实际是同一个
版本
库,无需专人维护所有文件的最新
版本
; 协同
工作
,大大提高团队
工作
效率,无论团队成员分布在天涯还是海角;
SVN
培训教程全文共43页,当前为第2页。
SVN
基本概念 配置库( Repository )
SVN
的核心是配置库,储存所有的数据,配置库按照文件树形式储存数据-包括文件和目录,任意数量的客户端可以连接到配置库,读写这些文件。通过写数据,别人可以看到这些信息;通过读数据,可以看到别人的
修改
。 最特别的是 Subversion 会记录配置库
中
的每一次更改,不仅针对文件也包括目录本身,包括增加、删除和重新组织文件和目录。
SVN
培训教程全文共43页,当前为第3页。
SVN
基本概念
工作
副本
(WorkSpace) 与位于
中
央配置库相对应的是每个人的
工作
空间,它是每个程序员
工作
的地方,程序员从配置库拿到源代码,放在本地作为
工作
副本
,在
工作
副本
上进行查看、
修改
、编译、运行、测试等操作,并把新
版本
的代码从这里提交回配置库库
中
。
SVN
培训教程全文共43页,当前为第4页。
SVN
基本概念 配置库
工作
副本
Checkout Commit
SVN
培训教程全文共43页,当前为第5页。
SVN
的
工作
模式 复制-
修改
-
合并
方案(Subversion默认的模式) 在这种模型里,每一个客户读取项目配置库建立一个私有
工作
副本
——
版本
库
中
文件和目录的本地映射。用户并行
工作
,
修改
各自的
工作
副本
,最终,各个私有的复制
合并
在一起,成为最终的
版本
,这种系统通常可以辅助
合并
操作,但是最终要靠人工去确定正误。 锁定-
修改
-解锁方案 在这样的模型里,在一个时间段里配置库的一个文件只允许被一个人
修改
。 此模式不适合软件开发这种
工作
。
SVN
培训教程全文共43页,当前为第6页。 T
SVN
的使用基本流程
SVN
培训教程全文共43页,当前为第7页。
SVN
使用图标说明 一个新检出的
工作
副本
使用绿色的对勾表示Subversion状态 正常. 当我们开始编辑一个文件后,图标将变成红色感叹号。通过 这种方式,可以很容易地看出我们对哪些文件进行了
修改
操 作,但是还没有提交到
版本
库
中
; 如果在提交的过程
中
出现了冲突,图标将变成黄色感叹号。 如果我们拥有了一个文件的锁,并且Subversion状态是正常, 这个重载图标将提醒我们:如果不使用该文件的话,请进行 释放锁操作,允许其他成员提交对该文件的
修改
。
SVN
培训教程全文共43页,当前为第8页。
SVN
使用图标说明 这个图标表示当前文件夹下的某些文件或文件夹已经被计划从
版本
控制
中
删除,或是该文件夹下某个受控的文件丢失了。 加号告诉我们有一个文件或是目录已经被计划加入
版本
控制。
SVN
培训教程全文共43页,当前为第9页。 CheckOut(检出) 作用:将
版本
库
中
的内容检出到本地
工作
副本
步骤: 1.新建一个空文件夹; 比如:E:\Proj_trunk 2.在此目录
中
点击右键->
SVN
Checkout...
SVN
培训教程全文共43页,当前为第10页。 CheckOut的注意项 检出深度: 1.全递归(默认选择) 检出完整的目录树,包含所有的文件或子目录。 2.直接节点,包含目录 检出目录,包含其
中
的文件或子目录,但是不递归展开子目录。 3.仅文件子节点 检出指定目录,包含所有文件,但是不检出任何子目录。 4.仅此项。 只检出目录。不包含其
中
的文件或子目录。 省略外部引用:如果项目含有外部项目的引用,而这些引用我们不希望同时检出,请选
中
忽略外部项目复选框。如果选
中
了这个复选框,更新的时候要使用命令"更新至
版本
Update to Revision..."
SVN
培训教程全文共43页,当前为第11页。 Update(更新) 作用:更新
工作
副本
使其成为
版本
库
中
的最新
版本
SVN
将显示出更新的文件和更新的次数
SVN
培训教程全文共43页,当前为第12页。 Commit(提交) 对
工作
副本
进行编辑后提交到
SVN
在右键菜单
中
点击
SVN
Commit 提交前写好信息,点击确定
SVN
培训教程全文共43页,当前为第13页。 ——权限控制 当进行提交文件操作的时候您将看到权限提示信息 输入您的用户名和密码 保存权限设置(见红圈) ,可以避免将来重复输入用户名和密码
SVN
培训教程全文共43页,当前为第14页。 ——如何删除认证数据 步骤:点击右键
FreeGLUT
此自述文件适用于上托管的上FreeGLUT的
svn
存储库的git克隆。 此处提供此功能是为了使用户能够更轻松地做出贡献。
尽一切努力确保git_master分支仅以快进方式进行,但由于始终处于领先地位,因此无法给出完全保证。
如果github克隆在sourceforge.net上的
svn
/trunk后面,我将无法
合并
请求请求。 如果您检测到此问题,请与我联系,也许可以通过在github上发布问题来与我联系。
svn
库的此
副本
不是使用git
svn
创建的,而是具有的出色
svn
支持。
关于如何使用此功能的自我说明:收到请求请求后的基本
工作
流程如下:
在github上
合并
拉取请求
将更改拉到我的git_master分支的本地克隆
中
。
樱桃选择
合并
的提交到我的
svn
/trunk分支的本地克隆
中
将这些提交推送到
svn
remote(随着添加了额外的元数据,这会更改本
Tortoise
SVN
可以处理文件的二进制属性。使用保存...到文件读取二进制属性值。使用十六进制编辑器或其它适当的工具创建文件,然后用从文件加载...设置二进制值为此文件的内容。
尽管二进制文件不经常使用,它们在一些程序
中
是有用的。举例来说,如果你存储了巨大的图形文件,或者用程序加载的文件巨大,你可能想将缩略图作为属性存储,于是你可以快速的预览。
从
SVN
上DOWN下来一个主分支,在此分支上面分离出一个开发分支,并重新命名。
开发过程
中
,由于开发速度较快,在往主分支
合并
的时候,假设10个类被提交到分支上,但是主分支只要提交前5个类(进度管理),后面5个直接在
版本
合并
时没有勾选,并在本地的主分支进行删除(这可能就是问题的所在)。
2、后面要
合并
第6个类,结果此类已经在之前开发分支
版本
提交过,导致主
merge
:
Merge
changes into a working copy.usage: 1.
merge
SOURCE[@REV] [TARGET_WCPATH](the 'sync'
merge
)
merge
[-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH](the 'cherry-pick'
merge
)
merge
--...
本节向大家简单描述一下
SVN
分支和
合并
方面的知识,在学习
SVN
的过程
中
SVN
分支和
合并
时经常遇到的问题,在这里和大家分享一下,希望本文对大家有用。
关于主线同
SVN
分支
合并
的概念及如何使用的误区此问题是在netbuddy的问题上研究而成,走出误区的过程
中
得到了pcplayer指
今天,使用
SVN
进行了一次
版本
合并
,从分支合到主
版本
,搞了半天没有成功,不过最终解决了,记录一下。
情况:
版本
663(主
版本
)和
版本
850(分支
版本
),两个
版本
分别有
修改
。
第一次尝试:
# Simplified Chinese translation for subversion package
# This file is distributed under the same license as the subversion package.
# Update to new pot:
# msg
merge
--u...
复制-
修改
-
合并
方案 ............................................................................................................... 6
Subversion 怎么做? ........................................
Subversion 实践一个 Subversion 真实使用的例子。
Subversion
版本
库的 URLSubversion 使用 URL 来识别 Subversion
版本
库
中
的
版本
化资源,通常情况下,这些 URL 使用标准的语法,允许服务器名称和端口作为 URL 的一部分:$
svn
checkout http://
svn
.example.com:9834/repos…但 是Su...
# # Simplified Chinese translation for subversion package # This file is distributed under the same license as the subversion package. # # Update to new pot: # msg
merge
--update zh_CN.po subversi...
# Simplified Chinese translation for subversion package
# This file is distributed under the same license as the subversion package.
# Update to new pot:
# msg
merge
--update zh_CN.po subve
一、Subversion Repositories
subversion
版本
控制仓库(Repository)与其他
版本
控制系统并无区别。与
工作
副本
不同之处在于,subversion repository是个抽象的实体,能够被subversion自己的工具和库几乎专有的操作。许多用户与subversion的交互都是基于
工作
副本
,因此后续会着重介绍subversion
中
工作
副本
的操作。