小编epl*_*epl的帖子

不能通过http克隆git repos; info/refs not found

我试图使git存储库可用于通过http进行只读访问.

我这样做是旧式的,因为git-http-backend我的主机系统不可用.也就是说,我只是将裸存储库放在http可访问的位置.

我使用在主机上成功创建了裸存储库git clone --bare <some-remote-location>.

现在,当我使用git指向新克隆时git clone http://my.host.name/location,会显示一条消息repository not found.

当我捕获网络流量时,我看到git正在尝试访问http://my.host.name/location/info/refs.由于info/refs存储库中没有路径,因此预计会失败.而是存储库根目录下的inforefs目录.

显然,克隆的裸存储库的结构不符合客户的预期.有谁知道为什么会这样?

git clone http repository git-bare

21
推荐指数
2
解决办法
2万
查看次数

忽略 Bash 中的特定退出代码

注意:问题不会重复Ignoring certain Errors in a shell script


假设需要捕获文件的编码表示形式的前导字符。

在 shell 中(在 Bash 中测试),很容易使用以下形式:

encoded="$(< file base64 | head -c16)"
Run Code Online (Sandbox Code Playgroud)

除非环境发生某些改变,否则该语句将发挥所需的作用。

考虑以下:

set -o errexit -o pipefail
shopt -s inherit_errexit
encoded="$(< file base64 | head -c16)"
Run Code Online (Sandbox Code Playgroud)

最后一行将导致脚本终止,因为 给出的非零返回状态 (141)base64对关闭的管道不满意。返回状态被传播到管道,然后传播到调用 shell。

不良效果需要解决方法,如下所示:

set -o errexit -o pipefail
shopt -s inherit_errexit
encoded="$((< file base64 || :) | head -c16)"
Run Code Online (Sandbox Code Playgroud)

:与关键字 , 具有相同的效果,true评估为非错误。

然而,这种方法会导致进一步的不良影响。

下面显示了具有不同错误的变体:

set -o errexit -o pipefail
shopt -s inherit_errexit
encoded="$((< /not/a/real/file base64 || …
Run Code Online (Sandbox Code Playgroud)

unix linux bash scripting

9
推荐指数
1
解决办法
2140
查看次数

使用来自 flatDir 源的 gradle 插件

如何为自定义插件修改 Gradle 插件{} 管理存储库? 在这篇文章中没有重复,因为它不包括使用flatDir.


如何使用在本地 JAR 中定义的 Gradle 插件,使用新plugin {}语义,而不是已弃用的apply()语义?

当前状态

没有任何解决方案,在发布问题并进行了相当长的搜索之后,我提出了一个问题,想知道这种应该是常见和直接的用法是否在 Gradle 修订后的插件语义中不受设计或疏忽的支持。

不幸的是,我的报告已关闭,没有提供任何有用的信息。

我在一个新问题中要求澄清,但仍在等待。

我很沮丧,原以为社区至少会对讨论这个问题感兴趣。

如果您可以提供信息,请这样做。

第一次更新

在澄清配置插件源的新样式之后,我更新了我的settings.gradle文件以使用以下块打开。然而,我感到遗憾的是,仅凭这一变化我没有看到任何改善。(对于build.gradle文件中引用的插件 id 字段,我尝试了 JAR 元数据中发布的全局 ID 和 JAR 文件的基本名称。两者都同样失败。)

pluginManagement {
    repositories {
        gradlePluginPortal()
        jcenter()
        flatDir {
            dirs 'lib`'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该文档解释了如何使用自定义存储库,但似乎忽略了一个简单的平面目录的情况。

第二次更新

如果我向 JAR 文件和plugins {}块中的相应语句添加版本号,我会得到一些改进。在这种情况下,消息变为:

Plugin [id: 'plugin-id', version: '1.0.0'] was not found in any of the following …
Run Code Online (Sandbox Code Playgroud)

java plugins local repository gradle

6
推荐指数
1
解决办法
3036
查看次数

结合使用 bash 选项进行错误处理(例如,pipefail、errexit、inherit_errexit)

考虑以下 Bash 脚本:

#!/usr/bin/env bash

set -o errexit pipefail
shopt -s inherit_errexit

( echo hello ; exit 1 ) | cat

echo world
Run Code Online (Sandbox Code Playgroud)

使用5.0.17版本运行,输出如下:

hello
world
Run Code Online (Sandbox Code Playgroud)

但是,负责打印的子 shellhello会失败,并具有非零退出状态。作为管道的一部分,启用选项后pipefail,整个管道应该同样失败,并具有相同的状态(管道中的后续项当然会自行返回零状态)。因此,管道应该评估为非零状态,因为errexit(如果不是inherit_errexit的话)会提示立即终止脚本,而不会到达最终的语句 print world

可以看出,对于未达到最终打印语句的预测并不准确。

为什么?

unix bash shell exit-code

5
推荐指数
1
解决办法
775
查看次数

标签 统计

bash ×2

repository ×2

unix ×2

clone ×1

exit-code ×1

git ×1

git-bare ×1

gradle ×1

http ×1

java ×1

linux ×1

local ×1

plugins ×1

scripting ×1

shell ×1