防止git在特定条件下压缩任何文件

时间:2016-08-25 07:58:25

标签: git bash

我目前在jenkins中设置了bash命令,可以帮助我将文件添加到我的git中。

我所做的是检查自上一次提交后已更改的文件,然后我将这些文件压缩,将它们解压缩到一个目录中,然后通过ssh将它们移动到我的服务器上。只要我不通过提交删除文件,这就没有问题。

当我删除文件时,它会尝试将此文件添加到zip中,然后导致错误,因为该文件不再存在(显然)。

最初我的命令看起来像这样:

git archive --output=publish/update.zip HEAD $(git diff --name-only $PREVIOUS $CURRENT)

目前它看起来像这样:

git archive --output=publish/update.zip HEAD $(git diff --diff-filter=d --name-only $PREVIOUS $CURRENT)

--diff-filter=d做的是从搜索中排除任何已删除的文件。 但是,当我这样做并且在我的提交中只删除了文件时,archive命令将如下所示:

git archive --output=publish/update.zip HEAD

所以会发生的事情是在头部之后没有指定文件导致整个工作区被压缩并转移到服务器。 显然这不是我想要的。

有谁知道我怎么可能解决这个问题?

我的整个bash命令看起来像this

1 个答案:

答案 0 :(得分:0)

直接使用git relative refs和zip命令。

整个脚本可能是这样的:

# Create remove.sh so it removes at least one file - itself
printf "rm %q\n" remove.sh $(git diff --diff-filter=D --name-only HEAD~1) > remove.sh
# Create update.zip so it contains at least one file - remove.sh
zip update.zip remove.sh $(git diff --diff-filter=d --name-only HEAD~1)