小编dre*_*ecs的帖子

如何查找master中所有未合并的提交按照创建的分支分组?

我必须从未合并的分支机构创建一些代码审查.

在寻找解决方案时,我们不要去本地分支上下文问题,因为这将在服务器上运行; 只有原点远程,我会在其他命令之前运行git fetch origin命令,当我们谈论分支时,我们将引用origin/branch-name.

如果设置很简单,并且每个源自master的分支继续以自己的方式继续,我们可以运行:

git rev-list origin/branch-name --not origin/master --no-merges
Run Code Online (Sandbox Code Playgroud)

对于每个未合并的分支,并将结果提交添加到每个分支的每个审阅.

当2-3个分支之间存在合并并且其中一些分支继续工作时会出现问题.正如我所说,对于每个分支,我想创建程序化的代码审查,我不想在多个评论中包含提交.

主要是每次提交找到原始分支时出现问题.
或者更简单一点......找到所有未创建的提交,这些提交按照他们最有可能创建的分支进行分组.

让我们关注一个简​​单的例子:

      *    b4 - branch2's head
   *  |    a4 - branch1's head
   |  *    b3
   *  |    merge branch2 into branch1
*  |\ |    m3 - master's head
|  * \|    a3
|  |  |
|  |  *    b2
|  *  |    merge master into branch1
* /|  |    m2
|/ |  *    merge branch1 into …
Run Code Online (Sandbox Code Playgroud)

git branch commit branching-and-merging

17
推荐指数
1
解决办法
5216
查看次数

如何避免Redis调用Lua脚本限制?

我正在设置一个PHP标记的缓存实现,它将同时使用Redis和APCu.由于APC是键值存储,我将使用Redis进行密钥标记关系并与APC上的每个Web服务器同步.

我目前的问题只涉及Redis.可能你知道实现,但要明确:密钥可以有与之关联的标签.稍后您可以通过某些标记删除缓存的密钥.有许多键而不是很多标签,键和标签之间存在n对n的关系.

set(key, value, tags) 由组成:

SET key value
foreach tag in tags
    SADD tag key
Run Code Online (Sandbox Code Playgroud)

因为在设置之后不需要检索或更改标签,所以我只需要保持标签到密钥的关系.

deleteByTag(tags)

keys = SUNION tag1 tag2 tag3...
DEL key1 key2 key2...
Run Code Online (Sandbox Code Playgroud)

为了加快速度,我创建了两个简单的lua脚本,我将脚本加载并调用EVALSHA.

Lua 设置脚本:

redis.call('set', KEYS[1], KEYS[2])
for _, tag in pairs(ARGV) do
    redis.call('sadd', tag, KEYS[1])
end
Run Code Online (Sandbox Code Playgroud)

打电话给

EVALSHA setHash 2 key value tag1 tag2 tag3...
Run Code Online (Sandbox Code Playgroud)

我遇到问题的deleteByTag脚本如下所示:

redis.call('del', unpack(redis.call('sunion', unpack(ARGV))))
redis.call('del', unpack(ARGV))
Run Code Online (Sandbox Code Playgroud)

打电话给

EVALSHA deleteByTagHash 0 tag1 tag2 tag3...
Run Code Online (Sandbox Code Playgroud)

一切都很好,除非redis.call('sunion', unpack(ARGV))返回很多钥匙.似乎Lua对方法可以拥有的参数数量有一个硬性限制.在我的环境中它是8000.
我想知道是否有办法通过标签清除键,但避免:

  • (1)往返服务器并来回传送密钥到客户端
  • (2)按键上的每个按键.我尝试使用这个修改过的脚本,它比(1)慢

这是(2)不够快的工作:

for _, …
Run Code Online (Sandbox Code Playgroud)

lua redis

2
推荐指数
1
解决办法
2889
查看次数

标签 统计

branch ×1

branching-and-merging ×1

commit ×1

git ×1

lua ×1

redis ×1