将git repo部署到Wordpress SVN的正确方法是什么?

时间:2012-09-20 20:08:47

标签: wordpress git svn deployment git-svn

我已经看过一百个不同的过时的,临时的脚本,要么使用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/

1 个答案:

答案 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存储库。

您必须修改上面的代码才能推送更改。我刚刚给出了参考。

相关问题