1

git-svnを使用するか、舞台裏ですべてのハードワークを実行する、100種類の古い、その場しのぎのスクリプトを見てきましたが、それでも、これを行う正しい方法を見つけたとは思えません。

WordpressでホストされているSVNリポジトリにデプロイしたいローカルgitリポジトリがあります。理想的な機能は、ローカルで開発し、準備ができたらgithubにプッシュしてから、行ったすべての変更をワードプレスリポジトリに送信することです。

私のリモートワードプレスリポジトリはそれに応じて更新され、それに応じてブランチのリファクタリングとタグ付けのために存在しなくなった可能性のあるファイルとフォルダーが削除されます。私のgithubリポジトリは通常どおりに機能し、着信バージョンにタグを付けます。

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 フックで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 に答える