Gitea: ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๋Š” ๊ด€๋ฆฌ์ž ํŒจ๋„์—์„œ ๋ฌธ์ œ๋ฅผ ์‚ญ์ œํ•˜๋Š” UI๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 02์›” 13์ผ  ยท  40์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: go-gitea/gitea

  • Gitea ๋ฒ„์ „(๋˜๋Š” ์ปค๋ฐ‹ ์ฐธ์กฐ): 6aacf4d
  • Git ๋ฒ„์ „: 191
  • ์šด์˜ ์ฒด์ œ: ์šฐ๋ถ„ํˆฌ ์„œ๋ฒ„
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค( [x] ):

    • [ ] PostgreSQL

    • [x] MySQL

    • [ ] SQLite

  • https://try.gitea.io ์—์„œ ๋ฒ„๊ทธ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

    • [ ] ์˜ˆ(์˜ˆ์‹œ URL ์ œ๊ณต)

    • [ ] ์•„๋‹ˆ

    • [x] ๊ด€๋ จ ์—†์Œ

  • ๋กœ๊ทธ ์š”์ง€:

์„ค๋ช…

๋ฌธ์ œ์—์„œ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ๋ฌธ์ œ ์‚ญ์ œ๋ฅผ ํ—ˆ์šฉํ•˜๋„๋ก ํ˜„์žฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ์„ค์ •์—์„œ ์„ ํƒ ์‚ฌํ•ญ์ด ์•„๋‹Œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?


์ด ๋ฌธ์ œ๋ฅผ ๋’ท๋ฐ›์นจํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? ํ˜„์ƒ๊ธˆ์„ ๊ฒŒ์‹œํ•˜์‹ญ์‹œ์˜ค! ์šฐ๋ฆฌ๋Š” Bountysource ๋ฅผ ํ†ตํ•ด ํ˜„์ƒ๊ธˆ์„

kinfeature revieweconfirmed

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

์˜ˆ๋ฅผ ๋“ค์–ด ISSUE_TEMPLATE๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ์ ํŠธ ํ๋ฆ„์„ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ž์‹ ์˜ ๋ฌธ์ œ ๋ฅผ

์ ์–ด๋„ ๋‹น์‹ ์ด ์ €์žฅ์†Œ์˜ ์†Œ์œ ์ž์ผ ๋•Œ.

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

~์šฐ๋ฆฌ๊ฐ€ gitter์—์„œ ๋งํ–ˆ๋“ฏ์ด, ๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์œผ๋ฉฐ ๊ฑฐ์˜ โ€‹โ€‹๋ชจ๋“  git ํ˜ธ์ŠคํŠธ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋ฌธ์ œ ์‚ญ์ œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.~

IMHO ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ๋ฌธ์ œ ๊ฐ€์‹œ์„ฑ์„ ์กฐ์ž‘ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ๋ˆ„๊ตฌ๋“ ์ง€ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋ผ๋ฉด "์†Œ์œ ์ž" ๋˜๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹ค์ œ๋กœ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ํ™•์ธํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚ด ๋ง์€, ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ๋งํ•ด๋ณด์ž. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์ƒ๊ฐํ•˜๊ณ  ๊ทธ๊ฒƒ์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ๋‚ด ์š”์ฒญ์ด ์–ด๋ฆฌ์„์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค.

๋‚ด ๋ˆˆ์—๋Š” ์ „ํ˜€ ๋ง์ด ์•ˆ ๋œ๋‹ค

๊ทธ ์ดํ›„์˜ ๋ฌธ์ œ๋Š” "๋ฐ”๋ณด"๋กœ ํŒ๋ช…๋˜๊ณ  ๋‹ซํžˆ๋ฉด ๋งค์šฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค! ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ฐ™์€ ์˜์‹ฌ์ด๋‚˜ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ซํžŒ ๋ฌธ์ œ๋Š” ๋ฌธ์ œ๊ฐ€ ์•„๋‹Œ ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋œ ๋ฌด์–ธ๊ฐ€์— ๋Œ€ํ•œ "๋ฌธ์„œ"์ด๋ฉฐ ๋ฌธ์ œ ์ž‘์„ฑ์ž๊ฐ€ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ๋„ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์‚ญ์ œ ๋ฌธ์ œ๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ์œ ์ผํ•œ ๊ฒฝ์šฐ๋Š” ๋ถˆ๋ฒ• ์ฝ˜ํ…์ธ ์˜ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ๋Œ“๊ธ€์„ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋ถˆ๋ฒ•์ ์ธ ๋‚ด์šฉ์ด ์—†๋„๋ก ํ•˜์„ธ์š”.

