搞u-boot很久了,一直在用svn进行版本控制,感觉非常好。

不过我是最近才找到合并分支的方法,这里介绍一下。

首先说一下我的环境。

1、使用svn开发的模式:

所有开发都在分支进行,完成某一阶段时,将其合并到主干上,同时作一标签,即tag。svn_repos仓库中u-boot目录下有三个目录:trunk、branches、tags,分别保存主干代码、分支代码和标签。分支名称如u-boot-branch-xxx,标签名称如release-1.x_xxx。比如u-boot-branch-kernel表示这个分支主要任务是使用u-boot启动内核,release-1.2_i2c表示这个版本的i2c驱动已经没问题。等等。

2、路径使用环境变量UBOOT表示,实际路径为:

$ echo $UBOOT
/home/latelee/svn_repos/u-boot

3、网上找到的合并方法:

1):进入主干的svn目录;
 2):首先查询出创建分支的开始版本;

3):使用svn merge命令合并分支;

4):使用svn commit -m "msg"。

4、u-boot背景:

已经完成了在u-boot添加对yaffs2文件系统的支持,下一步将u-boot从nand flash启动。因为使用source insight的缘故,当前目录为u-boot-2010.09(无论是什么版本)。

正文开始

1、查看修改:

[latelee@FightNow u-boot-2010.09]$ svn st
M      include/linux/mtd/mtd.h
M      include/configs/smdk2440.h
M      common/cmd_nand.c
M      drivers/mtd/nand/nand_base.c
M      drivers/mtd/nand/nand_util.c

2、check in:

[latelee@FightNow u-boot-2010.09]$ svn ci -m "add nand write.yaffs2 cmd,this version can boot kernel and rootfs"
正在发送       common/cmd_nand.c
正在发送       drivers/mtd/nand/nand_base.c
正在发送       drivers/mtd/nand/nand_util.c
正在发送       include/configs/smdk2440.h
正在发送       include/linux/mtd/mtd.h
传输文件数据.....
提交后的版本为 57。

由于我忘记了写version-log(文件名称就是version-log.txt)了,因此修改后再次提交:

[latelee@FightNow u-boot-2010.09]$ svn ci -m "add info in version-log.txt"
正在发送       version-log.txt
传输文件数据.
提交后的版本为 58。

2、进入trunk目录(我的trunk目录与u-boot-2010.09在同一目录下):

[latelee@FightNow u-boot-2010.09]$ cd ../trunk/

3、查看这个分支与trunk分离后所有的修改:

[latelee@FightNow trunk]$ svn log -q --stop-on-copy file:///$UBOOT/branches/u-boot-branch-nand
------------------------------------------------------------------------
r58 | latelee | 2011-03-18 15:09:00 +0800 (五, 2011-03-18)
------------------------------------------------------------------------
r57 | latelee | 2011-03-18 15:05:49 +0800 (五, 2011-03-18)
------------------------------------------------------------------------
r56 | latelee | 2011-03-18 09:32:51 +0800 (五, 2011-03-18)
------------------------------------------------------------------------
r55 | latelee | 2011-03-14 08:25:00 +0800 (一, 2011-03-14)
------------------------------------------------------------------------

最下面的版本号就是创建分支开始的版本,下面就是使用这个版本号。

4、在主干上合并分支,注意HEAD和分支路径:

[latelee@FightNow trunk]$ svn merge -r 55:HEAD file:///$UBOOT/branches/u-boot-branch-nand
U    version-log.txt
U    include/linux/mtd/mtd.h
U    include/configs/smdk2440.h
U    board/samsung/smdk2440/smdk2440.c
U    board/samsung/smdk2440/flash.c
U    common/cmd_nand.c
U    common/serial.c
U    arch/arm/include/asm/arch-s3c24x0/s3c24x0_cpu.h
A    arch/arm/include/asm/arch-s3c24x0/s3c2440.h
U    arch/arm/include/asm/arch-s3c24x0/s3c24x0.h
U    arch/arm/cpu/arm920t/s3c24x0/timer.c
U    drivers/mtd/nand/s3c2410_nand.c
A    drivers/mtd/nand/s3c2440_nand.c
U    drivers/mtd/nand/nand_base.c
U    drivers/mtd/nand/nand_util.c
U    drivers/mtd/nand/nand.c
U    drivers/mtd/nand/Makefile
U    drivers/i2c/s3c24x0_i2c.c

