Gitea: ๊ธฐ์—ฌ์ž ๊ทธ๋ž˜ํ”„

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

๊ธฐ์—ฌ์ž ๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„: https://github.com/go-gitea/gitea/graphs/contributors

screenshot_20170205_131515


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

kinfeature revieweconfirmed

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

์ข‹์•„ ์—ฌ๋Ÿฌ๋ถ„, ๋˜ ๋‹ค๋ฅธ ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š”์ด ์ƒํƒœ์— ๋„๋‹ฌํ•˜๋„๋ก ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

image


ํ™•์žฅํ•˜๋ ค๋ฉด ํด๋ฆญํ•˜์„ธ์š”.

Gitea ๋Œ€ GitHub(์‹ค์ œ ์˜ˆ)

![์ด๋ฏธ์ง€](https://user-images.githubusercontent.com/19366641/50791201-6f7d9500-12c1-11e9-9a3d-7612c63e6b4a.png) ![์ด๋ฏธ์ง€](https://user-images.githubusercontent.com 19366641/50791210-7c9a8400-12c1-11e9-985c-b0dffcbfae3a.png)

์–ด๋‘์šด

![์ด๋ฏธ์ง€](https://user-images.githubusercontent.com/19366641/50791412-0cd8c900-12c2-11e9-86e7-5fb4142a5bcc.png)



์„ธ๋ถ€:

  • HTTP API๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ  ๊ทธ๋ž˜ํ”„๊ฐ€ ์„œ๋ฒ„์—์„œ SVG(https://github.com/wcharczuk/go-chart ์‚ฌ์šฉ)๋กœ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •๋ง ์„ฑ๋Šฅ์ด ์ข‹๊ณ  ์ผ์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปค๋ฐ‹, ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ
  • UI๋Š” GitHub ๐Ÿ˜„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” "์•ฝ๊ฐ„"์ž…๋‹ˆ๋‹ค.

๋‚จ์€ ๋ฌธ์ œ:

  • gitea DB์— ์—†๋Š” ๊ธฐ์—ฌ์ž๋Š”(์˜ˆ: repo๋ฅผ ๊ฐ€์ ธ์™”๊ธฐ ๋•Œ๋ฌธ์—) ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. โœ…
  • ๋” ํฐ ์ €์žฅ์†Œ์˜ ์„ฑ๋Šฅ ๋ฌธ์ œ. ์ €๋งŒ golang n00b์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • X์ถ•์—์„œ AM/PM ํ•ญ๋ชฉ ์ œ๊ฑฐ( ์‚ฌ์šฉ์ž ์ •์˜ ํฌ๋งทํ„ฐ ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ) โœ…
  • ์‚ฌ์šฉ์ž ๊ทธ๋ž˜ํ”„์˜ Y์ถ• ์Šค์ผ€์ผ ์ˆ˜์ •, 1 ์ปค๋ฐ‹์€ 2 ์ปค๋ฐ‹ ๋†’์ด์˜ ์ ˆ๋ฐ˜์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค โœ…
  • ์ ์ ˆํ•œ ๋‹คํฌ ํ…Œ๋งˆ ์ง€์›(์œ„์˜ CSS๋Š” ๊ฐœ๋ฐœ โ€‹โ€‹๋„๊ตฌ์—์„œ ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค) โœ…

๊ฐ€๋Šฅํ•œ ๊ฐœ์„  ์‚ฌํ•ญ:

  • ํ†ต๊ณ„๋Š” ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜(ํ•˜๋“œ์ฝ”๋”ฉ๋จ)์— ๋Œ€ํ•œ ๊ฒƒ์ด๋ฉฐ, ์ด๋Š” ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝ๋˜๊ณ  UI ์ปจํŠธ๋กค๋กœ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ๋ฐ ๊ฐœ์„ ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค . ์ง€๊ธˆ๊นŒ์ง€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ํ•˜์ง€๋งŒ ๋‹ค๊ฐ€์˜ค๋Š” ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ๋‘๋ ต์Šต๋‹ˆ๋‹ค :์Šค๋งˆ์ผ:

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

์ข‹์€ ๊ทธ๋ž˜ํ”„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚ด ์ƒ๊ฐ์— ์ด๊ฒƒ์€ ์„œ๋ฒ„ ์ธก์—์„œ ๋ Œ๋”๋ง ๋ฐ ์บ์‹œ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๐ŸŽ‰

๋‚˜๋Š” ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ์ด๋ฏธ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋ฉด (์˜ˆ, @lafriks , ์ €๋Š” ๊ตํ›ˆ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. +1 ๋Š” ๊ฑด์„ค์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค ๐Ÿ˜‰).

์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋ฒ„ ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ๋ Œ๋”๋ง์— ๋Œ€ํ•ด ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•, ์‚ฌ์šฉํ•  ์ฐจํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์— ๋Œ€ํ•ด ๋•Œ๋•Œ๋กœ ๋„์›€์ด ํ•„์š”ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‚˜๋Š” ๋˜ํ•œ ๊ธฐ๋ณธ์ ์œผ๋กœ Go๋ฅผ ์ „ํ˜€ ๋ชจ๋ฅด์ง€๋งŒ ์ข‹์€ ํ”„๋ก ํŠธ์—”๋“œ ์ง€์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ฒ˜์Œ์ด๊ณ ์š”, ๋˜ํ•œ ์–ผ๋งˆ ์ „์— Gitea ํ•ดํ‚น์— ๋›ฐ์–ด๋“ค๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜„

ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์™€ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด ์†”๋ฃจ์…˜์„ ๋ถ„ํ•ดํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊นƒํ—ˆ๋ธŒ

๊ธฐ์—ฌ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ API ์—”๋“œํฌ์ธํŠธ๋Š” https://github.com/<owner>/<repo>/graphs/contributors-data ์ž…๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๋œ JSON ๋ฐ์ดํ„ฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ์ฒด ๋ชฉ๋ก(๊ฐ๊ฐ ํ•œ ๋ช…์˜ ๊ธฐ์—ฌ์ž๋ฅผ ๋‚˜ํƒ€๋ƒ„)์ด ๊ฐ€์žฅ ์ ์€ ๊ธฐ์—ฌ๋ถ€ํ„ฐ ์ •๋ ฌ๋˜๊ณ  ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ์—ฌ๋Š” ๋งˆ์ง€๋ง‰์— ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

[
  { ... }, // User with least contributions
    ...
  { ... }, // User with second most contributions
  { ... }  // User with most contributions
]

๊ตฌ์กฐ๋Š” ์—ฌ๊ธฐ์— ์„ค๋ช…๋œ ๊ฒƒ๊ณผ ๋Œ€๋žต ์œ ์‚ฌํ•˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{
  "author": {
    "id": 12345,
    "login": "octocat",
    "avatar": "https://avatars3.githubusercontent.com/u/12345?s=60&v=4",
    "path": "/octocat",
    "hovercard_url": "/hovercards?user_id=12345"
  },
  "total": 123,
  "weeks": [
    // First week in which the repo existed
    {
      "w": 1391904000,
      "a": 6898,
      "d": 77,
      "c": 10
    },
    // Second week in which the repo existed
    {
      "w": 1392508800,
      "a": 2437,
      "d": 439,
      "c": 6
    },
    ...
    // Current week
    {
      "w": 1538265600,
      "a": 0,
      "d": 0,
      "c": 0
    }
  ]
}

"weeks" ๋ฐฐ์—ด์˜ ๊ฐ ๋ฉค๋ฒ„๋Š” ๋‹ค์Œ ์†์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  • w - Unix ํƒ€์ž„์Šคํƒฌํ”„๋กœ ์ œ๊ณต๋˜๋Š” ์ฃผ์˜ ์‹œ์ž‘์ž…๋‹ˆ๋‹ค.
  • a - ์ถ”๊ฐ€ ํšŸ์ˆ˜
  • d - ์‚ญ์ œ ํšŸ์ˆ˜
  • c - ์ปค๋ฐ‹ ์ˆ˜

์ด ๋ชจ๋“  ์ •๋ณด๋Š” ๋‹ค์Œ ์นด๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

grafik

n ( 0 <= n <= weeks since the repo exists ) ๊ฐ ์‚ฌ์šฉ์ž์˜ ํ†ต๊ณ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฐ ์ฃผ์˜ ๋ˆ„์  ๊ฐ’์„ ๋„ํ‘œํ™”ํ•˜์—ฌ ํฐ ๊ธฐ์—ฌ๋„ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitLab

GitLab CE๋Š” ์˜คํ”ˆ ์†Œ์Šค์ด๋ฏ€๋กœ ๊ด€๋ จ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

API ์—”๋“œํฌ์ธํŠธ๋Š” https://gitlab.com/<owner>/<repo>/graphs/master?format=json ์ž…๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๋œ JSON ๋ฐ์ดํ„ฐ๋Š” ํ›จ์”ฌ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

[
  { ... }, // Latest commit
  { ... }, // Second latest commit
    ...
  { ... }, // First commit
]

๋ฐฐ์—ด์˜ ๊ฐ ๊ตฌ์„ฑ์›์€ ํ•˜๋‚˜์˜ ์ปค๋ฐ‹์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ ๊ฐ€์žฅ ์ตœ๊ทผ ์ปค๋ฐ‹์ด ๋จผ์ € ์ •๋ ฌ๋˜๊ณ  ์ดˆ๊ธฐ ์ปค๋ฐ‹์ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

{
  "author_name": "Some User",
  "author_email": "[email protected]",
  "date": "2018-10-02"
}

์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ™์€ ๋‚ ์— ์—ฌ๋Ÿฌ ์ปค๋ฐ‹์„ ์ˆ˜ํ–‰ํ•œ ๊ฒฝ์šฐ ๊ฐ ์ปค๋ฐ‹์— ๋Œ€ํ•ด ํ•˜๋‚˜์”ฉ ๋™์ผํ•œ ์‚ฌ์šฉ์ž ์ •๋ณด์™€ ๋‚ ์งœ๋ฅผ ๊ฐ€์ง„ ์ค‘๋ณต ํ•ญ๋ชฉ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋ณ„ ํƒ€์ผ์—๋Š” GitHub๋ณด๋‹ค ์ ์€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜๋ฉฐ, ํ”Œ๋กฏ์€ ํ•˜๋ฃจ์˜ ์ปค๋ฐ‹ ์ˆ˜, X์ถ•์€ ์‹œ๊ฐ„, Y์ถ•์€ ์ปค๋ฐ‹ ์ˆ˜๋ฅผ ์ทจํ•˜์—ฌ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ „์ฒด ์ €์žฅ์†Œ(์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ฌด์‹œ)์™€ ๊ฐ ์‚ฌ์šฉ์ž(ํŠน์ • ๋‚ ์งœ์— ํŠน์ • ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ๋ชจ๋“  ์ปค๋ฐ‹ ํ•ญ๋ชฉ ๊ฐ€์ ธ์˜ค๊ธฐ) ๋ชจ๋‘์— ๋Œ€ํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.


๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋ Œ๋”๋ง์ด ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ํ™•๋Œ€/์ถ•์†Œ๋กœ ๋™์  ์ฐจํŠธ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ํฐ ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์˜ ์ผ๋ฐ˜์ ์ธ ์›Œํฌํ”Œ๋กœ์—์„œ ์ž‘๋™ํ•œ๋‹ค๋ฉด ์ด ๋ฌธ์ œ์— ํ• ๋‹นํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.


์ด๊ฒƒ์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ƒ๊ฐ์ด ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑด์„ค์ ์ธ ํ”ผ๋“œ๋ฐฑ์€ ๋ฌผ๋ก  ๋†’์ด ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค!

UI์— ํŽ˜์ด์ง€ ๋งํฌ ๋ฐฐ์น˜

image

๊ทธ๊ฒƒ์€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ตฌ์กฐ๋ฅผ ์กฐ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋งํฌ์— ๋Œ€ํ•ด ๋งํ•˜์ž๋ฉด, ํŽ˜์ด์ง€๋Š” ์•„๋งˆ๋„ https://git.example.com/<owner>/<repo>/contributors ์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, ์ด๊ฒƒ์ด ๋‹ค๋ฅธ ๋ชจ๋“  ๋งํฌ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์„ ํ˜ธํ•˜์ง€ ์•Š๋Š” ๋˜ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๋Š” ํ™œ๋™ ํŽ˜์ด์ง€์— ๊ธฐ์—ฌ์ž ๊ทธ๋ž˜ํ”„๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

DOM ํŽธ์ง‘์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

image

์•„์ด์ฝ˜์œผ๋กœ octicon-organization ๋ฅผ ์„ ํƒํ–ˆ๋Š”๋ฐ $# octicon-graph ๋„ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ Gitea์˜ GitHub ๊ธฐ๊ณ ์ž ์ฐจํŠธ์—์„œ ๋ช‡ ๊ฐ€์ง€ ๋น ๋ฅธ CSS ํŽธ์ง‘ ๋ฐ ์ด๋ฏธ์ง€ ๋ณ‘ํ•ฉ:

image

์ด๋Š” ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž๋ณ„ ์ฐจํŠธ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์–ด๋–ป๊ฒŒ ๋ณด์ผ์ง€์— ๋Œ€ํ•œ ๋งค์šฐ ๋Œ€๋žต์ ์ธ ์•„์ด๋””์–ด์ž…๋‹ˆ๋‹ค.

๋ฉ‹์ ธ๋ณด์ด๋„ค์š” ^-^

@linus ์ข‹์•„์š”! ๊ฐ€์ž!

@lunny ์ง€๊ธˆ ์ข€ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. @Morlinest ๋Š” ๋ˆ„๊ตฌ์ด๋ฉฐ ์ด ๋ฌธ์ œ์—์„œ ์–ด๋–ค ์—ญํ• ์„ ํ• ๊นŒ์š”?

์‹ค์ˆ˜์ผ ์ˆ˜๋„ ์žˆ๊ณ  ์ €์™€ ๋น„๋ฐ€ ๊ณ„ํš์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์–ด์š” :D

@linusg @Morlinest :(์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. @Morlinest ๊ฐ€ ๋งํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ @linusg ์— ํ• ๋‹นํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋น„ ์œ ์ง€ ๊ด€๋ฆฌ์ž ๋ฐ ๋ฌธ์ œ ํฌ์Šคํ„ฐ์— ํ• ๋‹นํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

๋„ค, ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :์Šค๋งˆ์ผ:

์•„ ๊ทธ๋Ÿผ ์ด์ œ ํ•ด๋ด์•ผ๊ฒ ๋„ค์š” :D

๊ด€์‹ฌ ์žˆ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•œ ์งง์€ ์•ˆ๋‚ด: ํฌ๋ฆฌ์Šค๋งˆ์Šค ํœด๊ฐ€ ๋™์•ˆ ์ด ์ž‘์—…์„ ํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์‹œ๊ฐ„์ด ๋งŽ์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํ•ญ๋ชฉ(ํŽ˜์ด์ง€, ๋ผ์šฐํŒ… ๋“ฑ)์„ ๋งŒ๋“ค์—ˆ๊ณ  ๊ณ„์† ์ž‘์—…ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค!

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ^-^

์ข‹์•„ ์—ฌ๋Ÿฌ๋ถ„, ๋˜ ๋‹ค๋ฅธ ์—…๋ฐ์ดํŠธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š”์ด ์ƒํƒœ์— ๋„๋‹ฌํ•˜๋„๋ก ๊ด€๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

image


ํ™•์žฅํ•˜๋ ค๋ฉด ํด๋ฆญํ•˜์„ธ์š”.

Gitea ๋Œ€ GitHub(์‹ค์ œ ์˜ˆ)

![์ด๋ฏธ์ง€](https://user-images.githubusercontent.com/19366641/50791201-6f7d9500-12c1-11e9-9a3d-7612c63e6b4a.png) ![์ด๋ฏธ์ง€](https://user-images.githubusercontent.com 19366641/50791210-7c9a8400-12c1-11e9-985c-b0dffcbfae3a.png)

์–ด๋‘์šด

![์ด๋ฏธ์ง€](https://user-images.githubusercontent.com/19366641/50791412-0cd8c900-12c2-11e9-86e7-5fb4142a5bcc.png)



์„ธ๋ถ€:

  • HTTP API๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ  ๊ทธ๋ž˜ํ”„๊ฐ€ ์„œ๋ฒ„์—์„œ SVG(https://github.com/wcharczuk/go-chart ์‚ฌ์šฉ)๋กœ ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ •๋ง ์„ฑ๋Šฅ์ด ์ข‹๊ณ  ์ผ์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ปค๋ฐ‹, ์ถ”๊ฐ€ ๋ฐ ์‚ญ์ œ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ
  • UI๋Š” GitHub ๐Ÿ˜„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” "์•ฝ๊ฐ„"์ž…๋‹ˆ๋‹ค.

๋‚จ์€ ๋ฌธ์ œ:

  • gitea DB์— ์—†๋Š” ๊ธฐ์—ฌ์ž๋Š”(์˜ˆ: repo๋ฅผ ๊ฐ€์ ธ์™”๊ธฐ ๋•Œ๋ฌธ์—) ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. โœ…
  • ๋” ํฐ ์ €์žฅ์†Œ์˜ ์„ฑ๋Šฅ ๋ฌธ์ œ. ์ €๋งŒ golang n00b์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • X์ถ•์—์„œ AM/PM ํ•ญ๋ชฉ ์ œ๊ฑฐ( ์‚ฌ์šฉ์ž ์ •์˜ ํฌ๋งทํ„ฐ ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ) โœ…
  • ์‚ฌ์šฉ์ž ๊ทธ๋ž˜ํ”„์˜ Y์ถ• ์Šค์ผ€์ผ ์ˆ˜์ •, 1 ์ปค๋ฐ‹์€ 2 ์ปค๋ฐ‹ ๋†’์ด์˜ ์ ˆ๋ฐ˜์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค โœ…
  • ์ ์ ˆํ•œ ๋‹คํฌ ํ…Œ๋งˆ ์ง€์›(์œ„์˜ CSS๋Š” ๊ฐœ๋ฐœ โ€‹โ€‹๋„๊ตฌ์—์„œ ์กฐ์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค) โœ…

๊ฐ€๋Šฅํ•œ ๊ฐœ์„  ์‚ฌํ•ญ:

  • ํ†ต๊ณ„๋Š” ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜(ํ•˜๋“œ์ฝ”๋”ฉ๋จ)์— ๋Œ€ํ•œ ๊ฒƒ์ด๋ฉฐ, ์ด๋Š” ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝ๋˜๊ณ  UI ์ปจํŠธ๋กค๋กœ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ๋ฐ ๊ฐœ์„ ์— ๋Œ€ํ•œ ์•„์ด๋””์–ด๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค . ์ง€๊ธˆ๊นŒ์ง€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ํ•˜์ง€๋งŒ ๋‹ค๊ฐ€์˜ค๋Š” ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ๋‘๋ ต์Šต๋‹ˆ๋‹ค :์Šค๋งˆ์ผ:

์˜... ๊ฐ‘๋‹ˆ๋‹ค! ์ด์ œ ์™ธ๋ถ€ ์ž…๋ ฅ์ด ํ•„์š”ํ•œ ์‹œ์ ์ด๋ฏ€๋กœ ์•„๋ž˜ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

image

(GitHub์—์„œ ๊ฐ€์ ธ์˜จ gitea repo)

image

์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค:

  • gitea ์‚ฌ์šฉ์ž DB์— ์—†๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ obv ํ”„๋กœํ•„์— ๋Œ€ํ•œ ๋งํฌ๋Š” ์—†์Šต๋‹ˆ๋‹ค. ํ†ต๊ณ„๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„์œผ๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค(๊ฐ ์ปค๋ฐ‹๋‹น "์ด๋ฆ„" ๋ฐ "์ด๋ฉ”์ผ"๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ). ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— GitHub์—๋Š” "Unknown", "Unknwon" ๋ฐ "ๆ— ้—ป" ๋Œ€ "Unknwon"๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ณด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณต์ œ/๊ฐ€์ ธ์˜ฌ ๋•Œ ๋™์ผํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋‘ ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์ตœ์„ ์˜ ์„ ํƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  • GitHub๋Š” ๋งค์ฃผ ํ†ต๊ณ„๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ์ €๋Š” ์ผ์ผ ํ†ต๊ณ„๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

    ์ด๊ฒƒ์ด GitHub์˜ Y์ถ•์ด ~150[์ฃผ๋‹น ์ปค๋ฐ‹]์ด๊ณ  Gitea์˜ Y์ถ•์ด 52[์ผ์ผ ์ปค๋ฐ‹]๋กœ ๋๋‚˜๋Š” ์ด์œ ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Gitea์˜ ์ฐจํŠธ๊ฐ€ ๋” ๋งŽ์€ "์ŠคํŒŒ์ดํฌ"๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. (๋ณด๊ฐ„๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค)

  • GitHub๋Š” ํ†ต๊ณ„์—์„œ ๋ณ‘ํ•ฉ ์ปค๋ฐ‹์„ ์ œ์™ธํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜ ์ปค๋ฐ‹๊ณผ ๊ตฌ๋ณ„ํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์–ด๋ ค์šด์ง€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค). ์ด ๊ธฐ๋Šฅ์„ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ?

  • ์‚ฌ์šฉ์ž๋ณ„ ์ฐจํŠธ์— ๋ณ„๋„์˜ ์ƒ‰์ƒ์„ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ?

  • ๋˜ ๋ฌด์—‡์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

์„ฑ๋Šฅ:

์ง€๋‚œ ๊ฒŒ์‹œ๋ฌผ์—์„œ ์–ธ๊ธ‰ํ•œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ์œผ๋ฉฐ ๋ช‡ ๊ฐ€์ง€ ์„ฑ๋Šฅ ๋ฌธ์ œ๋กœ ๋Œ์•„ ์™”์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฐœ๋ฐœ ๋จธ์‹ ์˜ ๋ชจ๋“  ํ†ต๊ณ„:

Gitea ๋ธ”๋กœ๊ทธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๊ธฐ๊ณ ์ž ํŽ˜์ด์ง€๋Š” ๋กœ๋“œํ•˜๋Š” ๋ฐ 1.1์ดˆ๊ฐ€ ์†Œ์š”๋˜๋ฉฐ ์ด๋Š” ์•„๋งˆ๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค(_ํŽ˜์ด์ง€: 1090ms ํ…œํ”Œ๋ฆฟ: 7ms_).

gitea ๋ฉ”์ธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ๊ฒƒ์€ 1๋ถ„ 14์ดˆ๊ฐ€ ๊ฑธ๋ฆฌ๊ณ  _ํŽ˜์ด์ง€: 74443ms ํ…œํ”Œ๋ฆฟ: 47ms_๋ฅผ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 9๋…„์˜ ์—ญ์‚ฌ์™€ ๊ฑฐ์˜ 7k ์ปค๋ฐ‹์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ฐœ์„  ์‚ฌํ•ญ: gitea repo ๊ธฐ๊ณ ์ž ํŽ˜์ด์ง€๋Š” 602๊ฐœ์˜ ์‚ฌ์šฉ์ž ์นด๋“œ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. GitHub๋Š” 100๊ฐœ์—์„œ ์ž˜ ๋ฆฝ๋‹ˆ๋‹ค. https://github.com/go-gitea/gitea/graphs/contributors๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”?

image

ํŽ˜์ด์ง€๋ฅผ ๋ฐฉ๋ฌธํ•  ๋•Œ๋งˆ๋‹ค ์ „์ฒด ์ปค๋ฐ‹ ๊ธฐ๋ก์ด ํƒ์ƒ‰๋˜๋ฏ€๋กœ ํ†ต๊ณ„๋ฅผ ์บ์‹ฑํ•˜์—ฌ ์ƒํ™ฉ์„ ๊ฐœ์„ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ๊ณ  ๊ตฌํ˜„์ด ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ๋‹จ์„œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ๋œ CSS ํŒŒ์ผ์ด ํ‘œ์‹œ๋˜๋„๋ก ServiceWorker์˜ ์บ์‹œ๋ฅผ ์ง€์›Œ์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค(์ผ๋ฐ˜ ์บ์‹œ ์ƒˆ๋กœ ๊ณ ์นจ์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ). OOTB๊ฐ€ ์ž‘๋™ํ•˜๋ ค๋ฉด ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋” ๋งŽ์€ ์Šคํฌ๋ฆฐ์ƒท์„ ๋ณด๋ ค๋ฉด ํด๋ฆญํ•˜์„ธ์š”.

![์ด๋ฏธ์ง€](https://user-images.githubusercontent.com/19366641/50845620-95f90a00-136d-11e9-94a1-dfcdbdcf8908.png) ![์ด๋ฏธ์ง€](https://user-images.githubusercontent.com/ 19366641/50845863-28011280-136e-11e9-8a93-a194dde3115c.png) ![์ด๋ฏธ์ง€](https://user-images.githubusercontent.com/19366641/50846330-2) ![์ด๋ฏธ์ง€](https://user-images.githubusercontent.com/19366641/50846330-2 [์ด๋ฏธ์ง€](https://user-images.githubusercontent.com/19366641/50846507-9b575400-136f-11e9-9a6f-97f7a9ec28a1.png)

@linusg ์ž˜ ํ–ˆ์–ด!!! ์ €์žฅ์†Œ๊ฐ€ ํด ๋•Œ(์ฆ‰, 1000๊ฐœ ์ด์ƒ์˜ ์ปค๋ฐ‹) cronjob์œผ๋กœ ์ž‘์—…์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ํ•˜๋ฃจ ์ด์ƒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์œ„ 100๊ฐœ๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํŽ˜์ด์ง€ ๋งค๊น€์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค.

@linusg

  • ํ†ต๊ณ„๋Š” ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜(ํ•˜๋“œ์ฝ”๋”ฉ๋จ)์— ๋Œ€ํ•œ ๊ฒƒ์ด๋ฉฐ, ์ด๋Š” ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝ๋˜๊ณ  UI ์ปจํŠธ๋กค๋กœ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์˜ต์…˜์„ ๋งŒ๋“œ๋Š” ๋Œ€์‹  ๊ธฐ๋ณธ ๋ถ„๊ธฐ ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์•„๋‹ˆ์š”, ์•„์ง ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ stale ๋ ˆ์ด๋ธ”์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

์•„๋‹ˆ์š”, ์•„์ง ์ž‘์—… ์ค‘์ž…๋‹ˆ๋‹ค.

์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์ด ๊ณง ์ œ๊ณต๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!
์–ด๋””์—์„œ๋‚˜ ์ฐจํŠธ์™€ ๊ทธ๋ž˜ํ”ฝ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์„ ๋ณผ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค...

์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์ด ๊ณง ์ œ๊ณต๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค!

๊ณง :tm:

์‹œ๊ฐ„์€ ํ™•์‹คํžˆ ๋‚˜์—๊ฒŒ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š” golang ์ง€์‹ ์˜†์— ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜ํ•˜.

๋‚˜๋Š” ๋ชจ๋“  ํฅ๋ถ„์„ ๋ณด๊ฒŒ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค (๋‚˜๋„ ํฅ๋ถ„๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!). ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋Š๋ผ์‹ ๋‹ค๋ฉด (์  ์žฅ, ๋ฐ˜๋…„์ด ๋„˜์—ˆ์Šต๋‹ˆ๋‹ค), ๋‚˜๋Š” ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ PR์„ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ณง โ„ข๏ธ

๐Ÿ˜‚

ํ•˜์ง€๋งŒ ์ด๊ฒƒ์ด ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๊ฒŒ ์ง„ํ–‰๋˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค๊ณ  ๋Š๋ผ์‹ ๋‹ค๋ฉด

Naaah.. ์•„์ฃผ ํ›Œ๋ฅญํ•˜๊ณ  ์ž‘๋™ํ•˜๋Š” ๊ธฐ๋Šฅ์ด๋ผ๋ฉด ๊ธฐ๋Šฅ์— ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์„ ๋ˆ„๊ฐ€ ์‹ ๊ฒฝ์“ฐ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋ชจ๋“  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ PR์„ ํ•  ์ˆ˜ ์žˆ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

IDK, ์•„๋งˆ๋„ ์—ฌ๊ธฐ GH์— ๊ท€ํ•˜์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๊ณต๊ฐœ์ ์œผ๋กœ ๊ฒŒ์‹œํ•˜์—ฌ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๊ท€ํ•˜์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ PRํ•˜๊ณ  ์ž‘๋™ํ•˜๊ฒŒ ํ•˜์—ฌ ๊ณต์‹ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ PRํ•˜๊ณ  ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋˜๋Š” ์ˆ™๋ จ๋˜๊ณ  ์‹œ๊ฐ„์ด ํ•„์š”ํ•œ ์‚ฌ๋žŒ๋“ค์ด ๋ถ„๊ธฐํ•˜์—ฌ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต์‹ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ƒˆ ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•œ PR์„ ์—ด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋Œ€์‹  ๋ธŒ๋žœ์น˜๊ฐ€ ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉ๋˜๊ธฐ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋Œ€์‹  PR์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@linusg ๋ถ€์žฌ ์‹œ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” PR์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.

์ด ๊ธฐ๋Šฅ์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋‚ก์•˜๋‚˜์š”? .....๊ฐ์‚ฌ ํ•ด์š”

์ถ”๊ฐ€ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?

PR์ด๋‚˜ ์ง€์ ์ด ์—ฌ๊ธฐ์— ์ œ์ถœ๋œ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค. @linusg

๋‚˜๋Š” ๋‚ด ๋ณ€ํ™”๋ฅผ ๋ฐ€์–ด๋ถ™์ธ ์ ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์•„์ง ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค!

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