๋‚˜๋Š” ๋‹น์‹ ์˜ ์š”์ ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ ๋‚ด ๊ฒฝ์šฐ์—๋Š” ์—ฌ์ „ํžˆ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‚ด ์ €์žฅ์†Œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์œ ์ผํ•œ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค.

๋‚ด ์‹ค์ˆ˜๋กœ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ ์ œ๋ชฉ๊ณผ ๋ณธ๋ฌธ์„ Invalid ํ•˜๊ณ  ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์„ ์ข‹์•„ํ•˜์ง€ ์•Š์ง€๋งŒ, ๋‚˜๋Š” ๋‹ค๋ฅธ ๋ˆ„๊ตฌ๋„ ๋‚˜์—๊ฒŒ ๋™์˜ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณธ๋‹ค.

๋‚ด ๋ˆˆ์—๋Š” ๊ทธ๊ฒƒ์ด ๋ถˆ๊ฒฐํ•˜๋‹ค

๊นจ๋—ํ•˜์ง€ ์•Š์ง€๋งŒ ์ผ๊ด€์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค ๐Ÿ™‚

์˜ˆ๋ฅผ ๋“ค์–ด ISSUE_TEMPLATE๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ์ ํŠธ ํ๋ฆ„์„ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ž์‹ ์˜ ๋ฌธ์ œ ๋ฅผ

์ ์–ด๋„ ๋‹น์‹ ์ด ์ €์žฅ์†Œ์˜ ์†Œ์œ ์ž์ผ ๋•Œ.

์ด ๊ธฐ๋Šฅ์€ ์ €์žฅ์†Œ ์†Œ์œ ์ž๊ฐ€ ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ์— ์ ํ•ฉํ•œ ์›Œํฌํ”Œ๋กœ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์†Œ์œ ์ž๋Š” db์—์„œ ์‚ญ์ œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. :)

์ŠคํŒจ๋จธ๋“ค์ด ๊ด‘๊ณ ์— ๋ฌธ์ œ๋ฅผ ๋‚จ๊ธฐ๊ณ  ์žˆ๋Š”๋ฐ ์ œ๊ฐ€ ๊ด€๋ฆฌ์ž๋กœ์„œ ์ง€์šธ ์ˆ˜๊ฐ€ ์—†์–ด์š” ๐Ÿคฆโ€โ™‚๏ธ ๋งค๋ฒˆ DB๋ฅผ ์ •๋ฆฌํ•ด์•ผ ํ•ด์„œ...

์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๋Š” ์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ โ€‹โ€‹์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๊ด€๋ฆฌ์ž ํŒจ๋„์—์„œ ๋ฌธ์ œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์ตœ๊ทผ ํ™œ๋™์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž๋™์œผ๋กœ ์˜ค๋ž˜๋œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ 2์ฃผ ๋™์•ˆ ๋” ์ด์ƒ ํ™œ๋™์ด ์—†์œผ๋ฉด ํ์‡„๋ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๊ธฐ์—ฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์•„์ง ์ œ๊ธฐ๋˜์ง€ ์•Š์€ ํ•œ ๊ฐ€์ง€ ์šฐ๋ ค๋Š” ์ผ๋ถ€ ์ฝ˜ํ…์ธ ๊ฐ€ ๋ฒ•์  ์ด์œ ๋กœ ์ œ๊ฑฐํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์šฉ์ž X๊ฐ€ ๋ฌธ์ œ์— ์ •๋ง ๋ถˆ๋ฒ•์ ์ธ ๋‚ด์šฉ์„ ๊ฒŒ์‹œํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ณ„์ •์€ ์ฆ‰์‹œ ํ•ด์ง€๋˜์ง€๋งŒ ํ˜„์žฌ ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๋Š” ์‚ฌ์ดํŠธ์— ๋ถˆ๋ฒ• ์ฝ˜ํ…์ธ ๊ฐ€ ์žˆ์–ด ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ด€๋ฆฌ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•ญ์ƒ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. UI ๋‚ด์—์„œ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์˜ต์…˜์€ ๊ด€๋ฆฌ์ž๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ 100% ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ฉด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค(๋“œ๋ฌผ๊ฒŒ ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์ž„).

