我想创建一个项目,该项目从两个存储库中借用,稀疏签出。但是,“ $ {GIT_REPO} / info / sparse-checkout”的格式仅引用路径,而不引用以树状或repo为中心的路径。因此,我似乎无法像这样的稀疏签出文件中那样引用特定分支:repo::branch:~/path
因此,在多个存储库中,以下内容对我不起作用:
git config core.sparseCheckout true
git remote add -f repo1 git://...
git remote add -f repo2 git://...
echo "path/within_repo/to/desired_subdir/*" > .git/info/sparse-checkout
git checkout [<tree-ish>]
答案 0 :(得分:0)
...“ $ {GIT_REPO} / info / sparse-checkout”的格式仅引用路径
是的。
git remote add -f repo1 git:// ...
存储库(和远程名称)无关。重要的是提交。
因此,我似乎无法引用特定分支...
分支名称也不相关。分支机构的名称随时间推移而变化;提交哈希ID不会。每当您想完全特定于某个特定提交时,请使用其哈希ID。
如果稀疏签出文件可以基于提交,那可能会很好,但至少不能轻易做到这一点。您可以:
git show commit-specifier:path
); $(git rev-parse --git-dir)/info/sparse-checkout
;和如果给定提交中不存在该文件,则可能包含一个后备默认稀疏签出文件。
由于提交哈希ID唯一标识正确的提交,因此将文件放入专用分支的一种方法是:
sparse-info
git worktree add
)创建这些文件将在其中居住的区域; 然后要添加新文件,您需要将其操作到正确的位置,链接或复制稀疏签出数据,git add
文件,然后git commit
结果。
或者,您可以在没有分支的情况下完成所有这些工作,而只需要在正常工作树之外的专用工作区域即可。
最后,考虑为稀疏签出文件和过滤器编写自己的格式。然后,只需运行您的过滤器生成器以创建所需的$GIT_DIR/info/sparse-checkout
内容即可。