本文拷贝自网址:http://www.subversion.org.cn/?action-viewnews-itemid-1

如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配套有动画教程。 本文是使用Subversion最快速的教程,在最短的时间里帮助您建立起一套可用的服务器环境,只需略加调整就可以应用到实际项目当中。 本教程分为以下几个部分,为了说明简单,教程是在windows下使用的方式,以方便资源有限的项目使用。在UNIX环境下,只是安装方式不同,命令执行并无太大区别。

  • 软件下载
  • 服务器和客户端安装
  • 建立版本库(Repository)
  • 配置用户和权限
  • 运行独立服务器
  • 初始化导入
  • 基本客户端操作

1,软件下载

下载Subversion服务器程序。

官方网站的下载二进制安装文件,来到二进制包下载部分,找到 Windows NT, 2000, XP and 2003部分,然后选择Apache 2.0 或者 Apache 2.2,这样我们可以看到许多下载的内容,目前可以下载Setup-Subversion-1.5.3.msi

下载Subversion的Windows客户端TortoiseSVN。

TortoiseSVN是扩展Windows Shell的一套工具,可以看作Windows资源管理器的插件,安装之后Windows就可以识别Subversion的工作目录。 官方网站是TortoiseSVN,下载方式和前面的svn服务器类似,在Download页面的我们可以选择下载的版本,目前的最高稳定版本的安装文件为TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi

2,服务器和客户端安装

服务器安装,直接运行Setup-Subversion-1.5.3.msi ,根据提示安装即可,这样我们就有了一套服务器可以运行的环境。

安装TortoiseSVN,同样直接运行TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi按照提示安装即可,不过最后完成后会提示是否重启,其实重启只是使svn工作拷贝在windows中的特殊样式生效,与所有的实际功能无关,这里为了立刻看到好的效果,还是重新启动机器。

3,建立版本库(Repository)

运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,在安装了Subversion服务器之后,可以直接运行,如:

svnadmin create E:\svndemo\repository

就会在目录E:\svndemo\repository下创建一个版本库。

我们也可以使用TortoiseSVN图形化的完成这一步: 在目录E:\svndemo\repository下"右键->TortoiseSVN->Create Repository here...“, 然后可以选择版本库模式, 这里使用默认即可, 然后就创建了一系列目录和文件。

4,配置用户和权限

来到E:\svndemo\repository\conf目录,修改svnserve.conf: # [general] # password-db = passwd 改为: [general] password-db = passwd

然后修改同目录的passwd文件,去掉下面三行的注释: # [users] # harry = harryssecret # sally = sallyssecret 最后变成: [users] harry = harryssecret sally = sallyssecret

在passwd文件中,“=”前的字符就是用户名,后面的就是密码。还要注意“[users]”前面的注释“#”一定要删除掉。

5,运行独立服务器

在任意目录下运行: svnserve -d -r E:\svndemo\repository 我们的服务器程序就已经启动了。注意不要关闭命令行窗口,关闭窗口也会把svnserve停止。

6,初始化导入

来到我们想要导入的项目根目录,在这个例子里是E:\svndemo\initproject,目录下有一个readme.txt文件:

右键->TortoiseSVN->Import... 在URL of repository输入“svn://localhost/trunk” 在Import Message中输入你的日志信息

完成之后目录没有任何变化,如果没有报错,数据就已经全部导入到了我们刚才定义的版本库中。

需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的主机上进行。例如运行svnserve的主机的IP是133.96.121.22,则URL部分输入的内容就是“svn://133.96.121.22/trunk”。

7,基本客户端操作

取出版本库到一个工作拷贝:

来到任意空目录下,在本例中是E:\svndemo\wc1,运行右键->Checkout,在URL of repository中输入svn://localhost/trunk,这样我们就得到了一份工作拷贝。

在工作拷贝中作出修改并提交:

打开readme.txt,作出修改,然后右键->Commit...,这样我们就把修改提交到了版本库,我们可以运行。

察看所作的修改:

readme.txt上右键->TortoiseSVN->Show Log,这样我们就可以看到我们对这个文件所有的提交。在版本1上右键->Compare with working copy,我们可以比较工作拷贝的文件和版本1的区别。

最后,所有的内容都已经录制为动画文件,大家可以参考。

关于本教程大家有什么意见,可以这里讨论 。

  1. 如果更新文件以后,有两个人或者多个人同时修改了某个文件的某个位置,是否冲突,(一般不会这样子,因为上传的版本是可以编译通过的,而且每个人负责自己的模块,不会多人独立修改同一个文件,别人也是先更新,后上传修改,,,,)
  2. 开发者习惯性动作。早上上班第一件事就是更新svn版本库,再开始一天的工作。
  3. 晚上下班,或者其他时候要上传东西可以直接上传因为你负责的东西没人去修改。
  4. 冲突是怎么产生的呢:因为不同的人,同时修改了同一个文件的同一个地方,这个时候,他提交了,你没有提交,你就提交不了,这个时候,你要先更新,更新就会出现代码冲突问题。最好不要多人同时修改一个文件,公用的文件,更改之前要和大家沟通一下,或者解决冲突 呵呵
  5. 先更新,没有冲突,再提交。有冲突,解决冲突再提交。否则也提交不了。
  6. 对于一些处于冲突状态下的文件 ,右键TortoiseSVN ->Resolved,解决冲突。解决冲突: http://www.blogjava.net/jasmine214--love/archive/2011/04/07/347769.html
  7. 更新-解决冲突-删掉以下三个文件-提交(如果自己没有修改的文件有冲突,删除再更新即可,自己修改的文件解决冲突)

