使用哪个版本控制系统?

使用哪个版本控制系统?

我正在考虑使用版本控制系统来确保如果需要的话,我可以及时回到~ 中所有文档的某个特定版本。

鉴于此,最适合此目的的工具是什么:

  • 我对版本控制系统没有太多经验
  • 一些文件将是纯文本文件,但也有一些 Libre-Office 文件

该工具应该:

  • 易于设置、运行和维护
  • 具有易于理解的配置选项(跟踪哪些目录、跟踪多长时间、捕获更改的频率等)
  • 最好也有一个 GUI 前端
  • 能够恢复已删除的文件

最适合我的最佳/最广泛使用的工具是什么?

答案1

我用过远程医疗颠覆git以及一些商业软件包。我刚刚将我的个人 VCS 从 CVS 迁移到 git(我原以为这会比实际更困难,我早就应该这么做了)。

我会推荐 git。这取决于你要找什么。

我是一名菜鸟,在版本控制系统方面没有太多经验

git学习曲线可能会更长,尤其是如果你有使用旧版 VCS 的经验。如果你没有使用过旧版 VCS,你的学习曲线可能会更短。

学习 git 的最好方法是下载这本书Scott Chacon 的 Pro Git(免费),创建一个测试存储库(mkdir <project name>; cd <project name>; git init),然后开始修改。创建存储库实际上不需要花费任何精力,也不用担心在测试存储库中搞砸什么,因为每个存储库都是独立的。可以轻松删除存储库(cd <project name>; rm -rf .git)。

一些文件将是纯文本文件,但会有一些 Libre-Office 文件

git 对文件类型 (ASCII 与二进制) 没有区分,但是 ASCII 文件最适合查看差异和合并冲突。

易于设置、运行和维护

git 有多种配置方式,这完全取决于您的需求。首先,正如许多人所展示的那样,您所要做的就是安装 git ( sudo apt-get install --install-recommends git-core) 并创建一个存储库(如上所示)。如果您在多台机器上工作,您可以通过 ssh 设置 git(书中有介绍)。更好的是,随着需求的扩大,您不会失去已经完成的工作。

具有易于理解的配置选项(跟踪哪些目录、跟踪多长时间、捕获更改的频率等)

您可以拥有一个大型存储库,也可以将其分解为单个项目或单个文件。再次创建一个 git 存储库并试用它,看看哪些可行,哪些不可行。

最好也有一个 GUI 前端

有许多git 图形界面专门用于许多不同的任务。但是,强烈建议从命令行学习 git。要开始,您只需要学习几个命令(、git initgit status git diffgit addgit rmgit commit)。命令行还可以帮助您完成需要执行的任务。例如:git pushgit pullgit status

# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   systems/ion/setup.txt
#   modified:   systems/dogstar/teardown.txt
#   modified:   applications/help.html
#   modified:   applications/readme.txt
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   applications/faq.html
no changes added to commit (use "git add" and/or "git commit -a")

如果你更喜欢使用 GUI,智能Git对新手很友好。

能够恢复已删除的文件

是的,只要文件已经提交,git 可以恢复其任意版本。

最适合我的最佳/最广泛使用的工具是什么?

git 被广泛使用。至于最好的,它是最好的之一,即使不是最好的。但最好的,更多的是个人观点,也取决于具体情况。

答案2

听起来,我认为使用诸如gitMercurialhgbzr之类的版本控制svn并不完全适合您的需求,因为它们主要针对源文件,而不是二进制数据。 因此,我想在这里添加一些其他可能性。

我认为一个好的解决方案是基于云的备份服务。我个人使用蜘蛛橡树,效果确实很好。

重复

用作duplicity其后端。

优点

  • Ubuntu 自己的备份解决方案
  • 好简单
  • 您可以选择多种备份存储位置

缺点

  • 更多是备份解决方案,而不是版本控制
  • 控制有限

如果尚未安装,请安装它:

sudo apt-get install deja-dup 

如果你输入 ,你就可以在 dash 中找到它backup

蜘蛛橡树

优点

  • Ubuntu 软件包可用,添加存储库至sources.list(自动更新)
  • 您可以选择任何文件夹进行备份(与 Dropbox 不同)
  • 在后台运行,监视这些文件夹中的变化并仅上传变化(节省带宽),这是自动且立即的
  • 客户端加密(与 Dropbox 不同)
  • 识别重复项
  • 在服务器上压缩文件
  • 在服务器上保留已删除的文件和旧版本(只要您有可用的存储空间),除非您明确删除它们
  • 不错的图形用户界面
  • 可以在计算机之间同步(Linux / Windows / OS X,移动客户端只读)
  • 基于云 - 即使你的硬盘崩溃了,你仍然有备份

缺点

  • 基于云 - 需要互联网连接
  • 并非完全开源
  • 只有 2 GB(厚颜无耻的广告:如果你想要额外的 GB,你可以使用我的引荐链接

点击此处下载:SpiderOak 下载

rdiff-备份

优点

  • 可以进行本地或远程备份
  • 细粒度控制
  • rsync算法,仅跟踪变化
  • 节省空间(未改变的文件不受影响)
  • 文件权限也可以被存储
  • 可以保留最近 n 个版本或最近 n 天的备份

缺点

  • 必须由 cronjob 运行或明确
  • 命令行实用程序(如果这不是你想要的),但有一个可用的 GUI:皮背包

通过以下方式安装:

sudo apt-get install rdiff-backup pybackpack

BTRFS 快照

虽然不太适合胆小的人,但可以将/home目录放在单独的 BTRFS 分区上,并偶尔创建快照

优点

  • 非常节省空间,只有更改的文件才会再次存储
  • 跟踪全部分区的数据
  • 快速地
  • 挂载任何旧快照以访问先前版本

缺点

  • BTRFS 仍然比较新
  • 对新手不太友好
  • 仅限命令行
  • 需要对系统进行一些调整
  • 不是备份解决方案——如果您的硬盘崩溃,所有版本都会丢失

这里有一篇关于Ubuntu 帮助页面

答案3

众所周知的版本控制系统有 CVS、SVN(Subversion)和 GIT。没有必要考虑老旧的 CVS,剩下的就是 SVN 和 GIT。

对于您有限的用途,我认为选择哪一个并不重要,所以我的建议是看看你认识的人谁使用其中一种,然后选择那个:)

如果您正在寻找更复杂内容的易用性(代码的真实版本控制等),我建议您使用 GIT。基本上“他们”说 SVN 是 CVS 的更新,而 GIT 又是 SVN 的“更新”。我个人认为 GIT 相对于 SVN 的优势专门针对多个用户和多个分支,所以也许您不必担心。

另一方面,为什么不尝试一些更好的选择呢,你永远不知道自己将来想做什么。

请查看一些关于它们的信息

答案4

我认为你不会想这么做。源代码控制就是为了这个目的,源代码控制。大多数都不能很好地处理二进制文件(如图像、音乐、电影等)。

此外,SCM 还会逐行向您显示已更改的数据块。因此,每次登录或注销时,您都会更改一些数据。您必须一直“合并”或“提交”。我几乎可以肯定这不是您想要的。

然而,有几个确实很好的工具。

Back-In-Time 很棒,并且有一个 diff 查看器。Deja Dupe 是默认的,但我认为它的功能不是很丰富。grsync 可以为您提供已更改的备份文件列表。普通的 rsync 也是一个选项。

如果您坚持使用 SCM,那么我推荐使用 git,但托管在本地。添加一个排除所有二进制文件的 .gitignore。更好的是,您可以尝试仅控制您的配置目录。同样,您必须注意二进制文件。

相关内容