我正在设置部署脚本。基本过程是:
1.将更改推送到服务器上的裸存储库
1.然后根据新的标签将创建一个新的文件夹的版本。
1.使用git archive将文件移动到release目录下
1.安装一些迁移脚本并将其激活(如果一切成功)。
问题是我的存储库包含一个子模块,它没有被放在存档中,因此没有被放在发布目录中。
我见过git-archive-all,但它在裸库上不起作用。
如果不可能,我在考虑,
1.使仓库不空,并更新工作副本,这将允许我使用git-archive-all。或者
1.在服务器上有一个子模块的第二个裸存储库,我可以从中获得一个存档(必须查看这个以确保我得到正确的修订版)。
6条答案
按热度按时间6yt4nkrj1#
基于这里的答案和评论。你可以创建非裸存储库并运行:
字符串
--verbatim-files-from
--xform s:^:prog/:
完整版本:
型
w3nuxt5m2#
我使用这个python包https://github.com/Kentzo/git-archive-all。你可以使用
字符串
在OSX上,您也可以使用
brew install git-archive-all
安装它gblwokeq3#
如果你的子模块在一个可以从服务器访问的仓库中,我宁愿有一个post-receive钩子,
git submodule update --init
)git archive
从第二个repo(你一定会得到正确的版本,因为非裸repo会引用子模块的正确版本)由于非裸存储库将包含父存储库 * 和 * 其子模块,因此
git archive-all
将能够检测.git
子目录并归档 * 所有内容 *。如果子模块无法从服务器访问,这意味着:
ztigrdn84#
这应该可以做到:https://github.com/meitar/git-archive-all.sh/wiki
noj0wjuj5#
下面是一个简短的例子:
字符串
n9vozmp46#
在常规归档命令之后运行以下命令:
第一个月
在这里,REPO_ROOT是你的repo所在的位置,TARGET_ROOT是你放置存档版本的位置。(我假设你有一个TARGET_ROOT文件夹,第一个
git archive
的扩展版本在那里调用。如果你想要一个最终的zip/tar,你可以tar/zip最终的文件夹)git submodule foreach
提供了$path
变量。有关详细信息,请参阅git help submodule
foreach部分。