You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助实现SVN提交后自动同步至GitHub仓库

我来帮你搞定SVN提交后自动同步到GitHub的事儿,步骤其实很清晰,咱们一步步来:

第一步:确保你的Git-SVN仓库已正确关联SVN

你说已经克隆了SVN项目,那应该已经通过git svn clone http://example.com/svn/project/_Trunk/myproject完成了初始化。如果还没做这一步,先执行这个命令把SVN trunk拉到本地Git仓库里。

第二步:添加GitHub作为远程仓库

进入你的Git-SVN本地仓库目录,执行下面的命令把GitHub仓库设为远程:

git remote add github git@git.example.com:directory/myproject.git

第一次同步前,先把GitHub仓库的内容拉下来(如果GitHub上已有代码的话),避免冲突:

git pull github master --allow-unrelated-histories

然后把当前SVN的内容推送到GitHub做初始同步:

git push github master
第三步:设置SVN服务器的post-commit钩子(核心步骤)

要实现SVN提交后自动同步,关键是在SVN服务器上配置post-commit钩子,它会在每次SVN提交完成后自动触发同步操作。

  1. 找到SVN服务器上对应项目的仓库目录,进入hooks文件夹。你会看到一个名为post-commit.tmpl的模板文件,先复制一份并重命名为post-commit:
cp post-commit.tmpl post-commit
  1. 编辑post-commit文件,替换里面的内容为以下脚本(注意把/path/to/your/git-svn-repo改成你的Git-SVN本地仓库实际路径):
#!/bin/sh

# 切换到Git-SVN本地仓库目录
cd /path/to/your/git-svn-repo || exit 1

# 从SVN拉取最新提交,确保本地仓库和SVN同步
git svn rebase

# 将同步后的代码推送到GitHub
git push github master

exit 0
  1. 给钩子文件添加可执行权限,否则SVN服务器无法运行它:
chmod +x post-commit
一些需要注意的细节
  • 确保运行SVN服务器的用户(比如apache或svn用户)有访问你的Git-SVN本地仓库的权限,并且能通过SSH访问GitHub(需要把服务器用户的SSH公钥添加到GitHub账户的SSH密钥列表里)。
  • 如果你的SVN有分支或标签,可能需要调整git svn的配置(比如用-s参数识别标准SVN目录结构),但你这里用的是_Trunk下的项目,直接用trunk映射master就没问题。
  • 测试一下:在SVN上提交一个小修改,然后查看GitHub仓库是否自动更新了代码,如果没生效,可以检查SVN服务器的日志,看看钩子有没有报错。

内容的提问来源于stack exchange,提问作者Vestars

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:05:27