๋ค์ API๊ฐ github v3(๋ฒ ํ?)์ ์กด์ฌํ์ง๋ง ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์์ง ๋ฐ์๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด API๋ฅผ ์๋ฒฝํ๊ฒ ์ง์ํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค(ํนํ PR ๊ฒํ ์ ์ผ๋ง๋ ๋ง์ ๊ฒํ ๊ฐ ํ์ํ์ง ๋๊ฐ ๋๊ตฌ์ ์ํด ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์).
@harlowja ๋๋ https://github.com/a13m/PyGithub/commit/3af108372a5179e16fc093b78568c8e45a3a91ca ์์ ์ด๊ฒ์ ์กฐ๊ธ ํ์ต๋๋ค.
์ต์ํ ์ง์ฌ ๋ณดํธ๋ฅผ ๊ฐ์ฌํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ์ต๋๋ค. YMMV.
์, ๊ทธ๋ฐ ๊ฒ์ ๋ณํฉ(๋ฐ ๋ฆด๋ฆฌ์ค)ํ๋ฉด ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ค์ API ๋ฐ/๋๋ ๊ธฐ๋ฅ์ ๋ค์ฒ์ง๋ ๊ฒ ๊ฐ์์ ์ฝ๊ฐ ์ฌํ๋ค์ :-/
ํนํ ๋ด ๊ทธ๋ฃน์ ๋ํ ๋ชจ๋ github ๊ตฌ์ฑ์ด yaml ํ์์ด๊ณ github UI์ ์จ๊ฒจ์ ธ ์์ง ์์์ง ํ์ธํ๊ณ ํด๋น yaml ํ์์ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ๋ค์ํ github ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์กฐ์ ํ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ํฉ๋๋ค. ์ด๊ฒ์ ๋ด ๊ทธ๋ฃน ๋ฆฌํฌ์งํ ๋ฆฌ ์ ์ฒด์ ์ฐ์์ฑ(๋ฐ ์จ์ ์ฑ)์ ์์ฑํ๊ณ ๊ฒํ ์ ๋ณดํธ๋ฅผ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์กฐ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ฐ๋ ๊ฒ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ํ์ด ์ํ๋ ์ผ์ ๋๋ค(๊ฒํ ์ ๋ชฉ๋ก์ด ์ ์ฌํ yaml ํ์์ ํตํด ์ ์ด ๋ฐ ๊ด๋ฆฌ๋ ์ ์๋๋ก).
์ํ์ด @a13m!
ํํธ: https://developer.github.com/changes/2017-09-06-protected-branches-preview-end/.
๋๊ตฐ๊ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋์ง๋ฅผ ์์งํ ๋๊น์ง ์ฐ๋ฆฌ๋ ๊ฐํ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ ์ ๋ฐ์ดํธ ๋ถ๊ธฐ ๋ณดํธ ๋์ ์ ํธ์ถํ ๋ required_pull_request_reviews ๊ฐ์ฒด๋ฅผ ์ ๋ฌํด์ผ ํฉ๋๋ค. ์ด ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ ๊ธฐ๊ฐ ๋์ ์ ํ ์ฌํญ์ด์์ต๋๋ค.
์ด๊ฒ๋ ๋ณด๊ณ ์ถ์ต๋๋ค. ํ๋ณด ๋ถํ๋๋ฆฝ๋๋คโค๏ธ
์ด๊ฒ์ ์ฌ์ค ํฐ ํผ๋์ ๋๋ค. Repository.protect_branch()๋ GitHub์์ Branch Protection์ด ์ข ๋ฃ๋ ๊ฒ์ด๋ผ๊ณ ๋ธ๋ก๊ทธ์ ๊ฒ์ํ ์ดํ๋ก ์๋ง๋ ์ ๊ฑฐ๋์์ ์๋ํฌ์ธํธ๋ฅผ ํธ์ถํฉ๋๋ค. API ๋ฌธ์์ ์ฝ๋๊ฐ ์๋ก ์์ ํ ์์ถฉ๋๋ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค.
์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์ ๋์ ์ ํธ์ถํ๊ธฐ ์ํด ์ ๋ฉ์๋ Repository.edit_branch_protection()์ ์ถ๊ฐํ ์์ ์ด๋ฉฐ Repository.protect_branch()๋ฅผ ๋์์ ์ ๊ฑฐํ๊ณ ์ถ์ ์ ํน์ด ์์ต๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ, ์ ํจ์น๋ ์์ง ๋ฏธ์์ด์ง๋ง ์กฐ๊ธฐ ํผ๋๋ฐฑ์ด ์์ผ๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค ^^
๋ํ Branch์ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ๊ณ Repository.protect_branch()๋ฅผ ์ญ์ ํ์ฌ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ ๊ทผํ์ฌ ์ด์ ๋ํด ์์ ํ์ต๋๋ค.
@stevenk ์ ์ด์ ์๊ฒ ์ต๋๋ค. ํ ์์ ์ ๋ณต์ ํ๊ณ ์ถ์ง ์์ต๋๋ค. ๋ด ์๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ API๋ฅผ ๋์ผํ๊ฒ ์ ์งํ๋ ๊ฒ์ด ์์ต๋๋ค. ์ด๋ป๊ฒ ํ์๊ฒ ์ต๋๊น?
@JPWKU ์ฃ์กํฉ๋๋ค. ์ ๊ทน์ ์ผ๋ก ์์ ์ค์ด๋ผ๋ ๊ฒ์ ๋ ๋ช ํํ๊ฒ ์ ๋ฌํด์ผํ์ต๋๋ค. Repository.protect_branch() ๋ฉ์๋๋ ์ ๋ถ๊ธฐ ๋ณดํธ API๊ฐ ์ข ๋ฃ๋ ๋ ์ ๊ฑฐํ ๋๊น์ง GitHub API์ ์ผ์นํ์ต๋๋ค.
๋ด ํ์ฌ ํจ์น๋ GitHub๊ฐ https://developer.github.com/v3/repos/branches/ ์ ํ์๋๋ ๊ฒ์ฒ๋ผ ๋ถ๊ธฐ ๋ณดํธ API๋ฅผ ๊ตฌํํ๋ฏ๋ก ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ค์ ํฝ๋๋ค. ์ด๊ฒ์ ํธ์ํ๊ธฐ ์ ์ ์์ฑ์ ์๋ฃํด์ผ ํ๋ 3๊ฐ ์ ๋์ ํ ์คํธ ์ผ์ด์ค๊ฐ ์์ต๋๋ค.
@stevenk ๊ฑฑ์ ํ์ง ๋ง์ธ์. ์ด๋ฏธ ์ด ๋ถ์ผ์์ ์ผ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ PR์ ๋ซ๊ณ ๊ทํ์ PR์ ๋ํด ์ธ๊ธ/๋์์ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
@stevenk ์ด๊ฒ์ ๊ณง ๋ณํฉํ ๊ณํ์ ๋๊น? ์ด ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค.
@prburgu ๋ณํฉ ํ ๋ ๋์๊ฒ ๋ฌ๋ ค ์์ง ์์ต๋๋ค. @JPWKU ์ธ์ ์ฒจ๋ถ๋ PR์ ๊ณ์ ๊ฒํ ํ ์๊ฐ์ด ์์ต๋๊น?
@prburgu @stevenk ์ค๋์ด๋ ์ค๋ ์ ๋ ์ ์๊ฐ์ ๋ด์ด ๋ฆฌ๋ทฐ๋ฅผ ๋ง์น๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๊ฒ์ ์ฌ์ค ํฐ ํผ๋์ ๋๋ค. Repository.protect_branch()๋ GitHub์์ Branch Protection์ด ์ข ๋ฃ๋ ๊ฒ์ด๋ผ๊ณ ๋ธ๋ก๊ทธ์ ๊ฒ์ํ ์ดํ๋ก ์๋ง๋ ์ ๊ฑฐ๋์์ ์๋ํฌ์ธํธ๋ฅผ ํธ์ถํฉ๋๋ค. API ๋ฌธ์์ ์ฝ๋๊ฐ ์๋ก ์์ ํ ์์ถฉ๋๋ ์ด์ ๊ฐ ๊ถ๊ธํฉ๋๋ค.
์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ์ ๋์ ์ ํธ์ถํ๊ธฐ ์ํด ์ ๋ฉ์๋ Repository.edit_branch_protection()์ ์ถ๊ฐํ ์์ ์ด๋ฉฐ Repository.protect_branch()๋ฅผ ๋์์ ์ ๊ฑฐํ๊ณ ์ถ์ ์ ํน์ด ์์ต๋๋ค.