代码改变世界

ubuntu下安装git server以及eclipse egit插件配置

2012-06-03 21:15 by BAsil, 4200 阅读, 1 推荐, 收藏, 编辑

之前项目组使用svn做版本控制,尝试了一下git+svn(就是git客户端+svn服务器配置),但总感觉无法将git的强大功能体现出来,于是打算在服务器上配置git server并且给出eclipse egit插件客户端的操作。本文参考了ubuntu官网以及部分网友的blog,文中如引用均给已出相应连接。

1.配置环境

客户端

笔记本:Thinkpad T400

内存:6GB 1067MHz DDR3

OS : Window 7 professional 64bit  sp1

Eclipse : Indigo (Java EE)

服务器

OS :  Ubuntu 9.10 (Karmic) Server

2.服务器环境

由于服务器使用Ubuntu 9.10版本较低,在使用apt-get install git-core时提示要使用apt-get update。不过在apt-get update的时候报了很多错误,查了一下,原因是8.10,9.04,9.10,10.10等版本官方均已经停止更新,需要修改sources.list文件(/etc/apt/sources.list),改为

deb http://old-releases.ubuntu.com/ubuntu/ karmic main  restricted
deb-src http://old-releases.ubuntu.com/ubuntu/ karmic main  restricted
deb http://old-releases.ubuntu.com/ubuntu/ karmic-updates main restricted
deb-src http://old-releases.ubuntu.com/ubuntu/ karmic-updates main  restricted
deb http://old-releases.ubuntu.com/ubuntu/ karmic universe
deb-src http://old-releases.ubuntu.com/ubuntu/ karmic universe
deb http://old-releases.ubuntu.com/ubuntu/ karmic-updates universe
deb-src http://old-releases.ubuntu.com/ubuntu/ karmic-updates universe
deb http://old-releases.ubuntu.com/ubuntu/ karmic multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ karmic multiverse
deb http://old-releases.ubuntu.com/ubuntu/ karmic-updates multiverse
deb-src http://old-releases.ubuntu.com/ubuntu/ karmic-updates multiverse

然后使用apt-get update,不过old-releases.ubuntu.com访问速度非常慢而且没有镜像,所以可能需要执行很长的时间(我花了大概4个小时,郁闷)。更新完成后,可以进行后续安装了。

当然如果你使用的ubuntu版本高于10.10,那可以跳过步骤2,直接进入3。

3. git服务器

第3部分主要参考了ubuntu官网Git服务器Gitosis安装设置,红字部分是个人补充

      3.1、安装 openssh服务器

     sudo apt-get install openssh-server openssh-client

      3.2、创建个人公钥和私钥 (如果在服务器下,会以当前用户名创建)

           在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥

     ssh-keygen -t rsa

           默认生成2048位,如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥

     ssh-keygen -t rsa -b 4096

           默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:

     id_rsa  id_rsa.pub  known_hosts

      3.3、安装 git服务器

     sudo apt-get install git-core

      3.4、配置 git服务器

          创建git服务器管理用户

     sudo useradd -m git
     sudo passwd git

          创建git仓库存储目录

     sudo mkdir /home/git/repositories

          设置git仓库权限

     sudo chown git:git /home/git/repositories
     sudo chmod 755 /home/git/repositories

          初始化全局设置

     git config --global user.name "myname"
     git config --global user.email "myname@server"

      3.5、安装python的setup tool

     sudo apt-get install python-setuptools

      3.6、获取并安装gitosis

     cd /tmp
     git clone git://eagain.net/gitosis.git
     此处git地址已经失效,网上给出其他的也不能clone,没办法下载gitosis打包文件,解压继续。
     cd gitosis
     sudo python setup.py install

      3.7、配置gitosis

     cp ~/.ssh/id_rsa.pub /tmp
     sudo -H -u git gitosis-init < /tmp/id_rsa.pub
     执行后在/home/git/repositories/下会出现gitosis-admin.git文件夹,gitosis同样使用git来进行管理,因此我们需要git clone后修改,并执行commit和push使配置生效
     sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

     3.8、管理gitosis配置

     cd ~
     git clone git@hostname:用户名/gitosis-admin.git
     此处应改为git clone git@hostname:gitosis-admin.git,也不要写成git clone git@202.194.254.21:home/git/repositories/gitosis-admin.git否则会报gitosis.serve.main:Repository read access denied。这个错误我一开始一直认为是gitosis.conf中的配置有问题,实际上是路径问题
     cd gitosis-admin/

        各个用户按照前面提到的办法生成各自的ssh公钥文件后,服务器管理员把所有人的 ssh公钥文件都拿来,拷贝到keydir目录下。

        在linux和mac下可以使用scp命令远程拷贝,在window下,可以使用winscp(图形界面),注意生成的pub文件用文本编辑器打开取文件内容最后显示的完整用户名, 比如我的tangtang@THINK,作为pub文件的文件名tangtang@THINK.pub,拷贝到keydir目录下

        修改gitosis.conf文件,如下所示

    [gitosis]
    [group gitosis-admin]
     writable = gitosis-admin
     members = tracker@issue-tracker
    [group developers]
     writable = helloworld
