svn版本管理制度_如何使用SVN进行版本控制|全球播报

互联网   2023-06-14 15:50:08

树莓派自带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

本文到此结束,希望对大家有所帮助。