Subversion学习

一.subversion

    对文件,目录和元数据记录版本。简言之,管理和保存软件项目的每个版本,方便项目的维护,更新,修改。

 

二、对svn相关软件的理解

   

 

    svn服务端的作用:创建网络项目仓库,也可以从本地上传一个SVN仓库。 网络仓库https://DESKTOP-6PLPUUJ/svn/HelloWorld

                                    保存网络仓库的更改,即保存每个版本。

                                    网络仓库只和地址关联,不和用户关联。项目一直存在于服务器的地址中

                                    可用在多个平台上将仓库检出。只是检出到本地时,需要你创建时的用户名和密码

                                    只能查看和更改仓库的文件结构,不能对文件(源码)进行编辑。    

 

   

 

    svn客户端的作用:形成本地仓库, 本地仓库可以被添加至服务端。成为服务端仓库。

                                自己利用客户端创建svn本地仓库,也可以将服务端的仓库检出到本地,形成本地仓库。

                                本地仓库地址file:///F:\Workspace\SVNTest2

                                在本地仓库中可以新建和编辑文件(源码文件),svn客户端能对本地项目的版本控制

                                当服务端检出到本地,或者本地被添加至服务端,即服务端和客户端连接了,本地仓库的更改可以同时保存在两端                                      

    

    svn的Eclipse插件:相当于客户端的作用

 

 

三、特点

    (1).原子提交。提交修改不会只修改一部分,要么修改不成功,要么提交成功。

    (2).联网支持,使用secure shell (ssh)和Apache web 服务器让项目仓库在公共网络被访问。

    (3).跨平台。

 

四、基本概念

    repository项目仓库,存放项目代码的容器,可以是本机的一个目录,也可以是服务器端的目录

   working copy 工作拷贝,从项目仓库中拷贝出来的文件

   checking out 签出,从仓库中获取文件的过程。

    export导出,从仓库中获取项目仓库的快照。

    committing提交,将修改过的文件存入项目仓库的过程。也可以说为签入。

    update更新,签出项目仓库中的最新版文件

    Trunk主干,主要地位的源代码成为主干,

    

    branch分支,就是拷贝了一份主干,继续开发,与主干平行,工作与主干隔离,不影响主干。

    

    merging合并,将分支中的代码与主干代码

合并。

    respository URL项目仓库的URL,项目仓库的位置。

    如,本地仓库URL,file:///c:/svn-repos/sesame/trunk/

    网络仓库URL,svn://olio/sesame/trunk 

 

五、版本

    每签入一次你修改的文件,就会更新一个版本。

    项目仓库中,只会保存发生重大更改的版本,和记录版本的差异文件。这样可以得到所有的每个版本。

    版本标识,版本号,版本日期    

    Prev ,committing之前的一个版本

    base,工作拷贝的基准版本

    Head ,项目仓库中存储的最新版本

 

六、加锁策略

    strict locking严格加锁,文件签出的时候处于只读,要征求仓库的同意,当没有人在编辑同意文件时,仓库允许你编辑。

    optimistic locking乐观加锁,文件签出的时候处于可以读写状态,但你要提交你修改的代码之前,需要更新至当前最新版本。

        若在你修改的期间,有人提交了更改,会标记在你的文件中。当别人修改了同一行代码,就会出现冲突,要求你解决冲突才能提交签入。

 

七、相关操作的命令

    创建目录

        mkdir c:\work          

        Unix:mkdir /home/mike/work

    项目仓库文件拷贝到本地svn co(checkout)

        work>svn co file:///:c:/svn-repos/sesame/trunk sesame  //访问svn-repos仓库,签出到当前目录下sesame目录下

        work>svn co svn://olio/sesame/trunk vizier   //访问了网络仓库oilo仓库,把该仓库的sesame项目签出到本地叫作vizier的工作目录

         Unix:work>svn co file:///home/mike/svn-repos/sesame/trunk sesame

    向本地仓库添加一个文件

        wizier>svn add Month.txt

    查看文件状态

        sesame>svn status Day.txt

        work>svn status --show-updates //显示当前目录下那些文件有更新

    显示文件在本地拷贝的区别

        sesame>svn diff Day.txt

        sesame>svn diff -rHEAD Day.txt// -rHEAD表示本地拷贝与项目仓库中最新版之间的差异。

    更新本地项目仓库的文件

        work>svn update

    提交至项目仓库

        sesame>svn commit -m "client wants us to work on weekends"//-m为更改附加有意义的注释

    查看某文件的修改日志

        sesame>svn log Day.txt

        sesame>svn log --verbose Day.txt//--verbose显示每个版本具体的改动

    设置一个文件的属性

        sesame>svn propset checked-by "Mike" Number.txt//将Number.txt文件的checkd-by属性值设置为milk

        svn propedit checkd-by Number.txt //从编辑器打开管理文本属性

        svn proplist Number.txt //列出该文件的所有属性

        svn propget checkd-by Number.txt //删除文件的一个属性

    文件拷贝,重命名

        svn copy(cp)

        svn mv  time.txt clock.txt 

 

