• 文件项目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等

        文件和项目

    文章结束给大家分享下程序员的一些笑话语录: 一程序员告老还乡,想安度晚年,于是决定在书法上有所造诣。省略数字……,准备好文房4宝,挥起毛笔在白纸上郑重的写下:Hello World

  • 相关阅读:
    Studio之版本管理工具Git (图文教程)
    studio adb连接不上手机 ADB server didn't ACK
    studio-引入外来包
    TextView的属性列表
    java_ _反射
    SDcard进行文件的读取
    资源文件assets和 res下面raw文件的使用不同点
    android的照片浏览器(一)至返回所有图片文件
    使ViewStub 来提高UI的加载的性能
    安卓优化--
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3078728.html
Copyright © 2020-2023  润新知