2016-08-25 122 views
0

我目前在我的jenkins中有一个bash命令设置,它应该可以帮助我将文件添加到我的git。防止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确实是从搜索中排除任何删除的文件。 不过,我做到这一点,只有在我提交归档命令删除的文件看起来像这样的时候:

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

所以会发生什么是有导致整个工作区与git后头部指定文件压缩并转移到服务器。 显然这不是我想要的。

有没有人有任何想法我可以解决这个问题?

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

+0

你为什么要发送的文件(你是犯?)手动,而不是仅仅使用Git推/拉各自提交的? – rubenvb

+0

,因为我不想碰任何服务器端。这是我可以在任意数量的站点和服务器上应用的解决方案。我有共享主机和VPS的人,什么不是,所以我觉得这是最好的方式 – NoSixties

回答

0

使用git相对裁判和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)