git管理的web化
来源:互联网 发布:mac上的作图软件 编辑:程序博客网 时间:2024/05/22 03:09
把git的管理做了web化,这一阶段告一段落。
前同事离开后,git的管理就交给我了,刚开始学了git之后,很久不用就会生疏的,于是就写了shell脚本用于给其他同事创建项目之用,其他的比如:项目分配权限,新成员加入,都手工操作了,觉得很烦,就告诫自己说,找个时间把这些做成web服务,让其他同事自己调用,一直拖了很久,就是不想动......
最近也许是一些事情的刺激,决定将这个事情处理完!
刚开始的思路:
1. 新项目申请人申请创建项目,经过校验成功之后,成为该项目的管理员,可以对该项目进行人员操作处理!
2. git管理员审批通过项目申请,创建新成员;
但涉及到校验、权限以及很多未知邮箱,无法确认身份,况且都是同事,就放弃了这个想法(或许是后续的升级),采用了更为简单的方式!如下:
1. 新增项目:项目名称、参与人员
2. 修改项目成员:项目名称、参与人员
3. 新成员加入:项目名称 成员名称 pubkey
这个小项目基本上都是以shell操作为主,辅助以webpy来提供http的服务。
声明: git的管理未采用@tec @arc等分组的处理
shell操作gitosis.conf,主要有以下几个处理:
1. 查询所有项目(排重);
- cat gitosis.conf | grep writable | awk '{print $3}' | sort | uniq | awk '{printf "%s|", $1}'
2. 查询所有人员(排重);
- cat gitosis.conf | grep members | awk '{for(i=3;i<=NF;i++) {print $i}}' | sort | uniq | awk '{printf "%s|", $1}'
3. 根据项目查找人员;
这里遇到的问题,主要是获取所查找项目的下一行的值
- function usage(){
- echo "./get_member_by_repo.sh project_name"
- }
- if test -z $1;then
- echo "input param,"
- usage
- exit 1
- fi
- project_name=$1
- line_number=`cat gitosis.conf | awk 'BEGIN{project_name="'$project_name'"} {if($0 == "writable = '$project_name'"){x=NR+1;print x }}'`
- #echo $line_number
- cat gitosis.conf | awk 'BEGIN{line_number="'$line_number'"}{if(NR=='$line_number'){print $0}}' | awk '{for(i=3;i<=NF;i++) {print $i}}' | sort | uniq | awk '{printf "%s ", $1}'
4. 根据项目修改人员;
这里遇到的问题是在使用sed时,替换的值为a b c d e f g这种的值,在terminal中运行没错,但在shell调试时,遇错,始终无法调试通过,最后采用投巧的方式,先用awk以|区分,使用sed替换完之后,再将|替换为空格。
- members=`echo $@ | awk '{for(i=2;i<=NF;i++) {printf "%s|", $i}}'`
- #echo "members = $members"
- #单引号即可 ''
- project_name=$1
- #awk "BEGIN{ line = -1 }; /writable = '$project_name'/{ line = NR } { if(NR == line+1) { sub(/members = /, m) }; print }" m="$members" gitosis.conf
- line_number=`cat gitosis.conf | awk 'BEGIN{project_name="'$project_name'"} {if($0 == "writable = '$project_name'"){x=NR+1;print x }}'`
- echo $line_number
- #这里采用投机的方式来处理,先替换为|,再将|替换为空格
- #sed -i.bak ''${line_number}'s/^.*$/members = '$members'/' gitosis.conf
- sed -i ''${line_number}'s/^.*$/members = '$members'/' gitosis.conf
- #sed -i ''${line_number}'s/|/ /g' gitosis.conf
- sed -i 's/|/ /g' gitosis.conf
- cp gitosis.conf $GIT_PROJECT_DIR
- cd $GIT_PROJECT_DIR
- git pull
- git add .
- git commit -m "update project :$project_name|update members : $members"
- git push >> /tmp/test.log 2>&1 &
5. git add/commit/push/pull操作;
与git操作无异。
6. ssh到git服务器修改成员。
由于是本机操作,顾多了层ssh,先跳到跳板机,再做跳转!这样部署时也只能在跳板机做部署,或是加auth_key
- ssh root@$host "ssh root@$host1 cp /etc/profile $FILE "
- ssh root@$host "ssh root@$host1 sed -i 's/gavingeng/gavingeng:$USER_NAME/g' /etc/profile"
- ssh root@$host "ssh root@$host1 source /etc/profile"
由于脚本比较多,定义的变量都是通过source ./constants.sh来做引入,参数的传递使用python的os.popen(cmd)接受来自web端的参数!
功能已基本完成,并且测试通过,页面的样式不是很好(有些ajax显示比较乱)
另外程序目前部署在本机,服务器上的jinja2无法安装成功,郁闷!
--------------------------------------------------
P。S。
git的相关操作是以管理员做为代理操作!所以在添加项目时,默认要添加管理员!
- git管理的web化
- 基于web的git简易管理系统
- 由git版本控制maven管理的简单web…
- 基于Web的Git 管理(使用Gitblit 在windows 上部署你的Git Server)
- git的分支管理
- git - 分支的管理
- Git的分支管理
- git的分支管理
- git 的代码管理
- GIT的分支管理
- git的分支管理
- Git的分支管理
- git的分支管理
- git的分支管理
- git web的搭建
- Git专题--Xcode原生的Git管理
- 【Git】Linux下的Git简单管理
- XCode的GIT源码管理。
- 根据身份证号码识别性别年龄生日的JS代码:
- git使用
- 兴长信达在海尔商城项目上的个人亲身感慨之处
- Aizu 1317 - Weaker than Planned 注意DFS时的顺序
- C#
- git管理的web化
- ukyt
- 利用SQOOP将数据从数据库导入到HDFS
- shell处理字符编码
- spring三种注入方式比较
- HDU:Good Numbers
- git深度历险总结
- Android后台发送短信 是否发送成功提醒
- ps填充颜色