转自linFen原文如何使用SVN协调代源代码,多人同步开发

1.什么是SVN

SVN是一种版本管理系统,前身是CVS,是开源软件的基石。即使在沟通充分的情况下,多人维护同一份源代码的一定也会出现混乱的情况,版本管理系统就是为了解决这些问题。

2. SVN中的一些概念

a. repository(源代码库)
源代码统一存放的地方
b. Checkout(提取)
当你手上没有源代码的时候,你需要从repository checkout一份
c. Commit(提交)
当你已经修改了代码,你就需要Commit到repository
d. Update (更新)
当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更

日常开发过程其实就是这样的(假设你已经Checkout并且已经工作了几天):Update(获得最新的代码) –>作出自己的修改并调试成功 –> Commit(大家就可以看到你的修改了)

聪明的读者很快就要发问,如果两个程序员同时修改了同一个文件呢?SVN可以Merge这两个程序员的改动,对,合并,实际上SVN管理源代码是以行为单位的,就是说两个程序员只要不是修改了同一行程序,SVN都会自动合并两种修改。如果是同一行呢,SVN会提示文件Confict,
冲突,需要手动确认。

3.示范一下如何使用

Coollittlethings实际上就是提供一个SVN Repository的服务器

下面有文字以及截图说明一下如何使用SVN这样一个超级工具,可以让我们一起来修改同一份代码

我以我新创建的了一个共同制作blogger模版的项目为例,有兴趣的朋友可以和我联系一起来就修改blogger模版,你也可以上传你的模版,让我来帮你改,^_^

第一步Checkout

a.首选你需要有一个Coollittlethings的帐号,确保你具有该项目的权限

b.下载和安装SVN的客户端TortoiseSVN, 安装完成以后可能需要重新启动

c. 从Coollittlethings上Checkout源代码。
TortoiseSVN是一个资源管理器的插件,安装完成以后,鼠标邮件点任何文件夹或者桌面都有TortoiseSVN的菜单项
选择SVN Checkout

d.填写源代码的SVN路径和本地文件夹

这里的源代码路径是http://www.coollittlethings.com/svn/blogtemplate/moban

这个是我在Coollittlethings上建立的一个模版项目

e.填写你的Coollittlethings的帐号和密码

第二步,修改程序文件,这里是模版的HTML文件,我自然是用DW拉

Checkout下来的文件都会有一个版本管理的标志

然后用编辑器修改程序,比如这里我只是用Dreamweaver小改了一下,也可以用VS.net, Eclipse等等
保存以后更改过的文件会有一个!号的标志

第三步,Commit
确认(程序调试成功)以后,你就可以Commit到源码库上去了

Commit的时候可以简单说一下你的改动,比如这里我告诉大家我简单改了一下css

好了,如果是另外一个程序员他之前已经Checkout了源代码,那他早上起来可以先同步一下源代码Update
Show一下Log就可以看到别人改了什么。

把文件放在同一个服务器上就解决了代码同步的问题,聪明的同学又会问,那如果两个人同时修改了一个文件呢?

Good
Question!
这个时候SVN对源代码的管理是细致到行为最小单位的,就是说,如果两个人改的不是同一行代码,另外一个程序Update一下,那所有的修改就被合并呢,
比如说我修改了程序的上半部分并commit了,king修改了下半部分,
这个时候,king只要update,那我修改的那一部分就被合并了进来,king手上的就是最新版本。

那如果是修改了同一行呢? Good Question 2! 这个时候SVN就会显示冲突,需要手工修改,SVN的文档第一句话就是SVN不能代替程序员之间的沟通。

如何使用SVN协调代源代码,多人同步开发的更多相关文章

  1. CentOS安装Git实现多人同步开发

    描 述 要开发一个"cms系统",有2个人分别是:晓飞, 盈月.要求使用Git来进行版本控制. 项目信息 版本控制:Git 项目名称:cms 开发人员:xiaofei,yingyu ...

  2. GitHub的多人协同开发配置

    GitHub For Windows 下载地址:https://windows.github.com/ 基本的注册登录就不细讲了. 在源代码管理上,最重要的就是仓库了.仓库这一概念很容易理解,所谓仓库 ...

  3. Unity3D多人协作开发环境搭建

    多人协作 说到多人协作开发,大家都会想到要使用版本控制工具来管理项目,当然最常用的要数SVN和Git了,但是SVN管理Unity3D项目的确有一些不尽人意的地方. 比如:两个人修改了同一个场景,SVN ...

  4. Git详细教程---多人协作开发

    Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...

  5. Git详细教程(2)---多人协作开发

    Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...

  6. Git 多人协作开发的过程

    Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...

  7. Git教程Git多人协作开发

    Git可以完成两件事情: 1. 版本控制 2.多人协作开发 如今的项目,规模越来越大,功能越来越多,需要有一个团队进行开发. 如果有多个开发人员共同开发一个项目,如何进行协作的呢. Git提供了一个非 ...

  8. Unity3D 多人协作开发 环境搭建 笔记(场景合并)

    http://www.cnblogs.com/zhaoqingqing/p/3371120.html 说到多人协作开发,大家都会想到要使用版本控制工具来管理项目,当然最常用的要数SVN和Git了,但是 ...

  9. git学习------>从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git?

    最近逐步逐步的将公司的项目都从SVN往Git迁移了,但是想团队成员都能够一步到位就迁移到Git是不可能的,因为还有大部分人都还不会Git,所以整个过渡过程估计得大半年. 因此导致虽然项目迁移过来了,但 ...

随机推荐

  1. RTP 和 RTSP的区别

    RTP(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输协议.RTP被定义为在一对一或一对多的传输情况下工作.其目的是提供时间信息和实现流同 ...

  2. 配置Lotus Domino集群视频详解

    IBM Lotus Domino Server 有个最重要的高可用特新就是集群,它对于任何使用 Domino 服务器的组织,让用户能够持续访问它们的数据库,保证业务不间断运行.下面通过两个视频来学习如 ...

  3. Codefroces Educational Round 26 837 C. Two Seals

    C. Two Seals time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  4. java(内部类)

    内部类: 一个类定义在另外一个类的内部就称作为内部类. 内部类的类别: 1.成员内部类: 2.局部内部类: 1.成员内部类: 成员内部类的访问方式: 方式一:在成员内部类的外侧提供一个方法创建内部类的 ...

  5. split---将文件分割成多个小文件

    split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等. 选项 -b:值为每一输出档案的大小,单位为 byte. -C:每一输出档中,单行的最大 ...

  6. lastb---显示用户错误的登录列表

    lastb命令用于显示用户错误的登录列表,此指令可以发现系统的登录异常.单独执行lastb命令,它会读取位于/var/log目录下,名称为btmp的文件,并把该文件内容记录的登入失败的用户名单,全部显 ...

  7. Android NDK调试出错Unknown Application ABI, Unable to detect application ABI's的解决方式

    今天在调试Android NDK的时候,ADT的控制台报了这个错误: Unknown Application ABI, Unable to detect application ABI's 在网上查了 ...

  8. 在web开发中你不得不注意的安全验证问题#2-XSS

    前言 XSS又叫CSS (Cross Site Script) ,跨站脚本攻击. 恶意攻击者往Web页面里插入恶意html代码.当用户浏览该页之时,嵌入当中Web里面的html代码会被运行,从而达到恶 ...

  9. start_kernel----lcokdep_init

    void lockdep_init(void) { int i; /* * Some architectures have their own start_kernel() * code which ...

  10. go timer

    go timer package main import ( "fmt" "time" ) func debounce(interval time.Durati ...