您当前的位置:首页 > 计算机 > 软件应用 > 开发工具(IDE)

git - gitea操作整理

时间:08-04来源:作者:点击数:

git - gitea操作整理

概述

gitea默认的最简单用法,是直接双击运行gitea-1.22.0-gogit-windows-4.0-amd64.exe,将库默认生成到gitea*.exe的同级目录下。

但是随着库的增大,git操作(e.g. 提交)时间明显变长了。

git的推荐用法,是一个项目一个库。并不推荐使用一个大库,包含所有自己的东西。

但是中小团队/个人,一般习惯使用一个大库,用起来方便,便于管理。

为了解决大库速度慢的问题,我想开始使用小库(一个项目/工程一个小库)。

这就面临一个问题,不能每个库目录下都摆一个gitea-1.22.0-gogit-windows-4.0-amd64.exe. 使用默认的.exe同级目录作为库目录。

因为这会面临2个问题:

  • gitea-1.22.0-gogit-windows-4.0-amd64.exe 体积为200+MB, 每个小库目录摆一个, 磁盘空间的占用明显不合适啊,应该不需要这么浪费磁盘空间。
  • 如果一个小库一个默认的gitea-1.22.0-gogit-windows-4.0-amd64.exe,那以后升级为新的gitea-x.xx.x-gogit-windows-4.0-amd64.exe也非常不方便。

看了 gitea-1.22.0-gogit-windows-4.0-amd64.exe 的命令行帮助,官方已经考虑到这种情况。

笔记

先运行自己的有git环境的cmd

env_git.bat

set PATH=C:\Program Files\Git\cmd;%PATH%
call cmd.exe

切到gitea-1.22.0-gogit-windows-4.0-amd64.exe的同级目录

查看gitea命令行帮助

gitea-1.22.0-gogit-windows-4.0-amd64.exe --help

可以看到,有文档可以看。

...
docs             Output CLI documentation
...

将文档保存为文件,慢慢看。

gitea-1.22.0-gogit-windows-4.0-amd64.exe docs > gitea_docs.txt

查看gitea_docs.txt, 看到gitea的配置分为2部分

--work-path gitea-1.22.0-gogit-windows-4.0-amd64.exe的工作路径,可以由命令行指定。
--config 默认配置文件为 {WorkPath}/custom/conf/app.ini, app.ini中有很多配置参数,直接去改app.ini方便一些

将现存大库变物理目录的方法

先建立一个自己的git库本地的总目录

将原来的大库拷贝进入

将gitea-1.22.0-gogit-windows-4.0-amd64.exe拷贝进去

将启动库的cmd写好。

在这里插入图片描述
run_gitea_on_all_mine.bat
set PATH=C:\Program Files\Git\cmd;%PATH%
call gitea-1.22.0-gogit-windows-4.0-amd64.exe --work-path E:\my_git_rep_local\all_mine

需要注意, --work-path 带的路径需要是全路径,否则gitea报错退出

修改大库移动物理目录后的app.ini

app.ini中还有很多和大库移动前相关的旧路径,用文本替换功能都改为当前大库的新路径。

app.ini的默认位置 {WorkPath}/custom/conf/app.ini

将app.ini中和旧库路径相关的内容都改为当前库的实际路径。

需要注意,在app.ini中, 路径符号 "\“和”/"都在用,改动时,路径符号是哪种,我们就用哪种。

改完的app.ini的内容
APP_NAME = Gitea: Git with a cup of tea
RUN_USER = chenx
WORK_PATH = E:\my_git_rep_local\all_mine
RUN_MODE = prod

