開発者のコミット形式を標準化するため、Codeup はカスタムプッシュルールを使用してコミットを検証するサービスを提供しています。このトピックでは、プッシュルールの作成方法と、ルールがトリガーされた際の動作について説明します。
プッシュルールの作成
-
リポジトリ管理者は、左下隅の [設定] をクリックし、[プッシュルール設定] に移動します。

-
[プッシュルールの作成] をクリックし、ルールパラメーターを設定します。
[プッシュルールの作成] ダイアログボックスで、次のパラメータを設定します。[コミットメッセージ] (コミットメッセージが一致する必要がある正規表現。例:
^fix #[A-Z]+\-[0-9]+)、[コミッターのメール] (コミッターのメールアドレスが一致する必要がある正規表現。例:@example\.com$)、[制限対象ファイル] (ファイル名が正規表現に一致するファイルのプッシュを禁止します。複数のルールを追加でき、改行で区切ります)。また、[強制プッシュを防止] および [コードオーナーチェック] オプションを選択することもできます。チェックルールは [作者] または [コミッター] に適用できます。制限レベルは [プッシュをブロック] または [警告するがプッシュを許可] に設定できます。完了したら、[OK] をクリックします。
重要プッシュルールは、リポジトリ内のすべてのブランチに適用されます。
-
[コミットメッセージ]:コミットメッセージが指定された正規表現に一致する場合のみ、プッシュが許可されます。このフィールドが空の場合、すべてのコミットメッセージが許可されます。
-
[コミッターのメール]:
git configで設定されたコミッターのメールアドレスが、指定された正規表現に一致する必要があります。このフィールドが空の場合、すべてのメールアドレスが許可されます。 -
[強制プッシュを防止]:強制プッシュはリモートコードを上書きし、コードとコミット履歴が永久に失われる可能性があります。このコマンドは慎重に使用してください。強制プッシュによってコミット履歴が失われた疑いがある場合は、リポジトリの [アクティビティ] フィードで強制プッシュイベントをフィルタリングして、操作者を追跡し、
force push記録を確認できます。有効にすると、このオプションは、ローカルブランチがリモートブランチと分岐している場合に
git push -fをブロックし、サーバーのコードが上書きされるのを防ぎます。説明[強制プッシュを防止] が有効になっているが、ローカルブランチがリモートブランチと分岐していない場合、
git push -fの使用はgit pushと同じ効果になり、プッシュは成功します。 -
[コードオーナーチェック]:コードオーナーチェック機能は、設定された Git ユーザー情報に依存します。
git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
作者とコミッター
-
Git では履歴の書き換えや他者の代理でのコミットが可能です。 正確な貢献統計を確保するために、コミットの作者はログインユーザーと一致する必要があります。
-
コミッターは通常表示されません。 特定の
git log --formatコマンド (例:format=fuller) を使用した場合にのみ表示されます。コミッターは、コミット時のgit config user.nameおよびgit config user.emailの設定に基づいて、コミットを最終的に適用するユーザーです。 -
git commitコマンドを使用する際、--authorオプションを使用して貢献者を指定できます。 オープンソースプロジェクトでは、コードを直接使用しなくてもアイデアを採用した場合に、誰かを作者として記載するのが一般的な慣習です。初回のコミットでは、作者とコミッターは通常同じです。ただし、git cherry-pickやgit rebaseなどのコマンドでコミット履歴を書き換える場合、作者は変わりませんが、コミッターは操作を実行する人になります。つまり、作者は元の貢献者であり、コミッターはコミットを適用する人です。 -
Codeup は、作者とコミッターのメールアドレスを、ログインユーザーの検証済みプライマリメールアドレスと照合できます。 これにより、正確な所有権の帰属が確保され、ユーザーの不一致による不正確な貢献統計が防止されます。
Alibaba Cloud DevOps の右上隅で、[個人設定] に移動します。左側のナビゲーションペインから [個人情報] を選択します。[メール] セクションで、リンクされたメールアドレスを表示および管理できます。Codeup は、[プライマリメールアドレス] としてマークされたアドレスを使用して、作者またはコミッターと照合します。新しいメールアドレスを追加するには、[メールのバインド] をクリックして、検証プロセスを完了します。
組織レベルのルールの継承
組織から継承されたルールは読み取り専用であり、リポジトリレベルでは編集または削除できません。これらのルールを変更するには、組織管理者に連絡してください。
プッシュ時のチェック
次の設定を持つルールを例に見てみましょう。チェックルール:作者をチェック、制限レベル:プッシュをブロック。
このプッシュルールでは、[コミットメッセージ] は feature-* に設定され、[コミッターのメール] は @alibaba.com に制限され、[制限対象ファイル] は空で、[強制プッシュを防止] が有効になっています。

UI 操作
コミットメッセージがルールに一致しない場合、プッシュは拒否され、Push rule check failed というエラーが表示されます。メッセージには、コミットメッセージが指定された正規表現 (例: feature-*) に一致しない旨と、拒否されたコミット ID が表示されます。
同様に、作者のメールアドレスがルールに一致しない場合も、プッシュは拒否されます。
ページの上部に赤いエラーメッセージ Push rule check failed が表示されます。このメッセージは、作者のメールアドレスが指定された正規表現 (例: @alibaba.com) に一致しないことを示し、拒否されたコミット ID も表示します。
マージリクエストにも同じロジックが適用されます。