我试图使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存储库中没有路径,因此预计会失败.而是存储库根目录下的info和refs目录.
显然,克隆的裸存储库的结构不符合客户的预期.有谁知道为什么会这样?
注意:问题不会重复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) 如何为自定义插件修改 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) 考虑以下 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。
可以看出,对于未达到最终打印语句的预测并不准确。
为什么?