人们对化石分布式版本控制系统(DVCS)持何种看法?

124

fossil http://www.fossil-scm.org
我最近发现了这个工具,并开始在我的家庭项目中使用它。我想听听其他人对这个版本控制系统的看法。

在我看来,缺少的是IDE支持。希望未来会有,但我已经可以很好地使用命令行。

我最喜欢fossil的几点:单个可执行文件,内置Web服务器、Wiki和Bug跟踪功能。存储库只是一个SQLite (http://www.sqlite.org)数据库文件,易于备份。我还喜欢我可以从我的U盘运行fossil并保留存储库。这意味着我的软件开发变得完全可移植。

告诉我你的想法...


那看起来真的很有趣。你知道是否有任何工具可以用来推送/拉取git、mercurial或svn吗? - Thilo
我在化石维基上找到了一个链接。我还没有仔细看过这个链接。需要这个功能的人,请查看并发表评论:http://www.fossil-scm.org/index.html/wiki?name=Import+CVS+Repositories - javelinBCD
该URL已更改为:http://www.fossil-scm.org/fossil/wiki?name=Import+CVS+Repositories - Mike DeSimone
3
Fossil已经添加了GIT的导入和导出功能...http://fossil-scm.org/index.html/doc/trunk/www/inout.wiki - javelinBCD
1
@javelinBCD:FYI Git 不是一个缩写。 - bug
10个回答

188

Millikin先生,如果您能花一些时间查看fossil的一些文档,我认为您的反对意见在那里得到了解决。将存储库存储在SQLite数据库中可以说是比任何其他方法更安全。请参阅链接文本以了解使用事务性数据库存储存储库的一些优点。至于膨胀:整个东西都在一个单独的自包含可执行文件中,这似乎证明了这种担忧是不必要的。

完全透明披露:我是fossil的作者。

请注意,我编写fossil是因为没有其他分布式版本控制系统符合我的需求。另一方面,我的需求并不等同于您的需求,因此只有您才能判断fossil是否适合您。但我鼓励您至少查看文档并尝试理解fossil试图解决的问题,然后再做出决定。


43
化石看起来很棒,做得好。 - Greg Hewgill
7
Fossil提供的特色功能,其他分布式版本控制系统不具备,包括:
  • 集成的Wiki。
  • 集成的Bug跟踪。
  • 不可变的工件(artifacts)。
  • 自包含的、独立的可执行文件,可在chroot jail中运行。
  • 简单、明确定义、持久的文件格式。
  • 集成的Web界面。
- A.Bouchez
75
完全披露:他也是SQLite的作者 ;) - Alan Plum
18
你的答案中提到:"另一方面,我的需求与你的需求不同,因此只有你自己才能判断化石燃料是否适合你。" 我对此表示赞同。 我曾接受过质量管理的培训,他们将质量定义为“与目标的适应性”。你的答案也指向了同样的方向! - sergiol
2
@pluma,自从听说Fossil是由Sqlite的开发者D Richard Hipp先生制作的,我就开始对它产生了兴趣 :) 即使我还没有使用过它,我也可以想象它的轻量级和稳健性。 - Edwin Yip
显示剩余5条评论

53

我已经在非平凡开发项目中使用 Fossil 一年多了,现在我自信地对此进行评估。

以下是我的经验。有时我会与 git 和 svn 进行比较,因为我非常熟悉这些 SCM,比较可以更容易地表达我的想法。

我非常喜欢这个 SCM,所以这主要是优点。