这里的s3c2440.h和s3c2440_nand.c前面的标志为“A”,表明这两个文件是新添加的,实际上,在这个版本提交前,我已经将它们入库了。这一点要注意。

5、提交:

[latelee@FightNow trunk]$ svn ci -m "merge branch 'nand' to trunk"
正在发送       arch/arm/cpu/arm920t/s3c24x0/timer.c
增加           arch/arm/include/asm/arch-s3c24x0/s3c2440.h
正在发送       arch/arm/include/asm/arch-s3c24x0/s3c24x0.h
正在发送       arch/arm/include/asm/arch-s3c24x0/s3c24x0_cpu.h
正在发送       board/samsung/smdk2440/flash.c
正在发送       board/samsung/smdk2440/smdk2440.c
正在发送       common/cmd_nand.c
正在发送       common/serial.c
正在发送       drivers/i2c/s3c24x0_i2c.c
正在发送       drivers/mtd/nand/Makefile
正在发送       drivers/mtd/nand/nand.c
正在发送       drivers/mtd/nand/nand_base.c
正在发送       drivers/mtd/nand/nand_util.c
正在发送       drivers/mtd/nand/s3c2410_nand.c
增加           drivers/mtd/nand/s3c2440_nand.c
正在发送       include/configs/smdk2440.h
正在发送       include/linux/mtd/mtd.h
正在发送       version-log.txt
传输文件数据................
提交后的版本为 59。

到此,主干上的版本与分支上的版本一致。

6、将这个版本作一tag:

[latelee@FightNow trunk]$ svn copy file:///$UBOOT/trunk file:///$UBOOT/tags/release-1.4_nand -m "tagging nand tag"

提交后的版本为 60。

提交后的版本为 60。

7、作分支:

[latelee@FightNow trunk]$ svn copy file:///$UBOOT/trunk file:///$UBOOT/branches/u-boot-branch-nandboot -m "branch 'nandboot' for booting u-boot from nand flash"

提交后的版本为 61。

8、检出(注意,最后处名称为u-boot-2010.09,主要是方便使用source insight):

[latelee@FightNow my2440]$ svn co file:///$UBOOT/branches/u-boot-branch-nandboot u-boot-2010.09
.
.
.
(这里省略N行)
A    u-boot-2010.09/examples/api/libgenwrap.c
A    u-boot-2010.09/examples/api/Makefile
A    u-boot-2010.09/examples/api/glue.c
取出版本 61。

前面的是我的习惯:完成某一阶段的移植,作标签、作分支,检出分支,在分支上修改,不动主干。这称为“阶段性胜利”。

现在,u-boot-2010.09目录就是要进行下一步修改的目录了,它位于分支u-boot-branch-nandboot上。在u-boot-2010.09目录的.svn目录下entries文件中出现:

dir
61
file:///home/latelee/svn_repos/u-boot/branches/u-boot-branch-nandboot
file:///home/latelee/svn_repos

说明这的确是在这个分支上。

山人于2011-03-22

