日志标签 Git

TopGit的使用技巧 (3)

含有分支依赖且产生冲突的update操作

阅读全部内容 »

TopGit的使用技巧 (2)

含有冲突的update操作
阅读全部内容 »

TopGit的使用技巧 (1)

TopGit是基于分布式版本控制工具Git的一个轻量级的分支及补丁管理工具。使用TopGit可以很好的管理基于分支的开发模式。尤其对于二次开发人员来说,TopGit就是他们的杀手锏。

首先原型版本的代码用Git初始化成Git库,然后每给原型增加一个功能或者修改一个Bug都用TopGit创建一个分支(tg create t/feture1 或者 tg create t/bug1-fix),这样每一个功能或者Bug修复都是一个TopGit分支。当原型版本升级后,我们只需要切换到原型分支,即master分支 (git co master),然后导入原型的新版本代码,最后将TopGit的分支一个一个迁移到新的原型之上,就完成了一次版本的升级。真的很有用啊,这个东东!

下面介绍一些TopGit的使用技巧,尤其是关于分支update的问题
阅读全部内容 »

Subversion 用户眼中的 Git (8): SVN没有后悔药,git有好多

Subversion 没有后悔药,就是说一旦完成向服务器的数据提交,就没有办法再追回(从客户端),只能在后续的提交中修正——回退或者修改等。

Git 非常神奇,拥有无数颗粒后悔药…

阅读全部内容 »

Subversion 用户眼中的 Git (7): 完全不同的分支和里程碑的实现

Subversion 曾经骄傲的宣称,自己的分支是轻量级的,眨眼之间分支立现。但是说实话,Subversion的分支和里程碑,是 svn copy 命令的副产品,好像是折衷的产物。

Git 分支一出,无人敢于争风,信乎?

阅读全部内容 »

Subversion 用户眼中的 Git (6): stage

不单单是 Subversion 的用户,还包括其他类型的分布式版本控制的用户,如 Hg 的使用者,都可能会对 Git 的 stage 或称为 index 的东西感到非常的陌生。

但是一旦你熟悉 Git 的 stage 的秉性,你就会喜欢上它。

阅读全部内容 »

Subversion 用户眼中的 Git (5): 没有部分检出

Subversion 可以将整个库检出到工作区,也可以将某个目录检出到工作区。对于要使用一个庞大、臃肿的版本库的用户,部分检出是非常方便和实际的。

但是 Git 只能全部检出,不支持按照目录进行部分检出。

那么这是为什么呢? —— Subversion 用户问道。

阅读全部内容 »

删除 git submodule (git 库子模组)

有两种情况会创建 git submodule (git 子模组)

  • 显性方式添加:使用 git submodule 命令将其他git库作为子目录添加,即子模组
  • 隐性方式添加:使用 git add 添加,如果某个子目录本身是一个 git 库,就自动添加为子模组,不再递归添加该目录下面的文件

那么这两种方式添加的子模组有什么不同?子模组有什么副作用?如何删除模组呢?

阅读全部内容 »

Subversion 用户眼中的 Git (4): 全局版本号和全球版本号

Subversion 的全局版本号和 CVS 的每个文件都独立维护一套版本号相比,是一个非常大的进步。在看似简单的全局版本号的背后,是 Subversion 提供对于事物处理的支持,每一个事物处理(即一次提交)都具有整个版本库全局唯一的版本号。

Git 的版本号则更进一步,版本号是全球唯一的。也可以说是全宇宙唯一的。 咧嘴笑 Git 对于每一次提交,要将包括作者,提交内容等在内的信息整个作一个 SHA1 哈希,进而得到版本号。版本号得到一个 40 位十六进制字串。

什么?40位长的版本号?

阅读全部内容 »

群英汇 TopGit 改进 (5): tg summary 执行的更快

关于 tg summary 速度改进,其实不是因为 tg summary 使用中发现的问题。tg summary 是在使用 topgit 最常用到的命令。该命令用于查看各个功能分支和版本库的同步关系。

一般情况下,不太容易受到这个小问题的干扰,但是如果存在近百个功能分支,就有问题了:

  • 执行 tg create <TAB>,即在 tg create 命令后按下 Tab 键,想查看当前分支列表,会发现速度很慢,需要一秒钟甚至更长的时间相应。可是用命令 git co 按下命令,瞬间就提供分支名的自动补齐
  • tg depend 命令也存在类似问题
  • tg patch 命令如果按下 Tab 键,也存在类似问题

追根溯源,找到原来是 tg summary -t 命令的性能问题。命令补齐实际上是调用的  tg summary -t 命令来获取 topgit 分支的。

看看改进前和改进后,执行 tg summary -t 命令的效率:

  • 改进前:
    $ time tg summary -t >/dev/null
    
    real    0m1.799s
    user    0m0.580s
    sys     0m0.868s
    
  • 改进后:
    $ time tg summary -t >/dev/null
    
    real    0m0.040s
    user    0m0.016s
    sys     0m0.020s
  • 可以看出改进后,执行时间由 1.8 秒缩短为仅仅 0.04 秒

我们是如何改进的呢?非常简单,简单到有些不好意思,您去 Github 上看看吧。