项目开发示例
文件签出(拷贝)
# svn co file:///home/victorwmh/svn-repos/sesame/trunk sesame
参数co告诉subversion要执行签出操作,file://URL指定想要签出的项目仓库的位置,sesame告诉subversion要把工作拷贝签出到哪儿,本例中的sesame表示将工作拷贝签出到当前目录下的sesame目录中。
查看文件状态
# svn status Day.txt
输出结果中的M表示这个文件本地被修改过了,而且这些改动没有被存储到项目仓库中去。
查看修改情况
# svn diff Day.txt
输出结果中包含大量信息,如项目仓库文件的名字和版本号,被修改信息的具体位置等。
更新项目仓库
# svn commit -m "Cliend wants us to work on weekends"
commit的功能是存储所有改动到项目仓库中,-m选项用来给所做的改动附加有意义的注释。
# svn log Day.txt
查看文件修改历史的日志,包含项目仓库中的版本号。
# svn log --verbose Day.txt
增加--verbose选项,subversion输出更多信息,会告诉你每个版本中具体哪些被改动了。
# svn update
当提交修改后立马询问当前目录的日志时,subversion不会告诉你有什么改动,输出的日志为截止上次提交的内容。如果要看到最新的日志信息,得先运行svn update。
命令执行后,如果有更新会输出一个包含两段内容的列表,前面一个是状态组合符,后面一个为文件目录名。
状态符及含义如下:
A、项目仓库中有新文件,subversion为了更新工作拷贝,添加了一个文件到其中。
U、工作拷贝中的文件过期,因为有一个更新的版本签入到项目仓库中。subversion已经把工作拷贝中的文件更新为新的版本。
D、该文件已从项目仓库中删除了,subversion把它从工作拷贝中移除了。
G、工作拷贝中的文件过期,而且你本地还做了修改。subversion成功的把项目仓库中的版本和你本地的修改合并到了一起。
C、工作拷贝中的文件过期,而且你本地也做了修改。subversion尝试着合并项目仓库的改动和你本地的修改,但遇到了冲突。你需要把这个冲突解决了之后才能签入。
冲突
# svn status --show-updates
使用--show-updates(简写-u)让subversion从项目仓库中找出当前目录下的文件是否有更新。
# svn diff -r HEAD Number.txt
使用-rHEAD选项让subversion比较Number.txt的本地拷贝与项目仓库中最新版本间的差别,没有指定-r标识subversion会把本地拷贝的Number.txt与项目仓库的签出版本拿来进行比较。如果项目仓库中有人更新了Number.txt,你得到的svn diff Number.txt输出仍然为空。
冲突一:A、B同时修改相同文件的不同行
假如A先于B提交修改,那么执行如下:
A:
# svn commit -m "modify message"
B:
# svn update
# svn commit -m "modify message"
B提交修改前,需要执行svn update更新到仓库项目中的最新版本,不然冲突会导致提交失败。svn update命令会把本地的版本和项目仓库中的版本合并到一块。
冲突二:A、B同时修改相同文件的相同行
假如A先于B提交修改,那么执行如下:
A:
# svn commit -m "modify message"
B:
# svn update
相同的修改冲突,在执行svn update命令后,修改冲突的地方会有一对<<<<<<< .mine和>>>>>>> .r5的标记,5为相应的版本号。修改好冲突后,执行以下命令。
# svn resolved Number.txt
resolved命令告诉subversion冲突已解决,Number.txt为冲突文件。
# svn commit -m "modify message"
操作属性
# svn propset checked-by "Mike Mason" Number.txt
# svn propedit checked-by Number.txt
注:这个命令需要使用SVN_EDITOR环境变量,如果没有设置该环境变量的话,将报以下错误:"SVN:没有设置 SVN_EDITOR,VISUAL 或 EDITOR 环境变量,运行时的配置参数中也没有“editor-cmd”选项"。
解决方法:linux下在/etc/profile或~/.bash_profile中设置export SVN_EDITOR=vim,或者直接在命令行下输入# export SVN_EDITOR=vim命令。windows下直接在高级设置的环境变量中添加,变量名为SVN_EDITOR,值为notepad。
值得说明的是,这个环境变量和服务端的subversion没任何关系,只和你前使用的subversion相关。网上很多apache+subversion配置文档都有标注这点内容,这样很不好容易引起初学者思维混乱,其实是在客户端碰到这种报错,但一直在服务器折腾。
# svn proplist Number.txt
# svn propget checked-by Number.txt
# svn propdel
加锁、解锁和破坏锁
subversion锁机制主要是为解决一些不可合并文件的冲突而设置,如声音、图片以及更多格式的文档等。
设置文件需要加锁
# svn propset svn:needs-lock true rates.xls
# svn commit -m "Enable locking for spreadsheet"
加锁
# svn lock rates.xls -m "Adding area rates"
# svn info rates.xls
这儿包含有很多信息,锁信息只要关注最后五行即可。另外,当一个文件已被人加锁时,其他人再加锁的话会提示错误信息。想了解谁对这个文件进行了加锁,可以执行类似#svn info url的命令查看,例如:svn info
http://192.168.1.200/svn/aladdin/rates.xls。
解锁或破坏锁
# svn unlock rates.xls
当文件的锁定者为你时,可以用unlock进行解锁。但当锁定者不是你时,这种解锁称为破坏锁。需要增加--force选项,以及指定完整的文件URL路径。
# svn unlock --force http://192.168.1.200/svn/aladdin/rates.xls
分享到:
相关推荐
使用Subversion进行版本控制针对 Subversion 1.4(根据r2866编译) 参照网页版 http://svndoc.iusesvn.com/svnbook/1.4/制作而成。 目录 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书的结构 本书是...
培训材料通常包括实例演示、最佳实践指导和常见问题解答,这些都是帮助团队成员适应Subversion工作流程的关键。通过这些培训,开发者不仅可以学习如何有效地使用Subversion,还能了解如何在团队协作中利用它的优势,...
Subversion 1.4是这个版本控制系统的一个特定版本,而r2866很可能是指修订号,通常与开源项目软件版本的某个特定修订或发行版本有关。 由于提供的文档内容未显示具体章节或段落,我们不能给出基于实际文档内容的...
- **基本命令操作**:涵盖了Subversion中最常用的命令,如`svn checkout`、`svn commit`等,并通过实例演示如何使用这些命令。 - **工作流程介绍**:介绍了使用Subversion时常见的工作流程,包括检出代码、修改文件...
本书"《Eclipse编程技术与实例》"旨在为初学者提供一个系统且实用的学习平台,帮助他们快速掌握Eclipse的使用技巧和编程方法。 1. **Eclipse基础知识** - **安装与配置**:讲解如何下载Eclipse IDE,以及如何根据...
本文将深入探讨一种特殊的冲突类型——树冲突,以及目录丢失问题,通过实例分析来阐述其原因和解决方法。 **树冲突**是SVN中的一种特殊情况,不同于传统的文件内容冲突,它发生在目录层次结构上。当两个或多个修订...
本文将深入探讨SVN中的版本冲突及其解决方法,以“svn版本冲突是怎么解决(最重要)”为主题,结合具体实例进行详细解析。 ### SVN版本冲突的产生 版本冲突通常发生在以下场景:两个或更多的开发者对同一文件进行了...
实例中会有相关教程,展示如何在JBuilder中进行版本控制操作,如提交、更新和解决冲突。 此外,JBuilder还具有强大的调试工具,包括断点设置、单步执行、查看变量值等功能,这对于查找和修复bug极其有效。通过实例...
3. **Subversion(SVN)**:Subversion是一个集中式的版本控制系统,用于跟踪文件和目录的修改历史,支持分支和合并,使得多个人可以在同一份代码库上协作而不会相互冲突。在用户管理系统中,SVN仓库的访问控制是...
标题 "wcf实例更新svn实例" 涉及到的技术主要集中在Windows Communication Foundation (WCF) 和Subversion (SVN) 的集成应用上。WCF是.NET Framework中的一个组件,用于构建可互操作的分布式系统,而SVN则是一种版本...
综上所述,这个毕业设计项目涵盖了Subversion的使用、PHP编程、Web应用开发、数据库管理、权限控制等多个IT领域的知识点,是学习和实践软件工程流程的良好实例。通过完成这样的项目,学生不仅能提升编程技能,还能...
5.12.1. 仅在单一实例中重命名文件 5.12.2. 修复文件改名 5.13. 撤消更改 5.14. 清除 5.15. 项目设置 5.15.1. Subversion 属性 5.15.2. TortoiseSVN 属性 5.16. 分支/标记 5.16.1. 创建一个分支或标记 5.16.2. 检出...
- 运行与维护:启动服务后,通过Web界面监控和管理Subversion Edge实例。 4. **CSVN子文件**: `csvn`可能是指CollabNet Subversion Edge的可执行文件或者相关的配置和服务脚本。在安装和配置过程中,这些文件会...
标签“SVN”、“SVNKit”、“SVNjar”和“SVN代码”分别强调了这是与Subversion、SVNkit库、JAR包以及与之相关的代码实现有关的内容。这些标签有助于用户通过关键词搜索找到相关的资料和解决方案。 在压缩包的文件...
SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。通过SVN,用户可以在多个开发人员之间协同工作,确保代码的一致性和可追踪性。以下是SVN的一些常用命令及其详细解释: 1. **...
1. **SVNRepository**:这是与Subversion仓库交互的主要接口,提供各种操作,如打开、关闭仓库,以及读取仓库信息等。 2. **SVNWCClient**:工作拷贝客户端,处理本地工作拷贝的各种操作,如添加、删除、重命名文件...
SVNKit是一个强大的Java库,它实现了Subversion(SVN)客户端功能,允许开发者在Java应用程序中集成版本控制系统。SVNKit提供了丰富的API,使得开发者能够执行常见的SVN操作,如检出、提交、更新、合并等。这个...
Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 安装Subversion Subversion的组件 快速入门 2. 基本概念 版本库 版本模型 文件共享的问题 锁定-修改-解锁 方案 拷贝-修改-合并 方案 ...
**冲突解决实例**: 假设A和B同时修改了同一个文件a,导致冲突。B需要获取新版本,编辑冲突,选择"Resolved",然后提交。对于二进制文件或不宜编辑的文件,通常采用锁定-编辑-解锁模式来避免冲突。 例如,在...