我有一个用 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
并且更正对(from ) 的调用git-archive
不会在 tar ...:(
第三种方法 https://github.com/Kentzo/git-archive-all
从我的角度来看,由于与最新的 python 3.3 不兼容,并且由于相同的文件抱怨,使用 2.7 仍然不能完全工作,因此已经过时。
所以我现在的问题是:最近有什么方法/方法来处理导出/归档一个包含子模块的 git 项目吗?
或者我应该检查这个工作流程的子树吗?
提前致谢