是否可以仅稀疏签出 git 存储库子目录中的文件?

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

我想将 React 的 build 文件夹的内容部署到 tomcat 的 webapps 目录。

Github上的项目称为dashboard,它有一个名为client的子目录,其中包含开发代码以及生产构建文件(/client/build)。我想将该构建文件的内容提取到 webapps/ 中名为仪表板/的目录中。

我尝试使用稀疏结帐,但发生的情况是完整路径(/client/build)被放置在仪表板目录中。因此,结构不是 webapps/dashboard/ 构建文件夹的内容,而是 webapps/dashboard/client/build/ 构建文件夹的内容

有没有办法只从带有稀疏签出的文件夹中提取文件,或者有没有办法配置 tomcat 来查找 /client/build 来查找它需要的文件?

reactjs git tomcat
2个回答
1
投票

可以使用稀疏签出模式来签出有限的文件子集,但不能使用它来重命名文件。 如果文件的名称是

a/b/c/d
- 请注意文件名不包含文件夹名称;
a/b/c/d
只是一个文件名;是你的操作系统,而不是 Git,坚持将其作为文件
d
存储在文件夹
c
中,依此类推 — 那么就 Git 而言,该文件的名称是
a/b/c/d
1 稀疏结帐代码将使用该名称进行检查。

可以很容易做的是使用

git archive
生成tarball或zip存档,然后使用任何允许您跳过一些路径名组件的解存档器;或者,如果您只有一个文件要提取,请使用
git show
git cat-file -p
提取文件,并将此命令的输出定向到文件。


1我正在考虑处理文件重命名问题的通用方法,但它仍处于形成阶段,并且不能保证 Git 项目人员会接受我在这里提出的任何内容。


0
投票

使用 Git 2.47(2024 年第 4 季度),批次 15,“

git cat-file
(man) 与稀疏索引配合良好,并被标记为这样。

这意味着即使在稀疏索引中,您也可以尝试

git cat-file -p $REV:path

请参阅提交 e65b0c7提交 68c5759(2024 年 9 月 3 日),作者:Kevin Lyles (

kevinlyles
)
(由 Junio C Hamano --
gitster
--
合并于 commit f286e0a,2024 年 9 月 12 日)

builtin/cat-file
:标记“git cat-file”稀疏索引兼容

签署人:Kevin Lyles

此更改会影响使用“:”语法指定对象时 '

git cat-file
'(man) 与索引的配合方式(这将给出索引中的文件内容)。

'

git cat-file
' 每当通过使用“:”语法指定对象从索引请求内容时,都会将稀疏索引扩展为完整索引。
即使请求的文件是稀疏索引的一部分也是如此,并且在稀疏索引中工作时会导致“
git cat-file
”操作慢得多。

将“

git cat-file
”标记为不需要完整索引,这样当您请求稀疏索引之外的文件时,只需支付将稀疏索引扩展到完整索引的成本。

添加测试以确保:

  • '
    git cat-file
    ' 无论文件是否在稀疏索引中,都会返回正确的文件内容
  • 每当您请求稀疏索引之外的内容时,
  • '
    git cat-file
    '都会扩展到完整索引
© www.soinside.com 2019 - 2024. All rights reserved.