远程站点上的 GitHub git hook 以更新 wiki 页面

Posted

技术标签:

【中文标题】远程站点上的 GitHub git hook 以更新 wiki 页面【英文标题】:GitHub git hook on remote site to update wiki pages 【发布时间】:2022-01-14 15:30:37 【问题描述】:

GitHub 上的 LTP 项目将 wiki 源存储在 doc/ 目录中(但还有其他文件不是 wiki 源)。

我不时使用本地脚本更新 GitHub wiki,该脚本

    ltp.wiki.git

    将文件从 ltp.git doc/ 目录复制到 ltp.wiki.git

    git commit . in ltp.wiki.git

    git push in ltp.wiki.git

我想要一个 git 钩子,它会在推送远程存储库 (post-update?) 后执行。这可能吗?

【问题讨论】:

【参考方案1】:

GitHub 不支持 Git 挂钩(至少在 GitHub.com 上,它们在 GitHub Enterprise 上受支持)。但是,您可以使用GitHub Actions 在推送中运行任意代码,尽管是在隔离的 VM 中而不是在实际的 Git 服务器上。

.github/workflows/wiki-mirror.yml(或.github/actions 中您想要的任何文件名)中,您可以添加一个动作来进行同步。由于 GitHub wiki 需要 markdown 文件,因此这会更改 .txt 文件的扩展名以匹配:

name: "Mirror doc/ to wiki"

# Run on changes to the `doc` directory on the `master` branch
on:
  push:
    branches:
      - master
    paths:
      - 'doc/**'

jobs:
  mirror:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout main
        uses: actions/checkout@v2
        with:
          path: [repo name]
      - name: Checkout wiki
        uses: actions/checkout@v2
        with:
          repository: "[owner]/[repo name].wiki"
          path: [repo name].wiki
      - name: Copy files
        run: |
          git config --global user.email "actions@github.com"
          git config --global user.name "Wiki mirror"
          cp $GITHUB_WORKSPACE/[repo name]/doc/*.txt $GITHUB_WORKSPACE/[repo name].wiki
          cd $GITHUB_WORKSPACE/[repo name].wiki
          rename.ul -v .txt .md *.txt
          git add .
          # only commit if there are changes
          git diff-index --quiet HEAD -- || git commit -m "sync from doc/"
          git push

【讨论】:

仅供参考 Debian/Ubuntu 没有从 util-linux 发布 rename:packages.ubuntu.com/impish/amd64/util-linux/filelist。但这只是一个细节(需要进行更多更改 - 驼峰式大小写,因此可以使用普通的 cp)。

以上是关于远程站点上的 GitHub git hook 以更新 wiki 页面的主要内容,如果未能解决你的问题,请参考以下文章

Git远程仓库—Github

git 远程仓库

Git——GitHub远程仓库操作的相关命令

git hook自动化部署

git hook 自动部署

Git:与GitHub搭配及SSH登录