`
caozuiba
  • 浏览: 912069 次
文章分类
社区版块
存档分类
最新评论

[技术讨论]多人并发开发中的问题

 
阅读更多

这里面涉及到多人并发同时开发一个类的问题,涉及到配置库管理,代码规范化,协调配合开发方面的问题,更多的这里就不展开了,下面来自水木社区中一个问题的对话中已经说明了很多这方面的问题了。

下面的问题虽然提到分布式版本管理,但其实不是分布式版本管理的问题,而是开发过程中的代码管理和开发配合的问题。

发信人: hyperLee (冬瓜de征途~~风雨无阻), 信区: SoftEng
标 题: 请问一个用分布式版本管理软件的一个难题
发信站: 水木社区 (Sat Dec 26 11:43:45 2009), 站内

用分布式版本控制软件,好处是每个人有一个仓库,不需要依赖服务器。但是现在有个问题。

如果两个人同时更改了一个源代码中的同一个函数,这样在merge的时候,会出现冲突,这时候就需要手工处理冲突了。

我想问一下,手工处理这样的冲突,是软件开发的标准环节吗?还是说所有需要手工处理的冲突,都是可以避免的?


--

昨日的一缕英魂,今日的万里长城。


※ 来源:·水木社区 newsmth.net·[FROM: 159.226.230.*]

[本篇全文] [回复文章] [本篇作者:Dieken] [回信给作者] [进入讨论区] [返回顶部]
2
发信人: Dieken (风催草低 - 明月何尝不照人), 信区: SoftEng
标 题: Re: 请问一个用分布式版本管理软件的一个难题
发信站: 水木社区 (Sat Dec 26 11:55:44 2009), 站内

冲突是难免的,尽快、频繁的提交、更新就是了。

【 在 hyperLee (冬瓜de征途~~风雨无阻) 的大作中提到: 】
: 用分布式版本控制软件,好处是每个人有一个仓库,不需要依赖服务器。但是现在有个问题。
: 如果两个人同时更改了一个源代码中的同一个函数,这样在merge的时候,会出现冲突,这时候就需要手工处理冲突了。
: 我想问一下,手工处理这样的冲突,是软件开发的标准环节吗?还是说所有需要手工处理的冲突,都是可以避免的?
: ...................

--

※ 修改:·Dieken 于 Dec 26 11:55:54 2009 修改本文·[FROM: 123.123.2.*]
※ 来源:·水木社区 newsmth.net·[FROM: 123.123.2.*]

[本篇全文] [回复文章] [本篇作者:dinny] [回信给作者] [进入讨论区] [返回顶部]
3
发信人: dinny (mumble is a penguiner), 信区: SoftEng
标 题: Re: 请问一个用分布式版本管理软件的一个难题
发信站: 水木社区 (Sat Dec 26 11:59:27 2009), 站内



【 在 hyperLee (冬瓜de征途~~风雨无阻) 的大作中提到: 】
: 用分布式版本控制软件,好处是每个人有一个仓库,不需要依赖服务器。但是现在有个问题。
: 如果两个人同时更改了一个源代码中的同一个函数,这样在merge的时候,会出现冲突,这时候就需要手工处理冲突了。
: 我想问一下,手工处理这样的冲突,是软件开发的标准环节吗?还是说所有需要手工处理的冲突,都是可以避免的?

merge是版本控制/配置管理中的重要环节,但并不是说它就是软件开发的某个环节,不是一个层面的内容。

两个功能模块共享同一文件(如头文件)并且在某一开发环节都需要改动这个文件,那么出现冲突再所难免。一般来说,在本地改动之前针对repo做个pull,然后对branch进行rebase,可以减少merge时的冲突。

同时经常提交更改,尽量减少每次提交的更改代码量也有用处。

: ...................

--
农夫,山泉,有点田。


※ 修改:·dinny 于 Dec 26 12:02:03 2009 修改本文·[FROM: 61.148.56.*]
※ 来源:·水木社区 newsmth.net·[FROM: 61.148.56.*]

[本篇全文] [回复文章] [本篇作者:qingrun] [回信给作者] [进入讨论区] [返回顶部]
4
发信人: qingrun (青润), 信区: SoftEng
标 题: Re: 请问一个用分布式版本管理软件的一个难题
发信站: 水木社区 (Sat Dec 26 12:46:51 2009), 站内

如果你的团队在开发前定义好每个人的方法属性命名规则,做好区分,开发过程中对方法进行清晰的定义和区分,那么发生冲突的地方就会少很多,另外,即使出现了冲突需要merge,也可以通过工具直接merge成功——cc就能完全做到这一点(01年使用cc的时候发现的),但是如果你前面的美定义好,那么这个 merge就可能非常麻烦了。那就可能必须双方都配合修改代码才有可能了。呵呵。

【 在 hyperLee (冬瓜de征途~~风雨无阻) 的大作中提到: 】
: 用分布式版本控制软件,好处是每个人有一个仓库,不需要依赖服务器。但是现在有个问题。
: 如果两个人同时更改了一个源代码中的同一个函数,这样在merge的时候,会出现冲突,这时候就需要手工处理冲突了。
: 我想问一下,手工处理这样的冲突,是软件开发的标准环节吗?还是说所有需要手工处理的冲突,都是可以避免的?

--
我很傻,但是我很能干
软工类技术blog:blog.csdn.net/qingrun,等待100万访问。

※ 来源:·水木社区 http://newsmth.net·[FROM: 162.105.244.22]

[本篇全文] [回复文章] [本篇作者:canper] [回信给作者] [进入讨论区] [返回顶部]
5
发信人: canper (洗衣粉), 信区: SoftEng
标 题: Re: 请问一个用分布式版本管理软件的一个难题
发信站: 水木社区 (Sat Dec 26 13:36:22 2009), 站内


基本上我们都调成锁定模式,要改之前先锁定吧
【 在 hyperLee (冬瓜de征途~~风雨无阻) 的大作中提到: 】
: 用分布式版本控制软件,好处是每个人有一个仓库,不需要依赖服务器。但是现在有个问题。
: 如果两个人同时更改了一个源代码中的同一个函数,这样在merge的时候,会出现冲突,这时候就需要手工处理冲突了。
: 我想问一下,手工处理这样的冲突,是软件开发的标准环节吗?还是说所有需要手工处理的冲突,都是可以避免的?
: ...................

--
在我头上做窝的蚂蚁,你们保重


※ 来源:·水木社区 newsmth.net·[FROM: 113.96.185.95]

[本篇全文] [回复文章] [本篇作者:qingrun] [回信给作者] [进入讨论区] [返回顶部]
6
发信人: qingrun (青润), 信区: SoftEng
标 题: Re: 请问一个用分布式版本管理软件的一个难题
发信站: 水木社区 (Sat Dec 26 19:21:14 2009), 站内

更改之前先锁定的方式,在很多项目中是无法使用的,并行开发和时间的逼迫,都会出现不能锁定某一个泪来进行两个甚至更多人的并行修改和开发的。
锁定,类似于多线程的锁机制,有可能出现死锁,那时候,就是另一个技术风险引起的多种风险并发症了。呵呵

【 在 canper (洗衣粉) 的大作中提到: 】
: 基本上我们都调成锁定模式,要改之前先锁定吧

--
我很傻,但是我很能干
软工类技术blog:blog.csdn.net/qingrun,等待100万访问。

※ 来源:·水木社区 http://newsmth.net·[FROM: 162.105.244.22]

[本篇全文] [回复文章] [本篇作者:hyperLee] [回信给作者] [进入讨论区] [返回顶部]
7
发信人: hyperLee (冬瓜de征途~~风雨无阻), 信区: SoftEng
标 题: Re: 请问一个用分布式版本管理软件的一个难题
发信站: 水木社区 (Sun Dec 27 09:51:05 2009), 站内

多谢各位高人指点,受教了!

--

昨日的一缕英魂,今日的万里长城。

分享到:
评论

相关推荐

    大型多人在线游戏开发,大型多人在线游戏开发 pdf,C,C++

    5. **C/C++编程**:这两种语言在游戏开发中广泛应用,特别是在性能敏感的部分。C++的面向对象特性便于代码组织,而C语言则能提供底层控制。文档可能包含如何利用C++模板、继承、多态等特性进行游戏逻辑实现。 6. **...

    PhotonCloud多人游戏开发入门.rar

    通过学习和实践,你可以掌握多人游戏开发的关键技术,为创建自己的多人在线游戏奠定坚实的基础。记住,理论结合实践是最佳的学习路径,所以不要仅限于阅读,还要动手尝试,这样你才能真正掌握这些知识。

    使用Java开发的简易多人聊天室

    在本项目中,我们讨论的是一个使用Java编程语言开发的简易多人聊天室。这个聊天室主要是为了解决作业中的问题,尽管它存在一些已知的缺陷,但它仍然是一个很好的起点来学习和理解Java多线程以及网络编程的基本概念。...

    网络多人游戏架构与编程.pdf&源码

    5. **并发处理**:讨论线程管理、并发控制和多任务调度,以处理大量并发玩家的请求,确保服务器的稳定运行。 6. **安全性**:涵盖防止作弊、数据加密和身份验证等安全措施,保护游戏环境的公正性。 7. **性能优化*...

    多人聊天软件

    多人聊天软件是信息技术领域中一种重要的沟通工具,它允许用户在一个平台上进行实时交流,实现信息的快速分享和团队协作。这些软件通常具有多种功能,包括文本聊天、语音通话、视频会议、文件共享、表情符号、贴图等...

    网络多人游戏架构与编程Multiplayer Game Programming-Architecting Networked Game.pdf

    3. **服务器架构**:多人游戏通常采用客户端-服务器架构,书中会讨论单服务器、多服务器、分布式服务器等模式,以及负载均衡、故障转移和扩展性的实现方法。 4. **游戏逻辑与状态管理**:处理玩家行为和游戏世界的...

    简单的多人聊天系统-基础项目

    总结起来,这个项目是一个使用Java开发的多人聊天系统,可能采用了Web技术进行用户界面的交互,使用了Eclipse或MyEclipse作为开发工具。开发者需要理解网络编程、多线程、数据库管理和前端交互等多个领域的知识。...

    基于JAVA的多人聊天系统

    JAVA的多线程技术在这里起到了关键作用,它允许多个客户端同时进行通信,提高了系统的并发能力。服务器端还需要维护用户信息,包括登录验证、权限管理等,这部分可能涉及到数据库操作,如使用JAVA的JDBC(Java ...

    搭建浏览器多人测试平台并进行nagios监控

    标题 "搭建浏览器多人测试平台并进行nagios监控" 暗示了本文将讨论如何构建一个支持多用户同时测试的浏览器环境,并结合Nagios系统进行监控,以确保服务的稳定性和可用性。Nagios是一款开源的网络监控系统,能够实时...

    ASP.NET做的多人聊天室,无刷新

    ASP.NET是一种基于.NET框架的服务器端编程模型,用于构建...它涉及到的知识点包括ASP.NET框架、Ajax通信、JavaScript编程、服务器端的并发控制以及用户输入验证等多个方面,展示了Web开发中实时交互功能的实现技巧。

    Visual C++游戏开发经典案例详解.pdf

    《Visual C++游戏开发经典案例详解》这本书是针对使用Visual C++进行游戏开发的专业指南,旨在帮助读者通过实例学习和掌握C++编程语言在游戏开发中的应用。书中的内容覆盖了从基础到高级的游戏开发技术,包括图形...

    VB 开发VB网络多人聊天系统的设计与实现(论文+源代码).rar

    《VB开发VB网络多人聊天系统的设计与实现》是一份详细阐述如何使用Visual Basic(VB)构建网络多人聊天系统的论文,并附带源代码。这个项目旨在为初学者和开发者提供一个理解网络通信和实时数据交换的基础平台,同时...

    VISUAL_C++ 游戏开发技术与示例

    7. **多线程编程**:在游戏开发中,多线程是提高性能和响应性的重要手段,书中会涵盖线程同步、并发和并行编程的相关知识。 8. **网络编程**:对于多人在线游戏,网络编程是必不可少的,本书将涉及TCP/IP协议、UDP...

    FMS多人视频会议系统

    在多人视频会议场景中,FMS发挥着至关重要的作用,能够处理大量的并发视频流,确保用户之间的流畅通信。 FMS(Flash Media Server)提供了以下关键功能: 1. **实时传输协议(RTMP)**:FMS基于RTMP协议,这是一种...

    基于ASP的Anothersea多人在线视频系统ASP测试版.zip

    这个标题揭示了我们要讨论的是一个使用ASP(Active Server Pages)技术开发的多人在线视频系统。ASP是微软推出的一种服务器端脚本环境,用于创建动态网页和Web应用程序。在这个系统中,“Anothersea”可能是一个项目...

    基于Java Netty 实现的多人联机游戏(多人对战)的客户端和服务器端-gameServer.zip

    下面我们将详细讨论Netty框架及其在游戏开发中的应用。 1. **Netty框架介绍** - Netty 是由JBOSS组织开发的开源框架,它简化了网络应用的编程,尤其是TCP和UDP协议的应用。Netty的核心是其NIO(非阻塞I/O)模型,...

    ActiveMQ使用Ajax实现多人聊天室

    在本场景中,我们将讨论如何利用ActiveMQ和Ajax技术来实现一个多人聊天室的功能。 首先,了解ActiveMQ的基本概念。ActiveMQ作为消息代理,它接收、存储并转发消息给订阅者。生产者发送消息到ActiveMQ,而消费者则从...

    毕业设计(论文)-基于JAVA的多人聊天室设计.doc

    1.2.3 学术研究价值:深入研究Java在网络通信中的应用,为后续相关软件开发提供理论和技术支持。 第 2 章 系统概况 2.1 软件系统主要功能 2.1.1 私聊:用户间一对一的私人对话,确保信息的私密性。 2.1.2 群聊:...

    Python-一个基于Web的协作代码编辑器支持多个用户同时编辑

    标题中的“Python-一个基于Web的协作代码编辑器支持多个用户同时编辑”表明我们要讨论的是一个使用Python构建的在线代码编辑器,它允许多个用户实时协作。这种编辑器通常基于Web技术,如HTML、CSS和JavaScript,可能...

    多人聊天系统的改进版,添加了服务器对所以客户的通告源码

    多人聊天系统的改进版是一个在IT领域中常见的项目,它基于网络通信技术,旨在实现多用户间的实时交流。在这个系统中,我们重点讨论的核心知识点包括服务器与客户端通信、源码解析、服务提供、客户管理以及多线程编程...

Global site tag (gtag.js) - Google Analytics