设置 Weblate 以创建拉取请求

Setting up Weblate to create pull requests

我想使用 Weblate 帮助对在 GitHub 上开发的开源项目进行本地化。我没有维护者存储库的写入权限,必须提交拉取请求以获取我所做的改进。看起来像 Weblate supports creating pull requests,但我无法让它工作。

到目前为止我做了什么:

  1. 运行 Weblate 3.4(在 Docker 容器中)并为 GitHub 访问设置 SSH 密钥。
  2. 将 Docker 环境变量 WEBLATE_GITHUB_USERNAME 设置为我的 GitHub 用户名。
  3. 在 Docker 容器和 运行 hub clone octocat/Spoon-Knife 中打开了一个 shell 会话(作为 rootweblate 用户;这询问用户名和密码并克隆存储库;令牌在我重新启动 Docker 容器后仍然存在)
  4. 设置 Weblate 项目。
  5. 在项目中设置一个组件。
    • 源代码存储库 = 上游 GitHub repo (git@github.com:maintainer/repo)
    • 存储库分支 = master
    • 仓库推送 URL = 我的分叉 GitHub 仓库 (git@github.com:me/repo)
    • 版本控制系统:GitHub (编辑:2019 年 2 月 10 日添加)

编辑(2019 年 2 月 10 日): 在发现创建组件时必须指定 "GitHub" 作为版本控制系统后,Weblate 现在尝试将更改推送到分叉并创建拉取请求。集线器工具的身份验证不起作用。当我在 Repository Maintance 中单击 "push" 时,出现错误。堆栈跟踪中的某处存在此错误:

'github.com username: github.com password for (never stored): ' 'Error forking repository: Unauthorized (HTTP 401)\nRequires authentication'

我强烈怀疑Python打不开~/.config/hub。该文件肯定存在。也许这与 Python?

如何解决 ~ 有关

我自己想出来的:

问题是当 Weblate 调用 GitHub hub 程序时,'~/.config/hub' 被解析为 '/root/.config/hub'。但是,用户 Weblate 是 运行 和 weblate,因此它无权访问 root 的主目录。

我已通过将“/home/weblate/.config/hub”硬编码为集线器配置文件的位置并确保在该位置创建配置文件来修复此问题。