我已将 git 存储库从 Gitlab 迁移到 Gogs,并借此机会更改了一些组织/组名称并重新组织存储库。
对于使用 Composer 或其他打包程序的项目,我想保持当前的 Git+SSH URL 正常工作。
我在 Gogs 中寻找了一种方法,但似乎没有任何东西可以达到这个目的,所以我有另一个想法(这在其他上下文中也可能有用):重写服务器上的 SSH 路径,就像 Apache 使用 mod_rewrite 所做的那样。有没有办法用 SSH 来做到这一点?请注意,在 中添加命令.authorized_keys
有点棘手,因为 Gogs 已经使用它来通过命令协调对存储库的访问。
答案1
因此,经过多次调整后,我得出的结论是,SSH 中没有内置任何内容来执行 mod_rewrite 对 Apache2 所做的操作,这很可能是出于很好的原因。
因此,我转而采用替换gogs
从 SSH 调用的命令(在.authorized_keys
文件中通过重写环境变量 SSH_ORIGINAL_COMMAND 的脚本,然后调用真正的 gogs 可执行文件。
SSH_ORIGINAL_COMMAND 是 SSH 在调用写入的命令之前将发送到服务器的命令写入其中的变量.authorized_keys
(当有一个时)。对于gogs来说,这个变量用于检查存储库是否存在,验证它是否属于登录的SSH用户等,最后对其执行git操作。通过更改此变量中的存储库路径,可以动态为存储库添加别名。