当前位置:首页 > 开发 > 移动开发 > 正文

Darcs简介

发表于: 2006-09-14   作者:cookoo   来源:转载   浏览:
摘要: Darcs 是新一代轻量级分布式版本控制系统. 完全使用Haskell编写而成。 不同于以往的版本控制系统, Darcs没有中央服务器. 任何一个本地repository都可以既是 客户端也是服务器, 节点之间可以任意同步. 这样我们可以不依赖网络离线comit任何修改: 比如在笔记本上修改, 然后回去在同步到台式机上(svn的扩展svk也能提供本地镜像以便 离线操作,但是终究还是不
Darcs 是新一代轻量级分布式版本控制系统. 完全使用Haskell编写而成。

不同于以往的版本控制系统, Darcs没有中央服务器. 任何一个本地repository都可以既是
客户端也是服务器, 节点之间可以任意同步. 这样我们可以不依赖网络离线comit任何修改:
比如在笔记本上修改, 然后回去在同步到台式机上(svn的扩展svk也能提供本地镜像以便
离线操作,但是终究还是不能脱离svn服务器). 同时Darcs的每个本地repository也可以看
作是个完整的branch, 比如我们要建立stable和dev两个版本专注于新功能和改错的不同
目的, 可以很方便地对同一个项目在本地建立两个repository, 以后只要从stable版本pull
补丁到dev版本就可以了.

Darcs的使用:

首先在需要进行版本控制的目录初始化repository:
/project_a/darcs init

这会在在目录下生成_darcs管理目录

然后我们选择那些文件需要被darcs管理, 一般就是所有文件了:
darcs add -r .

-r代表包括子目录

我们第一次这样导入所有文件:
darcs record --all

它会提示一些基本信息的输入.
Darcs是高度交互的, 一般不输入参数而执行darcs命令的话它会问你很多问题.
也可以在命令行直接输入参数, 这样就比较安静了....

在这以后每次修改要comit进reposity只要执行
darcs record

即可, 它会找出所有的变化一一询问.

如此我们可以建立另外一个repository比如project_b
这两个如何同步呢? 很简单. 如果a要获得b的修改,只要在project_a目录下执行
darcs pull /path/to/project_b 

这个path也可以是http地址,如果project_b在网络上空开repository的话.
反之, 如果project_a要把自己的修改融入project_的版本,只要执行
darcs push /path/to/project_b 

如果这个path是http的话, 比较麻烦点需要两边都配置ssh链接.
所以darcs提供了通过email方式发送(darcs send)补顶集合而不是直接写进远程的repository中.
以后由repository管理者决定是否应用(darcs apply)个别补丁. 这其实也是Linus对递交的补丁所采用的管理方式.

另外如果我们在不联网的两台机器上通过U盘同步也很简单. 只要两边都对U盘中做中转的repository pull/push就可以了.

在这过程中如果出现个别文件冲突darcs会自动提醒你解决. 同步操作的背后Darcs实际比较
两边的changes log(darcs changes)及内在的补丁依赖关系以决定如何同步文件. Darcs
基于一个叫patch theory的高深理论, 我等凡人就不用懂啦.

另外常用的命令包括whatsnew, rollback(对应apply补丁), unrecord, diff等都很直观.

更多信息请参阅官方文档和 Wiki

Darcs简介

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号