问题标签 [git-archive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
71 浏览

git - git 归档输出是否应该通过 git 版本进行位重复?

我正在使用git archive生成一个文件,该文件稍后会被哈希以检查与预存储哈希的完整性。但是,我还没有看到任何git archive旨在实现位可重复性的地方,所以我担心 git 本身、tar 或其他一些内部结构的任何未来变化可能会突然导致从同一个存储库生成不同的存档。

我是对的,这不是git archive? 或者我可以像这样自信地使用它吗?

0 投票
1 回答
40 浏览

git - 使用 git archive 时出现奇怪的工件

我目前正在尝试使用以下命令从 GitLab 存储库中检索单个文件(我在 Windows 上):

本质上它可以工作,但是在文件的实际内容前后有一些奇怪的工件。这是命令提示符显示它们的方式:

图像底部的 XML 版本标记是实际文件内容的开始。有谁知道如何摆脱这个?

0 投票
0 回答
27 浏览

bash - 自动将其他有用信息添加到 git 存档文件名

偶然发现了这个 gem:将所有提交导出到 ZIP 文件或目录中,其初始答案满足我将来自某些分支(例如开发)的提交导出到单独的 zip 文件的需要——所有这些都是通过一个简单但聪明的单行完成的:

在我的版本中,我--all--first-parent develop.

我现在想做的是通过在文件名中包含提交日期和提交作者来使文件名更有用。我用谷歌搜索了一下,摸索了 git 存档文档,但似乎没有找到我可以使用的任何其他“参数”,这些“参数”很容易获得,比如 $hash。

我猜我需要扩展循环并单独调用相关位,将它们保存到 bash 变量中并使用 ${author} 之类的东西将它们传递给输出选项,除非其他人知道更清洁、更简单的方法这样做,或者可以指向我可以从 git 的其他部分提取所需信息的文档或其他示例?提前感谢您的任何见解。

0 投票
1 回答
627 浏览

gitlab - 从以前的 GIT 作业中获取工件

我在管道中有 3 个阶段,所有 3 个阶段中的每个作业都在创建一个 xml 数据文件。这些作业并行运行。

在此处输入图像描述

我想在第 4 阶段合并所有 xml 数据文件。下面是我的 yml 代码

问题:我如何从以前的工作中收集所有 xml 来合并它?文件名是唯一的。

0 投票
0 回答
38 浏览

git - 无论我当前的工作目录如何,git 归档整个 repo

我想git archive在 repo 的任何地方使用并包含整个 repo。

只有当我的工作目录是 repo 根目录时,上述命令才能正常工作。当我在asset子目录中工作时:

tarball 将包含asset子目录的内容,而不是整个 repo。

git-archive的官方文档:

<path>

如果没有可选的路径参数,则当前工作目录的所有文件和子目录都包含在存档中。如果指定了一个或多个路径,则仅包括这些路径。

但这仅在我指定回购根目录的绝对/相对路径时才有效。这很烦人,因为 Git 必须非常清楚 repo 根在哪里,所以我不需要告诉它。

编辑: 似乎该<path>参数仅用于限制在当前工作子目录的存档中包含的内容。它对打破子目录限制毫无帮助。

是否有一个命令可以创建整个 repo 的 tarball,而不管我碰巧在 repo 中的哪个子目录中工作?

0 投票
1 回答
51 浏览

git - 仅当文件已在 git 中更改时才进行 GIT 存档

我们使用 git archive 在跳转服务器上部署脚本,然后使用 rsync 在目标机器上部署这些文件。git 归档 cronjob 每 24 小时运行一次,并且来自 git 的归档文件每次都会在跳转服务器上获得一个新的创建日期。Rsync 现在同步所有这些文件,实际上并没有改变。如果文件没有在 git 中更改,有什么方法可以告诉 git archive 不要替换跳转服务器上的文件?

0 投票
0 回答
45 浏览

git - 如何忽略不匹配的路径规范?

只希望从服务器获取当前状态的精简副本以进一步处理的脚本可以替代浅克隆:

git archive --remote=ssh://example.com/repo.git --output=repo.tar.gz HEAD -- "*.hpp" "*.cpp" "*.inc"

如果该 repo 恰好没有通配符之一的文件,则整个操作将失败:

如果它们会抛出错误,是否有一种通用的方法可以忽略某些路径规范?如果没有这样的过滤器,它会下载太多。

路径规范中有一些模式,包括“glob”,但我不知道如何制作逻辑“OR”或正则表达式。