Gitea的安装和配置以及应用

Gitea的安装和配置以及应用

一、安装

1、创建数据库和数据库账户(pg)

su – postgres -c "psql" 
CREATE ROLE gitea WITH LOGIN PASSWORD 'gitea';
CREATE DATABASE giteadb WITH OWNER gitea TEMPLATE template0 ENCODING UTF8 LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';

2、下载gitea,给与可执行权限

wget -O gitea https://dl.gitea.com/gitea/1.23.6/gitea-1.23.6-linux-amd64
chmod +x gitea
cp gitea /usr/local/bin/gitea

3、创建系统用户

adduser \--system \--shell /bin/bash \--gecos 'Git Version Control' \--group \--disabled-password \--home /home/git \git

4、创建相关目录

mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea

5、创建服务Gitea

sudo vim /etc/systemd/system/gitea.service

[Unit]
Description=Gitea
After=postgresql.service[Service]
User=git
Group=git
Environment="GITEA_WORK_DIR=/var/lib/gitea"
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always[Install]
WantedBy=multi-user.target

6、激活gitea 并将它作为系统自启动服务

sudo systemctl enable gitea
sudo systemctl start gitea

7、初始化

访问域名,完成Gitea的初始化

http://192.168.1.215:3000/

在这里插入图片描述

在这里插入图片描述

第一个注册的账号是管理员账号。

8、修改配置文件

配置文件在/etc/gitea/app.ini

#service 下增加这一行: 不允许匿名的push
ENABLE_ANONYMOUS_GIT_PUSH = FALSE
# 修改log模式为file
MODE = file

9、windows下git安装

https://git-scm.com/downloads/win

二、小团队最佳实践

以下由deepseek生成。

1、Fork + Pull Request VS 直接Push到主仓库

小团队10人左右内部通过gitea构建git服务器,有两种使用方式:1、每个人从主仓库fork到个人仓库下,然后修改代码后push到自己的个人仓库,再通过pull request提交的主仓库。 2、直接从主仓库pull代码,修改后直接push到主仓库。 哪种方式比较好?

对于10人左右的小团队使用Gitea构建Git服务器,两种协作方式的优劣对比如下,最终建议需结合团队具体情况:### **方式1:Fork + Pull Request 模式**
**优点:**
1. **代码审查严格**:所有变更必须通过PR合并,便于团队讨论和代码质量把控。
2. **权限控制灵活**:主仓库可限制直接Push,仅维护者能合并PR,适合开源项目或严格权限管理的场景。
3. **隔离性高**:个人开发在独立仓库完成,避免直接污染主分支。
4. **历史清晰**:PR记录可追溯代码修改意图和讨论过程。**缺点:**
1. **流程复杂**:需频繁同步主仓库变更(需手动添加Upstream远程并拉取)。
2. **效率较低**:小修改也需走PR流程,可能影响快速迭代。### **方式2:直接Push到主仓库**
**优点:**
1. **简单高效**:适合高频协作的小团队,快速完成代码共享。
2. **减少操作成本**:无需维护Fork仓库,同步代码更直接。**缺点:**
1. **风险较高**:误操作可能导致主分支损坏(需通过分支保护规则缓解)。
2. **缺乏强制审查**:依赖成员自觉,代码质量可能参差不齐。---### **综合建议:**
1. **推荐方式2(直接Push)+ 分支保护**  - **适用场景**:团队成员熟悉Git、信任度高、追求效率。  - **优化措施**:  - 主仓库设置 `main`/`master` 分支为**保护分支**,仅允许通过PR合并(需Gitea权限支持)。  - 日常开发在**非保护分支**(如 `dev` 或 `feature-xxx`)直接Push,定期通过PR合并到主分支。  - 结合Code Review:即使直接Push,也要求团队成员互相审查后再合并。2. **方式1(Fork+PR)的适用场景**  - 团队中有新人需要学习Git工作流。  - 项目为开源或需要严格权限隔离(如部分成员仅限只读)。  ### **补充最佳实践**
- **分支策略**:无论哪种方式,建议采用 `main` + `feature` 分支,避免直接在主分支开发。  
- **自动化工具**:通过Gitea的Webhook触发CI/CD,确保PR或Push后自动运行测试。  
- **文档规范**:明确团队协作规则,例如提交信息格式、PR描述模板等。最终,**方式2(直接Push + 分支保护)更适合小团队高效协作**,同时通过技术约束(保护分支)和流程规范(非强制Code Review)平衡灵活性与安全性。

2、gitea的核心概念

