Skip to content

์ตœ์ ํ™”: synchronize ์ด๋ฒคํŠธ ์‹œ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋งŒ ํŒจํ„ด ์žฌ๋ถ„์„ย #7

Description

@sounmind

๋ฌธ์ œ

PR์— synchronize ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ(์žฌpush), ์ด๋ฒˆ push์—์„œ ์‹ค์ œ๋กœ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋งŒ ์žˆ์–ด๋„ PR ์ „์ฒด ์†”๋ฃจ์…˜ ํŒŒ์ผ์„ ๋ชจ๋‘ ์žฌ๋ถ„์„ํ•˜๊ณ  ๋ด‡ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œ/์žฌ์ž‘์„ฑํ•œ๋‹ค.

์›์ธ

GET /repos/{owner}/{repo}/pulls/{pr_number}/files API๋Š” PR ์ „์ฒด์˜ ๋ˆ„์  diff(base ๋ธŒ๋žœ์น˜ ๋Œ€๋น„)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ, "์ด๋ฒˆ push์—์„œ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ"์„ ์‹๋ณ„ํ•  ์ˆ˜ ์—†๋‹ค.

์˜ํ–ฅ

  • ๋ถˆํ•„์š”ํ•œ OpenAI API ํ˜ธ์ถœ (๋น„์šฉ ๋‚ญ๋น„)
  • GitHub ์•Œ๋ฆผ ์ŠคํŒธ ("๋ด‡์ด ๋Œ“๊ธ€ ๋‹ฌ์•˜์–ด์š”" ร— ํŒŒ์ผ ์ˆ˜)
  • ์ด๋ฏธ ๋‹ฌ๋ ค์žˆ๋Š” ๋™์ผํ•œ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์žฌ์ž‘์„ฑ

๋ฐœ๊ฒฌ ๊ฒฝ์œ„

ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

์˜ต์…˜ 1: webhook payload์˜ before/after SHA ํ™œ์šฉ (์ถ”์ฒœ)

synchronize ์ด๋ฒคํŠธ payload์—๋Š” before/after ์ปค๋ฐ‹ SHA๊ฐ€ ํฌํ•จ๋จ.

  • opened/reopened: ๊ธฐ์กด๋Œ€๋กœ ๋ชจ๋“  ํŒŒ์ผ ๋ถ„์„ (์ดˆ๊ธฐ ์ƒ์„ฑ)
  • synchronize: GET /repos/{owner}/{repo}/compare/{before}...{after}๋กœ ์‹ค์ œ ๋ณ€๊ฒฝ ํŒŒ์ผ๋งŒ ์กฐํšŒ โ†’ ํ•ด๋‹น ํŒŒ์ผ์˜ ๊ธฐ์กด ๋ด‡ ์ฝ”๋ฉ˜ํŠธ๋งŒ ์‚ญ์ œ + ์žฌ์ž‘์„ฑ

์žฅ์ : ๊ฐ„๋‹จ, synchronize ์˜๋„์™€ ๋ถ€ํ•ฉ
๋‹จ์ : ์ด๋ฒคํŠธ ํƒ€์ž…๋ณ„๋กœ ๋ถ„๊ธฐ ํ•„์š”

์˜ต์…˜ 2: ํŒŒ์ผ SHA๋ฅผ ์ฝ”๋ฉ˜ํŠธ์— ์ €์žฅ

๋ด‡ ์ฝ”๋ฉ˜ํŠธ์— ํŒŒ์ผ์˜ blob SHA ์ €์žฅ:

<!-- dalestudy-pattern-tag sha:abc123def -->

๋‹ค์Œ push ์‹œ ํ˜„์žฌ ํŒŒ์ผ SHA์™€ ์ฝ”๋ฉ˜ํŠธ์˜ SHA ๋น„๊ต โ†’ ๋™์ผํ•˜๋ฉด ์Šคํ‚ต.

์žฅ์ : ๋ชจ๋“  ์ด๋ฒคํŠธ ํƒ€์ž…์— ๋™์ผํ•˜๊ฒŒ ์ ์šฉ, ์ˆ˜๋™ ์‚ญ์ œ/์†์ƒ๋œ ์ฝ”๋ฉ˜ํŠธ๋„ ๊ฐ์ง€
๋‹จ์ : ํŒŒ์‹ฑ ๋กœ์ง ์ถ”๊ฐ€ ํ•„์š”

Metadata

Metadata

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

Status
Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions