Fossil 的分支处理

Ma Kai posted @ Oct 01, 2014 10:28:01 AM in 技术 with tags fossil , 2110 阅读

MemMaster 的开发是用 Fossil 做版本管理的。最近需要分支开发,于是研究了一下 Fossil 的分支处理。(但是在研究过程中对我的仓库造成了永久性不可恢复的损害……)

Be careful!fossil 有个不知该说好还是坏的设计,commit 之后就永远不能再修改了……不过可以有限地补救一下,只不过补救其实是个新的 commit。

原理

官网 wiki。我来总结一下。fossil 使用签入标志(check-in tag)区分分支。每个分支的最新签入被称为开叶(open leaf),即允许有 children 的 leaf。如果在这个开叶上新建分支,则这个开叶被称作分支点(branch point)。如果两个人同时对某一个签入作出改动,其中一个人首先commit,那么原来的开叶标记会移动到新的签入上,后来的人将无法推送修改,那么此时就应该弄个分支,然后再回到原分支合并回去。与开叶相对,有闭叶(closed leaf),最后一个签入是闭叶的分支将永久封存,不得进一步修改。

新建分支

fossil 要求创建分支时提供 basis,即从哪个签入分支。虽然看上去好像nb了些,实际上徒增麻烦而已。

# fossil branch new [分支名] [基础]
fossil branch new testing trunk
fossil branch new testing [commit编号]

切换分支

fossil 不支持就地切换,你得再 open 一次。

cd ..
mkdir branch-testing
cd branch-testing
fossil open /path/to/repo.fossil testing

查看当前分支

fossil branch ls

当前分支的名字前面会有一个 *。

删除分支

删除分支?开玩笑呢。你只能把一个分支关闭,相当于删除了。这个很简单,在 timeline 的最后一个 leaf 那里,点 edit,然后 close 掉就行了。当然,close之后,branch ls、web 界面里面是没有显示的。

  • 无匹配
  • 无匹配

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter