はじめに
Github上でこれまでちゃんとしたPR(Pull Request)したことなかったので、DCO(Developer Certificate of Origin)チェックで全てのログにSigned-off-byが必要という点を理解していなくて、困った時のログです。
--amend --signoff すればいいんだと思ったものの
プロジェクトのコミッターから、「レビューする前にSigned-off-byを加えて欲しいな。まぁsquashしてもいいかも。」というメッセージが届いたので、PR画面を開いたところ、DCOチェックに失敗していて、その詳細説明には次の手順が書かれていました。
## 最初に読めとあったリンク先に、gh prしなさいとあったのでこれを実行
$ gh pr checkout 2084
## DCOのエラー画面には次のコマンドが表示されていた
$ git commit --amend --no-edit --signoff
$ git push --force-with-lease origin 20210413_anonymous_bind
## 20210413_anonymous_bind は自分で作成したbranchの名前
直前の変更を取り消してSigned-off-byを加えるのかぁ、と思ってそのまま実行したものの、これを実行してもうまくいかず、気がつけばこんな感じのコミットログになっていました。
commit 703c1556176fdf89bf819dd6a0118aabe291caad (HEAD -> 20210413_anonymous_bind, origin/20210413_anonymous_bind)
Merge: 66779fff b79308e9
Author: Yasuhiro ABE <yasu-abe@u-aizu.ac.jp>
Date: Wed Apr 14 00:15:06 2021 +0900
Merge branch '20210413_anonymous_bind' of github.com:YasuhiroABE/dex into 20210413_anonymous_bind
Signed-off-by: Yasuhiro ABE <yasu-abe@u-aizu.ac.jp>
commit 66779fffcab1f3663fa57e3bab9d23e01c1f1c30
Author: Yasuhiro ABE <yasu-abe@u-aizu.ac.jp>
Date: Wed Apr 14 00:02:27 2021 +0900
add the anonymousBind configuration parameter and to use the UnauthenticatedBind function.
Signed-off-by: Yasuhiro ABE <yasu-abe@u-aizu.ac.jp>
commit b79308e9feda775f8b5e3469894e03a9d2ca704e
Author: Yasuhiro ABE <yasu-abe@u-aizu.ac.jp>
Date: Wed Apr 14 00:02:27 2021 +0900
add the anonymousBind configuration parameter and to use the UnauthenticatedBind function.
commit b79d9a84bc0c35e13a9d5141e95b641af0f81c8f (origin/master, origin/HEAD, master)
Merge: c7549cce 03db3093
Author: Márk Sági-Kazár <sagikazarmark@users.noreply.github.com>
Date: Thu Apr 8 17:50:52 2021 +0200
いろいろドキュメントを調べて、この時点で全てのログにsigned-off-byがないといけないのだと知りました。
確かに最初のコミットログ SHA1:b79308e9 にはsigned-off-byがありません。
調べてみると、いくらか不要なコミットを取り消しつつ、signoffするにはいくつか方法があるものの、今回はrebaseがシンプルに思えたので、次の方法を採用しました。
$ mkdir dex.signoff
$ rsync -av dex dex.signoff/
$ cd dex.signoff/dex
$ git rebase --signoff HEAD^^
実際にはrsyncで作業用ディレクトリ全体のコピーを作成して、問題ないことを確認してからpushしています。
これで SHA1:b79308e9 自体がなくなって、ハッシュ値は新しくなっていますが、冗長なログは消えて、最初のメッセージにSigned-off-byが付いたログになりました。
commit 6e845f2c90c0b1d200e1e016014970e9cf037c15 (HEAD -> 20210413_anonymous_bind, origin/20210413_anonymous_bind)
Author: Yasuhiro ABE <yasu-abe@u-aizu.ac.jp>
Date: Wed Apr 14 00:02:27 2021 +0900
add the anonymousBind configuration parameter and to use the UnauthenticatedBind function.
Signed-off-by: Yasuhiro ABE <yasu-abe@u-aizu.ac.jp>
commit b79d9a84bc0c35e13a9d5141e95b641af0f81c8f (origin/master, origin/HEAD, master)
Merge: c7549cce 03db3093
Author: Márk Sági-Kazár <sagikazarmark@users.noreply.github.com>
Date: Thu Apr 8 17:50:52 2021 +0200
Merge pull request #2072 from dexidp/dependency-updates
ここから $ git commit --force-with-lease ...
を実行して無事にDCOのエラーはなくなりました。
以上