zoukankan      html  css  js  c++  java
  • SVN+TortoiseSVN+Subclipse使用总结


    一、SVN、TortoiseSVN、Subclipse介绍


    团队开发技术:

    (1)单元测试;
    (2)版本控制;
    (3)项目自动化;


    SCM:软件配置管理,包括SVN;

    SVN是CVS的接班人,是版本控制系统;

    版本控制简单地说就是要让团队的人能够快速的统一代码,加强沟通;

    SVN由客户端和服务器组成,服务器是项目仓库,即存储项目的地方;客户端则是本地拷贝,即由SVN管理,可以提交到项目仓库和从项目仓库中获得项目的地方;

    svn宗旨:万物皆目录;

    TortoiseSVN是SVN的客户端,因为如果是传统的Subversion客户端,需要通过命令行完成任务,而TortoiseSVN是通过GUI的方式完成的;

    Subclipse是Eclipse中的一个插件,简单的说也是一个SVN客户端,只是为了方便Eclipse开发,因此可以在Eclipse中进行提交、导入;

    下载地址:

    SVN:https://sourceforge.net/projects/win32svn/files/1.6.17/svn-win32-1.6.17.zip/download

    TortoiseSVN:https://downloads.sourceforge.net/project/tortoisesvn/1.7.6/Application/TortoiseSVN-1.7.6.22632-win32-svn-1.7.4.msi?r=&ts=1331344321&use_mirror=cdnetworks-kr-2

    Subclipse在线安装地址:http://subclipse.tigris.org/update_1.6.x


    注意:配置SVN时需要配置环境变量;

    (1)path=C:/subversion/bin; 

    (2)SVN_EDITOR=notepad; 设置默认的编辑器





    二、SVN命令介绍


    检测版本:svn --version 和  svnadmin --version

    创建项目仓库:svnadmin create D:\svn-repos

    导入tmpdir目录下的文件到sesame/trunk中,即是添加而不是修改:
    D:\svnworkspace\tmpdir>svn import -m "import Sesame project" .  file:///d:/svn-repos/sesame/trunk

    -m表示可以提供一些注释;.表示把当前目录下的文件导入;

    注:只有在import时需要项目仓库的URL,在diff、commit都不需要URL;

    在svnworkspace下checkout指定最新的项目,并命名为sesame:D:\svnworkspace>svn co file:///d:/svn-repos/sesame/trunk sesame

    checkout指定版本(此处为第一版本)的项目:svn checkout -r 1 svn://xiazdong-PC/sesame/trunk test3

    查看文件状态:svn status Day.txt

    查看项目仓库是否有更新:svn status --show-updates
    注:
    (1)M:本地被修改,但是没有提交;
    (2)C(Conflict):更新时有冲突存在;
    (3)G(Gather):本地版本和项目仓库版本合并到一起;
    (4)U(Update):本地版本被成功更新;
    (5)A(Add):工作拷贝中添加新文件;
    (6)D(Delete):文件在项目仓库中被删除,所以工作拷贝中此文件也被删除;

    查看本地拷贝的文件改动(如果项目仓库有改动,检查不出):svn diff Day.txt

    查看项目仓库和本地工作拷贝的区别:svn diff -rHEAD Number.txt

    查看两版本之间的差别:svn diff -r2:4 Number.txt

    查看最近的改动:svn diff -r PREV:BASE Number.txt

    更新本地拷贝:svn update

    更新指定目录或文件:svn update Number.txt dir1/ dir2/

    注:当发生冲突时,会出现提示修改;
    选择: (p) 推迟,(df) 显示全部差异,(e) 编辑,
           (mc) 我的版本, (tc) 他人的版本,
           (s) 显示全部选项: 

    提交改动:D:\svnworkspace\sesame>svn commit -m "注释"
    但是注意:commit只会提交改动,如果在本地拷贝中创建一个文件,则需要在此之前 svn add 文件
    如果提交时冲突没解决,则提交失败;

    获得某个文件的日志:D:\svnworkspace\sesame>svn log Day.txt

    获得某个文件的详细日志:D:\svnworkspace\sesame>svn log --verbose Day.txt

    获得两版本之间的日志:svn log -r 2:4 Day.txt

    分页显示日志:svn log | more

    注:svn log不一定是最新的日志,因为可能工作拷贝的版本和项目仓库的版本不一致,svn log只能显示工作拷贝版本的日志

    注:*表示有更新;


    获得sesame工作拷贝信息:svn info sesame

    拷贝文件:svn copy Number.txt copy.txt
    注:拷贝后只是在本地完成,需要提交更新项目仓库;

    重命名文件:svn move copy.txt copy.py

    重命名目录:svn move dir1 dir2

    直接在项目仓库中重命名目录:D:\svnworkspace\test3>svn move -m "rename" svn://xiazdong-pc/sesame/trunk/Number.txt svn://xiazdong-pc/sesame/trunk/dest.txt

    显示文件的每行的最新版本及谁更改的:svn blame Number.txt

    还原文件:svn merge -r 7:6 Number.txt
     
    联网访问的三种方法:

    (1)svnserve
    (2)ssh
    (3)apache

    对于某个特定的项目仓库启动svnserve:start svnserve --daemon --root D:\svn-repos 

    通过svnserve签出文件:svn co svn://xiazdong-PC/sesame/trunk vizier

    默认svnserve管理的项目仓库是只读的,即只能签出,不能提交;在/conf/svnserve.conf中添加:
    anon-access=read  //匿名用户只读
    auth-access=write //授权用户可写
    passowrd=passwd //在passwd文件内配置
    在passwd文件中配置:xiazdong=12345表示用户名是xiazdong,密码是12345

    注意:在svnserve.conf和passwd两个文件配置时必须顶格,否则无效;


    属性:文件的元数据;

    为Number.txt设置checked-by属性为xiazdong:svn propset checked-by "xiazdong" Number.txt

    编辑Number.txt中的checked-by属性(需要配置SVN_EDITOR设置默认编辑器):svn propedit checked-by Number.txt

    列出Number.txt的所有属性:svn proplist Number.txt


    获得某个属性:svn propget checked-by Number.txt


    常用属性:
    (1)svn:ignore:忽略某些文件; *.java表示忽略java文件
    (2)svn:eol-style:设置换行符,一般为 native,表示随着操作系统而变化;
    (3)svn:mime-type:设置文件的mime类型;
    (4)svn:needs-lock:设置文件加锁

    一般我们可以在文件中配置autoprops,自动设置;
    1.寻找config文件:
    (1)echo %APPDATA%
    (2)\subversion\config
    2.设置enable-auto-props = true
    3.找到[auto-props],并设置自动属性

    文件加锁

    严格加锁:只允许一个人改动一个文件;
    乐观加锁:比如有A、B两人同时checkout了一个文件File.java,并且同时对他们修改了,A先提交,当B想提交时,必须先svn update,把自己的目录变成最新的以后才能够提交,更新时会出现两种情况:
    (1)如果A和B改动的不是同一行,那么会正常合并;
    (2)如果A和B改动的是同一行,则会在源代码中标记出冲突:

    而Subversion默认是采用乐观加锁;


    对于文本文件,可以通过合并的方式解决冲突,但是对于二进制文件,则需要文件加锁解决;

    为文件开启文件加锁:为某个文件添加svn:needs-lock属性,并且commit到文件仓库;

    文件加锁:svn lock Day.txt -m "lock"

    强制解锁(虽然别人有锁,但是另一个人可以强制解开锁,但没有获得锁):svn unlock --force svn://xiazdong-pc/sesame/trunk/Day.txt

    强制加锁(不管有没有人有锁,都抢过来):svn lock --force Day.txt


    转向其他目录:svn switch svn://xiazdong-pc/sesame/branches/b1


    冲突:

    <<<<<<< .mine
    原本代码
    =======
    项目仓库代码
    >>>>>>> .r4


    分支和标签:简单地来说就是某个工作拷贝的复制;

    在分支上开发:

    (1)在项目仓库中创建branches目录; svn mkdir svn://xiazdong-pc/sesame/branches

    (2)在项目仓库中将主干复制到b1目录中; svn copy svn://xiazdong-pc/sesame/trunk svn://xiazdong-pc/sesame/branches/b1

    (3)通过b1目录checkout一份工作拷贝;   svn co svn://xiazdong-pc/sesame/branches/b1 b1

    (4)提交;


    三、TortoiseSVN使用介绍


    如果知道SVN中的术语,其实此工具非常易于入门和使用;


    1.checkout

     

    2.冲突问题







    四、Subclipse使用介绍


    1.checkout

    2.commit等

    作者:xiazdong
    出处:http://blog.xiazdong.info
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    poj 1743 Musical Theme 后缀数组
    poj 1743 Musical Theme 后缀数组
    cf 432D Prefixes and Suffixes kmp
    cf 432D Prefixes and Suffixes kmp
    hdu Data Structure? 线段树
    关于position和anchorPoint之间的关系
    ios POST 信息
    CALayers的代码示例
    CALayers详解
    ios中得sqlite使用基础
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3058057.html
Copyright © 2011-2022 走看看