`
cookoo
  • 浏览: 644455 次
  • 性别: Icon_minigender_1
  • 来自: Shanghai
社区版块
存档分类
最新评论

Darcs简介

    博客分类:
  • FP
阅读更多
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
分享到:
评论
1 楼 夜鸣猪 2008-04-29  
good
3x

相关推荐

    EclipseDarcs-开源

    该项目开发了将分布式修订控制系统Darcs(http://darcs.net)集成到Eclipse IDE(http://eclipse.org)中的功能。 它提供了一组插件,使IDE用户可以管理Darcs存储库中正在开发的代码。

    protobuf-haskell:hprotoc protocol-buffers darcs repo 的 Mirrorfork

    分支包含保存在 darcs 存储库中的原始代码。 master 分支包含这个 fork 的自定义补丁, 。 version 标签对应于protocol-buffers包的版本(不是hprotoc ),使其与原始 darcs 标签保持一致。 目前,在 GHC 7.8.* 下...

    sykobot:来自另一个宇宙的 IRC 机器人。 不完全是

    关于 想象 Sykobot 是下一代人工智能... 大多数依赖项可以通过安装,可通过 darcs 获得: darcs get cd clbuild chmod +x clbuild ./clbuild check(这会检查帮助 clbuild 的各种程序;它们是:cvs、svn、wget 和 darcs

    cabal-website:http

    "release/"通常用于存放正式发布的版本,而"darcs_"可能指的是使用Darcs作为版本控制系统的历史记录。"无论如何应将其删除"这部分可能是指这两个目录不应包含在自动部署的过程中,以确保部署的纯净和高效。 【标签...

    openwrt技术文档

    3. **src-darcs**:使用 Darcs 从源地址下载数据。 4. **src-git**:使用 Git 从源地址下载数据。 5. **src-hg**:使用 Mercurial (HG) 从源地址下载数据。 6. **src-link**:创建一个指向源地址的符号链接。 7. **...

    GenI:使用树邻接语法的表面实现器(自然语言生成系统的一部分)

    我接受 Darcs 补丁和 GitHub 拉取请求。 代码风格已经发展了很多。 抱歉不一致。 截至 2012 年 5 月 6 日,我正在尝试转向已这样我就可以停止考虑缩进等愚蠢的事情,但代码需要很长时间才能赶上。 联系我们! 如果...

    RepositoryHandler:RepositoryHandler是一个python库,用于通过通用接口处理代码存储库

    DARCS(尚未实施) 依存关系 Python> = 2.4 CVS客户端 SVN客户端 Git客户端 WGET或卷曲 Autoconf(用于安装) 如何安装 要从其他软件包中使用,应安装RepositoryHandler: $ python setup.py install 如果无法...

    project-init:锈中的项目模板

    项目初始化(pi) pi是用于初始化项目的命令行实用程序。... pi可以在您的项目中初始化darcs,pijul,mercurial或git存储库 pi提供了多种语言的模板 pi在Rust中可扩展 在cookiecutter上不使用pi的原因:

    react-native-sylkrtc.js:React Native兼容版本的sylkrtc.js

    使用Darcs或Git抓取源代码并安装依赖项: cd sylkrtc ./configure 构建开发版本(未精简版): make 生成缩小版: make min 发展 进行更改后自动构建库: make watch 调试 sylkrtc使用库进行简单调试。 默认情况...

    ezwork_redmine_使用介绍

    #### 一、Redmine简介 Redmine是一个非常灵活且功能强大的项目管理系统,它采用Ruby on Rails框架进行开发,能够跨平台运行,并且兼容多种数据库系统。作为一款开源软件,Redmine遵循GNU General Public License ...

    bytestring:适用于二进制或8位字符数据的高效紧凑,不可变的字节字符串类型(严格和惰性)

    ByteString:快速的字节打包字符串该库提供Data.ByteString模块-严格和惰性字节数组可作为字符串操作-提供非常...大卫·罗迪(David Roundy)等人为darcs进行了改编和扩展。 Don Stewart和Duncan Coutts清理并进一步扩

    etckeeper:etckeeper 的 fork 与 OS X 一起使用

    etckeeper是一组工具,可以让/etc存储在 git、mercurial、bazaar 或 darcs 存储库中。 这使您可以使用 git 来查看或恢复对/etc所做的更改。 或者甚至将存储库推送到其他地方以进行备份或挑选配置更改。 它连接到包...

    find-file-in-repository:埃马克斯

    在repository.el中查找文件欢迎捐款-只需向我发送请求即可。Emacs:在git,Mercurial或其他存储库中... 该库当前支持: git, mercurial, darcs, bazaar, monotone, svn欢迎为支持其他存储库类型做出贡献。 请向发送拉取

    Git完全自学教程!自己做了笔记!

    * 在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端不只是提取出最新版的文件快照,而是把最原始的代码仓库镜像到本地。 Windows 上安装 Git: * Git 最早是在 Linux 上开发的,但现在已经可以在 ...

    Diffuse-开源

    漫反射是用于比较和合并文本文件的图形工具。 它可以从Bazaar,CVS,Darcs,Git,Mercurial,Monotone,RCS,Subversion和SVK存储库中检索文件进行比较。

Global site tag (gtag.js) - Google Analytics