八、使用标签和分支

    标签:发布分支在特定时刻的一个简单拷贝

    标签和分支太多容易把项目搞得混乱,分支大概分四类,

    发布分支release(每个发布版本),bug修正分支(标记bug修正的开始pre-bug和结束post-bug),实验分支developer experiments(对项目做一些比较远的试验)。

    给项目制定标签和分支的命名规范。

    分支                                     命名风格                    例如

    release branch                     RB-rel                    RB-1.0

    Release                                REL-rel                  REL-1.0

    Bug fix branches                  BUG-track              BUG-3035

    Pre-bug fix                            RRE-track             PRE-3035

    Post-bug fix                          POST-track           POST-3035

    Developer experiments        TRY-desc              TRY-MGM-cache-pages

    创建一个分支

    >svn mkdir -m "Create brachers directory"   svn://olio/sesame/branches

    拷贝分支

    >svn copy -m "Create release branch for 1.0"  \  svn://olio/sesame/trunk   \   svn://olio/sesame/branches/RB-1.0

    签出一个分支

    svn co svn://olio/sesame/branches/RB-1.0     rb1.0

    

九、环境安装

 

windows下的环境安装

1.subversion服务端

    安装svn服务端

            下载VisualSVN server.msi,更改安装路径,默认安装就、

    VisualSVN server的使用操作

        (1).创建一个服务端的项目仓库

 

 

    打开Visual SVN server manager,选中Repository右键——选择Create new Repository,最后会产生一个URL(即服务端仓库的地址)

 

 

    也可以选择import一个已有的服务端仓库,输入URL就行

 

 

    

 

 

(2).创建一个user

 

 

    在使用svn客户端从服务端检出一个仓库时,需要用户名和密码。

 

 

(3).创建一个用户组Group

 

 

    将你创建的几个用户组成一个用户组,用户组的
subversion客户端
 

2.subversion客户端

     安装客户端

        下载TortoiseSVN.msi,更改安装路径,默认安装就行

 

     TortoiseSVN的使用

 

 

(1).创建一个本地仓库
    自己建一个空文件夹,然后右键,选择在本目录下创建仓库
(2).将本地仓库与服务端连接
    在服务端,将svn服务端仓库签出到本地,或者将本地的svn仓库添加到服务端
(3)与服务端连接后,在本地添加、更改文件,保存到服务端
    右键该文件,先add,然后在committing
 
(4).本地仓库
    从服务端创建的仓库检出到本地的项目仓库文件夹图标
    1仓库名
    
    2仓库文件结构
    
    在本地用客户端创建的svn仓库文件夹图标
               1仓库名
                         
                2仓库文件结构
                
    若是新添加的文件,文件图标显示加号,提交后的文件显示有勾
            
    若添加了文件,没有committing,则仓库的文件夹显示红色叹号
                
(5).然后一些 基本的操作
    拷贝,粘贴,更新
    

3.subclipse(Eclipse插件)

    安装插件

        subclipse(Eclipse SVN插件)下载

        只能在线更新,不能直接单独下载插件。、

        启动eclipse——菜单栏中的Help——install new Software——add repository

        ——Name:Subclipse Update Site,URL:http://subclipse.tigris.org/update_1.8.x 

 

    subclipse的使用

一、基本操作

1.打开SVN仓库视图    

    安装完subclipse后,我们就需要重启下eclipse了,启动后,

    点击工具栏中的Open Perspective(Quick Access之后的按钮)然后选择“SVN 资源库研究”这个视图。如下图所示

 

    或者菜单栏Window——show View——Other——SVN资源库

        

 

    

2.将服务端仓库添加到本地,即添加新的仓库(new repository),不能自己创建本地仓库

        在SVN资源库视图下

        右键——新建——SVN资源库——输入URL,即可

3.将本地的项目添加到远程仓库

        右键项目——Team——share Project——SVN——选择仓库地址。然后项目文件夹上有雪花,而仓库资源管理器中test3什么都没有。需要提交之后,雪花会变成圆柱体。(文件上的雪花图标表示,本地文件和svn远程仓库内容不同)

        

4.将仓库的项目检出到本地

        右键仓库中的项目——检出——选择eclipse的workspace,文件夹上会出现一个圆柱体

        

 5.检出到eclipse workspace的项目或者添加到仓库中的项目,即与远程仓库内容一致的项目。相关操作

        右键项目——Team,会有很多操作,更新,提交,恢复到某个版本。分支,合并。复制、导出等等

 

6.加锁、解锁

Team——Lock——选择你要锁定的文件,锁定期间其他人不能编辑

 

二、标签、分支、合并

1.创建一个分支或者标签

Team——Branch/Tag——选择你要添加分支的URL(主目录下的branches下),选择从哪个版本分支

 

2.切换到其他标签、分支

Team——Switch to Branch/Tag

 

3.配置标签/分支

   Team——Configure Branches/Tags——右键仓库——添加分支、标签

 

4.合并

Team——merge

   

 ——2016.3.28

posted @ 2016-04-05 14:07  Taogen  阅读(187)  评论(0编辑  收藏  举报