members = tangtang@THINK b@server2
    [group test] 
     readonly = helloworld
     members = c@server3

         这个配置文件表达了如下含义:gitosis-admin组成员有tracker@issue-tracker,该组对gitosis-admin仓库有读写权限; developers组有tangtang@THINKb@server2两个成员,该组对undergraduate仓库有读写权限; test组有c@server3一个成员,对helloworld仓库有只读权限。 当然目前这些配置文件的修改只是在你的本地,你必须推送到gitserver上才能真正生效。 加入新文件、提交并push到git服务器:

        这里首先确保在git clone后的gitosis-admin/文件夹下,使用

    git add .
    git commit -am "add users"
    git push
    经过以上步骤,服务器配置完毕
4.创建git项目
         下面我们在客户端创建git项目,并push到服务器上,这里eclipse的egit插件好像在创建git项目时有问题,所以我们仍然使用git命令行形式
         mkdir helloworld
cd helloworld
git init
touch a.txt
git add .
git commit –am “add a.txt”
git remote add helloworld git@hostname:helloworld.git
git push helloworld master
    成功后会显示

         Initialized empty Git repository in /home/tangtang/helloworld/.git/
        Enter passphrase for key '/home/tangtang/.ssh/id_rsa':
        remote: Counting objects: 24, done.
        remote: Compressing objects: 100% (24/24), done.
        remote: Total 24 (delta 5), reused 4 (delta 0)
        Receiving objects: 100% (24/24), done.
        Resolving deltas: 100% (5/5), done.

        此时,hellworld已经被push到git server上

5. window eclipse git配置
        eclipse下egit插件安装比较简单,选择Help->Install New Software输入http://download.eclipse.org/egit/updates,按照提示安装即可

        5.1  选择File->Import->Git/Projects from Git

        5.2  Select a Git Repository 选择Clone 在URI中输入ssh://git@hostname/home/git/repositories/helloworld.git 或者git@hostname:/home/git/repositories/helloworld.git 注意这里不能使用在git命令行下使用的git@hostname:helloworld.git,否则总是报错,现在不确定是否是因为window的原因(抽空用mac os试下)

        5.3  Branch Selection

         branchselection

      5.4 Local Destination

         localdestination

         Finish后从git server clone项目,直至完成

     5.5  Git Repositories 查看本地及remote状态(Window->Show View->Other->Git Repositories)

          Git Repositories

           可以看到Remotes/origin下有Fetch和Push两个路径,注意Fetch的配置

           fetchconfig

           红框部分是要求把remote origin下的所有分支都fetch到本地

           然后是Push的配置

            pushconfig

     5.6

           如果使用了私钥,可以进行如下配置

           ssh

           如果不使用ssh的话,我发现在没有安装window的eclipse下也能正常使用,不知道git是否通过别的协议传输(没有配置http以及https),这点没有搞清楚,还请大家不吝赐教。

配置完毕后,我们可以通过使用eclipse egit插件进行源代码管理了

 

