我有'更新'钩子的问题.在新分支的情况下,它获得0000000000000000000000000000000000000000作为'oldrev'.我不知道如何处理这种情况.
我们要求每个提交消息都引用有效的Jira问题.所以我在我们的中央存储库上安装了一个"更新"钩子.那个钩子得到了"oldrev"和"newrev".然后我将这些传递给"git rev-list",如下所示:
git rev-list $oldrev..$newrev
这给了我所有转速的列表,然后我可以迭代,并做我需要做的任何事情.
问题是,当用户推送新分支时,钩子获得0000000000000000000000000000000000000000作为oldrev.而"git rev-list"只是抱怨:
fatal: Invalid revision range 0000000000000000000000000000000000000000..21bac83b2
那么如何获得该新分支上所有转速的列表?我已经搜索网了很长一段时间了,一无所获.我找到了示例钩子
这些听起来都不是特别刺激.
那么有人知道如何在这种情况下得到正确的答案吗?我正在考虑查询git"给我所有可以从newrev到达的转,但不能从任何其他分支(=除了新分支之外的所有分支)".但是,如果从新分支到任何旧分支的合并,即使这样也会给出错误的答案.
TL;DR:当有几个CompletableFutures 等待执行时,我如何优先考虑那些我感兴趣的值?
我有一个 10,000CompletableFuture秒的列表(计算产品数据库内部报告的数据行):
List<Product> products = ...;
List<CompletableFuture<DataRow>> dataRows = products
.stream()
.map(p -> CompletableFuture.supplyAsync(() -> calculateDataRowForProduct(p), singleThreadedExecutor))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
每个都需要大约50 毫秒才能完成,所以整个事情在500 秒内完成。(它们都共享相同的数据库连接,因此不能并行运行)。
假设我想访问第 9000 个产品的数据行:
dataRows.get(9000).join()
问题是,所有这些 CompletableFuture 都是按照它们被创建的顺序执行的,而不是按照它们被访问的顺序。这意味着我必须等待450 秒才能计算出我目前不关心的内容,最终到达我想要的数据行。
问:有什么办法改变这种行为,使期货我尝试访问GET优先对那些我不关心的时刻?
第一个想法:
我注意到 aThreadPoolExecutor使用 aBlockingQueue<Runnable>来排队等待可用线程的条目。
因此,我考虑使用PriorityBlockingQueue, 来更改Runnable访问它时的优先级,CompletableFuture但是:
PriorityBlockingQueue没有方法重新排列现有元素的优先级,并且java performance asynchronous priority-queue completable-future
我们有Jenkins的标准Debian安装(仅限winstone,不涉及tomcat或apache),我们正在运行它--prefix=/jenkins和80端口.
现在,当我访问时,http://my.server/我得到一个404页面.我可以说服Winstone以某种方式将其重定向到正确的地址http://my.server/jenkins/吗?
编辑:我知道我可以安装Apache,并使用以下重写规则来获得我想要的:
RewriteEngine On
RewriteRule ^/*$ https://jenkins.corp.mobile.de/jenkins/ [R]
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在Winstone中做到这一点.