Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1073426
  • 博文数量: 252
  • 博客积分: 4561
  • 博客等级: 上校
  • 技术积分: 2833
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-15 08:23
文章分类

全部博文(252)

文章存档

2015年(2)

2014年(1)

2013年(1)

2012年(16)

2011年(42)

2010年(67)

2009年(87)

2008年(36)

分类: LINUX

2012-01-29 09:35:52

svn 创建分支与合并
2010-11-03 10:54

平时工作都是用svn的,然而我用着却并不熟练。只是经常用到的 svn checkout , svn ci -m ” ,svn up ,svn diff之类的比较熟悉,而创建分支和合并却几乎没用到。

在前几天打了一个分支,今天需要把这个分支合并,这可太郁闷了。工具不熟用着不顺手啊。这里记录一下这些常用的命令,希望给自己提个醒吧。

快速学习svn:

之所以学习svn很慢,是因为没有地方练习。啥,你说线上的代码没事改着玩?那样会死的很惨。线上代码一定要小心,再小心。

前几天,同事说 Google code 不错,去网上搜了一下,惊呼,这不就是让我快速学习掌握svn命令的东西吗?爽也。

关于 google code的介绍不再多谈,大家自己去搜一下吧,相信会收获很多的,我这里不是为google 打广告,不再缀述。

svn 创建分支:

svn copy trunk_path  branch_path  -m '描述'

如下代码,我在我的google code上面创建了一个我自己项目的分支(毛项目也不是,就是练习svn命令的)

svn copy https://simaopig.googlecode.com/svn/trunk https://simaopig.googlecode.com/svn/branches/20091022 -m 'make a new branches by yufulong'

提交后的修订版为 21

svn 查看创建分支时的版本号:

大家在上面的例子中看到了我的创建分支时的版本号为21。可是当我把分支里的内容改过,或者trunk的内容被别人改过后。就凭咱这脑袋是打死也不会记得这个创建分支时的版本号的。这可就成问题了,不知道合并哪些版本了。。

svn info查看最新版本

svn info查看最新版本

看现在的版本号变成23了,这才几分钟。如果时间长了的话。我真的会不记得这个创建分支时的版本号的。咋办呢?

svn log --verbose --stop-on-copy branch_path

看我执行该命令后的结果:

svn log --verbose --stop-on-copy

svn log --verbose --stop-on-copy

看到没,在最后一行,显示的那个版本号就是你创建该分支时的版本号。 stop on copy 多么形象啊。赞一个。

svn 合并分支:

内容改完了,要上线了。我们应该把分支的内容与trunk上的内容合并。咋合并呢?

#进入有trunk版本的目录中
svn merge -r 旧的版本号:现在的版本号 branch_path
svn merge

svn merge

svn 代码冲突的解决:

使用svn管理的代码可能有多个人在维护。哪怕就是你自己也可能让trunk和branch上面的代码产生冲突。合并后的C符号就是代表文件有冲突的意思。

我解决冲突的方法是手动去掉那些不必要的代码。看留哪个。但是去掉后一些svn冲突的文件仍然存在,咋办?

冲突产生的多余文件

冲突产生的多余文件

svn resolved 冲突的文件名

当手动解决完冲突后你会发现这些多出来的文件仍然存在,别怕,使用上面的命令:如果你的冲突真的解决了,那么多出来的文件会自动删除掉的。可比你自己手动rm要方便的多了。

svn resolved

svn resolved

扩展阅读:

工欲善其事,必先利其器。我这懒惰的毛病啥时候能改呢?唉。。

PS:下面的svn手册是我放在google docs里共享的。大家可以下载下来看,更方便,也更清晰。

阅读(1131) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~