好吧,没有一种好的方法可以做到这一点。但是,这里有一个建议。
您可以做的是在公共目录之外的服务器上创建一个裸存储库。此存储库会将更改推送到您的 SVN 存储库,并且就像您的 SVN 存储库的看门人一样。您的网站已经运行了一个 SVN 存储库。
$ cd; mkdir site_bare.git; cd site_bare.git
$ git --bare init
您可以在这个裸存储库的 post-commit 挂钩上使用 shell 脚本,例如https://github.com/deanc/wordpress-plugin-git-svn 。
#!/bin/sh
echo
echo "**** Pulling changes into the SVN repository [Hub's post-update hook]"
echo
cd $HOME/www || exit
unset GIT_DIR
# Change to SVN dir and commit changes
echo "Changing directory to SVN and committing to trunk"
cd $SVNPATH/trunk
svn commit --username=$SVNUSER -m "$COMMITMSG"
# Create a new tag and commit it :)
echo "Creating new SVN tag"
cd $SVNPATH
svn copy trunk/ tags/$NEWVERSION1
svn commit --username=$SVNUSER -m "Updating tag to $NEWVERSION1"
# Update the version number
echo "Updating version number for future executions"
cd $CURRENTDIR
echo $NEWVERSION1 > version.txt
exec git-update-server-info
我从https://github.com/deanc/wordpress-plugin-git-svn/blob/master/deploy.sh获取了这个,但是你可以直接获取 git commit 消息而不是要求一个。
在您的本地计算机上,将裸存储库添加为远程并将更改推送到它:
git remote add bare <bare-repository-url>
它的工作原理是,您编写一些代码并将其推送到裸存储库,该存储库使用其更新后挂钩将更改推送到 SVN 存储库。
您必须修改上面的代码才能推送更改。我刚刚给出了一个参考。