一台服务器上的git版本太低, 如果 apt-get remove git 会 remove 掉很多我还想要得软件包。只好下载源码编译覆盖掉以前的(./configure --prefix /usr).
但,运行 git 然后tab补齐时报错 "fatal: error processing config file(s)"
fix:
$ touch ~/.gitconfig
很早前就有人报过这个问题.
Showing posts with label git. Show all posts
Showing posts with label git. Show all posts
Jan 31, 2011
Dec 23, 2010
搭建项目组内部wiki
看到txt2tags有一段时间了,在Ubuntu下工作一个多月了吧,以后也会一直在Linux下工作,必须抓紧放弃讨厌的二进制文件格式,选个处理纯文本的工具完成文档。
上周笔试题是边学边用txt2tags完成的,最近,项目组要写很多文档,为扩大做准备。首先想到的就是wiki了,其实,之前一直用trac做wiki的,但,trac有些不好的地方。
trac的不爽之处:
1. 啥都做, 喜欢 do one thing, and do it well.
2. 貌似用的自己的数据库,想只把wiki分离出来不太方便
3. 想把wiki页面转换成其他格式,不是很方便
自己用过一段时间的vimwiki, 总觉得太简单了,而且,那天项目组来个用emacs的就不好整了。
考虑到txt2tags one source multi target. 纯文本,语法也比较简单,容易上手,txt2tags.org 几乎所有页面都可以查看源文件。
最终,决定用txt2tags,用git管理 *.t2t,大家都可以随便修改wiki页面,当然,修改稍微麻烦了些,必须先通过git checkout下来,必须学习txt2tags markup语法,然后,一个字一个字的写,写好再push上去,我已经写好git hooks/post-update 根据修改文件在/var/www/wiki下生成相应的 .html。
虽然难了些,但,我们是开发组,大家应该多学习点知识,不管是编码还是写文档,争取都做得专业点,争取做公司技术实力最强的项目组。
一切都刚刚开始,好的愿望,希望坚持会有好的结果。
上周笔试题是边学边用txt2tags完成的,最近,项目组要写很多文档,为扩大做准备。首先想到的就是wiki了,其实,之前一直用trac做wiki的,但,trac有些不好的地方。
trac的不爽之处:
1. 啥都做, 喜欢 do one thing, and do it well.
2. 貌似用的自己的数据库,想只把wiki分离出来不太方便
3. 想把wiki页面转换成其他格式,不是很方便
自己用过一段时间的vimwiki, 总觉得太简单了,而且,那天项目组来个用emacs的就不好整了。
考虑到txt2tags one source multi target. 纯文本,语法也比较简单,容易上手,txt2tags.org 几乎所有页面都可以查看源文件。
最终,决定用txt2tags,用git管理 *.t2t,大家都可以随便修改wiki页面,当然,修改稍微麻烦了些,必须先通过git checkout下来,必须学习txt2tags markup语法,然后,一个字一个字的写,写好再push上去,我已经写好git hooks/post-update 根据修改文件在/var/www/wiki下生成相应的 .html。
虽然难了些,但,我们是开发组,大家应该多学习点知识,不管是编码还是写文档,争取都做得专业点,争取做公司技术实力最强的项目组。
一切都刚刚开始,好的愿望,希望坚持会有好的结果。
Oct 14, 2010
public access git on ubuntu/debian
前面介绍了
gitosis搭建: setting up gitosis on ubuntudebian
gitweb搭建: setting up gitweb on ubuntudebian
gitosis权限: gitosis权限
现在,有个项目,自己项目组的人肯定要有commit权限,但其他人也要有readonly权限,虽然,可以在gitosis-admin 中添加readonly组,但,我们不可能找每个人要ssh public key吧
这时候, 可以用 git-daemon
$ sudo apt-get install git-daemon-run
修改 /etc/sv/git-daemon/run , 把git repo的路径设置正确就行
$ cat /etc/sv/git-daemon/run
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon \
/usr/lib/git-core/git-daemon --verbose --base-path=/srv/gitosis/repositories
把要让匿名访问的git repository目录下放一个名为 git-daemon-export-ok 的空文件.
$ sudo sv restart git-daemon
$ git clone git://mypc/Your-test.git
gitosis搭建: setting up gitosis on ubuntudebian
gitweb搭建: setting up gitweb on ubuntudebian
gitosis权限: gitosis权限
现在,有个项目,自己项目组的人肯定要有commit权限,但其他人也要有readonly权限,虽然,可以在gitosis-admin 中添加readonly组,但,我们不可能找每个人要ssh public key吧
这时候, 可以用 git-daemon
$ sudo apt-get install git-daemon-run
修改 /etc/sv/git-daemon/run , 把git repo的路径设置正确就行
$ cat /etc/sv/git-daemon/run
#!/bin/sh
exec 2>&1
echo 'git-daemon starting.'
exec chpst -ugitdaemon \
/usr/lib/git-core/git-daemon --verbose --base-path=/srv/gitosis/repositories
把要让匿名访问的git repository目录下放一个名为 git-daemon-export-ok 的空文件.
$ sudo sv restart git-daemon
$ git clone git://mypc/Your-test.git
Oct 10, 2010
gitosis权限设置
通过gitosis搭建git服务器可以参考 http://ox0spy.blogspot.com/2010/10/setting-up-gitosis-on-ubuntudebian.html.
下面看下gitosis权限设置
gitosis有组(group)和成员(members), 权限就是对repository的访问限制.
有两个关键字修饰 repository ,一个是 writable, 一个是 readonly.
writable 意思是,对这个repository 有写权限
readonly 是, 对这个repository 只有读权限
最常见的例子:
[group gitosis-admin]
writable = gitosis-admin # 注意,后面不要加 .git
members = ox0spy@lucid
这三句话是啥意思呢?
第1句,定义一个组, 名字为 gitosis-admin
第2句, writable = 后面跟的是仓库名, 只是这个仓库名是去掉.git的,所以, 我们在 git clone 时,要自己加上 .git,如下:
$ git clone gitosis@localhost:gitosis-admin.git # 注意最后的 .git
writable 后面可以跟很多个仓库名, 他们以whitespace分开, 一般以空格分隔,如下:
writable = gitosis-admin android mytest
第3句, members 说明这个组的成员, 成员名是 username@hostname , @hostname 不能去,否则会报错.
成员之间也通过 whitespace 分隔,通常用空格分隔.
可以发现,成员属于某个组, 而对repository的访问权限是通过组控制的.
这样的话,如果同一个repository,想让某些用户只能读,不能写,就必须新建一个组, 下面就看下怎么实现这个功能.
[group test] # 该组用户可写
members = ox0spy@lucid lfs@debian
writable = mytest
[group test_ro] # 该组用户只读
members = toor@ubuntu
readonly = mytest # 只读,这里是readonly 而不是 readable
这样,toor@ubuntu 就只能对 gitosis@Your-server:mytest.git 进行读
members 可以包含其他组的所有成员
[group member_test]
writable = memberTest
readonly = mytest
members = ox0spy@lucid @test
# 这里的 @test 就是上面 test组的所有成员 (ox0spy@lucid lfs@debian)
最后,要说的是, 一个组可以只有 members, 没有 writable 和 readonly,如下:
[group another_group]
members = monkey@abc cow@gentoo
这个组只是为了被其他组包含而定义.
下面看下gitosis权限设置
gitosis有组(group)和成员(members), 权限就是对repository的访问限制.
有两个关键字修饰 repository ,一个是 writable, 一个是 readonly.
writable 意思是,对这个repository 有写权限
readonly 是, 对这个repository 只有读权限
最常见的例子:
[group gitosis-admin]
writable = gitosis-admin # 注意,后面不要加 .git
members = ox0spy@lucid
这三句话是啥意思呢?
第1句,定义一个组, 名字为 gitosis-admin
第2句, writable = 后面跟的是仓库名, 只是这个仓库名是去掉.git的,所以, 我们在 git clone 时,要自己加上 .git,如下:
$ git clone gitosis@localhost:gitosis-admin.git # 注意最后的 .git
writable 后面可以跟很多个仓库名, 他们以whitespace分开, 一般以空格分隔,如下:
writable = gitosis-admin android mytest
第3句, members 说明这个组的成员, 成员名是 username@hostname , @hostname 不能去,否则会报错.
成员之间也通过 whitespace 分隔,通常用空格分隔.
可以发现,成员属于某个组, 而对repository的访问权限是通过组控制的.
这样的话,如果同一个repository,想让某些用户只能读,不能写,就必须新建一个组, 下面就看下怎么实现这个功能.
[group test] # 该组用户可写
members = ox0spy@lucid lfs@debian
writable = mytest
[group test_ro] # 该组用户只读
members = toor@ubuntu
readonly = mytest # 只读,这里是readonly 而不是 readable
这样,toor@ubuntu 就只能对 gitosis@Your-server:mytest.git 进行读
members 可以包含其他组的所有成员
[group member_test]
writable = memberTest
readonly = mytest
members = ox0spy@lucid @test
# 这里的 @test 就是上面 test组的所有成员 (ox0spy@lucid lfs@debian)
最后,要说的是, 一个组可以只有 members, 没有 writable 和 readonly,如下:
[group another_group]
members = monkey@abc cow@gentoo
这个组只是为了被其他组包含而定义.
setting up gitweb on ubuntu/debian
1. 安装
$ sudo apt-get install gitweb
2. 设置
修改 /etc/gitweb.conf
# projectroot 设置成你自己的仓库路径, 这是gitosis默认路径
$projectroot = "/srv/gitosis/repositories/";
view /etc/apache2/conf.d/gitweb # 一般不用修改
$ cp -r /usr/share/gitweb /var/www
3. 测试
$ curl localhost/gitweb/
$ sudo apt-get install gitweb
2. 设置
修改 /etc/gitweb.conf
# projectroot 设置成你自己的仓库路径, 这是gitosis默认路径
$projectroot = "/srv/gitosis/repositories/";
view /etc/apache2/conf.d/gitweb # 一般不用修改
$ cp -r /usr/share/gitweb /var/www
3. 测试
$ curl localhost/gitweb/
Oct 8, 2010
setting up gitosis on ubuntu/debian
1. install
# run on server
$ sudo apt-get install git-core gitosis
2. generate ssh key
# run on your pc
$ ssh-keygen -t rsa
3. upload the ssh public key
# run on your pc
$ scp ~/.ssh/id_rsa.pub USER@YOUR_SERVER:/tmp
4. create admin repository
# run on server
$ sudo -H -u gitosis gitosis-init < /tmp/id_rsa.pub # monkey's ssh public key
$ sudo chmod 755 /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update
5. checkout gitosis-admin
# run on your pc
$ git clone gitosis@YOUR_SERvER:gitosis-admin.git
6. grante right for members
# run on your pc, add new group - android
[group android] # team name
writable = 0xdroid-0x5 0xdroid-0x4 # project name
members = monkey@debian cow@ubuntu # members
# add cow's ssh public key
$ git add keydir/cow@ubuntu.pub gitosis.conf
# grante cow commit right to android
$ git commit -m "Granted cow commit right to android"
$ git push # now, cow has the commit right.
7. create new repositories
There are two ways to commit your code:
a. checkin your codes from zero
# create new repositories - 0xdroid-0x5.git
$ cd YOUR-CODE-DIR
$ mkdir 0xdroid-0x5.git && cd 0xdroid-0x5.git
$ git init
# modify .gitignore
$ git remote add origin gitosis@YOUR_SERVER:0xdroid-0x5.git
$ git add .
$ git commit -m "initial import"
$ git push origin master:refs/heads/master
b. checkin your codes from old git repo
$ cd YOUR-OlD-GiT-REPO
$ git remote -v
$ git pull # update
$ git remote rm origin
$ git remote add origin gitosis@YOUR_SERVER:0xdroid-0x5.git
$ git push origin master:refs/heads/master
8. checkout codes
$ git clone gitosis@YOUR_SERVER:0xdroid-0x5.git
# run on server
$ sudo apt-get install git-core gitosis
2. generate ssh key
# run on your pc
$ ssh-keygen -t rsa
3. upload the ssh public key
# run on your pc
$ scp ~/.ssh/id_rsa.pub USER@YOUR_SERVER:/tmp
4. create admin repository
# run on server
$ sudo -H -u gitosis gitosis-init < /tmp/id_rsa.pub # monkey's ssh public key
$ sudo chmod 755 /srv/gitosis/repositories/gitosis-admin.git/hooks/post-update
5. checkout gitosis-admin
# run on your pc
$ git clone gitosis@YOUR_SERvER:gitosis-admin.git
6. grante right for members
# run on your pc, add new group - android
[group android] # team name
writable = 0xdroid-0x5 0xdroid-0x4 # project name
members = monkey@debian cow@ubuntu # members
# add cow's ssh public key
$ git add keydir/cow@ubuntu.pub gitosis.conf
# grante cow commit right to android
$ git commit -m "Granted cow commit right to android"
$ git push # now, cow has the commit right.
7. create new repositories
There are two ways to commit your code:
a. checkin your codes from zero
# create new repositories - 0xdroid-0x5.git
$ cd YOUR-CODE-DIR
$ mkdir 0xdroid-0x5.git && cd 0xdroid-0x5.git
$ git init
# modify .gitignore
$ git remote add origin gitosis@YOUR_SERVER:0xdroid-0x5.git
$ git add .
$ git commit -m "initial import"
$ git push origin master:refs/heads/master
b. checkin your codes from old git repo
$ cd YOUR-OlD-GiT-REPO
$ git remote -v
$ git pull # update
$ git remote rm origin
$ git remote add origin gitosis@YOUR_SERVER:0xdroid-0x5.git
$ git push origin master:refs/heads/master
8. checkout codes
$ git clone gitosis@YOUR_SERVER:0xdroid-0x5.git
Subscribe to:
Posts (Atom)