我需要一个钩子来检查private boolean inSplitScreenMode(List<AccessibilityWindowInfo> windows) {
for (AccessibilityWindowInfo window : windows) {
if (window.getType() == AccessibilityWindowInfo.TYPE_SPLIT_SCREEN_DIVIDER) {
return true;
}
}
return false;
}
操作。
如果创建了一个全新的分支,并且该分支与master分支相同,那么我想要一个钩子,以防止将其推到远程源。 一旦完成对该分支的第一次提交,则可以将其推入原点。
基本上我想避免这种情况
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if ((event.getEventType() & AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) != 0) {
if (inSplitScreenMode(getWindows()) {
Log.d(TAG, "Split screen mode detected");
} else {
Log.d(TAG, "No split screen");
}
}
}
如果没有与此新分支相关的提交,我想阻塞第二行。有没有办法用git hooks来解决这个问题?
非常感谢
答案 0 :(得分:1)
可以使用钩子pre-push
。
#!/bin/bash
master_sha=$(git rev-parse refs/heads/master)
while read local_ref local_sha remote_ref remote_sha;do
if [[ "${local_sha}" = "${master_sha}" ]];then
echo error: ${local_ref} points at the same commit with master
echo error: push failed
exit 1
fi
done
exit 0
但是我对本地master
的稳定性有些担心。如果碰巧是偶然更新的,则该钩子将无法检测到其更改,因此无法按预期失败。
答案 1 :(得分:0)
我会使用update
服务器端挂钩:
该挂钩对每个要更新的引用执行一次,并带有三个参数:
- 要更新的裁判的名字
- 存储在引用中的旧对象名称
- 以及要存储在引用中的新对象名称。
然后我会做这样的事情:
#!/bin/sh
refname="$1"
oldrev="$2"
newrev="$3"
master=$(git rev-parse refs/heads/master)
if [ "$newrev" = "$master" ]; then
echo "Rejected: $refname has no new commits compared to master" >&2
exit 1
fi
exit 0
在这里,我们只是将要推送的分支(newrev
引用的提交(refname
)的SHA-1与{{1}引用的提交的SHA-1进行比较}。如果它们相等,我们将以错误代码退出,从而防止在服务器上创建该特定分支。
在更新远程存储库上的ref之前,请使用更新挂钩 被调用。其退出状态决定了交易成功或失败。 引用更新。