【发布时间】:2013-01-24 20:12:36
【问题描述】:
我有一个用 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 仍然不能完全工作,因为 samefile 抱怨。
所以我现在的问题是: 最近有什么方法/方法来处理导出/归档一个包含子模块的 git 项目吗?
或者我应该检查这个工作流程的子树吗?
提前致谢
【问题讨论】:
-
我是 Kentzo/git-archive-all 的作者。它现在兼容 python 3.3。还有什么问题?
标签: git-submodules git-archive