我已经看过一百个不同的过时的,临时的脚本,要么使用git-svn,要么在幕后做所有的努力工作,但我仍然觉得我没有找到正确的方法来做到这一点。
我有一个本地git仓库,我想部署到我的Wordpress托管的SVN仓库。理想的功能是我在本地开发,在我准备好时推送到github,然后将我所做的所有更改发送到wordpress repo。
我的远程wordpress repo会相应更新,删除由于重构和相应标记分支而可能不再存在的文件和文件夹。我的github repo应该像往常一样,标记传入的版本。
https://github.com/deanc/wordpress-plugin-git-svn
http://danielbachhuber.com/2010/09/29/how-to-properly-use-git-with-wordpress-org-subversion/
答案 0 :(得分:1)
嗯,没有一个好方法可以做到这一点。但是,这是一个建议。
您可以做的是在公共目录之外的服务器上创建一个裸存储库。此存储库将更改推送到您的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存储库。
您必须修改上面的代码才能推送更改。我刚刚给出了参考。