Version Control

本地 git 的 partial clone

partial clone 是 git 的一项旨在减少空间和网络带宽占用的特性。 它会跳过下载那些可能不会用到的 git 对象,而是仅仅在需要时才去下载。对于网络延迟较低且带宽不愁的用户来说, 这样做往往会节省掉不少不必要的磁盘空间占用,而代价是可能失去离线访问的能力。除此之外,有些操作, 例如 git blame 或者 git log -p 很可能会需要与服务器交互,从而会变得略慢一些。

比较有用的场景是在使用某些历史比较久,或是对文件整体替换较多,而大部分情况下只关注最新版本的代码库。 与较早的 --depth 1 相比,partial clone的优点在于想要访问历史时仍然可以像正常的clone一样访问。

阅读全文…( 本文约 783 字,阅读大致需要 2 分钟 )

FreeBSD终于换了git

FreeBSD 最近终于完成了从 subversion 到 git 的转换(其实还没算彻底完成,不过 src/ 和 doc/ 都已经完成了)。

我个人用 git 用了蛮久了,最早开始严肃地用 git 大概是2012年年底 Illumos 从 hg 换成 git 的时候的事情,当时 FreeNAS 的开发也从 subversion 迁移到了 git,后来,我们也把 FreeNAS 内嵌的 FreeBSD 的开发搬到了 git 上面。

阅读全文…( 本文约 347 字,阅读大致需要 1 分钟 )

FreeBSD src/ r240000

Alan L. Cox 今天 commit 了 r240000。我记得刚换 svn 的那会才18到19万 revision 的样子。。。

FreeBSD 的 svn 代码库包括了从 1993 年 6 月 12 日到现在的全部 revision。与之前的 “n"cvs 不同(由于诉讼原因,FreeBSD 在 1994 年以 4.4-Lite 为基础重建了新的 cvs 代码库,也就是 2.x 和后来版本的 ncvs;早期代码库仍然可以在一些光盘出版物上找到),这套代码库包括了 FreeBSD 从一开始到现在的全部修订历史(不过,FreeBSD 2.0 之前的 tag 并未保留)。

参与评论

.svn目录

今天同事跑来问我为什么没办法checkout一个子目录,发现svn提示说某个目录已有既有的、未有版本的副本(这是一个新的checkout)。

删除重新checkout,问题依旧。

阅读全文…( 本文约 304 字,阅读大致需要 1 分钟 )

作弊条:用git做中心式代码库

在开始创建 git 代码库的时候,应使用 --bare 参数。举例:

git init --bare [repo_path]

或者,如果多人开发的话:

git init --bare --shared [repo_path]

将现有代码库转换为中心式代码库:

阅读全文…( 本文约 183 字,阅读大致需要 1 分钟 )

作弊条:git配合svn的一些使用方法

在一个git库中跟踪不同的svn branch

首次创建git库:git svn clone [svn代码库到HEAD分支的URL] [git代码库名]

例如,对于 FreeBSD,对应的URL为 http://svn.freebsd.org/base/head/

一般来说,从远程svn库复制需要的时间会比较长,也可以考虑首先在本地建立一份镜像,然后直接用 file:/// 去指定。

阅读全文…( 本文约 559 字,阅读大致需要 2 分钟 )