[Update 1 2013-01-08]

1 3.7使用的是服务器上的公钥创建gitosis-admin仓库,默认就是gitosis-admin的管理员了,但实际上我们可以通过修改gitosis-admin/gitosis.conf 文件添加客户端的管理员

比如

[group gitosis-admin]
writable = gitosis-admin
members = admin tangtang

2 创建公钥密钥的方式

重点说一下window,在window下,因为我们访问openssh server,所以必须使用openssh兼容的格式,这里如果你安装了msysgit 可以使用

   ssh-keygen -t rsa -C "yourname" 
生成用户名为yourname的公钥和密钥,这里建议使用-C参数(否则会生成yourname@机器名的公钥密钥,后面我不管怎么设置均无法成功登陆)

把生成的id_rsa.pub复制一份,更名为yourname.pub 并通过winscp 到 你提前在服务器上clone的那个gitosis-admin仓库的keydir文件夹下,然后执行git commit和git push。当然如果你在客户端已经可以操作gitosis-admin的话,亦可以放到客户端的gitosis-admin的keydir下并同样执行git commit 和git push

3 当你使用客户端工具比如git extension等克隆仓库时,注意仓库的url 应该是 ssh://git@remote-server-url/repositoryname.git 我之前总是把git用户名设置为之前创建的yourname,是不对的。

          

   
 

windows下调试android源代码

