開発者のコミット形式を標準化するために、Codeup はカスタムプッシュルールを使用してコミットを検証する機能を提供しています。このトピックでは、プッシュルールの作成方法と、ルールがトリガーされたときの動作について説明します。
プッシュルールの作成
-
リポジトリ管理者として、左下隅の [設定] をクリックし、[プッシュルール設定] に移動します。
-
[プッシュルールの作成] をクリックし、ルールパラメーターを設定します。
[プッシュルールの作成] ダイアログボックスで、次のパラメータを設定します:[コミットメッセージ] (コミットメッセージが一致する必要がある正規表現。例:
^fix #[A-Z]+\-[0-9]+)、[コミッターのメールアドレス] (コミッターのメールアドレスが一致する必要がある正規表現。例:@example\.com$)、[制限ファイル] (正規表現に一致するファイル名のプッシュを防止します。複数のルールを改行で区切って追加できます)。また、[強制プッシュを防止] および [コードオーナーチェック] オプションを選択できます。チェックルールはauthorまたはcommitterに適用できます。制限レベルは [プッシュをブロック] または [警告するがプッシュを許可] に設定できます。完了したら、[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 が表示されます。
同じロジックがマージリクエストにも適用されます。