`
cookoo
  • 浏览: 639803 次
  • 性别: Icon_minigender_1
  • 来自: Shanghai
社区版块
存档分类
最新评论
阅读更多
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.* 下...

    pro_git_中文版本

    在这类系统中,诸如 Git,Mercurial,Bazaar 还有 Darcs 等,客户端并不只提取最 新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作 2Scott Chacon Pro Git 1.2节 Git 的历史 用的...

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

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

    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使用库进行简单调试。 默认情况...

    Meld-开源

    Meld是gnome2差异和合并工具,可插入支持版本控制系统,例如cvs,subversion,bzr,darcs,mercurial,monotone,tla。

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

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

    cabal-website:http

    阴谋网站 网站。 当前包含除release/和darcs_/之外的所有内容(无论如何应将其删除)。 此存储库的分支用于自动部署Cabal API文档。

    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欢迎为支持其他存储库类型做出贡献。 请向发送拉取

    Diffuse-开源

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

    etckeeper:在 git 中存储等

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

    Redmine 架設

    (j)SCM integration (SVN, CVS, Git, Mercurial, Bazaar and Darcs): SCM整合 (k)Issue creation via email: 透過Email新增Issue (l)Multiple LDAP authentication support: 支援各式LDAP (m)User self-registration...

    shline:我的bash shell的简单电力线样式提示

    显示有关git / hg分支和darcs状态的一些重要详细信息: 显示当前分支,当分支脏时会更改背景颜色 存在未跟踪的文件时出现“ +” 当本地分支与远程分支不同时,将显示提交数量的差异以及“⇡”或“⇣”,指示是否有...

    dunamai:动态版本控制库和CLI

    杜纳迈 Dunamai是一个Python 3.5+库和命令行工具,用于生成动态的,符合标准的版本字符串,这些字符串是从版本控制系统中的标签派生的。 这有助于在连续集成中唯一地标识每晚或每次提交的构建,并只需创建标签即可...

    poetry-dynamic-versioning:诗歌插件,可基于VCS标签启用动态版本控制

    诗歌的动态版本控制插件 该软件包是的插件,用于基于版本控制系统中由支持的标签进行动态版本控制。 支持许多不同的版本控制系统,包括Git和Mercurial。 请参阅Dunamai页面以获取完整列表(以及适用的最低支持版本)...

    vim-signify:使用Vim的符号列显示差异

    vim-signify:使用Vim的符号列显示差异

Global site tag (gtag.js) - Google Analytics