git の 2 つのブランチで、アクセス制御に gitolite を使用しています。
ブランチ「dev」とブランチ「main」。
開発者は 'dev' にコミットし、'main' にマージしてから、'dev' と 'main' をプッシュする必要があります。
私の問題は、開発者が「dev」にコミットし
て「main」にマージすることだけを許可する方法ですが、「main」に直接コミットすることはできません。
つまり、開発者がコードを「メイン」に直接プッシュすると、リモートの「メイン」にプッシュしようとすると失敗します。
1 に答える
1
gitolite を使用すると、カスタム サーバー サイド フックを追加できます。
この更新フックを使用して、チェックを追加します。
#!/bin/bash
ref=$1
old=$2
new=$3
[[ $ref == refs/heads/main ]] || exit 0
reject(){
echo "$@"
exit 1
}
parent=$(git rev-parse $new^)
[[ $parent == $old ]] || reject not a single commit
git rev-parse $new^2 &>/dev/null || reject not a merge commit
(gitolite の場合は update.secondary フォルダーに入れる必要があります。)
于 2013-11-06T02:00:26.877 に答える