๊ด€๋ฆฌ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•ญ์ƒ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. GUI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ์ „์— ๋‹ค์Œ SQL์ด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๊นŒ?

delete from pull_request where issue_id = 10;
delete from issue where id = 10;

ํ’€ ๋ฆฌํ€˜์ŠคํŠธ URL ๋์— ์žˆ๋Š” ์ˆซ์ž๊ฐ€ 10์ด๋ผ๊ณ  ๊ฐ€์ •
http://localhost :3200/org_name/repo_name/pulls/10

์•ฝ๊ฐ„์˜ ์˜๊ฒฌ์ด์ง€๋งŒ ๋‹ค์Œ์€ ๋‹ซ๋Š” ๋Œ€์‹  ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ํ•ญ๋ชฉ์˜ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

  • ๋ถˆ๋ฒ•์ ์ด๊ฑฐ๋‚˜ ๊ณต๊ฒฉ์ ์ด๊ฑฐ๋‚˜ ์›์น˜ ์•Š๋Š” ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ œ.
  • ํ”„๋กœ์ ํŠธ whatsoeve์™€ ๊ด€๋ จ์ด ์—†๋Š” ์™„์ „ํžˆ ๊ด€๋ จ ์—†๋Š” ์ฝ˜ํ…์ธ ์ž…๋‹ˆ๋‹ค.
  • ๊ธฐํƒ€(์œ ์‚ฌ) ํ”„๋กœ์ ํŠธ ๊ด‘๊ณ 
  • ์ €์ž๊ฐ€ ํ†ค๋‹ค์šด์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฐ•ํ•œ ์–ธ์–ด

๋‹ซ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ถ€ ์œ ์ง€ ๊ด€๋ฆฌ์ž ๋ฐ/๋˜๋Š” ๊ด€๋ฆฌ์ž๋Š” ๋” ๊นจ๋—ํ•œ ๋ฐฑ๋กœ๊ทธ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ์ „ํžˆ ์‚ญ์ œ๋ฅผ ์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ์ค‘๋ณต ๋ฌธ์ œ
  • ur s0ftware suxx ๊ฐœ์„ ์„ ์œ„ํ•œ ๊ทผ๊ฑฐ๋‚˜ ์ œ์•ˆ์ด ์—†๋Š” ๋น„ํŒ

์ด๊ฒƒ์ด ๊ด€๋ฆฌ์ž์™€ ์ €์žฅ์†Œ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ํŠน์ • ์ƒํ™ฉ์—์„œ ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ข…์ข… ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์„ ๊ฐ•์กฐํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

DB์—์„œ ๋ฌธ์ œ๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

bug

์ž์ฒด ํ˜ธ์ŠคํŒ… git repo ์„œ๋ฒ„๋กœ์„œ ์‚ฌ์ดํŠธ ๊ด€๋ฆฌ์ž๋Š” ์ €์žฅ์†Œ ์†Œ์œ ์ž๊ฐ€ "์›ํ•˜๋Š” ๋ชจ๋“  ์ž‘์—…"์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‚˜๋Š” ๋‚ด ์„œ๋ฒ„์˜ ์†Œ์œ ์ž์ด๋ฉฐ(๊ทธ๋ ‡์ง€ ์•Š์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ๋™์ผํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค), ๋‚ด ์ €์žฅ์†Œ์˜ ์†Œ์œ ์ž๋กœ์„œ ์ง์ ‘ ๋ฌธ์ œ๋ฅผ ์—ด๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋‚ด๊ฐ€ ํ•˜๋Š” ์ผ์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ณด์—ฌ์ฃผ๊ณ  ์–ด๋ฆฌ์„์€ ํ—›์†Œ๋ฆฌ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์œ ์šฉํ•œ ๊ฒƒ๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ํ•˜๋ฃจ ์ข…์ผ? ๋ฐ”๋ณด ๊ฐ™์€ ์“ธ๋ชจ์—†๋Š” ์ฝ”๋“œ? ").

