`
wen742538485
  • 浏览: 227176 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

svn命令行基本操作

    博客分类:
  • java
阅读更多
SVN 基本操作


检出checkout(co)

svn co ${url}

更新update(up)

svn up

提交commit(ci)

svn ci -m " 修改xxx 问题"

查看当前目录最近5 次提交记录

svn log -l 5

查看当前工作拷贝信息

svn info

查看当前未提交的文件status(st)

svn st

这个命令输出每个添加、修改、删除过的目录和文件,前面的C 表示冲突,要特别注意。linux 下也可以用svn st | grep ^C 来查看冲突项。

查看当前修改内容

svn diff

撤销当前修改,覆盖为资源库最新版本

svn revert path/filename

递归撤销当前目录修改,覆盖为资源库最新版本。注意新加的文件不会被删除,这时也可以删除工作拷贝,重新checkout

svn revert . --recursive

SVN merge

自动合并

主干到分支

建立分支以后,一个要做的事情就是定期将主干上的修改合并到分支。先进入分支的工作拷贝,确认分支上所有修改已经提交,然后:

$ svn merge http://codeserver/calc/trunk

--- Merging r345 through r356 into '. ':

U    button.c

U    integer.c

--- Recording mergeinfo for merge of r345 through r356 into '. ':

U   .

$

假设t1 时刻建立了分支,t2 时刻执行上面的命令进行合并,t3 时刻再次执行上面的命令进行合并。 由于分支是从主干分离出去的,所以第一次合并的时候(t2 ),svn 能知道分支建立以后进行了哪些修改,它会将分支建立以后这段时间主干的修改(t1 ~t2 ),应用到当前工作拷贝。

第二次执行上述命令的时候,svn 会意识到t1 ~t2 时刻的修改已经合并过了,所以它仅将t2 ~t3 时间段内主干的修改,应用到当前工作拷贝。 第二次合并的时候,svn 能够做到智能合并,这依赖于svn:mergeinfo 属性,请注意上面命令输出的最后一行,表示svn 正在将svn:mergeinfo 属性记录到当前目录下,所以执行svn merge 目录的时候,最好在工作拷贝的根路径下执行。

svn:mergeinfo 的内容大致如下,它记录合并了哪个路径的哪两个版本的差异,可用svn propget svn:mergeinfo path 查看,输出类似如下:

/branches/V8822_optimiz_20090722/lottery:8828-9374

/branches/V8865_wap_20090727/lottery:8876-8937

/branches/V8944_P3_20090803/lottery:8992-9400

/branches/V9377_newp3_20090818/lottery:9400-9947

/branches/V9377_wappay_20090818/lottery:9404-9493

分支回主干

在分支上开发完成后,需要将分支合并到主干。进入主干的工作拷贝的根目录,运行

$ svn merge http://codeserver/calc/branchurl --reintegrate

我们假设上述命令发生在t4 时刻,如果上面的命令不带--reintegrate 参数,可能会造成冲突,在svn 看来,t1 时刻建立了分支,然后主干上进 行了一些修改,分支上也进行了一些同样的修改(原因是我们在t2 、t3 时刻曾经将主干的修改合并到分支),所以就冲突了。 加上这个参数以后,根据分支目录http://codeserver/calc/branchurl 上的svn:mergeinfo 信息,svn 在进行合 并的时候会排除主干迁移到分支的这些修改,仅仅将分支上的修改迁回主干。

假设在t5 时刻,需要再次合并分支上的修改,这时可以不带--reintegrate 参数,因为在t4 时刻执行命令以后,已经将svn :mergeinfo 记录在主干。

手工合并

svn merge 可以理解为比较资源库中的两个不同版本(diff ),然后将差异应用到当前工作拷贝。 实际上,上面描述的自动合并功能是svn1.5 以后才有的,在这之前都是通过手工合并的方式工作。同时,在一些比较复杂的场景,手工合并会更加灵活。手工合并的方式为:

$ svn merge -r version1:version2 http://codeserver/calc/branchurl

$ svn merge -c version1 http://codeserver/calc/branchurl

上面的version1 和version2 是版本号,可以用HEAD 来代替当前最新版本。第一条命令将分支上version1 到version2 的修改合并到当前工作副本,第二条命令将第version1 次提交的修改合并到当前工作副本。

特别要注意理解 变更集 的概念。下面以15 选5 项目的分支为例,假设svn log 如下(经过简化)。

------------------------------------------------------------------------

r24673 | yeli.hl | 2012-01-08 21:44:33 +0800 ( 日, 08  1 2012) | 1 line

 

开奖时间修改为20 :30

------------------------------------------------------------------------

r24644 | yeli.hl | 2012-01-06 11:42:22 +0800 ( 五, 06  1 2012) | 1 line

 

修正参与链接

------------------------------------------------------------------------

r24615 | yeli.hl | 2012-01-04 18:59:30 +0800 ( 三, 04  1 2012) | 1 line

 

merge trunk 24611

------------------------------------------------------------------------

r24601 | yeli.hl | 2012-01-04 15:29:43 +0800 ( 三, 04  1 2012) | 1 line

 

优化追号期数的显示

------------------------------------------------------------------------

r24585 | yeli.hl | 2012-01-04 13:55:42 +0800 ( 三, 04  1 2012) | 1 line

 

修改“ 我的淘宝” 导航条为3.1 版本。

------------------------------------------------------------------------

r24506 | yeli.hl | 2011-12-30 15:17:26 +0800 ( 五, 30 12 2011) | 1 line

 

merge trunk 24505

------------------------------------------------------------------------

r24182 | yeli.hl | 2011-12-14 18:01:48 +0800 ( 三, 14 12 2011) | 1 line

 

十五选五中奖号码解析。

------------------------------------------------------------------------

r24050 | yeli.hl | 2011-12-05 15:04:39 +0800 ( 一, 05 12 2011) | 1 line

 

取彩期的时间程序调度。15X5 重命名。投注页面静态代码拆分。

------------------------------------------------------------------------

r23950 | yeli.hl | 2011-11-28 16:50:16 +0800 ( 一, 28 11 2011) | 1 line

 

anhui 15*5

可以看到,建立分支的那一次提交是r23950 ,则-r 23950:24050 和-c 24050 代表的是同一个 变更集 ,前者表示23950 ~24050 的差异,后者表示24050 这次提交的变更,其实它们都是一样的,都是24050 这次提交导致的变更。因此,假设我们已 经合并了-r A:B ,如果B 之后又有一系列提交,最新版本是C ,我们想把这之后所有的修改并过来,则需要-r B:C ,注意第二次包括了B 。

假设现在我们想要手动方式把这个分支的变更迁回主干。则命令为(需要排除两次merge 主干的修改):

$ svn merge -r 23950:24182 branch_url

$ svn merge -r 24506:24601 branch_url

$ svn merge -r 24615:HEAD branch_url

如果用-c 方式,最后一个命令等效为:

$ svn merge -c 24644 branch_url

$ svn merge -c 24673 branch_url

撤销已提交操作(回滚)

merge 的另外一个用途是撤销已经提交的代码,具体的做法是反向merge ,用下面的命令撤销一次提交,假设url 路径上进行了不应该的提交,进入该路径的工作拷贝,执行

$ svn merge -c -A url

$ svn merge -r C:B url

第一个命令撤销版本号是A 的提交,注意版本号前面的减号。第二个命令撤销B ~C 的提交。执行完以后,再commit 。当然,实际上svn 并不能删除任意一个版本,这些操作仍然都会在历史中,它的作用只是在当前的HEAD 中撤销了某次(或某段)提交的内容。

注意事项

1.   为了防止造成破坏,可以带上--dry-run 参数进行预览,合并的时候如果带上这个参数,工作拷贝将不会被修改,但是你能够看见有哪些代码被修改,哪些有冲突。

2.   merge 前保证所有代码已经提交,并且已经进行了更新,并检查当前的工作拷贝是正确的。

3.   执行merge 操作以后,解决完冲突立即提交。这样可以保证本次提交代表了一次纯粹的merge 。例如上面的r24506 、r24615 ,在手工merge 回主干的时候,需要排除这些提交,如果这些提交包含了其它修改就没有办法区分了。

4.   提交的注释中描述清楚当前是从哪个版本merge 到哪个版本,有时候手工合并的时候需要参考到。

5.   在根目录执行merge 操作,避免在子目录和文件中留下mergeinfo 信息。

彩票SVN 相关操作

创建代码分支

以lottery 为例,随便找个目录,执行类似下面的命令

svn cp http://svn.taobao-develop.com/repos/lottery/trunk/lottery \

http://svn.taobao-develop.com/repos/lottery/branches/V${ 当前主干版本号}_${ 项目名称}_${date}/lottery \

-m " 创建XXX 项目分支" --parents

可以到http://svn.taobao-develop.com/repos/lottery/branches/ 下参考其它的分支命名。

合并主干的最新修改到分支

开发一段时间以后,需要将主干的最新修改合并到项目分支。进入分支工作拷贝的根路径(请注意一定要在根路径进行操作),运行

1.   svn info 确认当前工作路径正确:指向分支

2.   svn st 确认所有代码都已经提交

3.   运行命令

4.   svn merge http://svn.taobao-develop.com/repos/lottery/trunk/lottery

5.   人肉解决冲突,可以用svn st 查看(*nix 下用svn st | grep ^C 查看) 是否有冲突,C 开头的文件标识有冲突,解决完以后用svn resolved path/filename 标记冲突为已解决

6.   svn st 确认已经没有冲突了

7.   提交

合并分支修改到主干

上日常的时候,需要将项目分支修改合并到日常服务器的主干工作拷贝,但是不提交。在主干工作拷贝根路径(请注意一定要在根路径进行操作)下执行以下操作

1.   svn info 确认当前工作路径正确:指向主干

2.   svn st 确认所有代码都已经提交

3.   运行命令

4.   svn merge http://svn.taobao-develop.com/repos/lottery/branches/V${ 当前主干版本号}_${ 项目名称}_${date}/lottery --reintegrate

5.   人肉解决冲突,可以用svn st 查看(*nix 下用svn st | grep ^C 查看) 是否有冲突,C 开头的文件标识有冲突,解决完以后用svn resolved path/filename 标记冲突为已解决

6.   svn st 确认已经没有冲突了

删除代码分支(项目预发后删除代码分支)

随便找个目录,执行下面的命令(lottery 和keno 没有区别)

svn mv http://svn.taobao-develop.com/repos/lottery/branches/V${ 当前主干版本号}_${ 项目名称}_${date}/lottery \

http://svn.taobao-develop.com/repos/lottery/branches/backup_branches/V${ 当前主干版本号}_${ 项目名称}_${date}/lottery \

-m " 删除${ 项目名称} 代码分支"

项目合并

可先从主干拉一个分支,两个项目分别将自己的修改合并到这个分支。上日常的时候再将这个分支合并到主干。

分享到:
评论

相关推荐

    pypy3.6-v7.3.0rc1-aarch64.tar.bz2

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    星闪技术介绍.pptx

    星闪技术介绍

    FAT32文件系统的数据隐写

    源代码

    pypy2.7-v7.0.0-linux32.tar.bz2

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    ppt328328328

    328328328328

    全自动晶圆激光隐形切割设备,全球前10强生产商排名及市场份额.pdf

    QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。 邮箱:market@qyresearch.com

    人工智能python安装环境(Miniconda3-py39-)(pycharm-community-2021.3.2.exe)

    人工智能python安装环境(Miniconda3-py39-)(pycharm-community-2021.3.2.exe)

    钢铁是怎样炼成的ppt模板x.pptx

    钢铁是怎样炼成的ppt模板x.pptx

    工作汇报 年终总结82.pptx

    封面 标题:基于物联网的智能家居系统年度总结 报告人信息:[姓名]、[职位/角色]、[所属机构/公司] 日期:[具体日期] 目录 引言 年度工作回顾 系统进展与亮点 技术创新与应用 市场反馈与用户评价 存在问题与挑战 未来展望与计划 结束语与感谢 一、引言 简要介绍智能家居系统的重要性和发展趋势 回顾本年度的工作目标和重点 二、年度工作回顾 系统建设与维护 完成的项目与里程碑 系统稳定性与可靠性提升 团队建设与培训 团队成员构成与职责 培训与技能提升活动 合作伙伴与资源整合 与供应商、合作伙伴的合作情况 资源整合与利用 三、系统进展与亮点 功能扩展与优化 新增功能介绍与效果评估 现有功能的优化与改进 用户体验提升 界面设计与交互优化 用户反馈与改进措施 四、技术创新与应用 物联网技术的应用 传感器与通信技术的升级 大数据分析与应用 智能家居的智能化管理 自动化控制与节能策略 安全防护与预警系统 五、市场反馈与用户评价 市场反馈分析 市场需求与竞争态势 市场占有率与增长趋势 用户评价总结 用户满意度调查结果

    LabVIEW专栏一、编写单独vi

    LabVIEW专栏一、编写单独vi

    SQL/数据库查询语言

    SQL/数据库查询语言

    flutter 常用插件整理附加使用实例

    flutter 常用插件整理附加使用实例

    IMG_20240327_093721.jpg

    IMG_20240327_093721.jpg

    列车车厢重排问题.pdf

    列车车厢重排问题是一个著名的组合优化问题,也被称为火车车厢重排问题(Railway Carriage Shunting Problem),它的目标是通过尽可能少的操作将一列乱序的车厢重新排列成有序的顺序。 在这个问题中,我们有一列由1到n号标记的乱序车厢。初始时,所有的车厢都停在一条没有分叉的轨道上。现在我们要进行一系列操作来将车厢按照升序排列。每个操作可以将车厢从一段轨道移到另一端轨道的任意位置。而这些操作的目标是,经过一定的操作后,所有车厢按照升序排列。 这是一个经典的组合优化问题,可以使用多种算法来解决。其中一种常见的解法是使用贪心算法。

    pypy3.6-v7.3.1-s390x.tar.bz2

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习

    简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习 简历是展示个人经历、技能和能力的重要文档,以下是一个常见的简历格式和内容模板,供您参考: 简历格式: 头部信息:包括姓名、联系方式(电话号码、电子邮件等)、地址等个人基本信息。 求职目标(可选):简短描述您的求职意向和目标。 教育背景:列出您的教育经历,包括学校名称、所学专业、就读时间等。 工作经验:按时间顺序列出您的工作经历,包括公司名称、职位、工作时间、工作职责和成就等。 技能和能力:列出您的专业技能、语言能力、计算机技能等与职位相关的能力。 实习经验/项目经验(可选):如果您有相关实习或项目经验,可以列出相关信息。 获奖和荣誉(可选):列出您在学术、工作或其他领域获得的奖项和荣誉。 自我评价(可选):简要描述您的个人特点、能力和职业目标。 兴趣爱好(可选):列出您的兴趣爱好,展示您的多样性和个人素质。 参考人(可选):如果您有可提供推荐的人员,可以在简历中提供其联系信息。 简历内容模板: 姓名: 联系方式: 地址: 求职目标: (简短描述您的求职意

    pypy3.6-v7.3.3rc1-linux32.tar.bz2

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    智能床新品618营销推广项目方案ss.pptx

    智能床新品618营销推广项目方案ss.pptx

    asp代码(软件工程)精品课程教学网站的设计与实现ASP+SQLSever2000

    asp代码《软件工程》精品课程教学网站的设计与实现 ASP+SQL Sever2000本资源系百度网盘分享地址

Global site tag (gtag.js) - Google Analytics