gpt4 book ai didi

bash - 如何在 mercurial 的 "push creates new remote head"周围写一个钩子(Hook)?

转载 作者:行者123 更新时间:2023-12-04 09:38:07 25 4
gpt4 key购买 nike

我想制作一个钩子(Hook),当有人推到 Remote 时,如果他们得到 abort: push creates new remote head错误消息,钩子(Hook)将尝试 merge 远程和本地头(如果容易 merge ,即没有冲突的文件)并再次推送。

我怎样才能做到这一点?我尝试在 pre-push 上添加一个钩子(Hook),但我不知道如何只获取当前分支的远程头部哈希。

这是我一直在尝试的,虽然它没有被抛光。

currbranch=$(hg branch)
hg pull
numheads=$(hg heads --template "." $currbranch)
if test ${#numheads} -gt 1; then
echo "Merge needed."
head1=$(hg heads --template "{node}\n" $currbranch | head -n 1)
head2=$(hg heads --template "{node}\n" $currbranch | tail -n 1)
overlap=$((hg status --change $head1 --no-status ; hg status --change $head2 --no-status) | sort | uniq --repeated)
if [ -z "$overlap" ]; then
echo "Attempting automatic merge..."
hg merge "$head1" # Fails when merging the wrong head
hg merge "$head2" # But how do we know which one is wrong?
hg commit -m "Merge"
echo "Completed."
else
echo "Cannot automatically merge"
exit 1
fi
fi

需要明确的是,前面不起作用的是 merge 两个头。我怎么知道哪个头是本地的,哪个头是远程的?

另外,这是正确的钩子(Hook)吗?

最佳答案

  • 可以尝试添加使用remotenames extension (它相当陈旧,自 2018 年以来没有积极维护,但可能会工作)以便拥有所有远程对等点 在您的仓库中命名 (在这种情况下,您将在拉取后知道远程头的名称)
  • 您可以(在拉取之前)检查传入的变更集中是否存在头部,smth。喜欢
  • hg in -r "head()" -T "{node|short}\n" (待定!)

    关于bash - 如何在 mercurial 的 "push creates new remote head"周围写一个钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62456594/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com