欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Darcs简介

程序员文章站 2024-01-03 21:17:04
...
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

上一篇:

下一篇: