gpt4 book ai didi

Gradle 解压存档,其中包含 .git 文件夹

转载 作者:行者123 更新时间:2023-12-04 04:00:11 28 4
gpt4 key购买 nike

使用 Gradle 2.11JVM 1.8.0_77 .

ziptrees 的 Gradle 复制任务似乎不喜欢 zip-trees 中的点文件夹,因为它忽略了 .git文件夹完全:

存档.zip:

archive/someFile
archive/.manifest
archive/.git/objects/93/
archive/.git/objects/93/c426c3ffd836bfc0af36e6fd97a72b7b4f67be
archive/.git/objects/info/
archive/.git/objects/aa/

Gradle 任务
task unzip(type: Copy) {
def zipFile = file("archive.zip")
from zipTree(zipFile)
into workingDir
}

结果:
> $ gradle unzip
> $ find archive/.

archive/someFile
archive/.manifest

使用类似 include '**/.git' 的东西似乎也不起作用。

有任何想法吗?

最佳答案

Gradle 复制任务使用 ant 的 DirectoryScanner,它带有一堆默认排除项,包括 **/.git**/.git/** .有关默认排除的完整列表,请参阅本文底部。见缺陷 GRADLE-1883 ,目前开放未解决。

您可以通过从中删除 git 条目来自定义默认排除列表,但是您的任务中的任何更改都会影响后续的复制任务,这可能会导致任务下坡的潜在问题。

该缺陷页面上建议的(相当丑陋的)安全解决方法是删除任务中的默认排除项,并在退出任务之前重置排除项。

import org.apache.tools.ant.DirectoryScanner

task unzip(type: Copy) {
doFirst {
DirectoryScanner.defaultExcludes.each { DirectoryScanner.removeDefaultExclude it }
DirectoryScanner.addDefaultExclude 'something has to be in here or everything gets excluded'
}

doLast {
DirectoryScanner.resetDefaultExcludes()
}

def zipFile = file("archive.zip")
from zipTree(zipFile)
into workingDir
}

Ant 默认排除模式:
**/%*%             
**/.git/**
**/SCCS
**/.bzr
**/.hg/**
**/.bzrignore
**/.git
**/SCCS/**
**/.hg
**/.#*
**/vssver.scc
**/.bzr/**
**/._*
**/#*#
**/*~
**/CVS
**/.hgtags
**/.svn/**
**/.hgignore
**/.svn
**/.gitignore
**/.gitmodules
**/.hgsubstate
**/.gitattributes
**/CVS/**
**/.hgsub
**/.DS_Store
**/.cvsignore

关于Gradle 解压存档,其中包含 .git 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36743384/

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