我喜欢 Fossil 的原因:

  1. 我们有很多机器(win/mac/许多 Linux 发行版),单可执行文件的安装就像听起来那样美好。没有依赖关系;它只是工作。Git 是一个混乱的文件堆,而 Subversion 中的依赖关系地狱在某些 Linux 发行版上非常恶心,特别是如果你必须自己构建。

  2. 默认的 Fossil 工作流程完全适合我们的项目,需要时可以使用更多类似于 git 的工作流程。

  3. 即使在大型项目中,我们也发现它非常稳健。我不会期望 SQLite 作者们提供其他任何东西。没有崩溃、没有损坏、没有什么奇怪的事情发生。

  4. 我实际上对性能非常非常满意。在巨大的树上,不像 git 那么快,但也没有慢多少。我通过不必要查阅文档可以节省任何失去的时间,这是 git 的情况。

  5. 每个操作背后都有一个经过实践检验的事务性数据库,这使我晚上睡得更好。是的,我们经历过一个以上可怕的 Subversion 存储库变得陈旧和破损的事件(幸运的是,一个乐于助人的社区帮助我们解决了问题)。我无法想象这种情况发生在 Fossil 上。即使 Subversion 1.7.x 现在也使用 SQLite 进行元数据存储。(试着在 git commit 过程中关闭电源 - 它会留下一个损坏的仓库!)

  6. 集成的问题跟踪器和 wiki 是可选的,显然很方便,因为它总是在那里 - 不需要安装。虽然我希望问题跟踪器有更多的功能,但嘿 - 这是一个 SCM。

  7. 内置的服务器和 web gui 简直是绝妙的,并且可以通过 css 进行相当灵活的配置。

  • 在使用Git和Subversion存储库进行导入和导出时,有时我们会遇到一些问题。而在Fossil中这非常简单。

  • 单文件存储库。不用担心到处都是“.svn”目录。

  • 我对Fossil的想法和不喜欢的地方:

    1. 请有人为我们非技术的Windows用户编写TortoiseFossil :)

    2. 社区还不是很大,所以很难让很多人在公司内部推广它。希望这种情况会改变,获得大型社区的所有好处(文档、更多的新版本测试等)

    3. 我希望本地web界面有一个搜索功能(包括搜索文件内容)。

    4. 与git相比,合并选项较少(尽管Fossil的工作流程使合并更不容易发生)。

    我希望每个人都试用一下Fossil - 在使用那些你不需要成为火箭科学家也能轻松使用的东西的世界里,这将使世界更美好。


    2
    忘了提到,TortoiseFossil可能会在未来某天出现,但现在我们有http://code.google.com/p/fuel-scm/。 - grand johnson
    3
    有一个名为'SharpFossil'/'WinFossil'的软件:http://repository.mobile-developers.de/cgi-bin/ikoch/sharpfossil/wiki?name=WinFossil - cmroanirgo
    2
    有一种很好用的方法可以添加一个搜索票据框,它利用了fossil提供的TH1脚本功能。具体操作请参考此处 - FvD
    fuel-scm工具已经迁移到https://fuel-scm.org/fossil/index。另一种方法是利用Visual Studio IDE,如果您正在使用与Windows相关的项目。请参阅文档http://fossil-scm.org/xfer/doc/trunk/www/fossil-from-msvc.wiki。 - g5thomas
    1
    只是好奇:去年有什么变化吗? - jno

    17

    Fossil是一个小巧、简单但功能强大且稳健的工具,让我想起了C语言文化的一些原则。它受到那些独立开发并仍在协作的人们的喜爱。

    任何伟大的项目都应该从原则开始,并将其作为核心随着更多层次(GUI、额外特性)的增加而继续。

    我对Fossil印象深刻,并开始使用...请看fossil

    干杯


    12

    距离上一篇文章已经过去一年,现在递归添加的问题已经得到解决。

    Fossil 的简易性让我着迷,特别是在我努力让一个 bug 追踪系统与 Mercurial 合作时。我需要了解如何管理多个项目,发布存储库以供多用户访问,如何合并、管理修补程序等等。我有信心它不会让我失望。


    9

    我对它不感兴趣作为源代码版本控制工具,但我对一个分布式版本控制的个人wiki很感兴趣,可以在我使用的所有机器之间同步。


    4

    我认为Fossil非常酷。对我来说最重要的特点是易于安装和开发人员友好的默认设置。我目前使用它来跟踪我的文件的本地更改。(我们的项目托管在sourceforge上,并在CVS中进行跟踪。)这样,即使较小的更改也可以进行“提交”,而不会破坏整个项目。


    4

    damian,

    1/ 是的,Fossil不支持递归添加。但是有一些相当简单的解决方法,例如

    for /r %i in (*.*) do fossil add "%i"
    

    在Windows上,以及
    find . -type f -print0 | xargs -0 fossil add --
    

    在Unix上。

    2/ 我看到了添加文件名中包含非ASCII字符时出现的错误清单格式不正确的消息。该问题已在最新版本中得到修正。

    祝好, Petr


    2
    你可以随时在Windows上使用PowerShell,它能让这种命令行工作更加愉悦。 - javelinBCD
    15
    在Linux / Unix / Mac OS X上,我只需执行'fossil add .',它就会添加所有内容,包括我的所有子目录和文件。 - Trausti Thor
    3
    "fossil addremove" 在所有平台上也是完全递归的。上面的帖子很可能已经过时了。 - FvD
    1
    是的,这篇文章已经过时了。 - Johannes Kuhn

    1

    Fossil 是一个很好的工具。它简单易用。如果 Fossil 能提供 GUI 接口来进行签入和签出,那就更好了(最好使用 Java GUI 来实现跨平台 GUI)。

    Fossil 的主要优点是“开源”和“使用 SQLite 数据库”,因此有人可以编译 Fossil 源代码,使其在 Google Android 平台上运行(移动设备和平板电脑)。


    0

    我现在正在尝试使用你们的版本控制系统。 我喜欢将所有东西集成在一起的想法。毕竟,当我寻找这样的系统时,这就是我想要的。我是Mercurial的活跃用户。但我找不到一个与问题跟踪器集成的方法(我曾经尝试过将p Trac与Mercurial结合使用,但没有成功)。 经过一些测试,我发现: 1)“add”命令不是递归的,或者我找不到文档中的方法来执行它 2)我编写了一个批处理文件(我使用Windows),添加了750个文件并运行它(这需要一段时间)。当我运行提交时,它会出现“清单格式错误”的提示

    我认为你们可以通过像Mercurial一样的调查https://www.mercurial-scm.org/wiki/UserSurvey来解决这些问题和其他问题。 你可以通过donseda@gmail.com与我联系。

    我对你们的工作很感兴趣。继续改进吧。

    问候

    附:作为一个重大的改进,你们可以添加类似于gitstat的功能。


    3
    1. 它有一个问题追踪器(它是自托管的)
    2. fossil add文件夹是递归的(忽略以'.'开头的文件/文件夹)。昨晚我用它毫无问题地制作了http://www.plt-scheme.org/子版本主干的本地fossil存储库。
    3. 邮件列表很活跃,开发人员非常负责,目前似乎也不会太拥挤。还有问题追踪器,但我并没有需要使用,因为Fossil对我来说是没有缺陷的。
    - Stephen
    1
    Fogbugz(缺陷跟踪)与Kiln(Mercurial的在线存储库)配合使用,两者均由Fogcreek提供。 - Toby Allen

    -11

    也许这是一个没有经过教育的膝反应,但将存储库存储在二进制 blob 中,例如 SQLite 数据库的想法使我感到恐惧。我对直接在 VCS 中包含维基和 bug 跟踪器的好处也持怀疑态度——它们要么与 Trac 等完整软件相比功能不足,要么与 Subversion 或 Bazaar 相比,VCS 过于臃肿。


    21
    SQLite并不是“二进制大块”。它是一个真正开放的文件格式,跨平台,并且有很好的文档。由于SQLite是最广泛使用的数据库之一,未来始终会有对其的支持。同时,fossil中使用的存储工具也很高效、文档完备且易于阅读。SQLite是当今最大的开源项目之一,并在fossil上托管。 - A.Bouchez
    3
    一个快速且简单的与 SQLite 数据库进行交互的方法,包括导出,可以尝试使用 Firefox 扩展程序 http://code.google.com/p/sqlite-manager/。 - matt wilkie
    8
    所有DVCS在查看其存储库时都是“二进制块”。最后一个非二进制块的是CVS...我也有所保留,但已经克服了。 - Jürgen A. Erhard
    2
    Fossil并非基于SQLite。当前的Fossil实现使用SQLite作为分布式数据库内容的本地存储和预先计算的分布式数据库元信息的缓存,以便快速、轻松地呈现。但是,在此角色中使用SQLite是一项实现细节,不是设计的基础。" www.sqlite.org/debug1/doc/trunk/www/theory1.wiki - Gulbahar

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接