svn changelist(也可以简写为cl)是一个对本地副本库的文件进行分组的命令,它可以作为其它命令的参数,但是它仅仅是本地副本库的一个分组,不能在库中传播以及与其它用户分享。
还是以之前的计算器程序为例,首先我们简单修改下工作副本中的几个文件(在add.c add.h sub.c sub.h几个文件最后都加入一个空行)
root@letuknowit:/home/kris/calc/trunk# svn st M sub.h M add.c M sub.c M add.h
好了,做好改动后就要进行提交了,但是又不想把这四个文件一起提交,想把add的分为一组,sub的分为一组,这时候svn changelist就派上用场了。
root@letuknowit:/home/kris/calc/trunk# svn cl add add.* Path 'add.c' is now a member of changelist 'add'. Path 'add.h' is now a member of changelist 'add'. root@letuknowit:/home/kris/calc/trunk# svn cl sub sub.c sub.h Path 'sub.c' is now a member of changelist 'sub'. Path 'sub.h' is now a member of changelist 'sub'.
上面的add和sub都是组名,其后是需要加入到改组中的文件,多个文件以空格隔开,支持通配符(例如那个add.*)。完成以上工作后,再通过svn st看看有什么变化
root@letuknowit:/home/kris/calc/trunk# svn st --- Changelist 'add': M add.c M add.h --- Changelist 'sub': M sub.h M sub.c
删除组中的文件也比较简单,具体如下
root@letuknowit:/home/kris/calc/trunk# svn cl --remove sub.c Path 'sub.c' is no longer a member of a changelist. root@letuknowit:/home/kris/calc/trunk# svn st M sub.c --- Changelist 'add': M add.c M add.h --- Changelist 'sub': M sub.h
由于每个文件只能属于一个组,因此在将某个文件从某个组中删除的时候,无需指定组名。
changelist作为参数
root@letuknowit:/home/kris/calc/trunk# svn diff --cl sub Index: sub.h =================================================================== --- sub.h (revision 6) +++ sub.h (working copy) @@ -1 +1,2 @@ int sub(int lhs,int rhs); + Index: sub.c =================================================================== --- sub.c (revision 6) +++ sub.c (working copy) @@ -2,3 +2,4 @@ { return lhs - rhs; } +
其他支持svn changelist的指令包括:changelist、commit、info、propdel、propget、proplist、propset、revert、status、update
将已在一个组中的文件加入另一个组
root@letuknowit:/home/kris/calc/trunk# svn cl add sub.c svn: warning: Removing 'sub.c' from changelist 'sub'. Path 'sub.c' is now a member of changelist 'add'. root@letuknowit:/home/kris/calc/trunk# svn st --- Changelist 'add': M add.c M sub.c M add.h --- Changelist 'sub': M sub.h
由于每个文件在同一个工作拷贝中只能加入一个分类,在讲某个文件加入新的分组之前,会将其从原先的分组中删除。
对于未在svn版本控制下的文件,无法加入分组
root@letuknowit:/home/kris/calc/trunk# touch newfile root@letuknowit:/home/kris/calc/trunk# svn st ? newfile --- Changelist 'add': M add.c M sub.c M add.h --- Changelist 'sub': M sub.h root@letuknowit:/home/kris/calc/trunk# svn cl add newfile svn: warning: 'newfile' is not under version control
svn changelist不允许将文件夹加入某个分组,但是可以将多个不同的文件夹中的文件归为一组。
原创文章请注明转载于知蚁博客,本文地址:http://www.letuknowit.com/archives/usage-of-svn-changelist