犹豫选择Git还是Fossil

14

我是一个对Fossil(或其他版本控制系统)完全陌生的新手。之前用过一种专有的版本控制系统,但从未自己设置过。

目前,我想要设置一个这样的系统,以便我和我的朋友可以用于一个项目。

我选择Fossil主要是因为分布式似乎是一个好的选择,它看起来很轻量,并且包含了一个错误跟踪器。但Git似乎是许多人喜欢使用的SCM。选择Git+某个BugTracker是否值得增加复杂性而不是选择Fossil?是否有更好的替代方案?我将不得不从零开始学习所有内容。

1个回答

16

这只是一些想法,没有组织。

如果你的朋友们已经习惯了使用Git,Git是一个好的、健壮的分布式版本控制系统,有很多优秀的托管服务可用,比如Github或Gitorious。

然而,Git的概念并不容易理解。Fossil具有类似的概念,但可能更容易上手(没有暂存区,没有索引的概念,使用revert而不是resetcheckout撤消最后一次提交的更改等)。Fossil没有大量的子命令和众多选项,在帮助文档中表述简洁明了。如果你担心会迷失方向,可以选择Fossil。当然,这也意味着使用Fossil无法像Git那样做许多事情(例如没有rebase,至少目前还没有)。

关于Fossil,有一些在线托管服务可用(请参见此处)。与Git一样,配置一个服务器来运行Fossil非常容易。

此外,使用Fossil,项目历史记录存储在单个文件中,因此我发现备份所有项目非常容易:将所有存储库放在同一个文件夹中,并进行单个rsync任务。然而,这使得增量备份完全无用。

而使用git,在不同文件夹中的同一项目上工作两个分支将意味着在两个不同的.git/objects目录中拥有该项目历史记录和分支的两个副本,这可能是冗余且庞大的,而使用Fossil则是默认情况下只有一个存储库,以及连接到它的一个或多个工作目录。如果磁盘使用非常重要,这可能很重要。

请注意,Fossil bug跟踪器(行业术语中的票务系统)和wiki相当基本(虽然它们都能正常工作)。


5
默认情况下,在相同的分区上克隆Git仓库将创建硬链接。因此,你只需要为工作树留出足够的空间即可。 - knittl
1
@Benoit,请注意,将Fossil repos进行rsync同步是一种相对简单的方法,因为在备份时不需要对数据库文件进行写入操作。唯一可靠的“在线”备份方法是使用sqlite3 dump ...并在备份转储文件之后备份。而Git的备份并不是那么困难:您只需使用Git本身来完成此任务。此外,如果需要高级解决方案,则gitolite v3实现了主/从复制推送。 - kostix
2
您可以使用 git bundle 创建备份。请参考此问题(及答案):https://dev59.com/Y2XWa4cB1Zd3GeqPLUh5#11163038 - shytikov
@Benoit:请查看rdiff-backup,以解决增量备份问题。 - Warren Young
1
@bug:两个开发人员在同一台机器上工作(例如构建服务器),他们各自想要在自己的主目录中进行独立的检出。检入操作将提交到他们从中检出的repo.fossil文件。与Git相比,即使他们在同一台计算机上,也必须将更改推送给彼此。 - Warren Young
显示剩余3条评论

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