把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进行版本控制,Maven进行项目管理和依赖管理,同时借助IDEA这样的集成开发环境来创建和管理web工程。 首先,Git是一种分布式版本控制系统,用于跟踪对代码的修改。通过学习Git,我们...
它不仅支持基本的Git操作,如克隆、推送、拉取,还具备权限管理、资料库视图、Web界面等特性,使得非开发者也能轻松浏览和理解代码库。 2. **Gitblit 1.8.0新特性** - **增强的安全性**:Gitblit 1.8.0在安全方面...
Git本身是一个命令行工具,但在许多项目中,例如GitHub、GitLab和Bitbucket等,都提供了基于Web的图形界面,使得浏览和管理代码更加直观方便。这些在线工具允许开发者在网页上直接查看代码变更,讨论问题,并管理...
Git的Web界面让非开发者也能轻松浏览项目历史,参与讨论和提供建议。 总之,Git作为强大的版本控制系统,不仅改变了代码管理的方式,也极大地促进了开源社区的发展。学习并熟练掌握Git,对于任何软件开发者来说都是...
- **初始化仓库**:`git init` - **添加文件**:`git add <file>` - **提交更改**:`git commit -m "commit message"` - **查看状态**:`git status` - **克隆远程仓库**:`git clone <repository-url>` #### 版本...
- **自定义模板**: 可以根据需求修改或创建自定义的 Web 界面模板,打造个性化的 Gitblit。 - **集成其他服务**: 通过 REST API,Gitblit 可以与 CI/CD 工具(如 Jenkins)、持续集成、自动化测试等系统进行集成。...
GitHub是基于Web的Git仓库托管服务,提供了代码托管、问题追踪、项目管理等功能。用户可以通过创建Repository(仓库)来存放代码,并可以设置不同的权限。GitHub还支持Pull Request机制,方便代码审查和合入。 **4....
Gitblit作为Git服务器,不仅提供了Git仓库的托管,还支持Web界面浏览、管理和克隆仓库,以及用户权限管理等功能。在Windows环境下,Gitblit提供了便捷的安装和配置方式,使得非Linux环境下的开发者也能轻松搭建Git...
服务端的Gitblit则是一个轻量级的Git服务器,它可以方便地托管Git仓库,提供Web界面供用户浏览、管理和克隆仓库。 Gitblit是用Java编写的一个开源项目,设计简洁,易于配置和部署。它支持SSL加密,可以设置权限控制...
在Git操作中,`git submodule`是一个强大的特性,它允许你在主项目中包含其他项目的副本,这些副本作为子模块独立管理。在Azure Web应用的部署过程中,使用`git submodule`有时会遇到一些挑战,尤其是在URL中未包含...
- **配置管理**:在微服务架构中,多个服务共享同一份配置文件,json-git可以方便地管理和版本化这些配置。 - **数据备份**:对于需要定期保存和回溯状态的应用,如游戏存档或数据分析,json-git可以提供简单且有效...
### Git服务器安装与GitBlit部署详解 ...GitBlit不仅提供了基本的Git仓库管理功能,还支持多种认证方式和扩展插件,可以根据实际需求进行进一步的定制化配置。此外,由于其轻量级的特点,非常适合小型团队或个人使用。
PostgreSQL是一种强大的开源关系数据库管理系统,常常被用作Web应用程序或其他需要存储和查询结构化数据的项目的基础。在Git仓库中,你可能会看到与PostgreSQL配置相关的文件,如`pg_hba.conf`和`postgresql.conf`。...
Git是分布式版本控制系统,而GitLab是基于Git的代码托管平台,它提供了代码仓库管理、项目协同、问题跟踪、持续集成/部署等功能。GitClient则是一种Git的图形化客户端工具,便于用户更直观地操作Git。 在“git...
Gitblit是一款开源的、专为Git版本控制系统设计的轻量级服务器,它提供了一个简单易用的Web界面来管理你的Git仓库。Git是目前最流行的分布式版本控制系统,广泛应用于软件开发、文档协作等场景。Gitblit的1.8.0版本...
简介 goploy自动化部署系统,发布代码和服务器管理工具,配置简单、功能完善...支持git版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布、回滚,可以通过web来一键完成 安装 安装mysql 下载最新的release
4. **企业建站**:在建站过程中,Gogs可以作为网站源码的存储和管理工具,配合Webhook实现自动化部署。 六、总结 Gogs v0.13.0作为一个轻量级的Git服务,不仅提供了便捷的部署方式和丰富的功能,还注重用户体验和...
10. **与云服务集成**:通过设置Git客户端(如GitHub Desktop或SourceTree),可以方便地与GitHub和GitLab进行图形化交互。同时,也可以利用Git的Web界面进行代码浏览、问题跟踪、代码审查等。 总的来说,Git是现代...
常见的Git服务器软件有GitLab和Gerrit,它们提供Web界面、访问控制和持续集成等功能。Git可以通过HTTP、SSH等多种协议进行远程操作。 以上内容涵盖了Git的基本概念和核心操作,通过深入学习和实践,你可以熟练地...