3

リモートブランチの保護に関する多くの記事を用意しています...

ただし、次の LOCAL repo コマンドを git フックでキャプチャしたいと思います。

git branch -d abranchthatshouldnotbedeleted

そのコマンドをフックして、作成した「保護されたブランチ」のブランチ リスト ファイルに対して分析し、削除を許可または拒否する簡単なチェックを行いたいと思います。

私の特定のブランチは、現在管理されている場所にロックされており、保護する必要があります。

4

2 に答える 2

1

GitHubはpre -receive フック( post-receiveフックのみ)を許可していないため、 Gitolite (認証レイヤー、git リポジトリへの ssh または http アクセスを介して) で保護された中間ローカル リポジトリにプッシュすることをお勧めします。

Gitolite は、ブランチを削除から保護するなど、あらゆる種類のアクセス ルールのコーディングに役立ちます。

プッシュが許可されている場合、post-commit フックはそれを自動的に GitHub にプッシュできます。

于 2013-01-11T07:12:05.790 に答える
1

Git には (現在) 必要なことを行うために使用できるフックがありません。git help hooks利用可能なフックのリストについては、を参照してください。

別のアプローチを検討する必要があるかもしれません。たとえばgit、独自の解析を行うラッパー スクリプトまたはシェル関数をラップして、ブランチを削除しないようにすることができます。

git() {
    [ "${1}" != branch ] ||
    { [ "$2" != -d ] && [ "$2" != -D ]; } ||
    case $3 in
        abranchthatshouldnotbedeleted) false;;
        *) true;;
    esac ||
    { printf %s\\n "ERROR: branch $3 must not be deleted" >&2; exit 1; }
    command git "$@"
}

上記のシェル関数は非常に原始的で、 のような呼び出しを処理しませんgit --git-dir=/foo.git branch -d abranchthatshouldnotbedeletedが、要点はわかります。git rev-parse --parseoptおそらく、それをより堅牢にするために使用できます。

于 2013-01-11T19:47:13.003 に答える