`
victorwmh
  • 浏览: 213711 次
  • 性别: Icon_minigender_1
  • 来自: 宇宙
社区版块
存档分类
最新评论

subversion实例及冲突与锁

阅读更多

项目开发示例

文件签出(拷贝)
# 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)

    使用Subversion进行版本控制针对 Subversion 1.4(根据r2866编译) 参照网页版 http://svndoc.iusesvn.com/svnbook/1.4/制作而成。 目录 前言 序言 读者 怎样阅读本书 本书约定 排版习惯 图标 本书的结构 本书是...

    Subversion1.5.1发布- Subversion中文站SVN_TortoiseSVN_教程_文档_培训

    培训材料通常包括实例演示、最佳实践指导和常见问题解答,这些都是帮助团队成员适应Subversion工作流程的关键。通过这些培训,开发者不仅可以学习如何有效地使用Subversion,还能了解如何在团队协作中利用它的优势,...

    subversion1.4文档(根据r2866编译)

    Subversion 1.4是这个版本控制系统的一个特定版本,而r2866很可能是指修订号,通常与开源项目软件版本的某个特定修订或发行版本有关。 由于提供的文档内容未显示具体章节或段落,我们不能给出基于实际文档内容的...

    Apress.Practical.Subversion.2nd.Edition.2006.pdf

    - **基本命令操作**:涵盖了Subversion中最常用的命令,如`svn checkout`、`svn commit`等,并通过实例演示如何使用这些命令。 - **工作流程介绍**:介绍了使用Subversion时常见的工作流程,包括检出代码、修改文件...

    Eclipse编程技术与实例

    本书"《Eclipse编程技术与实例》"旨在为初学者提供一个系统且实用的学习平台,帮助他们快速掌握Eclipse的使用技巧和编程方法。 1. **Eclipse基础知识** - **安装与配置**:讲解如何下载Eclipse IDE,以及如何根据...

    开源版本控制SVN 树冲突、目录丢失问题及解决机制探讨

    本文将深入探讨一种特殊的冲突类型——树冲突,以及目录丢失问题,通过实例分析来阐述其原因和解决方法。 **树冲突**是SVN中的一种特殊情况,不同于传统的文件内容冲突,它发生在目录层次结构上。当两个或多个修订...

    svn版本冲突是怎么解决(最重要).txt

    本文将深入探讨SVN中的版本冲突及其解决方法,以“svn版本冲突是怎么解决(最重要)”为主题,结合具体实例进行详细解析。 ### SVN版本冲突的产生 版本冲突通常发生在以下场景:两个或更多的开发者对同一文件进行了...

    JBuilder程序设计实例

    实例中会有相关教程,展示如何在JBuilder中进行版本控制操作,如提交、更新和解决冲突。 此外,JBuilder还具有强大的调试工具,包括断点设置、单步执行、查看变量值等功能,这对于查找和修复bug极其有效。通过实例...

    PHP基于Web的subversion用户管理系统(源代码+论文).rar

    3. **Subversion(SVN)**:Subversion是一个集中式的版本控制系统,用于跟踪文件和目录的修改历史,支持分支和合并,使得多个人可以在同一份代码库上协作而不会相互冲突。在用户管理系统中,SVN仓库的访问控制是...

    wcf实例更新svn实例

    标题 "wcf实例更新svn实例" 涉及到的技术主要集中在Windows Communication Foundation (WCF) 和Subversion (SVN) 的集成应用上。WCF是.NET Framework中的一个组件,用于构建可互操作的分布式系统,而SVN则是一种版本...

    计算机系毕业设计、php源码、PHP基于Web的subversion用户管理系统(源代码+论文).rar

    综上所述,这个毕业设计项目涵盖了Subversion的使用、PHP编程、Web应用开发、数据库管理、权限控制等多个IT领域的知识点,是学习和实践软件工程流程的良好实例。通过完成这样的项目,学生不仅能提升编程技能,还能...

    subversion-TortoiseSVN-使用手册(CHM+HTML,中英完整版)

    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. 检出...

    版本管理工具 CollabNetSubversionEdge-5.1.4-linux-x86-64.tar.gz

    - 运行与维护:启动服务后,通过Web界面监控和管理Subversion Edge实例。 4. **CSVN子文件**: `csvn`可能是指CollabNet Subversion Edge的可执行文件或者相关的配置和服务脚本。在安装和配置过程中,这些文件会...

    SVNkit的Jar包 和实例代码

    标签“SVN”、“SVNKit”、“SVNjar”和“SVN代码”分别强调了这是与Subversion、SVNkit库、JAR包以及与之相关的代码实现有关的内容。这些标签有助于用户通过关键词搜索找到相关的资料和解决方案。 在压缩包的文件...

    svn最常用命令与实例

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。通过SVN,用户可以在多个开发人员之间协同工作,确保代码的一致性和可追踪性。以下是SVN的一些常用命令及其详细解释: 1. **...

    SVNKit实例 + jar包 + SVNKit API

    1. **SVNRepository**:这是与Subversion仓库交互的主要接口,提供各种操作,如打开、关闭仓库,以及读取仓库信息等。 2. **SVNWCClient**:工作拷贝客户端,处理本地工作拷贝的各种操作,如添加、删除、重命名文件...

    svnkit帮助文档API+SVNKit实例+jar包

    SVNKit是一个强大的Java库,它实现了Subversion(SVN)客户端功能,允许开发者在Java应用程序中集成版本控制系统。SVNKit提供了丰富的API,使得开发者能够执行常见的SVN操作,如检出、提交、更新、合并等。这个...

    SVN使用手册中文版快速入门

    Subversion是什么? Subversion的历史 Subversion的特性 Subversion的架构 安装Subversion Subversion的组件 快速入门 2. 基本概念 版本库 版本模型 文件共享的问题 锁定-修改-解锁 方案 拷贝-修改-合并 方案 ...

    VisualSVN 说明文档

    **冲突解决实例**: 假设A和B同时修改了同一个文件a,导致冲突。B需要获取新版本,编辑冲突,选择"Resolved",然后提交。对于二进制文件或不宜编辑的文件,通常采用锁定-编辑-解锁模式来避免冲突。 例如,在...

Global site tag (gtag.js) - Google Analytics