0210 版本控制软件大全 SVK
Version Control System Comparison
CVS GNU GPL (open source)
Aegis GNU GPL (open source)
Arch GNU GPL (open source)
BitKeeper Proprietary, binary only license. Pay per use license, with an option for a costless license for developers of open-source software. Used to have a gratis, downloadable license, which was intended for the develpoment of open source software. It had a problematic license, and was discontinued starting at April 2005.
ClearCase Proprietary, with floating license supported. License server contacted for each clearcase operation, which obtains a license to be used for the next 30-60 mins. Prices are several $k per license plus yearly maintenance fee. Typically 1-3 users per license required, depending on activity. Multisite requires additional licensing.
CMSynergy Prices negotiable with salesman. Server is typically roughly 20,000 British Pounds. Clients are 4,000 British Pounds. Per-year costs of 18% of original.
Co-Op Proprietary, short text key. 30-day full-featured trial. Free to "observers" (members who don't make changes). $159 per workstation.
Darcs GNU GPL (open source)
Monotone GNU GPL (open source)
OpenCM GNU GPL (open source), but moving soon to BSD or CPL (also open source).
Perforce A proprietary, binary only, commercial license. Price starting at $750 per seat for the first year and then $150 for continuing support for the subsequent years. Free for Open Source projects (no support in this case).
PureCM A proprietary, binary only, commercial license. Price starting at $600 for 5 users
Subversion Apache/BSD-style license. (open-source)
Superversion GNU GPL (open-source)
svk Perl License. (open source)
Vesta GNU LGPL (open source)
Visual SourceSafe VSS Ships with MSDN, and can also be purchased standalone or with other tools.
看了一堆比较,发现有个SVK感觉不错,找了找资料
A decentralized and personal version control power tool. The system based, on Subversion, extended to provide repository mirroring and local patchset, management support.
svk is a decentralized version control system. It uses the Subversion filesystem but provides additional, powerful features. svk plays well with others, it can mirror remote Subversion, Perforce, and CVS repositories to perform offline operations. svk was originally developed by ChiaLiangKao since his sabbath year in 2003, with the help from SVKPeople and generous SVKSponsors.
Perl Monthly Meeting 講的是 svk,由原作者 clkao 主講。嚴格來說,除了說 svk 是用 Perl 寫的以外,它跟 Perl 其實沒有什 太大的關係 :p 它是一個分散式的版本控制系統,底層跑在 svn (subversion) 上面,不過這些對使用者來說都不重要;對我而言,它最有趣的地方在於你可以很輕易地用它去 track 別人的 project,就算對方用的不是 svn/svk 也沒關係 (它提供了很多 adaptor 可供串接),而更有趣的地方就在於它 ※分散式§ 的特性,可以讓你在沒有網路連線時把修改過的東西記錄在 local 的 repo 裡面,等有網路連線時再一次把所有 local repo 裡面有修過改的東西給丟進主要的 repo 裡面去。
The Subversion (svn) version control system aims to take over the CVS user base, while svk attempts to take over everything else - including people who already switched to other systems, as well as people who had not started using version control. It is written in Perl and is using Subversion's underlying filesystem.
A quick glance about svk for people already familiar with Subversion:
svk uses the subversion fs library. the SVN::XD module is a svn_wc (working copy) replacement (XD is character increment of WC).
SVN::XD does not use the .svn for checkout meta-data. it uses Data::Hierarchy for storing per-directory meta-data in a compact way. Read about WhyXD.
svk uses svm (svn mirror) for retrieving remote repositories (via ra) to a certain point of the local repository. There are plans to integrate svm and vcp so we have instant ability to branch remote cvs or perforce.
the depot spec is like : <depotname><path>. ~/.svk/config holds a depotmap hash for mapping depotname (which could be empty) to a path containing a subversion repository.
when committing (or merging) into the mirrored directory, svm provides a commit editor for svk to use. the merge brings changes from local to remote repository if there's no conflict.
using a local repository holding the subversion tree for benchmark, svk checkout time is 3 times faster than svn.
SVK 的本地 log diff 等功能据我所知应当是在本地建立建立一个和远程服务器上类似的镜像,这样我们查看 log 或 diff 等就不需要访问远程服务器而直接到本地镜像上索取。
run cmd
svk depotmap
这里是初始化的过程,设置建立的本地镜像地址。弹出的东西如下:
档案库 X:\xxx\.svk\local 不存在。要建立吗?(y/n)
我选了 n, 然后它会弹出一个文本编辑器让你修改你要设置的镜像路径。我输入了 E:/svk/local
它还会在类如 C:\Documents and Settings\Administrator\.svk 里建立一个 cache 文件夹和一个 config 配置文件以方便下次识别你所输入的 local 地址。
svk cp http://dev.catalyst.perl.org/repos/Catalyst/trunk catalyst
我们以 Catalyst 为例子。SVK 都有中文提示的。我也就按两下 Enter(或者档案库路径为 catalyst)然后再选个 h 再按个 Enter. 一般采用 svk 的默认值就可以了。
我想把 catalyst 文件夹弄到 E:/svk 目录下的话,就可以使用
E:\svk>svk co //catalyst Catalyst
如果你要修改文件然后提交到远程服务器的话,先用文本编辑器把文件修改掉。然后
cd E:/svk/Catalyst
svk ci
svk push
这样就可以了
查看 log 的话可以调用 svk log -v
diff 的话可以调用 svk diff -r 8 什么的。详细的用 svk help diff 来获取资料
弄回远程最新的话可以用 svk pull 类似的还有 svk sync //mirror/catalyst