[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = gitea
USER = gitea
PASSWD = 
SCHEMA = 
SSL_MODE = disable
PATH = E:\my_git_rep_local\all_mine\data\gitea.db
LOG_SQL = false

[repository]
ROOT = E:/my_git_rep_local/all_mine/data/gitea-repositories

[server]
SSH_DOMAIN = localhost
DOMAIN = localhost
HTTP_PORT = 3000
ROOT_URL = http://localhost:3000/
APP_DATA_PATH = E:\my_git_rep_local\all_mine\data
DISABLE_SSH = false
SSH_PORT = 22
LFS_START_SERVER = true
LFS_JWT_SECRET = dFEo5xBcD0w-yvpf40Kc8bF4TfW5uHIDEcaLz1f6JROrjo
OFFLINE_MODE = true

[lfs]
PATH = E:/my_git_rep_local/all_mine/data/lfs

[mailer]
ENABLED = false

[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ALLOW_ONLY_EXTERNAL_REGISTRATION = false
ENABLE_CAPTCHA = false
REQUIRE_SIGNIN_VIEW = false
DEFAULT_KEEP_EMAIL_PRIVATE = false
DEFAULT_ALLOW_CREATE_ORGANIZATION = true
DEFAULT_ENABLE_TIMETRACKING = true
NO_REPLY_ADDRESS = noreply.localhost

[openid]
ENABLE_OPENID_SIGNIN = true
ENABLE_OPENID_SIGNUP = true

[cron.update_checker]
ENABLED = false

[session]
PROVIDER = file

[log]
MODE = console
LEVEL = info
ROOT_PATH = E:/my_git_rep_local/all_mine/log

[repository.pull-request]
DEFAULT_MERGE_STYLE = merge

[repository.signing]
DEFAULT_TRUST_MODEL = committer

[security]
INSTALL_LOCK = true
INTERNAL_TOKEN = eyJhbGciOiJIUzI1NiIsInR5dcCI6IkpXVCJ9.eyJuYmYiOjE3MTY4OTI1aOTN9.R7H4lodSxK0zCVclahWFtkfW02Xc7yNVqEeybpg1l-ycY
PASSWORD_HASH_ALGO = pbkdf2

[oauth2]
JWT_SECRET = pouhXNS3JdvpEHhD8rf_NJjSuPkTu8vzIbhMKahqgqlxus

这样改完的app.ini, 用到的东西都是大库移动到新目录的相关内容。

如果大库移动位置后,不改app.ini

如果将已有大库,从旧位置移动到新位置。然后不改app.ini, 直接用命令行带工作路径启动gitea.

会在旧的大库位置产生data目录的数据,导致登录网页的用户名和口令都不对。

改完app.ini后,就可以正常使用移动后的大库了

用gitea.exe带着工作路径启动,一切都和改大库位置之前的效果一样了。

测试

启动run_gitea_on_all_mine.bat后,启动速度很快,和之前一样。

没有在旧库位置产生任何文件。

用chrome登录gitea app的url, 用旧库的用户名和口令,可以正常登录。

在新的迁出空目录,完整克隆新启动的gitea的库连接,可以完整迁出。

在已经迁出的新git目录,进行git操作(add, commit, push, view log)正常。

自动检查gitea库

如果在将库移动了位置,或者更新了gitea的.exe(e.g. gitea-1.22.0-gogit-windows-4.0-amd64.exe to gitea-1.22.3-gogit-windows-4.0-amd64.exe)后,不放心库格式和数据是否正常,可以用gitea的命令行检查。

我将命令行写成了一个cmd, 方便检查

run_gitea_doctor.bat
@echo off
set PATH=C:\Program Files\Git\cmd;%PATH%

rem echo next, list gitea doctor checks
rem pause
rem call gitea-1.22.3-gogit-windows-4.0-amd64.exe --work-path E:\my_git_rep_local\all_mine doctor list

echo next, list gitea doctor runing
rem pause
rem call gitea-1.22.3-gogit-windows-4.0-amd64.exe --work-path E:\my_git_rep_local\all_mine doctor check all fix color
call gitea-1.22.3-gogit-windows-4.0-amd64.exe --work-path E:\my_git_rep_local\all_mine doctor check

echo END
pause

检查效果

只要能正常将库克隆迁出/添加文件/提交/查看日志,一般就没问题。

不过为了心里安慰,来个检查也行。

在这里插入图片描述

doctor-orderxxx的临时文件删不掉,应该是gitea的bug, 不影响。

在检查完,我们手工删掉就行。留在那里也不影响,因为这些临时文件都是0KB.

gitea新版本的下载

如果要自己去github上找gitea的发布版,要爬梯子。麻烦。

从gitea主页上下载,可以正常下载。

gitea主页上的发布版的url有规律,只要知道最新版本是什么,就能拼出下载地址。

随便记录一个windows版的gitea url备用

打开chrome, 打开bing, 搜索gitea, 找到gitea主页。

去gitea主页 => 产品 => gitea

点开下载列表,将鼠标移动到windows版上,右击选择复制链接地址。

在这里插入图片描述

复制的下载链接如下:

https://dl.gitea.com/gitea/1.22.1/gitea-1.22.1-gogit-windows-4.0-amd64.exe?_gl=1*1k6zx0z*_gcl_au*MTIyNzQ2NzA3OC4xNzI4NzA1Mjk4LjE5MjMxMTg2OTMuMTcyODcwNTM0Ny4xNzI4NzA1NDE4

url从前往后数,第一个"?"后面带的是参数,没有这些参数也能下载成功。

将参数去掉后的下载url如下

https://dl.gitea.com/gitea/1.22.1/gitea-1.22.1-gogit-windows-4.0-amd64.exe

假设gitea的数字版本为1.23.1 = XXX

猜测其他版本的gitea下载连接如下:

https://dl.gitea.com/gitea/XXX/gitea-XXX-gogit-windows-4.0-amd64.exe

官方网站上下载的版本不是最新的,而是gitea-v1.22.1.

看官网新闻上,可以知道,当前最新版本为gitea-v1.22.3

在这里插入图片描述

那么,将数字版本XXX换为1.22.3, 就得到了下载地址如下:

~~https://dl.gitea.com/gitea/XXX/gitea-XXX-gogit-windows-4.0-amd64.exe~~ 
https://dl.gitea.com/gitea/1.22.3/gitea-1.22.3-gogit-windows-4.0-amd64.exe

尝试下载,拼接出的url是有效的。

在这里插入图片描述

下载后,就可以更新手头的url版本了。

在这里插入图片描述
如果忘记了用户名/口令,或者新版gitea破坏了用户名/口令

更新gitea新版,如果版本差的比较多,可能会出现原始的用户名和口令无效的情况(但是数据正确)。

此时,可以自己用gitea工具改本地的git管理员用户名和口令(gitea 1.16.8 忘记口令的处理思路).

如果要将库迁移到另外一台计算机上

gitea的git库备份与恢复

将库改名

如果库名不合意,想改一下,可以用gitea的网页提供的功能来改。

在这里插入图片描述
在这里插入图片描述

改完之后,重新登陆gitea网页, 就可以看到库改名成功了。

迁出有依赖子库的git项目

// 一个命令搞定
git clone git@github.com:FreeRTOS/FreeRTOS.git --recurse-submodules

// 如果克隆一个库时,没有克隆子库,那么就需要2个命令搞定
e.g. 先克隆了一个主库 git clone git@github.com:FreeRTOS/FreeRTOS.git
后来发现需要子库,这时,就要用下面的命令来更新主库用的子库
git submodule update --init --recursive

做gitea脚本来代替实际的gitea全版本名称

原来调用gitea的脚本如下

set PATH=C:\Program Files\Git\bin;C:\Program Files\Git\cmd;C:\soft\gitea;%PATH%
call gitea --work-path E:\my_git_rep\rep_my_tools\my_tools

这样的话,在C:\soft\gitea目录中,必须有一个文件叫做gitea.exe.

但是gitea下载后,一般都是全版本名称(e.g. gitea-1.22.3-gogit-windows-4.0-amd64.exe).

以前,都是将全版本名称改为gitea.exe.

这次写了一个gitea.bat, 这样以后升级gitea方便一些。

@echo off
rem @file gitea.bat
set path=%~dp0;%path%
gitea-1.22.3-gogit-windows-4.0-amd64.exe %*

在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