๊ทธ๋Ÿฌ๋‚˜ ๋‚ด๊ฐ€ ๋‚ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž‘์—…ํ•  ๋•Œ(๋˜ํ•œ ๋‹น์‹ ์˜ 90%๊ฐ€ ์ ์–ด๋„ ํ•œ ๋ฒˆ์€ ํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค) ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚ด ์ž์‹ ์˜ ๋ ˆ์ด๋ธ” ๊ตฌ์„ฑํ‘œ ์•„๋ž˜์—๋„ ํ•ญ๋ชฉ์„ ์–ด๋””์— ๋„ฃ์–ด์•ผ ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ ˆ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด "์ด์Šˆ ๊ธฐ๋ก"์ด ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ๋ ˆ์ด๋ธ” ์•„๋ž˜์— ๋ฌธ์ œ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ๊ณ„์† ํ•ฉ๋‹ˆ๋‹ค .

๊ทธ ์ง„๋ถ€ํ•œ ์šฐ์œ ๋ถ€๋‹จํ•จ์„ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋งค์šฐ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

DB์—์„œ ๋ฌธ์ œ๊ฐ€ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

bug

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„์— ์‹ค์ œ๋กœ ์ด๊ฒƒ์„ ์•Œ์•„ ๋ƒˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ repository ํ…Œ์ด๋ธ”๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋ฏธ๊ฒฐ ๋ฌธ์ œ ์ˆ˜๋Š” num_issues ๋ฐ num_closed_issues ๊ฐœ ์—ด์˜ ๊ฐ์ˆ˜์ž…๋‹ˆ๋‹ค. 47 num_issues ๋ฅผ 46 ํ•˜๊ณ  ๊ฐœ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

@DJFraz
num_issues ์ค„์ด๋ฉด ์ƒˆ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•  ๋•Œ ์˜ค๋ฅ˜ 500์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋Œ€์‹  num_closed_issues ๋ฅผ ๋Š˜๋ ค์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

num_closed_issues ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ์ƒ๊ฐ์€ ์•„๋‹™๋‹ˆ๋‹ค. :) Gitea๋Š” ๋ฌธ์ œ ํ…Œ์ด๋ธ”์— ๋”ฐ๋ผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๋ฌธ์ œ๋ฅผ ์ œ๊ฑฐํ•œ ๋‹ค์Œ num_issues + 1์ด ๊ธฐ์กด ๋ฌธ์ œ ์ƒ‰์ธ๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ฌธ์ œ๋ฅผ ๋‹ซ๊ณ  ๋‚ด์šฉ์„ ๋น„์šฐ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

:point_up: ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์‚ญ์ œ ๋ฌธ์ œ๊ฐ€ ๊ตฌํ˜„๋˜์ง€ ์•Š๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์ƒ์˜ ์ด์œ ๋กœ ์ด์Šˆ ๋ฒˆํ˜ธ๋Š” DB์— ์บ์‹ฑ๋ฉ๋‹ˆ๋‹ค( num_issues ). ์ด ์ˆซ์ž๋Š” ๋‹ค์Œ ์ด์Šˆ ๋ฒˆํ˜ธ( num_issues + 1 )์—๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

DB์— ์ด ๊ฐ’์„ ๋ณต์ œํ•˜๊ณ  last_issue_nr ๋˜๋Š” next_issue_nr ๋ฅผ ์ˆ˜์ • ์‚ฌํ•ญ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” hidden -boolean์„ ์ด์Šˆ ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ๋Š” UI(๋ฐ API)์—์„œ๋งŒ ์ˆจ๊ฒจ์ ธ ์žˆ์ง€๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‚˜์ค‘์— ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฒ•์  ์ด์œ ๋Š” ์Šค๋ ˆ๋“œ์˜ ์•ž๋ถ€๋ถ„์—์„œ ์–ธ๊ธ‰๋จ).

๊ทธ๋ƒฅ ๋‚ด 2 ์„ผํŠธ

์ด ๋ฒˆํ˜ธ๋Š” ๋‹ค์Œ ๋ฐœํ–‰ ๋ฒˆํ˜ธ( num_issues + 1 )์—๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ข€ ๋น ์ง€๋Š”. ํ˜„์žฌ SELECT MAX(index)+1 FROM issue WHERE repo_id = ? ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋ฌธ์ œ ์‚ญ์ œ๊ฐ€ ๊ตฌํ˜„๋˜์ง€ ์•Š๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค

