现在在公司,用的是Firefly进行源代码管理,这是个国产软件,好像在金融界比较流行。但是为什么,我不清楚。以前在学校里面用的是VSS,后来看过一点点粗浅的CVS资料,现在看Firefly,觉得有点概念上的区别。无论对错,先记下来。以后还可以慢慢研究。 以软件版本管理软件的控制方法来说,主要有两种: Lock-Modify-Unlock模式,就是VSS里面的checkout,编辑,然后再checkin。checkout之后,源文件就被锁住了,其他人都不可以编辑这个文件,直到那个人再checkin,也就是提交修改同时解锁。这种模式比较安全,也很简单,但是一个文件一次只能一个人编辑,据说效率比较低。我个人却认为需要多个人同时编辑同一个文件的情况实在是太少了。 Copy-Modify-Merge模式,CVS和Firefly用的这种方式。把文件从服务器上拷贝一个副本到本地,然后编辑,这样就可以多个人同时编辑。编辑完了再上传,上传的时候再解决冲突。 因为第一种方式比较简单,所以开发机与服务器的同步比较简单,也不存在什么冲突和同步的问题。VSS的基本想法就是,在服务器上建立一些文件夹,然后把源代码放进去,不过这个结构是存在数据库里面的。客户端在必要时去读数据库,然后在本地恢复出这么一个物理文件系统。因此它面对的对象是文件和目录。 到了第二种方式,问题就复杂了,首先搞进来一个branch的东西。CVS和Firefly在这一点上似乎理解有不同。对于CVS的理解我不是很多,摘一点来源于Firefly文档的东西(http://www.hansky.com.cn/cn/resource/prod/pdf/FireflyIntro.pdf):针对并行开发的问题,一般版本控制系统的做法是让用户直接在文件上作出一个分支(Branch),使得不同用户可以同时在文件的分支和主干上对文件进行修改,而不互相干扰,有效的起到隔离开发的作用。如图所示: 然后使用merge过程对同一个文件的不同分支进行合并,如下图: 看来,branch的出现是为了解决多用户并发修改同一文件的问题。还是上面的文档提出了这样的话:“在Firefly 中,“分支(Branch)”具有了更加合理的意义,它不再是一个文件一级的概念,而是扩展到了项目级别。我们不说“某某文件具有某某分支”,而是说“某某分支具有某某文件””。这样的话,我个人觉得,branch在Firefly里面又退回到了VSS的做法,说白了也就是“目录”。 上面的结论,是我个人的理解。目前关于Firefly的文档不齐全,而且解释也很模糊,我不敢断言这样的理解是正确的,但是它确实可以说明一部分问题。如果以后在实践中遇到了说不痛的情况,我会再进行修改。下面基于上面的结论来分析一下Firefly的操作。 首先Bringover,从服务器获得所有的branch以及里面的文件。基本类似于VSS里面的get latest version。 现在可以对本地工作区进行操作了。Edit将一个文件置于编辑状态,如果愿意,你可以用lock和unlock确定是否独占这个文件;如果改到一半,觉得不好,就Unedit放弃更改使其复原;如果改好了,就Delta,保存修改;如果delta之后,又后悔了,那就rollback;对于非编辑状态的文件,可以delete、undelete、rename、move、addToVersionControl,总之改来改去;如果改来改去还不爽,那就Undo吧,整个本地工作区会回到上次bringover的状态。 现在来putback,把第二步的所有工作传到服务器上去。 upload,不明白。说是用本地工作区来更新服务器上的镜像。那服务器镜像是什么呢?文档也没说,我现在理解可能是将第2步的中间结果暂存一下——万一客户机的硬盘挂了呢! 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/soobey/archive/2005/08/29/467259.aspx
分享到:
相关推荐
本设计分享Firefly-RK3288开发板硬件/Android源代码/固件等等,供网友免费下载。Firefly-RK3288开发板拥有强大的多线程运算能力、图形处理能力以及硬件解码 能力,而且支持Android和Ubuntu双系统。Firefly-RK3288...
【描述】中的信息与标题相同,再次确认了这是一个关于Python实现的麻将游戏的源代码。 【标签】为“源码”,暗示我们能够直接查看和分析项目的内部结构,包括函数定义、类设计以及算法实现等,这对于学习Python编程...
1. 你们的项目组使用源代码管理工具了么? 应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。
1. 你们的项目组使用源代码管理工具了么? 应该用。VSS、CVS、PVCS、ClearCase、CCC/Harvest、FireFly都可以。我的选择是VSS。 2. 你们的项目组使用缺陷管理系统了么? 应该用。ClearQuest太复杂,我的推荐是...
这个名为"DlgAutoSize_src.zip"的压缩包文件包含了实现这一功能的相关源代码和解决方案,让我们一起深入探讨其背后的原理和实现方法。 首先,"AutoSize.sln" 是一个Visual Studio解决方案文件,它包含了项目的所有...
5. **电源管理**:为了节省能源,驱动代码通常会支持动态电源管理,例如在不使用时降低传感器的工作电压或完全关闭。 6. **用户空间接口**:驱动还提供API接口供上层应用程序调用,例如打开/关闭设备、设置参数、...
4. **Bugzilla**:由Mozilla基金会维护的一个开放源代码Bug跟踪系统,适用于大型组织和复杂的项目。 #### 六、Bug Manager 在敏捷开发中的应用 在敏捷开发方法中,Bug Manager扮演着重要的角色。通过持续集成和...
文件"es8323.c"是ES8323的驱动源代码文件,通常包含初始化、配置、读写操作等函数,用于控制和通信该编解码器。在Linux环境中,这样的驱动文件会遵循字符设备模型或者块设备模型,通过内核的总线系统(如I2C或SPI)...
在Windows操作系统中,Subversion(SVN)是一个广泛使用的版本控制系统,用于管理软件项目的源代码。在使用SVN的过程中,每个受控的工作副本目录下都会包含一个名为`.svn`的隐藏文件夹,这个文件夹存储了与版本控制...
本项目"MiCode-SoundRecorder-15aa813"显然是一个关于Android录音机的源代码库,可能是小米公司或其开发者团队的一个录音应用实例。下面我们将深入探讨这个项目可能包含的关键知识点。 1. **音频录制**:Android...
代码中可能包含了初始化RTC、SPI接口、数码管显示函数以及涓流充电管理函数等关键模块。同时,为了调试方便,可能还集成了串口通信功能,以便通过UART接口与PC进行数据交互,查看和调整时钟状态。 总的来说,STM32_...