Вы разрабатываете плагин на GitHub, и теперь вы готовы развернуть его на WordPress.org … о-о, разработка плагинов WordPress.org осуществляется через SVN. Что теперь? Не волнуйтесь, для этого есть сценарий.
Недавно я разрабатывал плагин для WordPress, который хотел выпустить в каталоге плагинов WordPress.org. В настоящее время я предпочитаю использовать Git в качестве программного обеспечения для контроля версий (я использовал SVN), но каталог плагинов использует SVN. К счастью, на GitHub есть хороший скрипт под названием « Сценарий развертывания каталога плагинов WordPress для Github », который позволяет мне работать с Git, а затем развернуть его непосредственно в SVN-репозиторий на WordPress.org, когда я буду готов выпустить последнюю версию.
Эта версия сценария принадлежит Бену Балтеру , который был разветвлен из аналогичного сценария Брентом Шепардом , который был разветвлен из сценария Дином Клатворти . Каждый из них сделал различные улучшения по сравнению с предыдущим, и я нашел конечный результат действительно полезным.
Я создал свой собственный форк этого скрипта, который я использую, поэтому у него есть мое имя пользователя SVN.
Сценарий
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
#!
#
# Script to deploy from Github to WordPress.org Plugin Repository
# A modification of Dean Clatworthy’s deploy script as found here: https://github.com/deanc/wordpress-plugin-git-svn
# The difference is that this script lives in the plugin’s git repo & doesn’t require an existing SVN repo.
# Source: https://github.com/thenbrent/multisite-user-management/blob/master/deploy.sh
#prompt for plugin slug
echo -e «Plugin Slug: \c»
read PLUGINSLUG
# main config, set off of plugin slug
CURRENTDIR=`pwd`
CURRENTDIR=»$CURRENTDIR/$PLUGINSLUG»
MAINFILE=»$PLUGINSLUG.php» # this should be the name of your main php file in the wordpress plugin
# git config
GITPATH=»$CURRENTDIR/» # this file should be in the base of your git repository
# svn config
SVNPATH=»/tmp/$PLUGINSLUG» # path to a temp SVN repo.
SVNURL=»http://plugins.svn.wordpress.org/$PLUGINSLUG/» # Remote SVN repo on WordPress.org, with no trailing slash
SVNUSER=»benbalter» # your svn username
# Let’s begin…
echo «……………………………………»
echo
echo «Preparing to deploy WordPress plugin»
echo
echo «……………………………………»
echo
# Check version in readme.txt is the same as plugin file
NEWVERSION1=`grep «^Stable tag» $GITPATH/readme.txt |
echo «readme version: $NEWVERSION1»
NEWVERSION2=`grep «^Version» $GITPATH/$MAINFILE |
echo «$MAINFILE version: $NEWVERSION2»
if [ «$NEWVERSION1» != «$NEWVERSION2» ];
echo «Versions match in readme.txt and PHP file. Let’s proceed…»
cd $GITPATH
echo -e «Enter a commit message for this new version: \c»
read COMMITMSG
git commit -am «$COMMITMSG»
echo «Tagging new version in git»
git tag -a «$NEWVERSION1» -m «Tagging version $NEWVERSION1»
echo «Pushing latest commit to origin, with tags»
git push origin master
git push origin master —tags
echo
echo «Creating local copy of SVN repo …»
svn co $SVNURL $SVNPATH
echo «Ignoring github specific files and deployment script»
svn propset svn:ignore «deploy.sh
README.md
.git
.gitignore» «$SVNPATH/trunk/»
#export git -> SVN
echo «Exporting the HEAD of master from git to the trunk of SVN»
git checkout-index -a -f —prefix=$SVNPATH/trunk/
#if submodule exist, recursively check out their indexes
if [ -f «.gitmodules» ]
then
echo «Exporting the HEAD of each submodule from git to the trunk of SVN»
git submodule init
git submodule update
git submodule foreach —recursive ‘git checkout-index -a -f —prefix=$SVNPATH/trunk/$path/’
fi
echo «Changing directory to SVN and committing to trunk»
cd $SVNPATH/trunk/
# Add all new files that are not set to be ignored
svn status |
svn commit —username=$SVNUSER -m «$COMMITMSG»
echo «Creating new SVN tag & committing it»
cd $SVNPATH
svn copy trunk/ tags/$NEWVERSION1/
cd $SVNPATH/tags/$NEWVERSION1
svn commit —username=$SVNUSER -m «Tagging version $NEWVERSION1»
echo «Removing temporary directory $SVNPATH»
rm -fr $SVNPATH/
echo «*** FIN ***»
|
использование
Я использую этот скрипт, разместив его в моем каталоге / wp-content / plugins / . Затем, когда я буду готов удалить один из моих плагинов из Терминала, я запускаю ./deploy.sh . Затем скрипт запрашивает у меня плагин, который я предоставляю. Он проверяет, совпадает ли версия плагина со «стабильной» версией в файле readme.txt моего плагина, и затем приступает к развертыванию.
Что это на самом деле делает?
По сути, скрипт выполняет следующие шаги:
- Создает тег для версии выпуска в вашем репозитории Git
- Создает временную SVN-проверку хранилища вашего плагина с WordPress.org.
- Экспортирует содержимое вашего Git-репозитория в SVN-репозиторий
- Передает эти изменения в хранилище SVN
- Создает тег в репозитории SVN и фиксирует, что
- Удаляет временную проверку SVN с вашего компьютера разработчика
Это оно! Ну, есть еще несколько вещей, таких как рекурсивная проверка, чтобы она поддерживала подмодули и т. Д., Но в этом суть.
Наслаждайтесь!