์•„๋‹ˆ์š”, ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜๋™์œผ๋กœ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. :)
์ด์œ ๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์ดํŠธ๋ฅผ ์™„์ „ํžˆ ์ œ์–ดํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ํŠนํžˆ ์ŠคํŒธ์˜ ๋Œ€์ƒ์ด ๋œ ๊ฒฝ์šฐ ๊ณต๊ฐœ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ gitea ์„ค์น˜์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ๋‹ซ๊ธฐ ๊ธฐ๋Šฅ์€ ํ”„๋กœ์ ํŠธ์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ๋‹ซ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ ๊ด€๋ จ ์—†๋Š” ์ŠคํŒธ์„ ๋‹ซ๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ index ๋Š” ์ €์žฅ์†Œ ํ…Œ์ด๋ธ”์ด๋‚˜ ๋‹ค๋ฅธ ๊ณณ์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ index ๋Š” ์ €์žฅ์†Œ ํ…Œ์ด๋ธ”์ด๋‚˜ ๋‹ค๋ฅธ ๊ณณ์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

xorm์ด ๋ชจ๋“  db์—์„œ SELECT FOR UPDATE ๋ฅผ ์ง€์›ํ•˜๋Š” ํ•œ ์ธ๋ฑ์Šค ์—…๋ฐ์ดํŠธ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ์ œ ์ƒ๊ฐ์—๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‚˜์š”?

์—ฐ์†์ ์ด์–ด์•ผ ํ•˜๋Š”(์ฆ‰, ๊ตฌ๋ฉ์ด ์—†๋Š”) ์ˆœ์ฐจ์  ๊ฐ’ ์ƒ์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์˜ค๋ž˜์ „์— ๋‚ด๊ฐ€ ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ์—์„œ ์ด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ:

SQL> SELECT * from max_values;
table        | key          | last_value
-------------+--------------+-------------
repository   |          445 |          3
repository   |          446 |          1
repository   |          447 |        745
repository   |          448 |         92
repository   |          449 |         60
repository   |          450 |         46

์ด๋Ÿฐ ์‹์œผ๋กœ ๋‹ค์Œ ๋ฌธ์ œ #๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

PSQL> UPDATE max_values SET last_value = last_value + 1
      WHERE table = 'repository' and key = '448';
PSQL> SELECT last_value + 1 FROM max_values
      WHERE table = 'repository' and key = '448';

(read value)

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋‚˜์˜ ์ž ๊ธˆ๋งŒ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, ์‹ค์ œ ์ €์žฅ์†Œ ํ–‰์€ ๋‚˜๋จธ์ง€ ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ์ž ๊ธฐ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค). ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์€ ์ฒซ ๋ฒˆ์งธ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ ์ž ๊ธฐ๋ฏ€๋กœ ์ค‘๋ณต ๊ฐ€๋Šฅ์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํŠธ๋žœ์žญ์…˜์ด ๋กค๋ฐฑ๋˜๋ฉด ๋‘ ๋ฒˆ์งธ ํŠธ๋žœ์žญ์…˜์€ ์˜ฌ๋ฐ”๋ฅธ ๋‹ค์Œ ๊ฐ’์„ ์–ป์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ตœ์‹  ๋ฌธ์ œ๋ฅผ ์‚ญ์ œํ•˜๋”๋ผ๋„ ๊ฐ’์ด ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@guillep2k ๋” ๋‚˜์€ ์†Œ๋ฆฌ.

@guillep2k๊ฐ€ ์ œ์•ˆํ•œ @lunny ์†”๋ฃจ์…˜์€ ์ƒ์‚ฌ์ฒ˜๋Ÿผ ํ•ฉ๋ฒ•์ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ @DJFraz๊ฐ€ 2019๋…„ 8์›” 27์ผ์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด์Šˆ ์นด์šดํ„ฐ๋Š” ๋Ÿฐํƒ€์ž„์œผ๋กœ ๊ณ„์‚ฐ๋˜์ง€๋งŒ ์บ์‹ฑ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?
๊ฐ์‚ฌ ํ•ด์š”.

@guillep2k๊ฐ€ ์ œ์•ˆํ•œ @lunny ์†”๋ฃจ์…˜์€ ์ƒ์‚ฌ์ฒ˜๋Ÿผ ํ•ฉ๋ฒ•์ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ @DJFraz๊ฐ€ 2019๋…„ 8์›” 27์ผ์— ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด ์ด์Šˆ ์นด์šดํ„ฐ๋Š” ๋Ÿฐํƒ€์ž„์œผ๋กœ ๊ณ„์‚ฐ๋˜์ง€๋งŒ ์บ์‹ฑ์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ?

