小编Cha*_*lie的帖子

如何更新镜像克隆中的 HEAD 分支?

我有一个本地存储库,我通过git clone --mirror <ssh-url>. 然后我使用git remote update --prune.

此时,HEAD指向refs/heads/master

然后我转到我的 github 存储库的 Admin 部分,并更改默认分支。我的所有分支都正常更新,但 HEAD 仍然refs/heads/master是(是的,分支具有不同的哈希值)

我目前的想法是使用git ls-remote获取HEAD和所有分支的哈希值,然后用一些grep/awk魔术,提取HEAD的哈希值,然后选择具有匹配哈希值的第一个分支,并用于git symbolic-ref HEAD <found branch name>本地设置。

但是有没有更简单的方法来获取远程HEAD分支名称(以可以在脚本中更新的方式)?

git github

7
推荐指数
1
解决办法
782
查看次数

为什么@MatrixParam值似乎只来自最后一段?

我正在探索在JAX-RS应用程序中使用MatrixURI.在这个过程中,我注意到@MatrixParam带注释的参数似乎只能从最终段中获取矩阵参数(这使得尝试使用子资源定位器有点痛苦).我想知道这是一个错误,还是规范的一部分(为什么?),或者只是一个未定义的破解.

我知道我可能会想出一种方法来使用@Context注入的UriInfo对象(它根据定位器链中的位置发生变化而改变),但这感觉很难看.

快速浏览JAX-RS 1.1规范 ......我能找到的最接近这个不受支持的是:§3.2

由于注入发生在对象创建时,因此仅对默认的每请求资源类生命周期支持在资源类字段和bean属性上使用这些注释(@Context除外).

但这是在讨论构造函数/字段注入,而不是§3.3.2中的方法参数:

当调用资源方法时,根据注释的语义,从请求映射使用@FormParam注释的参数或3.2节中列出的注释之一.

但当然,注释的语义似乎含糊不清.

运行时环境详细信息:

  • 泽西岛1.13,1.15
  • Tomcat 7.0.29
  • Java 1.6.0_31(Apple)
  • MacOS X 10.7.5

示例资源:

public class Zero {

    public static final String[] IDS = { "1", "2", "3" };

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Map<String, Object> getMe(@Context final UriInfo info) {
        final UriBuilder builder = info.getAbsolutePathBuilder().path("one");
        final UriBuilder two = builder.clone().matrixParam("id", "{one}", "{two}");

        final List<String> links = new ArrayList<String>();
        for (int i = 0; i < IDS.length; i++) …
Run Code Online (Sandbox Code Playgroud)

java tomcat uri jax-rs

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

最大限度地减少厨师通知中的服务重启?

目前我的配方与重要的属性结构如下:

service 'myservice' do
  action :nothing
  supports :status => true, :start => true, :stop => true, :restart => true
end

package 'packagename' do
  ...
end

template 'configfile1'
  notifies :restart, 'service[myservice]'
end
...
template 'configfileN'
  notifies :restart, 'service[myservice]'
end

execute "a command from package which generates and enables the init script" do
  notifies :start, 'service[myservice]', :immediately
end

execute "a command that should run once every time, that requires service to be running"
Run Code Online (Sandbox Code Playgroud)

通过这样做,我们确保服务的初始启动具有配置文件,在每次运行期间,服务正在为第二个执行块运行,如果任何配置文件发生更改,我们将重新启动服务以获取更改.

但是,如果厨师运行发生在服务的初始状态停止的地方(例如第一次运行或发生了不好的事情),并且配置文件已更改(特别是在第一次运行时,但可能用于其他运行),第一个执行块将导致服务以正确的配置文件启动,然后在运行结束时,服务将不必要地重新启动.(当然假设初始启动后的资源不会导致服务重启)

更改通知的目标操作似乎不起作用(因为立即通知仍会立即发生,然后发生延迟通知),此外也不正确.

此外,我们无法订阅第二次执行到服务启动,因为如果它已经运行,我们最终将不执行它.

这是非常挑剔的,但有没有一个更好的模式可以遵循,以最大限度地减少初始运行服务的重启?或者在采取特定操作时取消延迟通知的机制?

chef-infra

5
推荐指数
2
解决办法
8370
查看次数

标签 统计

chef-infra ×1

git ×1

github ×1

java ×1

jax-rs ×1

tomcat ×1

uri ×1