搞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"。
[www.linuxidc.com@linuxidc 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
check in:
- [www.linuxidc.com@linuxidc 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)了,因此修改后再次提交:
- [www.linuxidc.com@linuxidc u-boot-2010.09]$ svn ci -m "add info in version-log.txt"
- 正在发送 version-log.txt
- 传输文件数据.
- 提交后的版本为 58。
进入trunk目录(我的trunk目录与u-boot-2010.09在同一目录下):
- [www.linuxidc.com@linuxidc u-boot-2010.09]$ cd ../trunk/
查看这个分支与trunk分离后所有的修改,最下面的版本号就是创建分支开始的版本:
- [www.linuxidc.com@linuxidc trunk]$ svn log -q --stop-on-copy file:
- ------------------------------------------------------------------------
- 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)
- ------------------------------------------------------------------------
合并:
- [www.linuxidc.com@linuxidc trunk]$ svn merge -r 55:HEAD file:
- 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
提交:
- [www.linuxidc.com@linuxidc 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。
将这个版本作一tag:
- [www.linuxidc.com@linuxidc trunk]$ svn copy file:
-
- 提交后的版本为 60。
作分支:
- [www.linuxidc.com@linuxidc trunk]$ svn copy file:
-
- 提交后的版本为 61。
检出: