http://zhu-apollo-163-com.iteye.com/blog/1247216
1) 将修改后的文件提交到版本库
命令:
svn commit 文件名 -m "注释内容"
简写:svn ci 文件名 -m "注释内容"
作用:
将修改后的文件提交到版本库中,要注意和svn add 功能的区别,add并不提交到服务器,而是“预定提交到版本库中”。
例子:
假如修改了文件:android2.3/packages/apps/DeskClock/res/layout-land/desk_clock.xml,这时需要将此文件更新到版本库中去,如果版本库中也有这个文件,才可以将此文件更新进去。有多种方式可以更新,这里仅给出2种:
一:在当前目录android2.3/packages/apps/DeskClock/res/layout-land/下使用:
svn ci -m packages/apps/DeskClock/res/layout-land/desk_clock.xml "修改了desk_clock.xml文件中的时钟第20行"
二:先cd到packages/apps/DeskClock/res/layout-land/目录下,然后使用:svn ci -m "修改了desk_clock.xml文件中的时钟第20行"
总结:一般来说,在一个目录下有好几个文件已经修改,这时就可以直接进入到这个目录,然后用svn ci -m "注释" 就能够把这个目录下所有修改的文件提交到版本库中。当然,也可以不使用注释,直接使用svn ci即可,添加注释可以更加清楚修改了什么。
2) 将新添加的文件“预定添加到版本库”
命令:svn add 文件名/目录
作用:
将新的文件预定添加到版本库中(实际上并没有真正地添加到版本库中),前提是,版本库中没有这个文件,这个文件必须是新的。svn add之后,还必须使用svn ci 才能真正的提交到版本库中去。
例1:
假如有一个新文件:android2.3/packages/apps/DeskClock/res/layout-land/desk.xml,这时需要将此文件添加到版本库中去,有多种方式可以添加,这里仅给出2种:
一:在当前目录android2.3/packages/apps/DeskClock/res/下使用:
svn add android2.3/packages/apps/DeskClock/res/layout-land/desk.xml
二:cd到packages/apps/DeskClock/res/layout-land/目录下,然后:
svn add desk.xml即可
注意:add方法并没有把文件真正上传到服务器,还必须使用svn ci提交一下才能更新到服务器中。
例2:
假如有一个目录:rep1/rep2/rep3/a.xml,这个目录和子目录都是新创建的,现在要想把这个目录和子目录以及子目录中的所有文件都添加到版本库中去,怎么办?
方法:cd到rep1目录的父目录中,然后svn add rep1,这个命令会递归地把rep1以及子目录和子目录中的所有文件都“预定提交到版本库”中,然后再svn ci rep1 -m "注释内容”,这样就可以递归地把rep1以及子目录和所有文件真正地提交到服务器中。
3) 将版本库同步到当前项目中,或者说将当前版本更新到版本库中某个版本
命令:svn up -r x test
表示将版本库中的某个文件test或者源代码同步到版本x
例子:
假如版本库中有一个版本27,我想把当前项目同步到版本27,则可以使用:
svn up -r 27
注意:
a. 使用svn up表示从服务器上同步文件,默认情况下同步到最新版本;
b. 要区分up和ci的区别,up是把当前项目更新到版本库中的某个版本,而ci是把当前文件或者某个目录更新到版本库中,如果有新文件,则必须先使用add再ci;
c. svn up只会把更新服务器上新的文件,而不改变本地已经修改的尚未提交到服务器上的文件。
----------------------------------------------------------------------------------------------------------------------------------
2012.4-13 更新svn ci 和 svn add
----------------------------------------------------------------------------------------------------------------------------------
如果要提交这个dir1目录以及该目录下包含的所有添加的文件,那么使用: svn add dir1
然后使用svn ci -m "注释内容"
即可将新增加的目录和该目录中的所有文件都提交到版本库中了。
注意:这种方式会导致一个问题:假如编译内核后,这个目录dir1下面会生成一些.o文件和其他一些目标文件,而这些目标文件是不能提交到服务器的,这种情况下有两种解决方法:
一:直接把这些生成的.o文件和不需要的文件删除掉,然后再svn add dir1。这种方法的缺点就是需要重新编译。
二:不删除生成的.o文件和其他文件,先使用svn add --depth=empty dir1 将这个目录添加,而并不添加目录下面的其他文件,然后再svn ci dir1提交这个空目录,最后再以这种方式:svn add ./dir1/fie_a 添加该目录下的其他指定的文件,然后再svn ci ./dir1/fie_a 就可以了,这避免了勿提交不需要的文件。这种方法的缺点就是对于提交较多文件时不方便。
——————————————————————————————————————————————————————
2012.5.10 更新
——————————————————————————————————————————————————————
查看修改的所有的log记录:svn log
查看某个具体版本号的所有修改的记录: svn log -v -r n
注:n是某个版本号
例子:
假如要查看320这个版本号的修改记录,就用:svn log -v -r 320
————————————————————————————————————————————————————————
2012.6.6 更新
————————————————————————————————————————————————————————
要比较两个版本有什么差异,或者说想知道某个版本和之前的版本相比到底修改了哪些内容,用diff命令即可:
svn diff -r m:n path
例如:svn diff -r 200:201 x.c (对x.c这个文件的版本200和版本201比较差异)
然后终端会出现修改的记录,减号表示旧版本中的,加号表示新版本中要添加的内容,@@符号后面第一个是修改后的行数。
————————————————————————————————————————————————————————
2012.8.28 更新
————————————————————————————————————————————————————————
svn up (svn update) 状态缩写含义:
A:add,新增
C:conflict,冲突
D:delete,删除
M:modify,本地已经修改
G:modify and merGed,本地文件修改并且和服务器的进行合并
U:update,从服务器更新
R:replace,从服务器替换
I:ignored,忽略
————————————————————————————————————————————————————————
2014.4.4 更新
————————————————————————————————————————————————————————
取完代码后,文件夹出现问号 或者叹号。这是因为你的.svn文件没有删除。
那是因为你在这个盘的根目录执行了checkout操作,SVN把这个盘整个作为了一个版本库的本地副本,那些文件夹上的问号表示未被SVN控制
要解决这个文件最简单的办法是找到这个盘根目录下有个.svn的隐藏文件夹,删除这个文件夹就行了
以后checkout的时候,记得要检出到一个文件夹内,不要检出到磁盘根目录了