u-boot移植随笔:继续使用svn进行版本控制(合并分支实例)相关推荐

  1. u-boot移植随笔:使用svn进行版本控制

    当年做毕业设计时,一时想不开,竟然使用cvs对写的代码进行版本控制,--当研究有一点心得时,只能跟一两个人讨论,这不能不说是我的悲哀. 这几天u-boot没搞什么,都是在研究源代码,已经有一些心得了, ...

  2. svn操作之合并分支

    1.如果分支中代码的修改或主线中代码的修改,其他分支想同步.可以使用代码合并功能(Merge). 2.在需要同步修改的分支或主线中点击Merga. 3.选择想引用的分支或主线的地址,以及选择所需同步的 ...

  3. u-boot移植随笔:u-boot的内存分布图

    花了两天时间来专门研究u-boot的内存分布,这个图网上已经有了,但只是大致图形,没有详细.深入解析.所以自己就专门画了图,添加一些东西. 此外,还专门测试了一下u-boot下全局变量.未初始化变量等 ...

  4. u-boot移植随笔:自定义u-boot命令点灯

    u-boot移植随笔:自定义u-boot命令点灯 前几天一不小心在CSDN论坛上发帖散分,同时许诺完成点灯就结账,经过努力,终于可以在u-boot的shell中输入自定义的命令来点灯了.下面简单讲一下 ...

  5. Linux移植随笔 tslib

    前段时间让Tslib搞晕头了,原来一切都是版本惹的祸.本文只是一个随笔,随笔者,随意用笔写下心得而已,因此不必较真.正如我所欣赏的"乘兴而来,兴尽而返"一样.--估计当年王子猷是赏 ...

  6. Linux移植随笔:终于解决Tslib的问题了【转】

    转自:http://www.latelee.org/embedded-linux/porting-linux-tslib.html 前段时间让Tslib搞晕头了,原来一切都是版本惹的祸.本文只是一个随 ...

  7. Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析

    本文是作者对tslib库的ts_test.c文件进行分析的随笔,其实tslib的几个测试程序结构差不多,譬如ts_print.c和ts_print_raw.c等. 本文并没有涉及太多概念,也没有详细介 ...

  8. Linux移植随笔:终于解决Tslib的问题了

    前段时间让Tslib搞晕头了,原来一切都是版本惹的祸.本文只是一个随笔,随笔者,随意用笔写下心得而已,因此不必较真.正如我所欣赏的"乘兴而来,兴尽而返"一样.--估计当年王子猷是赏 ...

  9. u-boot移植随笔:u-boot shell与ASCII码

    u-boot移植随笔:u-boot shell与ASCII码 前几天让u-boot的shell更接近"shell",发现可以使用Ctrl-p等等来控制,心里总在想它们是怎么实现的, ...

最新文章

  1. 解决 Virtual PC 在 XP PAE模式下无法运行的问题
  2. web项目开启日志打印
  3. perl的安装和版本切换工具-perlbrew
  4. 超详细!带输入输出的十五至尊图你见过吗?
  5. linux环境中通过useradd命令,创建用户的时候指定用户的base-dir
  6. sublime java cmd_在sublime text3设置java环境
  7. 组图:2000悉尼奥运会
  8. Git 怎么创建本地库,向本地库提交文件
  9. 数据科学与python语言实验——NumPy数值计算基础
  10. python股票数据分析实验报告_Python实验报告
  11. 电脑桌面点任何文件都打开计算机,小编教你电脑开机自动打开文件夹怎么解决...
  12. java调用Ocx控件相关知识
  13. 小飞鱼通达二开 通达OA2017集成MongoDB(图文)
  14. Qt之QPA(linuxfb 一)
  15. 英文投稿的一点经验【转载】
  16. 不均衡分类问题 之 class weight sample weight
  17. 角色设计竟然有这些小技巧
  18. Vivado 2020.1 开放下载,中文资料随贴奉送
  19. Fisher精确检验.医学统计实例详解-医学统计助手★卡方检验,t检验,F检验,秩和检验,方差分析
  20. 部门换届推文文字_我院举行第二届学生代表大会暨学生会换届大会

热门文章

  1. 在DataGrid中选择,确认,删除多行复选框列表
  2. Instagram CEO:苹果iPad用户数少 不值得开发App
  3. EDG夺冠!每个队员获赠一套房:背后老板成最大赢家
  4. 特斯拉中国月销破5万台创纪录:每46秒就能卖出一辆车
  5. 京东公布3.8“她的节”消费数据:奢品服饰成交额同比增长170%
  6. 让猫给人打工,猫咖是一门好生意吗?
  7. 三星要带头了!考虑明年手机不送充电器
  8. 又涨价了!华为 P40系列海外售价曝光:还好国行版友好不少
  9. 苹果“修复”系统过于流畅的BUG遭到制裁,被罚款近2亿!网友:罚少了!
  10. 微信上线红包新玩法,今年春节可以“当面”给红包了!