2

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

到目前为止我所做的:

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

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

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

我强烈怀疑 Python 无法打开~/.config/hub. 该文件肯定存在。也许这与Python如何解决〜有关?

4

1 回答 1

3

我自己想通了:

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

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

于 2019-02-17T10:46:13.580 回答