一、SVN客户端:TortoiseSvn

下载地址: http://tortoisesvn.net/downloads.html

安装完后重启, 右击就可以使用SVN命令

首先, 从服务器版本库那边 svn Checkout....代码, 放到本地

在checkout目录下(带有.svn文件夹), 主要有以下命令:

常用的 SVN Add...  Delete...  Rename...  Update to revision.... Revert  Get lock/Releae lock...

本地Update 出服务器上最新代码

add/delete/edit/rename file 都只是在本地做修改,  要执行 commit 操作才能提交到服务器上。

二、SVN服务器:Subversion

1、安装

下载地址:http://www.visualsvn.com/

个人认为最好用VisualSVN server服务端和TortoiseSVN客户端搭配使用

安装完成后, 点击Window->VisualSVN->VisualSVN Server Manager, 就可以直接使用应用管理器来操作SVN 库

2、SVN 仓库

在Repositories可以CreateNewRepository,新建新的库, 选择库的结构如下:

1)、三个子目录的区别:

tag,一般情况下, 是用来做一个milestone的,不管是不是release,都是一个可用的版本。这里,应该是只读的。更多的是一个显示用的,给人一个可读(readable)的标记。

branch,是用来做并行开发的

trunk, 是主线

2)、仓库转移

(eg: move RepA to RepB)

•Copy RepA Repositories forder to  RepB
•Open RepB VisualSVN Server Manager
•Right click Repositories->All Tasks->import existing repository
•Copy the file ‘groups.conf’  ‘htpasswd’ ‘authz’ from RepA to RepB again to keep the permission set.
 
3、权限控制
 
Create User
Create Groups and add users
Then you can add access permissions in any directory levels or specific file.
 
4、svn hook
建完仓库后, 每个仓库下, 都有一个D:\SVNrepository\myRepositoryt\hooks 文件夹, 放SVN钩子程序, 用来提供的第三方增加自定义事物处理, 比如:
•start commit: excute when you click ’ok’,eg: judge if user has right to commit.
•pre commit: excute before the change is saved to Rep,eg: check whether the log as expected.
•post commit: excute after commit transtion end,eg:you can redeploy environment automatically by add some batch commands.

特定hook类型里面有特定提供的参数,如

REPOS 路径, TXN 事物,USER 用户…

Test.py %REPOS% %TXN% call python/perl..script to achieve more functional control.

示例:

window下, 建pre-commit.bat文件, 放在hooks下, 则该仓库下执行commit时, 必须输入10个字符。 默认安装下,svn可以无comment提交

@echo off
setlocal
set SVN_BINDIR="D:\Program Files\VisualSVN Server\bin"
set REPOS=%1
set TXN=%2
rem check that logmessage contains at least 10 characters
%SVN_BINDIR%\svnlook log "%REPOS%" -t "%TXN%" | findstr ".........." > nul
if %errorlevel% gtr 0 goto err
exit 0
:err
echo Empty log messge not allowed.Please log at least 10 characters! 1>&2
exit 1

SVN_BINDIR是svnserver安装路径下的bin文件夹

5、svn ignore

整个project内部, 可以把某些不想加入版本控制的文件夹, 或者特定文件类型做ignore

比如, target文件夹, 右击点击 add to ignore list(target, target recursively), 回复版本控制, 就remove from ignore list.

 

三、版本控制过程

1、Create a repository

1)Right click in Repositories and create New Repository…

2)Select the second Radio to create a Repository with trunk/baches/tags

3)You can also set access permissions  here.

2、Import project to ${repName}/trunk

Go to the project Directory, click svn->import, input the trunk path (get path:copy the trunk URL by right click at trunk folder and click ’copy URL to clipboard’)

3、Check out trunk code to local

New a directory ’svnTrunk’  to store trunk code, then you can excute new Branch/tag, merge etc.

4、New branches Right click in ‘svnTrunk’ and right click->svn->Branch/tag…

note:不要在branches上先建branch_1文件夹再以此为目录地址来copy,这样会提示Path 'branches/branch_1' already exists,认为branch_1就是已经建好分支, 不能再建),同样方式, 可以创建很多个分支, 并行开发

After  new branch in Repository

We can check out the branch code to working copy

Develop………….

Commit code to branch

5. Merge trunk to branch

Note:to avoid a world of difference between branch and trunk, we’d better make branch keep pace with trunk by merge trunk to branch.

Also, we’d better merge trunk to branch before doing merge to trunk

1)Select ‘Merge a range of revision’

2)Input trunk path, Revision range to merge

note: How to decide the merge Revisions:

Click show log to sure what the versions to merge.

3)Resolve the confict, and compile/test_compile the project

4)Commit to RepositoryT1/branches/branch_2 after step5.3 build success.

Continue to develop in branch_2

Commit chages in branch_2 to branch_2 Repository …

Repeat step5 to keep branch sync with trunk when necessary.

Merge branch_2 to trunk as step6

Merge trunk to branch  again to Mark the newest version(RecordOnly)

6.Merge branch to trunk

1)Select ‘Reintegrate a branch’

2)Input the branch_1 path to ‘From URL’

3)Click ‘Test merge’ Button to test if it has many conflicts.

4) Resolve the confict, and compile/test_compile the project

