OpenBSD为何还在用CVS之感
一个轻松无聊的晚上突然想到一个问题——在当今这个Git大红大紫的时代,OpenBSD为何还在用CVS代码仓库?连他同阵营的FreeBSD都已经改用SVN,宣布逐渐废掉CVS了……问了下google,搜到有人问同样的问题。(btw:本人不善英文,只是按意思简单翻译,可能翻的很蹩脚,英文好的童鞋直接看原文最好。)
http://openbsd.7691.n7.nabble.com/Why-does-OpenBSD-use-CVS-td226952.html
[Alokat]
Hi, first, I don't want to start a flame war about why is CVS better or not better than X - it's just a question.
If you say, we use it because it just works - it's okay. :)
So why does OpenBSD still uses CVS and don't migrate to SVN or something like git as other OSS projekts do?
嗨,首先,我不想引起为什么CVS比其他版本控制系统好坏的论战,我只想知道为什么,哪怕是你说它刚好能工作也行。
那么为什么OpenBSD仍然在使用CVS,而没有迁移到其他开源代码项目使用的SVN或git呢?
[Stuart Henderson]
my 2p: like all version control software CVS has bugs, but between us,
developers have a reasonable idea of how to avoid them in CVS, there's
less knowledge about other version control systems.
Also having the repository stored in human-readable (ish) files is an
advantage if there was ever any repo corruption.
You might also ask why some other OS use source control software which
they don't even include in the base OS ;-)
向其他版本控制系统一样CVS也有bug,但是开发者都有办法能绕开这些问题,并且相比其他版本控制系统,使用CVS并不需要太多的学习成本。
而且使用肉眼能读的文本文件作为版本仓库。
- 简单(Simple),这个就不用解释了……
- 文本化,这正是Unix的哲学之一,不了解的同学可以去看下《Unix编程艺术》中相关的章节。CVS沿用古老的RCS的存储方式,版本库都是文本文件,可以直接用editor打开看,甚至编辑,不得不说这点相对SVN/Git等确实是优点之一(当然缺点亦有)。之前看云风很久以前的博客写到过关于游戏地图数据使用文本方式存储,我大为赞同。经常见有些同学在网上问做socket通信,如何设计协议,文本协议?自定制二进制协议?Protobuf?AMF3?……其实现有常用协议已经给出了这个问题的答案,FTP/HTTP/DNS等协议都是文本协议,已久经历史的证明;除了像网游这种有一定保密性质的情况,用简单的文本协议绝对是明智之选;总之文本化的重要性怎样强调都不为过,可惜的是我见过的很多程序员对此并不知晓,或者将此视是为老古董的教条主义……
[Nick Holland]
* "it works"(够用)
* migrating - and not losing history is difficult.(迁移到其他版本控制系统很难保证不丢失历史记录)
* migrating versioning systems is something you don't want to do every
few weeks (or even every few years)...so you want to make sure it is
really worth it if/when you do. SVN today? GIT next week? something
else next year? Please, no.(迁移版本控制系统需要花费大量精力,没必要追新)
* Tolerable -- and in the case of opencvs, ideal -- license.(License许可证)
* its glitches are hated, but known (the devil you know how to subdue,
vs. the devil who beats the sh*t out of you)
* relatively light weight -- runs fine on a 486, hp300, or on a modern,
fast machine, fits nicely into existing distribution, easy to drop into
a chroot.(轻量,能在486这样的低配机器上运行,并且很容易对其chroot。Btw: 安全对于OpenBSD意味着什么?)
* Infrastructure exists. To change it all would require a really good
reason.(现有的基础设施)
* it fits the OpenBSD development model.(适合OpenBSD的开发模式)
* Many of the "features" of alternatives are not desired in the OpenBSD
development model.(其他替代产品的特性并不是OpenBSD开发模式渴望的)
Obviously, it is possible to build a quality-focused product of
Operating System magnitude using CVS. I don't think one can quite say
CVS is the REASON for OpenBSD's quality, but it obviously hasn't hurt.
很明显,使用CVS是为了构建高质量的操作系统,但是我不认为CVS是OpenBSD高质量的原因,但它显然没有害处。
新技术的更替层出不穷,经常在网上看到某某大型项目从一个工具迁移到另一个工具,比如KDE从GNU Autotools迁移到cmake,于是掀起了废Autotools的争论,大量项目随后效仿迁移到cmake;Linux Kernel自家搞起的git,随后git一发不可收拾,github大火,人人都在学git,再加上网上各种技术狂热分子之势,似乎现在不用git管代码都不好意思说出口……
看完这些回复突然感觉似乎悟到了些什么。OpenBSD总给人一种很古老、刻板的感觉,但它的代码是那样的整洁,具有美感。我不止一次的向那些想看C库函数如何实现而抱着glibc代码啃的同学推荐OpenBSD/FreeBSD的C库代码实现。在技术浮躁的今下,OpenBSD为我们做出了最好的榜样。只用够用的,没有足够的好处绝对没有改变的必要,理性的看待新事物。很多时候新事物只不过是在旧事物上加了一个美丽的外表而已,但却让你看不到本质了。
自毕业工作几年来自己的最大改变之一也是不再向以前那样知道一个新技术就感觉热血沸腾,总想将其用起来,逐渐学会了分析自己所需的是什么,透过那些新技术华丽的外衣看到它的本质是什么;从最初的autotools/cmake/scons……最终悟到还是手写的makefile最淳朴、实用;从最初的想搞明白C++的所有东西到发现C是那样的淳朴、实用,顺应程序员和机器本该有的思维方式;从最初疯狂定制emacs的各种插件到只设置下tab宽度而已的.emacs;从最初的为editor/IDE挑选各种高亮配色到发现总是没有一个让自己感到十全十美能用一辈子的配色,逐渐发现vt100黑白终端模式的清晰与简洁……我想这大概算是种沉淀吧,今天看到这帖子特有此感,希望我的这些感触能对看此文的同学有所帮助。
OpenBSD为何还在用CVS之感的更多相关文章
- CVS 相关内容
CVS 基础 cvs 并不是 eclipse 独有, 而是 eclipse 支持 cvs. cvs 是用于几个程序员之间共享程序避免冲突的一个工具, 是 C/S 架构. cvs 是 java 的一个开 ...
- Linux 内核的代码仓库太不一样了,光克隆都让我挠头,克隆后居然还丢文件,你肯定也会遇到!!!
一个肯定能让你节省几个小时的小知识 大家好,我是 小猿来也,一个人称撸(划)码(水)小能手的程序猿. 最近一段时间,每次经过旁边大佬工位,总是发现他在快速的切屏,不知道在搞什么?难道他发现了快乐星球? ...
- maven 简介
本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Ma ...
- Maven的安装、配置及使用入门
Maven的安装.配置及使用入门 本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与 ...
- jenkins之从0到1利用Git和Ant插件打war包并自动部署到tomcat(第五话):总结以及build.xml文件
前面基本上把整个配置过程都完整地串起来了,包括可能遇到的难点,按照那个套路应该可以配置好自动打包发布的功能.简单总结下我的学习过程,以及遇到问题是怎样解决的. 准备一个项目源码 刚开始在github和 ...
- 持续集成工具hudson
2008-07-08 一.什么是持续集成 持续集成的核心概念 CI 过程会经常构建软件组件:在许多情况下,每当源代码存储库(比如 Subversion 或 ClearCase)中的代码发生变化时, ...
- 转载maven安装,配置,入门
转载:http://www.cnblogs.com/dcba1112/archive/2011/05/01/2033805.html 本书代码下载 大家可以从我的网站下载本书的代码:http://ww ...
- 【AR实验室】ARToolKit之概述篇
0x00 - 前言 我从去年就开始对AR(Augmented Reality)技术比较关注,但是去年AR行业一直处于偶尔发声的状态,丝毫没有其"异姓同名"的兄弟VR(Virtual ...
- OpenCASCADE Root-Finding Algorithm
OpenCASCADE Root-Finding Algorithm eryar@163.com Abstract. A root-finding algorithm is a numerical m ...
随机推荐
- XML转java对象
使用XStream来转换. XStream xStream = new XStream(); xStream.autodetectAnnotations(true); // xStream.alia ...
- leetcode 257
查找二叉树中根节点到叶子节点的所有路径: 本题有两种解法:递归解法和非递归解法,递归解法请参考:http://blog.csdn.net/booirror/article/details/477331 ...
- 湖大OJ-实验C----NFA转换为DFA
实验C----NFA转换为DFA Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit us ...
- 【翻译】hololens入门
欢迎!我们很高兴您发现这里并做好了全息投影奇幻之旅的准备.本页面的全部内容都经由我们的工程师团队精心打造,因此这会让人觉得本页面是由软件工程师制作(别忘了,我们是全息投影技术的缔造者,而不是网页制 ...
- 最长公共子序列(加强版) Hdu 1503 Advanced Fruits
Advanced Fruits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Git Permission denied (publickey).
有可能, jenkins slave service or jenkins service的logon 账户没有设置好
- web移动前端的click点透问题
在移动端开发中,有时会出现click点透的问题. 一.什么是click点透 以下情况,在B元素上有半透明红色遮盖层A,黄色B元素内有可点击链接C. tips:以下举例仅针对webkit内核浏览器,所有 ...
- html里面的相对路径和绝对路径
HTML有两种路径的写法:相对路径和绝对路径. 相对路径是在同一个目录的文件引用,如果源文件和引用文件在同一个目录里,直接写引用文件名即可. 如: a.html: c:\test\menu\a ...
- 如何从github上面拷贝源码
有好奇心的朋友们一定都想看一看很多开源项目的源码,那么github就不用说啦,太多的开源项目都把源码放到上面. 博主最近为了学习angularjs也不得不去github上面弄源码,下面将会介绍如何做: ...
- "Unity测试系列"文章索引
对Unity各种API的细节进行测试 Common 一些Unity基础操作的性能测试 Animation/Animator Animation Play/Stop测试 关于Animation动画事件的 ...