在 Gitea 中,**组织(Organization)** 是一个用于集中管理多个仓库和团队成员的概念,类似于 GitHub/GitLab 中的组织或群组。它适用于团队协作,可以更灵活地管理权限、仓库和成员。以下是 Gitea 中组织的核心概念和功能:---### **1. 组织的作用**
- **团队协作**:将多个用户(成员)归集到一个组织下,统一管理仓库和权限。
- **权限隔离**:组织可以拥有独立的仓库、团队(Teams)和访问控制,与个人用户(User)的仓库分离。
- **资源归类**:适用于公司、开源项目、部门等场景,所有相关仓库集中在组织名下(如 `org-name/repo-name`)。---### **2. 组织 vs 个人用户**
| **特性**       | **组织(Organization)**       | **个人用户(User)**          |
|----------------|-------------------------------|-----------------------------|
| **所有者**     | 由用户创建和管理              | 个人账户                    |
| **仓库归属**   | 属于组织(而非个人)          | 属于个人                    |
| **权限管理**   | 通过**团队(Teams)**分层控制 | 直接管理个人仓库的协作者    |
| **用途**       | 团队协作、公司项目            | 个人开发                    |---### **3. 组织的核心功能**
#### **(1)团队(Teams)**
- 组织内可以创建多个团队(如 `Developers`、`Admins`),每个团队可以分配不同的权限(读、写、管理员等)。
- 成员可以属于多个团队,权限叠加(最高权限优先)。#### **(2)仓库管理**
- 组织可以拥有多个仓库,仓库的访问权限由团队控制。
- 示例:  - `Admins` 团队:对全部仓库有管理员权限。  - `Developers` 团队:只能推送(Push)到指定仓库。  #### **(3)成员角色**
- **所有者(Owner)**:组织的最高管理者,可修改组织设置、删除组织。
- **成员(Member)**:普通成员,权限由所属团队决定。---### **4. 典型使用场景**
#### **场景1:公司内部开发**
- 创建一个组织(如 `my-company`),下设团队:  - `backend-team`:拥有后端仓库的写入权限。  - `frontend-team`:拥有前端仓库的写入权限。  - `qa-team`:仅限读取仓库。  #### **场景2:开源项目**
- 组织名(如 `awesome-project`)作为项目官方命名空间。  
- 通过团队控制核心开发者(Maintainers)和贡献者(Contributors)的权限。---### **5. 如何创建和管理组织?**
1. **创建组织**:  - 登录 Gitea → 点击右上角 `+` → 选择 `New Organization`。  
2. **添加成员**:  - 进入组织 → `Members` → 邀请用户。  
3. **创建团队**:  - 进入组织 → `Teams` → 定义权限(Read、Write、Admin)。  
4. **分配仓库**:  - 在团队设置中关联仓库,或直接在仓库设置中授权团队。---### **6. 最佳实践**
- **最小权限原则**:按需分配团队权限(如避免直接给全员 `Admin`)。  
- **仓库命名规范**:如 `org-name/project-name` 提高辨识度。  
- **结合分支保护**:在组织仓库中设置保护分支,确保代码安全。---### **总结**
Gitea 的**组织**是团队协作的核心单元,通过**团队(Teams)**实现灵活的权限管理,适合多人协作的项目。对于10人左右的小团队,建议:  
1. 创建一个组织集中管理所有仓库。  
2. 根据角色划分团队(如 `Devs`、`Leads`),而非直接赋予个人权限。  
3. 结合分支保护 + PR 流程(即使直接Push到非保护分支)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/77411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何更改OCP与metadb集群的连接方式 —— OceanBase运维管理

背景 许多用户都会借助OCP平台来进行OceanBase集群的运维与监控,且因为考虑单节点的OCP部署,在遇故障时可能会短时间出现无法管控 OceanBase集群,多数用户倾向于采用多节点方式来部署OCP,即 OCP的 metadb集群也是三节点的集群部署…

SpringDoc【使用详解】

SpringDoc使用详解 一、何为SpringDoc二、概念解释三、SpringDoc使用2.1简单集成2.2 配置SpringDoc2.2.1 yml方式配置2.2.2配置文档信息 2.3配置文档分组2.4使用注解2.4.1 Tag2.4.2 Operation2.4.3 Schema2.4.4 NotNull2.4.5 Parameter2.4.6 Parameters2.4.7 ApiResponses 和Ap…

PHP 阿里云oss 使用指南

1.介绍 把图片放到阿里云上的空间上,可以使用cdn加速。 可以在程序里直接调用 要使用阿里云 oss sdk ,请先到阿里云下载 或用 copmposer 安装 相关链接: 安装OSS PHP SDK_对象存储(OSS)-阿里云帮助中心 composer require aliyuncs/oss…

【AI提示词】常青笔记生成器

提示说明 生成适用于多个场景和领域的常青笔记,满足“常青笔记”的核心特性和结构。 提示词 # 角色: 常青笔记生成器## 角色简介: - 作者: xxx - 版本号: 1.0 - 更新时间: xxx - 语言: 中文## 定位: - 🎯 生成适用于多个场景和领域的常青笔记&#x…

在 Lua 中,`for` 和 `while` 是两种核心的循环结构的详细用法

在 Lua 中,for 和 while 是两种核心的循环结构,用于实现重复执行逻辑。以下是它们的详细用法、进阶技巧及注意事项: 在 Lua 中,for 和 while 是两种核心的循环结构的详细用法—目录 一、for 循环1. 数值 for 循环基础语法&#xf…

A2DP(Advanced Audio Distribution Profile)是蓝牙协议栈中用于音频传输的一个标准化协议

