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 的命令行帮助,官方已经考虑到这种情况。
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-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写好。

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的默认位置 {WorkPath}/custom/conf/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, 直接用命令行带工作路径启动gitea.
会在旧的大库位置产生data目录的数据,导致登录网页的用户名和口令都不对。
用gitea.exe带着工作路径启动,一切都和改大库位置之前的效果一样了。
启动run_gitea_on_all_mine.bat后,启动速度很快,和之前一样。
没有在旧库位置产生任何文件。
用chrome登录gitea app的url, 用旧库的用户名和口令,可以正常登录。
在新的迁出空目录,完整克隆新启动的gitea的库连接,可以完整迁出。
在已经迁出的新git目录,进行git操作(add, commit, push, view log)正常。
如果在将库移动了位置,或者更新了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, 方便检查
@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.
如果要自己去github上找gitea的发布版,要爬梯子。麻烦。
从gitea主页上下载,可以正常下载。
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工具改本地的git管理员用户名和口令(gitea 1.16.8 忘记口令的处理思路).
如果库名不合意,想改一下,可以用gitea的网页提供的功能来改。


改完之后,重新登陆gitea网页, 就可以看到库改名成功了。
// 一个命令搞定
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的脚本如下
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 %*


