gpt4 book ai didi

git-submodules - 带有子模块的 git 存档导出(git 存档全部/递归)

转载 作者:行者123 更新时间:2023-12-03 22:33:00 29 4
gpt4 key购买 nike

我有一个用 git 版本化的网站目录。我将子模块用于 Twitter Bootstrap、colorbox 和 lessjs 等所需库,因为我不应该跟踪源代码,而只跟踪我使用的代码版本。

现在我想部署项目,因此我也需要子模块代码。
通过使用 git archive我没有从子模块中获取源文件/代码。

以下三种方法尝试实现我想要的但不起作用:
第一种方法

#!/bin/sh

export revision="$1"

export GIT_INDEX_FILE=".git/tmpindex"
rm -f "$GIT_INDEX_FILE"

git read-tree $revision

export up="$(pwd)"

read_one_level () {
export GIT_ALTERNATE_OBJECT_DIRECTORIES="$GIT_ALTERNATE_OBJECT_DIRECTORIES":$(
git submodule foreach 'echo "$up/$path/.git/objects"' |
grep -E -v '^(Entering|No submodule mapping found)' |
tr '\n' : |
sed 's/:$//'
)

git submodule foreach '
cd "$up"
subcommit=$(git rev-parse :"$path")
git rm --cached "$path"
git read-tree -i --prefix="$path/" $subcommit
' >/dev/null
}

while git ls-files -s | grep -q ^160000; do
read_one_level
done

git archive --format=tar $(git write-tree)

rm -f "$GIT_INDEX_FILE"

托马斯·拉斯特在 http://git.661346.n2.nabble.com/Running-git-archive-recursively-over-submodules-td4577012.html

这给了我在 Windows 和 Linux 上都没有找到对象文件的错误。

第二种方法
https://github.com/meitar/git-archive-all.sh

提示在 Windows 上找不到 mktemp。并更正对 git archive 的调用(来自 git-archive )在 tar ...:(

第三种方法
https://github.com/Kentzo/git-archive-all

从我的角度来看,由于与最新的 python 3.3 不兼容,并且由于相同的文件提示,使用 2.7 仍然不能完全工作,所以它已经过时了。

所以我现在的问题是:
有没有最近的方法/方法来处理导出/归档一个包含子模块的 git 项目?

或者我应该检查这个工作流程的子树吗?

提前致谢

最佳答案

我正在使用以下代码

git archive -o release.zip HEAD
git submodule --quiet foreach 'cd $toplevel; zip -ru release.zip $sm_path'

创建包含所有子模块的 git 存储库的完整存档。

如果你想变得花哨,你甚至可以通过重写 zip 评论
echo -e "Repository:\n$(git rev-parse HEAD)\nSubmodule status:\n$(git submodule status)" | zip -u release.zip -z

所有在 windows 上使用 infozip。

关于git-submodules - 带有子模块的 git 存档导出(git 存档全部/递归),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14783127/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com