Pet*_*ete 4 git wordpress githooks
我正在使用Wordpress插件进行开发。我的开发目录包含许多特定于开发的内容(例如Grunt文件,Sass文件,git存储库本身等)。
显然,我不想分发包含所有这些开发文件的文件夹。人们下载我的Wordpress插件时不希望有MB的Grunt文件。
但是到目前为止,我的“发布”过程很麻烦:
我不知道实现此目标的最佳方法,但是我对Git钩子非常陌生,我有这样的想法:我是否可以设置一个Git钩子,使其仅将所需的生产文件压缩为ZIP文件并存储它与回购?这样,每次提交时,它将自动创建一个新的发行版ZIP。
那可能吗?如果是这样,有人可以指出我正确的方向吗?
哦,我也在Windows(?_ ?;)上。因此,我希望有一种方法可以在Windows上实现。
我不能代表Windows,但是:
修改“您将要提交的内容”的预提交钩子很烦人(如果没有其他问题,则违反了“最小惊讶规则”,您的版本控制系统只是在其中存储您告诉它存储的版本)。除此之外,存储大型的预压缩二进制文件会干扰git尝试在打包文件中节省空间的尝试,并且会导致快速的存储库膨胀,性能下降,内存不足等。ZIP归档文件是预压缩的二进制文件,因此将表现不佳。
通常,处理发行版的一种更合理的“挂钩”方法是设置一个“发行版服务器”,将新发行版推送到该“发行版服务器”,并让该推送触发存档生成。(有多种方法可以在没有单独的服务器/存储库的情况下执行此操作,您可以采用更拉式的方式进行操作,但推式很容易说明。)
[ 编辑:我本来考虑过git archive但没有意识到您可以方便地排除文件,所以在下面写下了。因此,jthill的答案更好,应该是第一个手段。在某些情况下出于某些原因git archive可能无法使用的情况下,我将保留此位置作为替代。]
例如,这是一个服务器端post-receive挂钩代码片段,它检查是否release*已推送名称匹配的分支,如果是,则调用具有该分支名称的shell函数(每个这样的分支一次):
#! /bin/sh
NULL_SHA1=0000000000000000000000000000000000000000
scan()
{
local oldsha newsha fullref shortref
local optype
while read oldsha newsha fullref; do
case $oldsha,$newsha in
$NULL_SHA1,*) optype=create;;
*,$NULL_SHA1) optype=delete;;
*) optype=update;;
esac
case $fullref in
refs/heads/*)
reftype=branch
shortref=${fullref#refs/heads/}
;;
*)
reftype=other
shortref=fullref
;;
esac
case $optype,$reftype,$shortref in
create,branch,release*|update,branch,release*)
do_release $shortref;;
esac
done
}
scan
Run Code Online (Sandbox Code Playgroud)
(以上大部分内容都是样板,我已经精简了要点)。您将必须编写do_release类似于以下内容的函数(完全未经测试):
do_release()
{
local tmpdir=/tmp/build.$$ # or use mktemp -d
# $tmpdir/index is git's index; $tmpdir/t is the work tree
trap "rm -rf $tmpdir; exit 1" 1 2 3 15
rm -rf $tmpdir
mkdir $tmpdir/t
GIT_INDEX_FILE=$tmpdir/index GIT_WORK_TREE=$tmpdir/t git checkout $1
# now clean out grunt files and make zip archive
(cd $workdir/t; rm -rf grunt; zip ../t.zip .)
# put completed zip archive in export location, name it
# based on the branch name
mv $workdir/t.zip /place/where/zip/files/live/$1.zip
# clean up temp dir now, and no longer need to clean up
# on signal related abort
rm -rf $tmpdir
trap - 1 2 3 15
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
561 次 |
| 最近记录: |