test.php.mine   是冲突前自己的文件

test.php.版本号   是冲突前本地的版本文件

test.php.服务器的版本号   是冲突后服务器版本文件

svn代码冲突,不能提交的解决方法

张映 发表于 2010-10-25

分类目录: 服务器相关

对于刚接触svn的人来说,svn冲突后,不能提交是件让人很郁闷的事情。最让人郁闷的事,是代码间的覆盖。你把我代码盖了,我会很火大的。谁把谁的盖了都不爽。

为什么会出现代码冲突问题呢,因为不同的人,同时修改了同一个文件的同一个地方,这个时候,他提交了,你没有提交,你就提交不了,这个时候,你要先更新,更新就会出现代码冲突问题。一般情况,要尽量避免多个人修改同一个文件,如果你改的文件是公用文件,这个时候,最好和大家勾通一下,大家都在改就不好了。

下面我说一个,通用的解决冲突的办法,还不会覆盖代码,以test.php为例 :

1,修改文件后提交不了,大多是因为版本不一致造成的。更新一下,不产生冲突的情况,就可以提交了。

2,更新文件,如果出现冲突的情况,打开冲突文件test.php会看到类似以下的内容

<<<<<<<<<<<<<<< asdfadfadfadf 11111111111111 ======= asdfadfadfadf 111111111111111 222222222222 >>>>>>>>>>>>>>>>

结合别人修改的内容和自己修改的内容,然后把文件中的<<<<<,=====,>>>>>>>这类冲突符号去掉。去掉后,还是不能提交的,为什么?因为冲突时会产生三个文件,有这三个文件存在肯定提交不了。

客户端用的tortoisesvn(这个估计程序员用的最多),冲突时会多产生,三个文件

test.php.mine   是冲突前自己的文件

test.php.版本号   是冲突前本地的版本文件

test.php.服务器的版本号   是冲突后服务器版本文件

提交的时候,把这三个文件删除掉就可以提交了。

3,产生覆盖的原因。

a),在修改冲突文件test.php时,把别人代码都删除掉了,只留下了自己的代码。这样就会产生覆盖了。

b),把test.php.mine中的内容直接copy到test.php文件,这样也会产生代码覆盖。

上面二种情况都是我亲眼看到新手这样操作的,要避免这二种操作方法。

原文:http://blog.51yip.com/server/1071.html

  • 为了避免冲突,修改文件之前,首先要进行更新的操作。

svn快速教程的更多相关文章

  1. SVN使用教程总结[转]

    SVN使用教程总结   SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Sub ...

  2. Python快速教程 尾声

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 写了将近两年的Python快速教程,终于大概成形.这一系列文章,包括Python基 ...

  3. 【Python大系】Python快速教程

    感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容很多,加上各种标准库.拓展库, ...

  4. [转载]SVN使用教程

    SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversion是什么? ...

  5. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...

  6. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

  7. Python快速教程目录(转)

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 怎么能快速地掌握Python?这是和朋友闲聊时谈起的问题. Python包含的内容 ...

  8. Python快速教程 尾声(转)

    原文地址: http://www.cnblogs.com/vamei/p/3603046.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留 ...

  9. 发布《Linux工具快速教程》

    发布<Linux工具快速教程> 阶段性的完成了这本书开源书籍,发布出来给有需要的朋友,同时也欢迎更多的朋友加入进来,完善这本书: 本书Github地址:https://github.com ...

随机推荐

  1. dataGridViewX和数据库的链接之dataGridViewX1.DataSource = ds.Tables[0];

    dataGridViewX1.DataSource = ds.Tables[0]; 1, dataGridViewX和数据库链接,如果我们用 dataGridViewX1.DataSource = d ...

  2. 【转】Android APK反编译就这么简单 详解(附图)

    转载地址:http://blog.csdn.net/vipzjyno1/article/details/21039349 在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂 ...

  3. J2EE开发时的包命名规则

    http://www.blogjava.net/paulwong/archive/2012/04/15/374675.html 转一个J2EE开发时的包命名规则,养成良好的开发习惯 代码编写规范目的: ...

  4. PV、UPV、UV简介

    1.PV: PV的全称是Pageview,中文的意思是:综合浏览量. 浏览量.页面的浏览次数,衡量网站用户访问的网页数量,用户每打开/刷新一次页面就记录一次,多 次打开会累计. 2.UPV: UPV的 ...

  5. Anroid 数据库的创建

    创建数据库首先要了解SQLiteOpenHelper类 1.构造方法 public SQLiteOpenHelper(Context context,String name, SQLiteDataba ...

  6. javascript数据属性和访问器属性

    var book={ _year:2004, edition:1};Object.defineProperty(book,"year",{ get:function(){ retu ...

  7. HTML 链接 - href

    链接 在HTML的学习中,链接的标签发挥着很大的作用,HTML 使用超级链接与网络上的另一个文档相连.几乎可以在所有的网页中找到链接.点击链接可以从一张页面跳转到另一张页面. 比如说:实例 创建超级链 ...

  8. easyui-window 关闭事件,只要关闭窗口就会触发

    $(function () {            $('#windowsMSG').window({                onBeforeClose: function () { //当 ...

  9. javascript 变量提前

    1. 未声明变量时,结果是我们预期的结果,报错这个变量没有定义. (function() { // 报错:variable is not defined console.log(variable); ...

  10. android 加载网络图片

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...