gpt4 book ai didi

linux - 如何使用 git-archive 获得 GNU tar 的 --strip-components 的效果?

转载 作者:IT王子 更新时间:2023-10-29 01:03:39 26 4
gpt4 key购买 nike

从广义上讲,我想要的是直接的 tar 到 tar 转换,其中结果的根仅包含原始目录的特定目录子树。

举例说明,假设我只想要 gitweb directory来自 git 的存储库。运行

$ git archive --prefix=git-gitweb/ master gitweb | tar tf -

给予

git-gitweb/git-gitweb/gitweb/git-gitweb/gitweb/INSTALLgit-gitweb/gitweb/Makefilegit-gitweb/gitweb/READMEgit-gitweb/gitweb/gitweb.perlgit-gitweb/gitweb/static/git-gitweb/gitweb/static/git-favicon.pnggit-gitweb/gitweb/static/git-logo.pnggit-gitweb/gitweb/static/gitweb.cssgit-gitweb/gitweb/static/gitweb.js

但是我想要

git-gitweb/git-gitweb/INSTALLgit-gitweb/Makefilegit-gitweb/...

manual提供额外的特定于后端的选项,但尝试传递 --strip-components 会产生错误:

$ git archive --prefix=git-gitweb/ --strip-components=1 master gitweb | \  tar tf -error: unknown option `strip-components=1'usage: git archive [options]  [...] ...

无论如何,tar 后端都不是 GNU tar。

freenode 的#gnu channel 有人建议Tardy , 但它不理解 git-archive 的输出:

$ git archive master > old.tar$ tardy old.tar new.tartardy: old.tar: file type ``g'' unknown

是的,我可以使用 --strip-components 提取 git-archive 的输出并创建一个新的结果存档,但我试图避免将文件系统用作临时变量.

最佳答案

将该目录存档为 CWD,您将不会有额外的路径组件:

(cd gitweb; git archive --prefix=git-gitweb/ master .) | tar tf -

或者按照 git-archive 手册页的建议使用此语法:

git archive --prefix=git-gitweb/ master:gitweb | tar tf -

关于linux - 如何使用 git-archive 获得 GNU tar 的 --strip-components 的效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4876525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com