树莓派自带svn就不用安装了,安装也很简单,参考别的百度经验也可以进行。开篇主要讲解如何使用。
(相关资料图)
首先使用svn --help查看都有什么指令。
常用的命令不是太多,但是首先咱得先从服务器把代码下下来不是。
版价观土权归芝士回答网站给情或原作者所有
svn co http:XXXXXXXXX
或者svn checkout http:XXXXX
其中co是checkout的缩写,就如后面的up是update的缩写一样。
然后我们新建一个test.c然后提交。
首先我们得通过
可说后起间意先热东思受,华步须习包。
svn add test.c
加到本地的库里,就是放到自家的版本库.svn里,然后
这时主如业展口确,元究半京。
svn ci -m"we add a new file"
这样就提交到了远程的服务器HEAD库里了,其中ci是commited的缩写。
大家可以看到版本又10变成了11。
接下来得说下svn的不同的版本的关键字。
HEAD
版本库中的最新版本 我理解就是当前服务器的最新版本。
BASE
工作拷贝中的原始修订版本 我理解就是刚刚co下来的.svn里的内容。
COMMITED
在BASE版本之前(或者base) 一个项目的最后修改的版本。我理解就是你改完的版本
PREV
一个项目最后修改版本之前的那个版本 也即COMMNITED-1。
下面就用这几个关键字来熟悉一些命令。
svn log --revision HEAD
可以看出以上命令是说明的最近一次服务器代码库的改动。
svn diff --revision HEAD
可以看出这是对本地和远程版本之间的对比。由于我刚提交了一次,所以这次不提示任何信息,两者是一样的。
svn diff --revision BASE:HEAD a
这个命令意思就是比较你本地的没有更改过的库,和远端服务器最新的 a文件的差别
svn log --revision BASE:HEAD a
这个命令显示自从上次up更新以来我们对a所做的所有更改
svn up -r PREV a
将a文件更新到之前的版本
前面我们从服务器checkout下代码下来的时候,就已经包含了.svn目录。请不要更改这个目录,因为svn使用它来管理工作拷贝。
下面详细的说一下svn的update操作。当大家共同维护一个项目时,如果别人改了代码提交了,你想得到那些更改融合到你的代码中,就可以用svn update让你的工作拷贝和最新的版本同步。
就比如下图,另一个人用tortoiseSVN更改了a,然后commit上传了,我用命令行up就能把更改融合到我本地的a文件。
我们可以看到a这个文件前面有个U,代表从服务器收到了其他人提交到服务器的修改。
A foo
代表文件foo被加到了工作拷贝
D foo
代表文件foo被添加到了工作拷贝
R foo
代表文件foo被删除,而一个新的同样名字的项目添加进来,他们具有同样的名字,但是版本库会把他们看做具备不同历史的不同对象。
G foo
文件foo接收到版本库的更改,你的本地文件也已经已经修改,但这两者不冲突,svn已经成功将服务器版本库和本地文件合并,没有发生任何问题。
C foo
文件foo的修改与服务器冲突,服务器的修改与你的修改冲突了,比如第一行他写了123 你写了321 没法融合,因为怎么弄不是把他的123抹去,就是把你的321抹去,所以你要和那人交流,这个后面再说。
当你想改变当下的目录结构时,请你使用svn add ,svn delete ,svn copy , svn move。
svn add foo 会将文件、目录或者符号链接等添加到版本库。如果foo是目录的话,里面的文件也会被添加到进去,如果你只想添加foo目录,使用--non-recursive(-N)不递归添加文件参数。
svn delete foo 将文件、目录或者符号链接foo从版本库中删除,如果foo是文件,它马上从工作拷贝中删除,如果是目录,不会被删除,只有在committed提交的时候,foo才会从本地工作拷贝和版本库中删除。
svn copy foo bar建立一个新的项目bar作为foo的复制品,在下一次提交时会将bar添加到版本库,这种拷贝历史将会被记录下来(按照来自foo的方式记录)。
svn move foo bar 这个命令等同于svn copy foo bar;svn delete foo完全相同,bar作为foo的拷贝,foo被删除,svn move不会建立中介目录。
svn mkdir foo
这个命令同运行 mkdir foo; svn add foo相同,也就是创建一个叫做foo的目录,并且预定添加到版本库。
以上这些都是svn-book的内容。
原理是先把你对目录的修改汇集到本地的工作拷贝,然后一个提交动作,这样远端的版本库就能反映你的改动。
其实可以直接对远端的版本库进行操作,这必须需要通过svn mkdir,svn copy,svn move和svn delete这些命令直接操作远端URL。但是就没有本地拷贝做缓冲了,每次提交自动生效。
查看你的修改的情况
svn status
查看你本地修改的详情
svn diff
如果想打包成diff文件 可以svn diff > c .diff 打包成diff文件。用tortoiseSVN可以打开,查看
如果想会退到原来的up的工作拷贝
svn revert
本文到此结束,希望对大家有所帮助。