A2DP(Advanced Audio Distribution Profile)是蓝牙协议栈中用于音频传输的一个标准化协议,主要用于高质量音频流的无线传输。以下是A2DP协议的详细信息: 定义 A2DP协议允许音源设备(Source,简称SRC&#…

STM32_USB

概述 本文是使用HAL库的USB驱动 因为官方cubeMX生成的hal库做组合设备时过于繁琐 所以这里使用某大神的插件,可以集成在cubeMX里自动生成组合设备 有小bug会覆盖生成文件里自己写的内容,所以生成一次后注意保存 插件安装 下载地址 https://github.com/alambe94/I-CUBE-USBD-Com…

【文献阅读】Capabilities of Gemini Models in Medicine

​ Google DeepMind Google Research 发表于 2024-04-29 相关链接: 数据集:https://huggingface.co/datasets/katielink/med-gemini-medqa-relabeled 注:长EHR是长的电子健康记录(Electronic Health Record) 未开…

网络安全小知识课堂(最终完结版)

网络安全入门 :从 “小白” 到 “守护者” 的蜕变之旅 写在完结之际 历经 13 篇的深度探索,我们从 DDoS 攻击的 “流量洪水” 一路闯关到 HTTPS 的 “加密堡垒”,揭开了网络安全世界的层层面纱。感谢每一位读者的陪伴与互动,你们…

Php laravel 留言板 curd 实战

1. 项目创建 首先我们用composer创建项目 , composer会根据当前的php版本 帮我们选择支持的最高版本 composer create-project --prefer-dist laravel/laravel myblog laravel新版本比较激进 ,需要最低 php7 支持 2. 项目配置 数据库配置 &#xff0c…

HTTP 压力测试工具autocannon(AI)

简介 autocannon 是一款基于 Node.js 的高性能 HTTP 压力测试工具,适用于评估 Web 服务的并发处理能力和性能瓶颈。 一、工具特点 高性能‌:利用 Node.js 异步非阻塞机制模拟高并发请求‌。‌实时监控‌:测试过程中动态展示请求统计和性能…

LVM 扩容详解

目录 一、LVM扩容 1. 查看磁盘分区情况: 2. 查看pv、vg、lv 情况 3. 将新硬盘分区初始化 4. 将初始化后的分区添加到VG中 5. 查看逻辑卷的设备路径 6. VG分配给lv 二、扩展文件系统 1.确认文件系统类型 三、检验 一、LVM扩容 1. 查看磁盘分区情况: …

每日一题(小白)数组娱乐篇21

由于题意可知我们是要将对应的数字转换为英文,我们要考虑两点一个是进制的转换,也就是类似于我们的十进制一到9就多一位,这里的进制就是Z进制也就是27进制一旦到26下一位则进位;另一方面要考虑数字的转换也就是1~26对应A~Z。解决上…

python爬虫:喜马拉雅案例(破解sign值)

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 根据上一篇文章,我们破解了本网站的,手机号和密码验证&#x…

深入探讨:Spring 如何接入 DeepSeek​

​在当今数字化浪潮中,人工智能(AI)技术的迅猛发展深刻地改变着各个领域的技术格局。Java 作为一种广泛应用于企业级开发的编程语言,其生态系统也在不断演进以适应 AI 技术的融入。Spring 框架,作为 Java 生态中的中流…

VSCode运行,各类操作缓慢,如何清理

VSCode写代码,随着项目逐步进展,代码量在增加,依赖的第三方头文件也在增加, 先是发现代码提示的速度变慢, 后来格式化代码速度太慢 然后c/c代码的语法检查有时候压根就失败,来个错误提示 还有source contro…

Elasticsearch:加快 HNSW 图的合并速度

作者:来自 Elastic Thomas Veasey 及 Mayya Sharipova 过去,我们曾讨论过搜索多个 HNSW 图时所面临的一些挑战,以及我们是如何缓解这些问题的。当时,我们也提到了一些计划中的改进措施。本文正是这项工作的成果汇总。 你可能会问…

人事|人事管理系统|基于Springboot+vue的人事管理系统设计与实现(源码+数据库+文档)

人事管理系统 目录 基于Springboot的人事管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员登录 2、员工管理 3、公告信息管理 4、公告类型管理 5、培训管理 6、培训类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新…

2.4GHz射频前端噪声系数优化架构

2.4GHz射频前端电路架构由信号处理链路、硬件模块及性能规范构成,其系统组成与参数要求如下: 一、信号发射链路‌ 数字基带信号通过DAC转换为模拟信号‌ 调制电路将信号加载至本地振荡器生成的2.4GHz载波‌ 功率放大器将信号强度提升至20-25dBm范围‌ …

开源 LLM 应用开发平台 Dify 全栈部署指南(Docker Compose 方案)

开源 LLM 应用开发平台 Dify 全栈部署指南(Docker Compose 方案) 一、部署环境要求与前置检查 1.1 硬件最低配置 组件要求CPU双核及以上内存4GB 及以上磁盘空间20GB 可用空间 1.2 系统兼容性验证 ✅ 官方支持系统: Ubuntu 20.04/22.04 L…