1

我见过一百种不同的过时的临时脚本,它们要么使用 git-svn,要么在幕后完成所有艰苦的工作,但我仍然觉得我没有找到正确的方法来做到这一点。

我有一个本地 git 存储库,我想将它部署到我的 Wordpress 托管的 SVN 存储库。理想的功能是我在本地开发,准备好后推送到 github,然后将我所做的所有更改发送到 wordpress 存储库。

我的远程 wordpress 存储库将相应更新,删除由于重构和相应标记分支而可能不再存在的文件和文件夹。我的 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/

4

1 回答 1

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

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

于 2012-10-01T08:26:34.147 回答