os-level版本控制工具

声明:

本博客欢迎转发,但请保留原作者信息!

博客地址:http://blog.csdn.net/halcyonbaby

内容系本人学习、研究和总结,如有雷同,实属荣幸!

OS-level版本控制工具

如果我们需要对OS进行快照和rollback,那么我们可能需要使用的OS-level版本控制工具。

Snapper

OpenSuse的子项目。项目的目的是提供对Opensuse的快照,rollback,对安装进行差分的功能。 Snapper没有绑定某种实现,想法有很多后端。比如btrfs/LVM/ext4。btrfs是默认的实现。

ostree

ostree是Redhat/Gnome开发者Colin Walters创建的项目。 ostree不依赖于文件系统的能力。ostree更像是面向二进制文件的git系统。

现在已经有了集成RPM的ostree项目rpm-ostree。 ostree像git一样同样有pull/push命令。

ostree的操作是原子的。root tree是只读挂载的,因此不能写任何数据。 ostree提供了init ramdisk和grub模块,从而允许我们在系统加载时选择使用的分支。


//初始化repo
$ cd ostree-demo-1
$ mkdir repo
$ alias ost="ostree --repo=`pwd`/repo"

$ ost init
$ ls repo
config  objects  refs  remote-cache  tmp
$ cat repo/config
[core]
repo_version=1
mode=bare

//提交一个commit
$ mkdir tree
$ cd tree
$ echo "x" > 1
$ echo "y" > 2
$ mkdir dir
$ cp /usr/share/dict/words words

$ ost commit --branch=my-branch     --subject="Initial commit"     --body="This is the first commit."
ce19c41036cc45e49b0cecf6b157523c2105c4de1ce30101def1f759daafcc3e

$ ost ls my-branch
d00755 1002 1002      0 /
-00644 1002 1002      2 /1
-00644 1002 1002      2 /2
-00644 1002 1002 4953680 /words
d00755 1002 1002      0 /dir

//提交第二个commit
$ tac words > words.tmp && mv words.tmp words

$ ost commit --branch=my-branch     --subject="Reverse ‘words‘"
    --body="This is the second commit."
67e382b11d213a402a5313e61cbc69dfd5ab93cb07fbb8b71c2e84f79fa5d7dc

$ ost log my-branch
commit 67e382b11d213a402a5313e61cbc69dfd5ab93cb07fbb8b71c2e84f79fa5d7dc
Date:  2014-01-14 12:27:05 +0000

    Reverse ‘words‘

    This is the second commit.

commit ce19c41036cc45e49b0cecf6b157523c2105c4de1ce30101def1f759daafcc3e
Date:  2014-01-14 12:24:19 +0000

    Initial commit

    This is the first commit.

//查看两个版本
$ ost cat my-branch words | head -n 3
ZZZ
zZt
Zz
error: Error writing to file descriptor: Broken pipe

$ ost cat my-branch^ words | head -n 3
1080
10-point
10th
error: Error writing to file descriptor: Broken pipe

//checkout到某个版本
$ ost checkout my-branch
$ ls my-branch/
1  2  dir  words
$ head -n 3 my-branch/words
ZZZ
zZt
Zz
$ ost checkout my-branch^ my-branch
error: File exists
$ ost checkout --union my-branch^ my-branch
$ ls my-branch/
1  2  dir  words
$ head -n 3 my-branch/words
1080
10-point
10th

rpm-ostree

rpm-ostree是基于ostree的一个衍生项目。目的是将rpm package与ostree结合起来。
并将保护rpm的ostree repo上传到ostree server端。

docker

docker有比较简单的版本控制。我们可以使用docker commit提交新的镜像。 可以使用docker pull/push进行上传、下载操作。 还可以使用docker import创建一个image。

Baserock

baserock使用btrfs实现了原子快照和rollback。

Nix

通过package级别的hardlink实现rollback。

参考:

1. http://samthursfield.wordpress.com/2014/01/08/os-level-version-control/

2.http://samthursfield.wordpress.com/2014/01/16/the-fundamentals-of-ostree/

时间: 2024-08-26 01:44:12

os-level版本控制工具的相关文章

Bazaar 版本控制工具

Bazaar是一个分布式的版本控制系统,它发布在GPL许可协议之下,并可用于Windows.GNU/Linux.UNIX以及Mac OS系统.Bazaar由Canonical公司赞助,目前已服务于Samba.Drupal等知名的开源项目. 不像Subversion和CVS只支持中心存储库模式,Bazaar还支持分布式版本控制,让人们能够有效地协作.尤其是,Bazaar的设计意图就是让社区能在开源项目上尽最大可能的程序参与. Bazaar当前已经包含许多有用的功能,这些功能使之具有如下鲜明的特点:

版本控制工具git入门

版本控制工具的历史 不说了,放张图 两者的区别:集中式需要一个中心服务器放置最新的文件,需要联网操作.分布式可以再不联网的情况下操作,前提要拥有版本库 git安装  略 github注册 略 如何在github上创建一个新的项目 如何克隆到本地 cd到想要克隆的文件夹下面 git clone 路径 例如: git clone https://github.com/xiaobie123/deomtext1.git

Git版本控制工具学习

Git代码管理工具学习 分布式管理工具:git 相比较svn它更加的方便,基本上我们的操作都是在本地进行的. Git文件的三种状态:已提交,已修改,以暂存. 已提交:表示文件已经被保存到本地数据库. 已修改:修改了某个文件. 以暂存:把修改的文件放到了下次提交保存的清单中. Git只关心文件系统的整体是否发生了变化,其它的版本控制工具更多的关心文件的内容是否发生变化. Git基本的工作流程 1:在工作目录中修改某些文件,2:对修改后的文件进行快照,然后保存到暂存区域.3:提交更新,将保存在暂存区

版本控制工具 GIT入门教程

GIT 在团队中的中作流程 1.每个程序员在自己的分支上进行开发 2.主程序猿/Leader合并程序员程序 3.程序员之间也可以对一下提交冲突进行合并 下载和安装 GIT官方网址:http:// git - scm.com 具体怎么装,一直点下一步就是了(PS:windows) 创建一个库 启动git bash,由于是刚刚安装,所以还没有任何工程库 创建一个目录 mkdir gitproject 进入gitproject目录 cd gitproject 初始化工程库 git init 系统给出提

[.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)

[.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上) 本篇导读: 上篇介绍了常用的代码管理工具VSS,看了一下评论,很多同学深恶痛绝,有的甚至因为公司使用VSS离职的.其实使用什么代码管理工具要看项目而定.毕竟使用何用代码管理工具,是项目管理者根据需要来决定的,如果你是一个开发人员,首先要让自己的技术精进一点.下面根据我个人理解,把这几种常见的代码管理工具使用场景简单介绍一下. 1.几种代理管理工具的适用场景 A.如果你的项目是5-6人的小团队,那么使用

Git 时间,版本控制工具的高级用法

现在的你对于 Git 应该完全不会感到陌生了吧,通过了之前两节内容的学习,你已经掌握了 Git 中很多的常用命令,像提交代码这种简单的操作相信肯定是难不倒你的. 那么打开 Git Bash,并进入到 BaiduMapTest 这个项目的根目录,然后执行提交操作: git init git add . git commit -m "First Commit." 这样就将准备工作完成了,下面就让我们开始学习关于 Git 的高级用法. 1.  分支的用法 分支是版本控制工具中比较高级且比较重

【Java EE 学习第43天】【SVN版本控制工具】【CVS版本控制工具】

一.SVN SVN服务器下载地址:https://subversion.apache.org/ 1.什么是版本控制:版本控制是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程.是一种记录若干文件内容变化,以便将来查阅特定版本修订系统的系统. 2.没有版本控制会发生哪些糟糕的情况: (1)代码管理混乱 (2)备份多个版本,占用磁盘空间的大 (3)解决代码冲突困难 (4)容易引发bug (5)难于追溯问题代码的修改人和修改时间 (6)难于恢复到以前正确的版本 (7)无法进行权限控制 (8

mac 版本控制工具SmartSVN7.5.4(破解版)

SmartSVN7.5.4和破解工具,下载地址:http://download.csdn.net/detail/pearlhuzhu/7407319 操作步骤: 1.在MAC上选中smartsvn-macosx-10_78-7_5_4.dmg,双击 2.进入iNViSiBLE文件夹 3.双击syntevo_keygen.jar 如果没有安装java会自动提示安装的 4.输入Name Email(随便输入), 注意选对Application下的选项,我用的是SVN所以选Syntevo SmartS

unity版本控制工具的使用

版本控制工具,可以帮助我们更好的管理我们的项目,关于具体内容大家可百度.今天阿亮分享一下怎样使用Unity自带的版本控制工具. 我使用的Unity版本是5.2.1,其他版本可能不同. 首先,你需要下载安装Asset Server,Unity官方网站中提供下载.安装时,默认账号是admin,注意管理密码,我们会在unity中使用. 然后进入安装目录中,打开AssetServerControl.exe,并启动Server(点击Start). 然后打开Unity,首先进入Edit—>ProjectSe