5) Commit to RepositoryT1/trunk after step6.4 build success.

7.Copy trunk to tag

Copy trunk to tag when we released a stable version.

8.Merge summary

1)Remember to update to newest version in working copy before merge

2)Step 1-2 Corresponds to ‘version-control step6’

3)Step 3-4 Conrreponds to ‘version-control step5’

4)Do step1-2 frequently to keep branch sync with trunk.

trunk log:

在Log Messages窗口的左下角勾选了"Include merged revisions"你还能看到额外的Merge information:

其中灰色的log, 是branch里自己变化的log , 包括了版本信息。

SVN Application的更多相关文章

  1. 版本控制系统-SVN(1)

    1.   SVN介绍 1.1.  简介 SVN(subversion),版本管理工具,与CVS一样,SVN是一个可跨平台的开源版本控制系统,Subversion管理随时间变化的数据.这些数据都被放置在 ...

  2. SVN打patch,某Java文件提示svn:mime-type = application/octet-stream的问题

    在使用SVN合版本时发现某文件有冲突,正常冲突文件是可以编辑修改的,但是该文件无法编辑,我只好选择后续修改选项,问题好诡异啊!!!在解决完其他冲突后,我选择了在eclipse开发工具内将修改的代码调整 ...

  3. 【工匠大道】 svn命令自己总结

     本文地址   分享提纲: 1. svn 不常见单有用的命令 2. svn查看切换用户 1. svn自己总结的一些不常见,但有用的命令 1)[导出svn不带版本代码]导出不带svn版本控制的代码到本地 ...

  4. 解决eclipse中svn插件总是提示输入密码的问题

    一.背景 最近在eclipse中使用svn插件进行远程仓库代码管理时,老是出现提示让输入密码,特别烦人,经过努力,终于解决该问题,拿来和大家分享~ 二.svn插件密码机制以及出现问题的原因分析 当我们 ...

  5. 搭建 SVN 服务器

    安装.启动 SVN 服务器 在 Windows 下,可以使用以下命令将 SVN 服务注册到 windows 服务中去: sc create svnserver binPath= "drive ...

  6. Windows Server配置Jenkins,实现监测SVN提交自动构建.net4.5的项目

    1,持续集成 概念:http://baike.baidu.com/view/5253255.htm,对于大多数人而言,自动构建/自动测试/自动部署,已经很发挥它的价值了.选择上: 推荐jenkins, ...

  7. Eclipse切换SVN用户

    1. 点击windows --> preference --> Team --> SVN,查看当前的SVN接口. 2. 如果SVN接口是JavaHL,那么找到C:\Documents ...

  8. eclipse svn账号更换

    在eclipse下用 svn的时候,我们习惯将用户名和密码保存.前天公司将svn的账号全部更换了,这时原来的eclipse保存的svn账号密码就失效了.那怎么样才能切换账号了,eclipse svn插 ...

  9. svn 修改文件的二进制或文本标记

    在添加一个文件的时候,svn自动标记成了二进制文件.当时也没在意就提交了.结果修改了之后不能进行svn diff操作,说是二进制文件不能进行diff操作.在网上找了个方法,修改这个文件的标记属性,把这 ...

随机推荐

  1. Codeforces GYM 100114 B. Island 水题

    B. Island Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100114 Description O ...

  2. BZOJ 3505: [Cqoi2014]数三角形 数学

    3505: [Cqoi2014]数三角形 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/pr ...

  3. Sublime Text 备忘

    Sublime Text已经被传成编程利器,那当然也是我们前端的利器了,刚开始用的时候,很多小问题,所以做个备忘,忘记的时候也可以翻出来看看,下次重装的时候可以用到. 1.设置自动换行 菜单栏 Vie ...

  4. 返回ListBox选中的多项目

    //返回ListBox选中的多项目 procedure TForm1.Button2Click(Sender: TObject);vari:Integer;s:string;begin   for i ...

  5. 创建MySQL从库

    我们知道Oracle有DataGuard实时备份数据.能够做主备切换,而MySQL也有自己的一套备库方案.称之为主从复制. 搭建MySQL从库是为了实时同步主库数据,同一时候也能够分担主库的读压力.对 ...

  6. zookeeper使用和原理探究(一)

      zookeeper介绍zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的<The Chubby lock serv ...

  7. 开源 java CMS - FreeCMS2.3 Web页面信息採集

    原文地址:http://javaz.cn/site/javaz/site_study/info/2015/23312.html 项目地址:http://www.freeteam.cn/ Web页面信息 ...

  8. python selenium自动化(三)Chrome Webdriver的兼容

    当一个自动化测试被实现在一个浏览器之后,我们会希望我们的测试能够覆盖到尽量多的别的浏览器.通过跨平台的测试来保证我们的程序在多个浏览器下都能正常工作. 在安装了selenium之后,firefox w ...

  9. 【ZZ】MySql语句大全:创建、授权、查询、修改等

    http://blog.csdn.net/evankaka/article/details/45580845

  10. 高级I/O之readv和writev函数

    readv和writev函数用于在一次函数调用中读.写多个非连续缓冲区.有时也将这两个函数称为散布读(scatter read)和聚集写(gather write). #include <sys ...