2012-02-10 17:03 by BAsil, 3231 阅读, 2 推荐, 收藏, 编辑
摘要:android开发中,因为网上的资料较少,查看android源代码很有必要,那我们怎么才能在android开发中调试android源代码呢?经过笔者的不断尝试,给出了windows下调试android源代码的方案,此方案只是临时替代方案,稍显繁琐,还是希望官方能早点给出调试android源代码的解决方案。 本文参考了William Hua的把Android源代码加入SDK(Updated... 阅读全文

Mac OS 10.6(Snow Leopard)编译Android源代码

2012-01-31 17:54 by BAsil, 3581 阅读, 1 推荐, 收藏, 编辑
摘要:最近在看Android内核剖析(柯元丹著),准备把Android源代码研究一下。做net开发时,就是通过microsoft symbol server取得net framework的源代码加载到deb... 阅读全文

使用Mono Runtime Bundle制作安装包让C#桌面应用程序脱离net framework

2011-11-29 16:33 by BAsil, 8193 阅读, 5 推荐, 收藏, 编辑
摘要:之前有一个C#版本和ios版本(支持下载学生名单,点名等更多功能,该版本未上app store)的教辅助手帮助学校老师提交成绩到教务系统(浙大正方web版),一直打算用mfc写一个vc++版本的可以方... 阅读全文

c++对象成员函数返回自身引用时出现的诡异问题及解决办法

2010-10-14 14:05 by BAsil, 3305 阅读, 0 推荐, 收藏, 编辑
摘要:list.h (实际上是数据结构顺序表的一个例子,为了展现问题,我简化了部分代码,只留下插入和打印)#include<iostream>using namespace std;class List{public: List(int max_list_size) { max_size=max_list_size; data=new int[max_size]; ... 阅读全文

C++指针存储结构

2010-09-20 09:32 by BAsil, 5659 阅读, 5 推荐, 收藏, 编辑
摘要:—概述 —线性排序 —二进制存放 —数据类型和编码 —变量和指针 —引用 —数组 —动态存储分配 —函数参数传递在内存中的表示 概述 c++的学习中,对指针的理解和把握相当重要,可... 阅读全文

重构一个贪吃蛇游戏(linux c++)

2010-08-31 18:37 by BAsil, 2468 阅读, 0 推荐, 收藏, 编辑
摘要:最近读dave_cn的[原创]分享自己写的一个贪吃蛇的游戏(Linux) ,C程序写的,就想着用C++重写一下,把面向对象的思想也引入进来。 这里感谢dave_cn,重构后应该有40%的代码是重用的,省了不少功夫。 程序继续采用了ncurses.h库,关于ncurses猛击这里。不知道在window下有没有类似的库(查了一下,可以用conio.h在类dos窗口下实现,有空实现一个window版... 阅读全文

Ubuntu 9.10 Server 配置Apache + WebDav 实现文档协同管理

2010-06-01 16:36 by BAsil, 2199 阅读, 0 推荐, 收藏, 编辑
摘要:先来了解一下百度百科关于WebDav(Web-based Distributed Authoring and Versioning)的解释 一种基于 HTTP 1.1协议的通信协议.它扩展了HTTP ... 阅读全文

javascript事件机制与jQuery.bind的补充说明

2010-05-10 17:36 by BAsil, 2596 阅读, 2 推荐, 收藏, 编辑
摘要:在之前的文章javascript 事件机制 与 jQuery.Bind中,为了说明冒泡阶段中Event Handler Function的表现,我使用了event.data来记录触发function的次数。并且提出了一个问题,就是在jQuery.bind方式中,event.data无法正确记录触发的次数。后来经过测试和查阅网上的相关的资料,得出了一个结论,就是我之前关于event.data的使用方... 阅读全文

javascript 事件机制 与 jQuery.Bind

2010-05-08 23:30 by BAsil, 2761 阅读, 2 推荐, 收藏, 编辑
摘要:W3C DOM Level2的事件模型规范中,事件在DOM树中的传播过程(从根节点到目标节点)被分为了两个阶段:捕捉(Capture)和冒泡(Bubbling),而事件在传递的过程中需要先经历Capture Phrase后经历Bubble Phrase 。在firefox下,我们可以用target.addEventListener(type, listener, useCapture),第三个参数... 阅读全文

Ubuntu 9.10 Server 配置基于SSL的Subversion

2010-02-09 20:06 by BAsil, 2087 阅读, 1 推荐, 收藏, 编辑
摘要:1 配置准备 Ubuntu 9.10 Server 英文版。服务器版还是以稳定高效为主,也没有安装图形界面,另外主要是通过putty.exe远程访问。没有采用中文版的原因是,在shell下,中文字体可能没有安装总显示乱码,拜过谷哥大神,未解决。2 安装软件及模块一览 (1)Apache2.2.14 自己下载编译。未用ubuntu 9.10 server 下apt-get安装的apache2 是因... 阅读全文

Ubuntu 9.10 Server (Karmic) 迁移Bugzilla

2010-02-07 01:10 by BAsil, 1801 阅读, 3 推荐, 收藏, 编辑
摘要:项目组去年年底配置了两台服务器,其中的一台安装了Ubuntu 9.10 Server。由于项目组采用Bugzilla作为bug生命周期的管理,需要把Bugzilla迁移了过来。以下记录迁移过程备忘。 原服务器 Ubuntu 8.04 Desktop ,  Bugzilla 3.2.2 新服务器 Ubuntu 9.10 Server  , -- 参考网上部分方案,打算采用比... 阅读全文

域环境下配置连接sql server 的asp.net网站

2008-12-04 01:12 by BAsil, 2793 阅读, 0 推荐, 收藏, 编辑
摘要:最近网站要上线,在部署项目环境时碰到了问题,简单记录一下 域控制器+数据库服务器  域名local                window 2003  sp2       &... 阅读全文

注意IIS 7.0的集成管道模式下HttpApplication 请求管道事件的问题

2008-11-15 22:53 by BAsil, 849 阅读, 0 推荐, 收藏, 编辑
摘要:今天打算把Community Server 2.0在vista IIS 7.0下跑起来,设置完虚拟目录后浏览,发现HttpContext.Current.Request抛出了System.Web.HttpException,检查了一下IIS下设置成集成管道模式,换成经典管道模式,则不抛出异常,百思不得其解,后来发现msdn上有如下一段话 不包含自定义模块或处理程序的 Web 应用程序通常无需更改即... 阅读全文

出现Unable to launch Visual Studio's Localhost Web Server问题解决

2008-10-23 15:01 by BAsil, 1209 阅读, 0 推荐, 收藏, 编辑
摘要:中文描述:无法启动Visual Studio的Localhost Web Server 郁闷了一上午,我的vs2005没有新建网站和打开网站选项,后来尝试打开Web Application来运行,结果每次都报上述错误,而vs2008工作正常,没有这个问题。而且Framework2.0文件夹下没有WebDev.WebServer.exe,怀疑没有正确安装,运行VS2005的卸载程序的添加新功能,发... 阅读全文

基于TCP的网络游戏黑白棋系列(四):游戏棋盘

2008-10-14 23:14 by BAsil, 2448 阅读, 0 推荐, 收藏, 编辑
摘要:上一节我们讨论的游戏大厅的实现,这一节我们来看一下客户端游戏棋盘的处理关于棋盘的呈现采用了GDI的DrawImage方法,先准备一张400*400的棋盘图片和两个40*40的棋子图片(分别为黑棋和白棋),我们的思路是通过和客户端服务器的数据交互得到游戏大厅某桌的棋子信息,然后客户端直观的呈现该信息。棋盘同样可以看作一个对象,只不过这个对象我们需要从Form来继承,因为我们需要用到PictureBo... 阅读全文

基于TCP的网络游戏黑白棋系列(三):游戏大厅

2008-10-11 15:29 by BAsil, 2078 阅读, 0 推荐, 收藏, 编辑
摘要:上一节我们讲到了客户端发送Login命令后,服务器返回欢迎信息,完成了一个简单的数据传输。这一节我们来完成游戏大厅的基本功能,我们首先思考一下游戏大厅的基本功能:1 提供可供对弈的游戏桌,游戏大厅可供多桌玩家同时游戏,为了考虑游戏大厅服务器的负载能力,应该设置一个人数的上限和桌数的上限。实际上前面提到的功能抽象出来就是一些数据的状态集合。2 当玩家登入大厅,应该直观的显示当前大厅的就座情况,方便玩... 阅读全文

基于TCP的网络游戏黑白棋系列(二):数据传输

2008-09-24 14:48 by BAsil, 2818 阅读, 0 推荐, 收藏, 编辑
摘要:上一节给大家演示了建立连接的关键代码,连接建立好后,就可以进行数据传输了。数据传输包含从服务器端到客户端和从客户端到服务器端,两者差别不大。数据的传输,TcpClient的GetNetworkStream是关键,通过它我们可以得到NetworkStream网络流,客户端和服务器主要的工作就是对其读出和写入。关于如何构造稳定且性能好的网络应用,如何进行复杂的封包和解包,这里我们不考虑,我们使用Str... 阅读全文

基于TCP的网络游戏黑白棋系列(一):建立连接

2008-09-21 13:54 by BAsil, 2447 阅读, 0 推荐, 收藏, 编辑
摘要:利用TCP开发网络应用程序,可以采用同步或者异步的方式,这个游戏采用的是同步的工作方式,比较简单,系列教程也主要介绍同步的工作方式。网络通信的前提就是客户端和服务器端的通信,在服务器端,程序需要不断的监听客户端是否有连接请求,已保证多个客户端的连接,服务器通过套接字识别客户端;而客户端只需要指定哪个服务器即可。一旦双方建立连接并创建了对应的套接字,就可以互相传输数据了。客户端和服务器端发送和接受数... 阅读全文

基于TCP的网络游戏黑白棋系列教程开篇

2008-09-21 13:47 by BAsil, 1564 阅读, 0 推荐, 收藏, 编辑
摘要:看过网上很多的类似系列教程(博客园包包版网络大厅的+桥牌系统),写的很深入,感觉比较复杂,初学者不宜上手。我是在学习WCF的时候,发现自己对底层的传输原理都没有搞明白,于是又回头学习网络传输的一些知识,自己写了一个简单的网络游戏黑白棋,因此也想把学习的一个过程记录下来和初学者们一块交流。我的只是小儿科,还请网友多多包涵,高手们也不要吝惜你们的砖头。第一次写系列教程,心里没底,本来自己水平就一般,却... 阅读全文
点击右上角即可分享
微信分享提示