๋ฌธ์ œ๋ฅผ ์—ด๊ฑฐ๋‚˜ ๋‹ซ์„ ๋•Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ "์บ์‹œ๋œ" ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ฃผ์„์˜ ๋ฌธ์ œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๋„๋ก ์ ์ ˆํ•œ ์—ด์„ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๊ณ  ํ–‰ ์‚ญ์ œ๋ฅผ ์‹œ๋„ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ์ฃผ์„์˜ ๋ฌธ์ œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•˜๋„๋ก ์ ์ ˆํ•œ ์—ด์„ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š๊ณ  ํ–‰ ์‚ญ์ œ๋ฅผ ์‹œ๋„ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ, techincally ... ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ญ์ œ ์ผ์„ _manually_ ์•„๋ฌด๊ฒƒ๋„ ํŒŒ๊ดดํ•˜์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ทธ๋ž˜์„œ, techincally ... ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‚ญ์ œ ์ผ์„ _manually_ ์•„๋ฌด๊ฒƒ๋„ ํŒŒ๊ดดํ•˜์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์ œ ๋ฒˆํ˜ธ๊ฐ€ ์žฌ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๋Œ“๊ธ€ #999 ์„ ์‚ญ์ œํ•˜๊ณ  ๋งˆ์ง€๋ง‰์— ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์Œ ์ข‹์€ ๋Œ“๊ธ€์—๋„ #999 ๋ฒˆํ˜ธ๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฒˆํ˜ธ๋Š” no no no์ž…๋‹ˆ๋‹ค. ์ƒˆ ์ฃผ์„์€ ์‹ค์ œ๋กœ #1000 #999 ์—ฌ์•ผ ํ•˜๊ณ  ์ˆซ์ž

๋ฌธ์ œ๋ฅผ ์‚ญ์ œ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ: ๊ดœ์ฐฎ์ง€๋งŒ ํŽธ์ง‘ ๊ธฐ๋ก ์‚ญ์ œ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์•ˆ: ๋ณด๊ธฐ์—์„œ ์›์น˜ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ์™„์ „ํžˆ ์ˆจ๊ธฐ๊ณ  ๊ด€๋ฆฌ์ž๊ฐ€ ์ˆจ๊ฒจ์ง„ ๋ฌธ์ œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž์‹ ์˜ ์‚ฌ์ดํŠธ์—์„œ ๋ฒ•์ ์œผ๋กœ ์œ„ํ—˜ํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ณ  ๋ฌธ์ œ ๋ชฉ๋ก์ด ์ •๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ž์‹ ์˜ ์‚ฌ์ดํŠธ์—์„œ ๋ฒ•์ ์œผ๋กœ ์œ„ํ—˜ํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๊ฐ€ ๋ชจ๋‘ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

@DarkWiiPlayer ๋ฌธ์ œ๋Š”

๋ฌธ์ œ ์ˆจ๊ธฐ๊ธฐ: ๋ ˆ์ด๋ธ”๊ณผ ์‚ฌ๋žŒ ๋ฐ ๋งˆ์Œ์„ ๋ฐ”๊พธ๋Š” ๊ฒฐ์ •์˜ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐ๋กœ ๊ฐ€๋“ ์ฐฌ ๋ฌธ์ œ ๊ธฐ๋ก์ด ์žˆ๋Š” ์ค‘๋ณต ๋ฌธ์ œ์™€ ๋ณต์žกํ•œ ๋‚ด์šฉ์„ ์›ํ•˜์ง€ ์•Š๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์„œ๋ฒ„ ๋””์Šคํฌ์— ๋ถˆ๋ฒ• ์ฝ˜ํ…์ธ ๊ฐ€ ์ €์žฅ๋œ ๊ฒฝ์šฐ์—๋Š” ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค...

@DarkWiiPlayer ๋ฌธ์ œ๋Š”

