ํ˜‘์—… ๊ฐœ๋ฐœ ํ”Œ๋žซํผ Kallithea 0.5 ์ถœ์‹œ

๋„์ž… ์ €์žฅ์†Œ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ์ถœ์‹œ ์นผ๋ฆฌํ…Œ์•„ 0.5, ๊ธฐ๋ฐ˜์„ ๋‘” Software Freedom Conservancy์˜ ๋งค๋‹ˆ์•„ ๋ฐ ๋Œ€ํ‘œ์ž๋Š” ๋ฌด๋ฃŒ ์ฝ”๋“œ ๊ธฐ๋ฐ˜ RhodeCode์˜ ๊ฐœ๋ฐœ์„ ๊ณ„์†ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€ํ˜•๋“ค ์ด ํ”Œ๋žซํผ์„ ๋ฐ˜๋…์  ์ƒ์šฉ ์ œํ’ˆ์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Kallithea๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Git ๋ฐ Mercurial ๋ฒ„์ „ ์ œ์–ด ์‹œ์Šคํ…œ์„ ์ง€์›ํ•˜๊ณ  ์ž‘์—… ๋ฉด์—์„œ GitHub, GitLab ๋ฐ Bitbucket๊ณผ ์œ ์‚ฌํ•œ ๊ฐœ๋ฐœ ๊ด€๋ฆฌ ์ธํ”„๋ผ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” Python์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ ๋ฐฐํฌ์ž GPLv3์— ๋”ฐ๋ผ ๋ผ์ด์„ผ์Šค๊ฐ€ ๋ถ€์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Kallithea์—๋Š” ํ‘ธ์‹œ/ํ’€ ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ณ ์„ฑ๋Šฅ ์„œ๋ฒ„์™€ ๊ณต๋™ ๊ฐœ๋ฐœ ๊ตฌ์„ฑ์„ ์œ„ํ•œ ์›น ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ๊ด€๋ฆฌ, ์•ก์„ธ์Šค ๊ถŒํ•œ ๊ณต์œ , ์ฝ”๋“œ ๊ฒ€ํ† , ๋‹ค๋ฅธ ์ฐธ๊ฐ€์ž์˜ ํ™œ๋™ ์ถ”์ , ํ”„๋กœ์ ํŠธ ํฌํฌ, ํ’€ ์š”์ฒญ ๋ณด๋‚ด๊ธฐ ๋˜๋Š” ๊ฐ„๋‹จํ•œ ํŽธ์ง‘๊ธฐ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์žฅ์†Œ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. LDAP ๋˜๋Š” ActiveDirectory๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ๊ธฐ์—… ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ํ†ตํ•ฉ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃน ๊ตฌ์„ฑ์›์„ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•˜์—ฌ ์ €์žฅ์†Œ ๊ทธ๋ฃน ๋ฐ ๊ฐœ๋ฐœ์ž ๊ทธ๋ฃน ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์–‘์€ ํ…œํ”Œ๋ฆฟ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ์˜ ํ™œ๋™์— ๋Œ€ํ•œ ์‹œ๊ฐ์  ํ‘œํ˜„์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ๊ฒ€ํ†  ์‹œ์Šคํ…œ์€ ๋ณ€๊ฒฝ ๋…ผ์˜ ๋ฐ ์•Œ๋ฆผ ์ „์†ก์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ์˜ ์„œ๋ฒ„ ๋ถ€๋ถ„์€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ์ด๋ฏ€๋กœ ์—ฌ๋Ÿฌ ํ’€/ํ‘ธ์‹œ ์š”์ฒญ์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ์€ ๋น„๋™๊ธฐ ๋ชจ๋“œ์—์„œ ์บ์‹ฑ ๋ฐ ์ž‘์—… ์ˆ˜ํ–‰์„ ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์—๋Š” "scp"๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ๋ณธ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ณด๊ด€ํ•˜๊ณ  ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ†ตํ•ฉ ๋ฐฑ์—… ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ํ™œ๋™์„ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์š”์ฒญ์— โ€‹โ€‹๋Œ€ํ•œ ๋กœ๊ทธ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ๊ฐ ์š”์ฒญ์„ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ ๊ณ„์ธต์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ž‘์—…์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. vcs, ํ”„๋กœ์ ํŠธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” SQLite, PostgreSQL ๋˜๋Š” SQLAlchemy์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐํƒ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ :

  • "ssh://"์™€ ๊ฐ™์€ URL์„ ์‚ฌ์šฉํ•˜์—ฌ SSH๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.[์ด๋ฉ”์ผ ๋ณดํ˜ธ]/์ด๋ฆ„/of/์ €์žฅ์†Œ". SSH๋ฅผ ํ†ตํ•ด ์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•  ๋•Œ ์ธ์ฆ์€ ์‚ฌ์šฉ์ž์˜ ๊ณต๊ฐœ ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž ๊ธฐ๋ณธ ์„ค์ •์— ๋”ฐ๋ผ ํ‚ค์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ์žˆ๊ฑฐ๋‚˜ ์—†์Œ). ํ‚ค(~/.ssh/id_rsa.pub)๋ฅผ ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•˜๋Š” ์ž‘์—…์€ Authorized_keys ํŒŒ์ผ์— ํ‚ค๋ฅผ ์ž๋™์œผ๋กœ ์ €์žฅํ•˜๋Š” Kallithea ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. SSH๋ฅผ ํ†ตํ•ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ž‘์—… ์„ฑ๋Šฅ์ด HTTPS๋ฅผ ํ†ตํ•ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์•ก์„ธ์Šคํ•  ๋•Œ๋ณด๋‹ค ๋” ๋†’๋‹ค๋Š” ์ ์— ์ฃผ๋ชฉํ•˜์„ธ์š”.
  • ๋ถ„์‚ฐ ๋ฒ„์ „ ์ œ์–ด ์‹œ์Šคํ…œ Mercurial 5.2์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • "๊ด€๋ฆฌ > ์„ค์ • > ์‹œ๊ฐ์  > (HTTP) ๋ณต์ œ URL" ๊ธฐ๋Šฅ์ด ์žฌ์ž‘์—…๋˜์—ˆ์œผ๋ฉฐ, ์ด์ œ ํ•ด๋‹น ํ•ธ๋“ค๋Ÿฌ๊ฐ€ "{repo}" ๋ฐ "_{repoid}" ๋ฌธ์ž์—ด์ด ์žˆ๋Š”์ง€ ๋ช…์‹œ์ ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ์•ก์„ธ์Šค ๊ถŒํ•œ ์‹œ์Šคํ…œ์ด ์ •๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์•ก์„ธ์Šค ๊ถŒํ•œ์€ ํ•ญ์ƒ ์ถ”๊ฐ€ ๊ถŒํ•œ์œผ๋กœ๋งŒ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ์šฉ์ž๋Š” ์ตœ์†Œํ•œ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž์™€ ๋™์ผํ•œ ๊ถŒํ•œ์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • api_access_controllers_whitelist ์„ค์ •์— ๋Œ€ํ•œ ์ง€์›์ด ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ API ์•ก์„ธ์Šค ํ‚ค๋ฅผ ํ†ตํ•œ ์ธ์ฆ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ—ˆ์šฉ๋œ ๋ชจ๋“  API์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ž๋™์œผ๋กœ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
  • Python 2.6์— ๋Œ€ํ•œ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Python 2.7 ๋ถ„๊ธฐ๋งŒ ์ง€์›๋˜์ง€๋งŒ ๊ฐœ๋ฐœ์ž๋Š” Python 3.x์— ๋Œ€ํ•œ ์ „์ฒด ์ง€์›์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ €์žฅ์†Œ ์ž ๊ธˆ ๊ธฐ๋Šฅ(๋‹น๊ฒจ์„œ ์ž ๊ทธ๊ณ  ๋ฐ€์–ด์„œ ์ž ๊ธˆ ํ•ด์ œ)์ด ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€