# Skyworks Git

## 前言

​		一般来说，Gitea的名气是比较大的。然而，因为搞了两天才发现Gitea和Windows Server 2022 以及 2025都存在莫名其妙的兼容性问题，导致没法push任何代码，全都是莫名其妙的认证错误:

```sh
2024-12-01 01:06:31.011 [info] > git push -u origin dev [1911ms]
2024-12-01 01:06:31.011 [info] To https://gitea.skyw.me/[REDACTED]/test.git
2024-12-01 01:06:31.011 [info] To https://gitea.skyw.me/[REDACTED]/test. git
! [ remote rejected] dev -> dev (pre-receive hook declined)d error: failed to push some refs to ' https://gitea.skyw.me/[REDACTED]/test: git'
```

排除了cloudflare的代理问题后，开了5个不同网络环境，不同windows版本的虚拟机，发现只有Windows Server会出这个莫名其妙的问题，遂罢。

## 启动配置		

于是开始找替代品，发现了gitbucket，观察到优势是单个可执行文件+java，直接上了，之后万一遇到迁移难度也是最小的：https://github.com/gitbucket/gitbucket

​		考虑到多用途，电脑上装了114个甚至514个不同版本的java同时运行，启动脚本就不使用环境变量了。直接查阅readme的config，和Minecraft开服一样，随手写一个启动参数完事:https://github.com/gitbucket/gitbucket/wiki/Basic-configurations

```shell
"C:\Program Files\dragonwell-17.0.8.0.8+7-GA\bin\java.exe" -DsocksProxyHost=10.0.88.188 -DsocksProxyPort=7890 -Dlogback.configurationFile="C:\services\gitbucket\logback.xml" -jar gitbucket.war --port=33333 --gitbucket.home="G:\Skyworks-Gitbucket-Storage" --temp_dir="Y:\temp" --max_file_size=1073741824
pause 
```

这里设置一个pause系调试期间防止自动倒闭用的，后面用不着了。

注意java的-D参数是写在可执行文件（.jar）前面的，没有-D的参数是写在后面的，别的没了，看一下就知道意思。

启动后装了一些plugin，就和minecraft装mod放到mod文件夹里面一样，直接放到你的--gitbucket.home的plugins文件夹里面，重新启动~~MC服务器~~gitbucket测试即可；

之后就是注册为服务+配置log参数，（https://github.com/gitbucket/gitbucket/wiki/Tracing-and-logging）注意默认的logback参数可能没有包含删除一定日期之前的log，千万不要把log等级打得太高又不删除，java最擅长在运行时喷射大量log，你的硬盘很快就会核爆。

注册为服务推荐使用nssm（比windows那个sc create功能丰富多了），注意下载pre-release版（显然能看出有点老了）https://nssm.cc/download，否则注册服务的GUI出不来。然后nssm -install [SERVICE_NAME] 正常注册，选择可执行文件为你写的启动bat，完事了，之后你就可以在任务管理器-服务里面右键轻松控制服务启停，十分的好用（确信

## 服务配置

​		东西起来了就可以进去玩了。这玩意用的事java特有的H2 database，我们无视他的内部数据库警告（反正也不是工业生产环境），直接进去，发现web界面只能query。这边建议安装一个本地能够增删改查H2数据库的软件，本地库的密码就和库放在一起（这就是为什么会有内部数据库警告）