๊ทธ๊ฑด ์ข‹์€ ์ง€์ ์ด์•ผ. '๊ฒฝ์ฐฐ์ด ์•ˆ๋ด๋„ ๊ดœ์ฐฎ์„๊ฑฐ์•ผ' ๋ผ๋Š” ๊ด€์ ์—์„œ ๋ดค๋˜๊ฑฐ ๊ฐ™์€๋ฐ ๊ทธ๋ž˜๋„ ์‚ฌ์ดํŠธ ์†Œ์œ ์ž์—๊ฒŒ ํ”ผํ•ด๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” ๋ฌด์ž‘์ • ์ฐพ๋Š” ์‚ฌ๋žŒ๋ถ€ํ„ฐ ์ฐพ์•„๋‚ด๋Š” ์‚ฌ๋žŒ๊นŒ์ง€ ๋‹ค์–‘ํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ์ฝ˜ํ…์ธ ๋ฅผ ์˜๋„์ ์œผ๋กœ ์—…๋กœ๋“œํ•œ ๋‹ค์Œ ๊ฒฝ์ฐฐ์— ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ˆจ๊ฒจ์ง„ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ฒƒ๋ณด๋‹ค ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ, ๋ฌธ์ œ๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ํŽธ์ง‘ ๊ธฐ๋ก์„ ์ง€์šฐ๋Š” ๊ฒƒ๊ณผ ํ•จ๊ป˜ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ƒ์ ์œผ๋กœ๋Š” ๋ฌธ์ œ๋ฅผ ์ง„์ •์œผ๋กœ "์‚ญ์ œ"ํ•˜๋Š” ์˜ต์…˜์ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์Šคํฌ๋Ÿฌ๋น™ํ•˜๊ณ  DB์—์„œ "์‚ญ์ œ๋จ"์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋”๋ผ๋„ ์ตœ์„ ์˜ ์†”๋ฃจ์…˜์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฑด ์ข‹์€ ์ง€์ ์ด์•ผ.

๊ฐ์‚ฌ ํ•ด์š”.

'๊ฒฝ์ฐฐ์ด ํ•œ ๋ฒˆ๋„ ๋ณด์ง€ ์•Š์œผ๋ฉด ๊ดœ์ฐฎ๋‹ค'๋Š” ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

์œ ๊ฐ์Šค๋Ÿฝ๊ฒŒ๋„ ์ €์žฅ๋งค์ฒด์— ๋ถˆ๋ฒ•ํŒŒ์ผ์ด ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡๊ฒŒ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.. URL์„ ํ†ตํ•ด ๊ณต๊ฐœ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋„ ์‹ ๊ณ ๋ฅผ ํ•˜๊ณ  ํ™•์ธ์„ ํ•˜๋ฉด ๋งํ•ฉ๋‹ˆ๋‹ค. "ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•œ ์ฝ˜ํ…์ธ "๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋„...

์ด๊ฒƒ์„ ๊ฐ–๋Š” ์ด์œ  ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด: ์ €๋Š” ํ˜„์žฌ 2๋ช…์˜ ๋‹ค๋ฅธ ๊ณต๋™ ์ž‘์—…์ž์™€ ๋น„๊ณต๊ฐœ ์ €์žฅ์†Œ์—์„œ ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ ์šฐ๋ฆฌ์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์—๋Š” ๊ณต๊ฐœ์ ์œผ๋กœ ๊ณต๊ฐœํ•˜์ง€ ์•Š์„ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณต๊ฐœ์ ์œผ๋กœ ๋ฐœํ‘œํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•œ ๋ฏธ๋ž˜ ์‹œ์ ์— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ ๊ณต๊ฐœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์‹œ์ ์—์„œ ํ”„๋กœ์ ํŠธ ๊ฐ€์‹œ์„ฑ์„ ๊ณต๊ฐœ์ ์œผ๋กœ ์„ค์ •ํ•˜์—ฌ ๊ณต๊ฐœํ•˜๊ธฐ ์ „์— ๋ฌธ์ œ ์„น์…˜์„ ์™„์ „ํžˆ ์ง€์šฐ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ธ์  ๊ฐ€๋Š” ์ด ๊ธฐ๋Šฅ์„ ๋ณด๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด์จŒ๋“  gitea์— ๋Œ€ํ•œ ๋ชจ๋“  ์ž‘์—…์— ๊ฐ์‚ฌํ•˜๊ณ  ํ›Œ๋ฅญํ•œ ์ž‘์—…์„ ๊ณ„์†ํ•˜์‹ญ์‹œ์˜ค!

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