求助:WordPress插件开发与部署分支文件夹结构不一致的自动化解决方案
解决方案:自动化同步WordPress插件开发与部署分支结构
方案1:编写Shell脚本手动触发同步
直接写一个脚本,一键完成从dev分支同步文件到main分支的指定结构,彻底替代手动复制操作。
示例脚本(sync-plugin.sh)
#!/bin/bash # 切换到dev分支拉取最新代码 git checkout dev git pull origin dev # 切换到main分支同步远程最新内容 git checkout main git pull origin main # 清空trunk目录(保留.gitignore等Git相关文件) rm -rf trunk/* # 复制dev分支核心文件到trunk目录 cp -r my-plugin.php trunk/ cp -r included trunk/ cp -r admin trunk/ # 若dev分支有独立静态资源目录,同步到main的assets目录(按需启用) # cp -r assets/* assets/ # 提交并推送部署结构更新 git add trunk/ assets/ git commit -m "Sync latest dev code to deployment structure" git push origin main # 切回dev分支继续开发 git checkout dev
使用前给脚本添加执行权限:chmod +x sync-plugin.sh,运行./sync-plugin.sh即可完成全流程同步。
方案2:用GitHub Actions实现自动同步
如果代码托管在GitHub,可配置CI/CD工作流,当dev分支推送代码或打版本标签时,自动同步到main分支的部署结构。
示例工作流文件(.github/workflows/sync-deploy.yml)
name: Sync Dev to Deployment Branch on: push: branches: [dev] # 可选:仅在打版本标签时触发,比如v1.0.0 # tags: # - 'v*' jobs: sync-deployment: runs-on: ubuntu-latest steps: - name: Checkout full repository uses: actions/checkout@v4 with: fetch-depth: 0 - name: Sync dev files to main's trunk directory run: | git checkout main # 清空trunk现有内容 rm -rf trunk/* # 复制dev分支的核心文件 cp -r ./my-plugin.php trunk/ cp -r ./included trunk/ cp -r ./admin trunk/ # 同步静态资源(按需启用) # cp -r ./assets/* ./assets/ - name: Commit and push changes run: | git config --global user.name "GitHub Actions Bot" git config --global user.email "actions@github.com" git add trunk/ assets/ # 无变更时跳过提交 git commit -m "Auto-sync dev branch to deployment structure" || echo "No changes to commit" git push origin main
方案3:Git自定义钩子(本地自动触发)
在本地仓库配置post-commit钩子,每次在dev分支提交代码后自动触发同步脚本。注意该配置仅在本地生效,适合个人开发场景。
配置步骤:
- 进入仓库的
.git/hooks目录 - 创建
post-commit文件,写入以下内容:
#!/bin/bash ./sync-plugin.sh
- 给钩子文件添加执行权限:
chmod +x post-commit
内容的提问来源于stack exchange,提问作者Hi10
相关产品推荐
相关产品推荐

