具有多个存储库的git稀疏签出

问题描述 投票:0回答:1

我想创建一个项目,该项目从两个存储库中借用,稀疏签出。但是,“ $ {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>] 
git sparse-checkout
1个回答
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)创建这些文件将在其中居住的区域;
  • 通过提交哈希ID命名文件。

然后添加一个新文件,您需要在正确的位置进行操作,链接或复制稀疏签出数据,git add文件以及git commit结果。

或者,您可以在没有分支的情况下完成所有这些工作,而只需在正常工作树之外的专用工作区域。

最后,考虑为稀疏的结帐文件和过滤器编写自己的格式。然后,只需运行您的过滤器生成器以创建所需的$GIT_DIR/info/sparse-checkout内容即可。

© www.soinside.com 2019 - 2024. All rights reserved.