文档章节

在rails环境中安装基于libgit2库的rugged库

zouqilin
 zouqilin
发布于 2014/10/17 15:37
字数 588
阅读 151
收藏 1

    由于当前运行gitlab中的操作git的grit库不再更新维护了,因此需要将gitlab中的grit更新为rugged,中间碰到了各种问题.经同事们帮忙.终于解决了,再次,thanks all. 下面记录一下更新过程.

    当前状况: Ubuntu 14.04, ruby 1.9.3, rails 3.2.4, gitlab 5.*,grit 0.2.6,

    更新: ruby 2.1.3, gitlab5.*, grit 0.2.6, ruggged 0.21.0, gitlib_git 6.2.0, libgit 0.21.0

步骤:

    1)更新ruby版本

        a)使用rvm进行版本管理

$> rvm install 2.1.3

        b)设置为默认版本

$> rvm use 2.1.3 --default

    2)更新gem.(假设rails项目目录为/web/pro/gitlab)

$/web/gitlab > bundle install

    3)更新gitlab_git, 由于gitlab中已经在gitlab/lib/gitlab/git中已经有了gitlab_git代码,但由于其使用的时grit库, 需要更换为rugged, 在最新的gitlab_git 6.2.0中已经将grit替换为rugged了, 已经下面从github中克隆gitlab_git代码.

        a)克隆gitlab_git代码

$> git clone git@github.com:gitlabhq/gitlab_git.git /web/gitlab_git
$> cd /web/gitlab_git
$ /web/gitlab_git > git checkout v6.2.0 #切换到版本v6.2.0

        b)更新gitlab_git代码

$> cp /web/gitlab/lib/git/gitlab/git /web/gitlab/lib/git/gitlab/git.old  #备份
$> cp /web/gitlab_git/lib/gitlab_git -Rf /web/gitlab/lib/git/gitlab/git  #赋值并且重命名

    4)安装libgit2, 由于rugged代码中调用了libgit, 因此需要安装libgit2.

        a)克隆libgit2

$> git clone git@github.com:libgit2/libgit2.git /web/libgit2 
$> cd /web/libgit2
$ /web/libgit2 > git checkout v0.21.5

或者
$> wget  https://github.com/libgit2/libgit2/archive/v0.21.5.zip
$> unzip v0.21.5.zip

        b)编译安装到/usr/local中

$> cd /web/libgit2
$ /web/libgit2 > mkdir build && cd build
$ /web/libgit2 > cmake .. -DCMAKE_BUILD_TYPE=Release
$ /web/libgit2 > make && sudo make install

    5)在系统中安装rugged版本

gem install rugged -- --use-system-libraries -v 0.21.4

    (注明,在zsh中执行上述命令会出现no such file or directory - getcwd,需切换到bash)

    6)在rails项目中rugged

        a)添加gem, 在/web/gitlab/Gemfile加入下面内容

gem 'rugged', '0.21.4', git: git@git.oschina.net:zouqilin/osc_rugged.git

        b)安装rugged

$ /web/gitlab > bundle config build.rugged --use-system-libraries
$ /web/gitlab > bundle install

        c)查看安装是否成功

$ /web/gitlab > bundle list | grep rugged
  * rugged (0.21.4 xxxxx)====此输出表示已经安装好了

结束:由于安装过程难免存在差异而导致一些错误的发生. rugged的安装命令bundle install的错误日志主要在~/.rvm/gems/ruby-2.1.4/bundler/gems/extensions/x86_64-linux/2.1.0/rugged-0fcb463a6c2a/目录下的gem_make.out和 mkmf.log文件. 分析错误日志,可以推测出错误的原因,从而知道怎么解决问题.



© 著作权归作者所有

zouqilin

zouqilin

粉丝 44
博文 9
码字总数 4504
作品 0
深圳
后端工程师
私信 提问
Git仓库文件版本号遍历算法的优化

背景: 目前Git@OSC使用的基于libgit2的Rugged(http://github.com/libgit2/rugged) Git开发库,替换了原来Gitlab的底层Grit Git开发库,目前遇到的问题时在查找文件的提交历史上效率相当低下...

Zoker
2015/10/09
37
5
Windows 下 gcc + golang 编译 git2go

最近研究用go语言操作git,除了直接走命令行用包,还可以使用的go绑定操作。但是是c语言库,go使用连接c程序,需要的支持。总之过程复杂,摔了一路。 安装 gcc 和 pkg-config 首先是安装和(...

傅小黑
2014/02/18
2.2K
0
Git开发包--libgit2

libgit2 是一个可移植、纯C语言实现的 Git 核心开发包,你可以使用它来编写自定义的 Git 应用。 libgit2已被广泛应用在许多应用程序上,包括GitHub网站,还被应用在Plastic SCM和强大的微软V...

匿名
2010/11/30
6.5K
3
Git 核心开发包 libgit2 v0.24.6 和 v0.25.1 发布

Git 核心开发包 libgit2 v0.24.6 和 v0.25.1 发布了。libgit2 是一个可移植、纯 C 语言实现的 Git 核心开发包,你可以使用它来编写自定义的 Git 应用。 两个版本的发布都是有关安全的发布,修...

局长
2017/01/10
738
1
libgit2 v0.25.0 发布,Git 核心开发包

Git 核心开发包 libgit2 v0.25.0 发布了。libgit2 是一个可移植、纯 C 语言实现的 Git 核心开发包,你可以使用它来编写自定义的 Git 应用。这是 v0.25 系列的第一个版本,代号“Rutschgefah...

局长
2016/12/24
573
1

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
14
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
15
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部