Pygithub: ๊ณ ๊ธ‰ ๋ถ„๊ธฐ ๋ณดํ˜ธ API์— ๋Œ€ํ•œ ์ง€์› ์ถ”๊ฐ€

์— ๋งŒ๋“  2017๋…„ 06์›” 30์ผ  ยท  15์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: PyGithub/PyGithub

๋‹ค์Œ API๊ฐ€ github v3(๋ฒ ํƒ€?)์— ์กด์žฌํ•˜์ง€๋งŒ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์•„์ง ๋ฐ˜์˜๋˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด API๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํŠนํžˆ PR ๊ฒ€ํ† ์™€ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๊ฒ€ํ† ๊ฐ€ ํ•„์š”ํ•œ์ง€ ๋ˆ„๊ฐ€ ๋ˆ„๊ตฌ์— ์˜ํ•ด ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—).

feature request high priority

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด๊ฒƒ์€ ์‚ฌ์‹ค ํฐ ํ˜ผ๋ž€์ž…๋‹ˆ๋‹ค. Repository.protect_branch()๋Š” GitHub์—์„œ Branch Protection์ด ์ข…๋ฃŒ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ธ”๋กœ๊ทธ์— ๊ฒŒ์‹œํ•œ ์ดํ›„๋กœ ์•„๋งˆ๋„ ์ œ๊ฑฐ๋˜์—ˆ์„ ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. API ๋ฌธ์„œ์™€ ์ฝ”๋“œ๊ฐ€ ์„œ๋กœ ์™„์ „ํžˆ ์ƒ์ถฉ๋˜๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ์ƒˆ ๋์ ์„ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ ๋ฉ”์„œ๋“œ Repository.edit_branch_protection()์„ ์ถ”๊ฐ€ํ•  ์˜ˆ์ •์ด๋ฉฐ Repository.protect_branch()๋ฅผ ๋™์‹œ์— ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์€ ์œ ํ˜น์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  15 ๋Œ“๊ธ€

@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 ์˜ค๋Š˜์ด๋‚˜ ์˜ค๋Š˜ ์ €๋…์— ์‹œ๊ฐ„์„ ๋‚ด์–ด ๋ฆฌ๋ทฐ๋ฅผ ๋งˆ์น˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