Trac 1.4 ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ์ถœ์‹œ

๋„์ž… ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ๋Œ€ํญ ์ถœ์‹œ ํŠธ๋ž™ 1.4, Subversion ๋ฐ Git ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ์ž‘์—…์„ ์œ„ํ•œ ์›น ์ธํ„ฐํŽ˜์ด์Šค, ๋‚ด์žฅ Wiki, ๋ฌธ์ œ ์ถ”์  ์‹œ์Šคํ…œ ๋ฐ ์ƒˆ ๋ฒ„์ „์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ๊ณ„ํš ์„น์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋Š” Python์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ๋ฐฐํฌ์ž BSD ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ. โ€‹SQLite, โ€‹PostgreSQL ๋ฐ โ€‹MySQL/MariaDB DBMS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ œ๋ณต์— ํ”Œ๋Ÿฌ๊ทธ์ธ ๋‰ด์Šค ํ”ผ๋“œ ์œ ์ง€ ๊ด€๋ฆฌ, ํ† ๋ก  ํ”Œ๋žซํผ ์ƒ์„ฑ, ์„ค๋ฌธ ์กฐ์‚ฌ ์ˆ˜ํ–‰, ๋‹ค์–‘ํ•œ ์—ฐ์† ํ†ตํ•ฉ ์‹œ์Šคํ…œ๊ณผ์˜ ์ƒํ˜ธ ์ž‘์šฉ, Doxygen์—์„œ ๋ฌธ์„œ ์ƒ์„ฑ, ๋‹ค์šด๋กœ๋“œ ๊ด€๋ฆฌ, Slack์„ ํ†ตํ•œ ์•Œ๋ฆผ ์ „์†ก, Subversion ๋ฐ Mercurial ์ง€์›์„ ์œ„ํ•œ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ์ • ๋ธŒ๋žœ์น˜ 1.2์™€ ๋น„๊ตํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๋น ๋ฅธ ํ…œํ”Œ๋ฆฟ ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ Œ๋”๋ง์œผ๋กœ ์ „ํ™˜ ์ง„์ž 2. XML ๊ธฐ๋ฐ˜ ํ…œํ”Œ๋ฆฟ ์—”์ง„ Genshi๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ ๊ธฐ์กด ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ์˜ ํ˜ธํ™˜์„ฑ์œผ๋กœ ์ธํ•ด ๋ถˆ์•ˆ์ •ํ•œ 1.5 ๋ธŒ๋žœ์น˜์—์„œ๋งŒ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.
  • Trac 1.0 ์ด์ „ ๋ฒ„์ „์šฉ์œผ๋กœ ์ž‘์„ฑ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ์˜ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.
  • CC ํ•„๋“œ์— ์–ธ๊ธ‰๋œ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์€ ํ•ด๋‹น ๊ทธ๋ฃน์— ํฌํ•จ๋œ ์‚ฌ์šฉ์ž ๋ชฉ๋ก์œผ๋กœ ์ž๋™ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.
  • Wiki ํŽ˜์ด์ง€์—๋Š” ํ…์ŠคํŠธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ข์€ ํ™”๋ฉด ๋ชจ๋“œ์™€ ์ „์ฒด ํ™”๋ฉด ๋ชจ๋“œ ๊ฐ„ ์ „ํ™˜ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด์ œ ๋ฉ”์ผ ์•Œ๋ฆผ ํ…œํ”Œ๋ฆฟ์—์„œ ํ‹ฐ์ผ“ ํ•„๋“œ(โ€œchanges.fieldsโ€)์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ชจ๋“  ํ‘œ์ค€ ํ•„๋“œ(์˜ˆ: ๋ณด๊ณ ์„œ ์„ค๋ช…)์— ๋Œ€ํ•ด Wiki ํ˜•์‹ ํ…์ŠคํŠธ์˜ ์ž๋™ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž๋Š” ์ž…๋ ฅ ์ค‘์ง€์™€ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์˜์—ญ ์—…๋ฐ์ดํŠธ ์‚ฌ์ด์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • TracMigratePlugin์€ Trac์˜ ์ผ๋ถ€๊ฐ€ ๋˜์—ˆ์œผ๋ฉฐ trac-admin Convert_db ๋ช…๋ น์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(์˜ˆ: SQLite โ†’ PostgreSQL) ๊ฐ„์— Trac ํ”„๋กœ์ ํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์„ธ์š”. ticket delete_comment ๋ฐ ์ฒจ๋ถ€ ํŒŒ์ผ ์ด๋™ ํ•˜์œ„ ๋ช…๋ น์˜ ๋ชจ์–‘๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ •์˜ ํ…์ŠคํŠธ ํ•„๋“œ์—๋Š” ์ด์ œ max_size ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ ํƒ์  ๊ตฌ์„ฑ ์š”์†Œ tracopt.ticket.clone์„ ํ†ตํ•ด ํ‹ฐ์ผ“ ๋ณต์ œ ์ง€์›(๋Œ“๊ธ€์—์„œ ํ‹ฐ์ผ“ ์ƒ์„ฑ ํฌํ•จ)
  • ํ‘œ์ค€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํƒ์ƒ‰ ํ—ค๋”์— ์‚ฌ์šฉ์ž ์ •์˜ ๋งํฌ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ์˜ ๋ฒ”์œ„๊ฐ€ ์ผ๊ด„ ํŽธ์ง‘ ๋„๊ตฌ๋Š” ๋ฌผ๋ก  ์ฃผ์„ ํŽธ์ง‘ ํ”„๋กœ์„ธ์Šค๊นŒ์ง€ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • tracd์—์„œ ์ง์ ‘ HTTPS๋ฅผ ํ†ตํ•ด ์ฝ˜ํ…์ธ  ์ œ๊ณต์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • Python(2.7 ๋Œ€์‹  2.6) ๋ฐ PostgreSQL(9.1 ์ด์ „)์— ๋Œ€ํ•œ ์ตœ์†Œ ๋ฒ„์ „ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

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