`

git管理的web化

阅读更多

 

把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的相关操作是以管理员做为代理操作!所以在添加项目时,默认要添加管理员!

分享到:
评论

相关推荐

    一个web自动化部署系统,发布代码和服务器管理工具,配置简单、功能完善、界面流畅,支持git版本管理,支持各种web来一键完成

    简介 goploy自动化部署系统,发布代码和服务器管理工具,配置简单、功能完善...支持git版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布、回滚,可以通过web来一键完成 安装 安装mysql 下载最新的release

    JavaScript实现的Git项目JS-Git.zip

    而Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,是一款非常棒的工具。 目标平台 该项目的目标是希望它能够在每一个平台上运行,包括: ChromeOS App Firefox OS ...

    goploy自动化部署系统,发布代码和服务器管理工具,配置简单、功能完善、界面流畅、支持git版本管理,支持各种web代码发布

    goploy自动化部署系统,发布代码和服务器管理工具,配置简单、功能完善、界面流畅、开箱即用!支持git版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布、回滚,可以通过web来一键完成。

    gitlib安装包及安装文档

    使用Git作为代码管理工具,并在此基础上搭建起来的web服务,它集成了Github的可视化功能,方便开发人员协同工作. GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web...

    Web-Editor:Web可视化组态编辑器(Angular8)

    git clone https://github.com/bojue/Web-Editor.git cd Web-Editor npm install 运行 默认运行命令,需要服务端支持,也就是所以tag v0.1.0之后的版本,请先下载 并完成服务端启动。 npm run dev //or npm run ...

    开发版本管理git使用规范.pdf

    我们还将学习如何使用流行的前端框架和工具,如React、Vue.js和Webpack等,来构建功能强大、响应迅速的现代化网页应用。 这个视频系列旨在帮助你掌握前端开发所需的技能,并能够在实际项目中应用所学的知识。每个...

    strongMan:StrongSwan的管理UI

    强人strongMan是StrongSwan的管理界面。 StrongMan基于Django和Python,提供了一个用户友好的图形界面来配置和建立IPsec连接。 它支持RSA / ECDSA非对称加密带有用户名和密码的EAP EAP-TLS 服务器认证回合StrongMan...

    数据采集,处理,监控,调度,管理一体化平台

    zdh_web: zdh系列项目web管理端,提供可视化配置,比如ETL,调度,mock服务,权限管理,数仓模块等 zdh_spark: 基于spark的etl处理,必须依赖zdh_web zdh_flinkx: 基于flink sql的etl处理,必须依赖zdh_web zdh_mock: ...

    Gogs极易搭建的自助 Git 服务器代码.rar

    - 支持仓库和组织级别 Web 钩子(包括 Slack 和 Discord 集成) - 支持仓库 Git 钩子和部署密钥 - 支持仓库工单(Issue)、合并请求(Pull Request)、Wiki 和保护分支 - 支持迁移和镜像仓库以及它的 Wiki - 支持...

    git学习--gerrit服务器搭建总结

    gitweb:Gitweb提供了git版本库的图形化web浏览功能,能看代码库,提交日志等服务器操作系统:ubuntu14.04gerrit所用包:gerrit-2.10.war,此版本必须要用jdk7以上,本人用了jdk7.1.ubuntu服务器安装git2.ubuntu...

    基于git和CI/CD的集中化配置管理服务

    首先,我们先整理一下集中化配置管理的主要feature:可以记录、审核配置的修改 支持多种环境(生产、测试、开发、演示等等) 修改配置之后,应用的配置能够及时得到更新 我们的主要思路是:将配置服务直接写成一个...

    goploy自动化部署系统,web部署系统工具

    goploy自动化部署系统,发布代码和服务器管理工具,配置简单、功能完善、界面流畅、开箱即用!支持git版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布、回滚,可以通过web来一键完成

    计算机学习WEB2020,全套

    15 前后端交互Git GitHub 16 项目实战 阿里百秀 17 VUE基础 18 前端工程化 es6h模块化和webpack打包 19 前端工程化 vue-clis和element-UI 20 vue实战 电商管理系统 element-UI 21 vue。js项目实战开发 22 拓展 微信...

    Linux-基于Gogs搭建企业私有Git服务(包括守护进程配置)

    Gogs 是一款开源的轻量级Git web服务,其特点是简单易用完档齐全、国际化做的相当不错。其主要功能如下: 1.提供Http 与ssh 两种协议访问源码服务 2.提供可WEB界面可查看修改源码代码 3.提供较完善的权限管理功能、...

    FFmpegUI:FFmpegUI是著名的FFmpeg的图形化Web界面

    FFmpegUI是著名的FFmpeg的图形化Web界面 安全: 仅用于本地网络,没有公共访问权限! 特征: FFmpeg几乎可以对视频执行的所有操作 使用VAAPI和CUDA进行硬件编码 蓝光/ DVD翻录 PROXMOX KVM和LXC支持 文件管理器 ...

    devops:基于saltstack的自动化运维平台:CMDB、CICD、DevOps、资产管理、系统监控、运维管理、配置管理(持续更新中)

    @#123项目介绍devops 自动化运维平台--一站式满足需求功能点(按顺序实现):CMDBwebssh √用户管理 √日志审计 √远程命令/脚本文件分发 √环境部署代码发布管理数据库管理DNS管理 √权限细分接口管理定时任务管理...

    SSDBAdmin:SSDB可视化界面管理工具ssdb Web管理器工具

    SSDB数据库的可视化界面管理工具 功能 提供SSDB数据的hash/zset/kv/queue等数据结构的增删改查等功能 依赖 Python 3.x(Python2请移步 ) 烧瓶 安装 下载项目到本地git clone ...

    Github和Git的基本使用

    github除了Git代码仓库托管及基本的Web管理界面以外,它还提供了一些方便社会化共同软件开发的功能,即一般人口中的社群功能,包括允许用户追踪其他用户、组织、软件库的动态,对软件代码的改动和bug提出评论等。...

    SCM Manager 简体中文版

    SCM Manager 是一款同时支持Git、Subversion、Mercurial的源代码管理服务器,基于Java构建。 中文版由木鱼制作,除了进行全面的中文化以外,还提供了配置脚本、预置了插件并进行了插件的中文化,以及安装说明。 SCM...

Global site tag (gtag.js) - Google Analytics