[www.pyrasis.com] Subversion ์‚ฌ์šฉ HOWTO

Last updated at April 19, 2021

๐Ÿ’ฌ

Subversion ์‚ฌ์šฉ HOWTO

์ด์žฌํ™ http://www.pyrasis.com 2003.11.14 ~ 2007.9.29 ๋ฒ„์ „ 1.4.2

CVS์˜ ๋‹จ์ ๋“ค์„ ๊ฐœ์„ ํ•œ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ธ Subversion์„ ์ด์šฉํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์œ ๋‹‰์Šค, ๋ฆฌ๋ˆ…์Šค ๋ฐ Windows์—์„œ Subversion์„ ์„ค์น˜ํ•ด๋ณด๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

1 ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ์˜ ์ดํ•ด

ย ย ย  1.1 ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ํ•„์š”์„ฑ

ย ย ย  1.2 ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ์ข…๋ฅ˜

ย ย ย  1.3 ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ์šฉ์–ด๋“ค

ย ย ย  1.4 ์ €์žฅ์†Œ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๋ฐฐ์น˜

2 Subversion

ย ย ย  2.1 CVS์™€ ๋น„๊ตํ•œ Subversion์˜ ์žฅ์ ๋“ค

ย ย ย  2.2 ์„ค์น˜ ์ค€๋น„ ์ž‘์—…

ย ย ย  2.3 ์‚ฌ์šฉ ํ•  ๊ฐ๊ฐ์˜ ํŒŒ์ผ๋“ค ๊ตฌํ•˜๊ธฐ

3 ์„ค์น˜ํ•˜๊ธฐ

ย ย ย  3.1 OpenSSL ์ปดํŒŒ์ผ๊ณผ ์„ค์น˜

ย ย ย  3.2 Berkeley DB ์ปดํŒŒ์ผ๊ณผ ์„ค์น˜

ย ย ย  3.3 Apache ์ปดํŒŒ์ผ๊ณผ ์„ค์น˜

ย ย ย  3.4 Subversion ์ปดํŒŒ์ผ๊ณผ ์„ค์น˜

4 ์„ธ๋ถ€ ์„ค์ •

ย ย ย  4.1 ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ

ย ย ย ย ย ย ย  4.1.1 ๊ณต๋™ ์ž‘์—…์„ ์œ„ํ•œ ์ €์žฅ์†Œ ๊ทธ๋ฃน ์„ค์ •

ย ย ย  4.2 Apache ์„ค์ •

ย ย ย ย ย ย ย  4.2.1 Apache์—์„œ ID๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ

ย ย ย  4.3 svnserve๋ฅผ ์‚ฌ์šฉํ•œ ์„œ๋ฒ„

ย ย ย ย ย ย ย  4.3.1 svnserve์—์„œ ID๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ

ย ย ย  4.4 SSH + svnserve ์„œ๋ฒ„

5 ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ

ย ย ย  5.1 ์—๋””ํ„ฐ ์„ค์ •

ย ย ย  5.2 ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ

ย ย ย  5.3 Import

ย ย ย  5.4 Checkout

ย ย ย  5.5 Update

ย ย ย  5.6 Commit

ย ย ย  5.7 Log

ย ย ย  5.8 Diff

ย ย ย  5.9 Blameย 

ย ย ย  5.10 lock

ย ย ย  5.11 Add

ย ย ย  5.12 Export

ย ย ย  5.13 Branch์™€ Tag

ย ย ย ย ย ย ย  5.13.1 Branch

ย ย ย ย ย ย ย  5.13.1.1 Merge

ย ย ย ย ย ย ย  5.13.2 Tag

ย ย ย  5.14 Revert

ย ย ย  5.15 ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ

ย ย ย ย ย ย ย  5.15.1 Dump

ย ย ย ย ย ย ย  5.15.2 Load

ย ย ย  5.16 svnsync

6 Microsoft Windows์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ

ย ย ย  6.1 ์„ค์น˜ ํŒŒ์ผ ๊ตฌํ•˜๊ธฐ

ย ย ย  6.2 ์„ค์น˜

ย ย ย  6.3 ์‚ฌ์šฉํ•˜๊ธฐ

7 ์šด์˜์ฒด์ œ๋ณ„ ์ „์šฉ ํŒจํ‚ค์ง€

8 GUI ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ

ย ย ย  8.1 TortoiseSVN

ย ย ย  8.2 Ankhsvn

ย ย ย  8.3 RapidSVN

9 ์›น ์ธํ„ฐํŽ˜์ด์Šค

ย ย ย  9.1 ViewVC

ย ย ย  9.2 WebSVN

1 ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ์˜ ์ดํ•ด #

Subversion์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ด์ „์— CVS๊ฐ™์€ ์—ญ์‚ฌ๊ฐ€ ๊นŠ์€ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•ด ๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ์ง„ํ–‰ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์žฅ์—์„œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ์ž์ฃผ ๋‚˜์˜ค๋Š” ์šฉ์–ด๋“ค๊ณผ ๊ฐœ๋…์„ ์ •๋ฆฌ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

1.1 ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ํ•„์š”์„ฑ #

๊ณผ์—ฐ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ๋ฒ„์ „๊ด€๋ฆฌ๊ฐ€ ์™œ ํ•„์š”ํ• ๊นŒ์š”? ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋œ ์ด์œ ๋Š” ๊ณต๋™ ์ž‘์—… ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•œ์‚ฌ๋žŒ์ด ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ํ•„์š” ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „ ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฐœ๋ฐœ ๋ฒ„์ „๊ณผ ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „์„ ์„ž์ด์ง€ ์•Š๊ณ  ์‰ฝ๊ฒŒ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์†Œ์Šค๋ฅผ ์ž˜ ๋ชป ์ˆ˜์ • ํ–ˆ๋”๋ผ๋„ ๊ธฐ๋ก์ด ๋‚จ๊ณ  ๋˜๋Œ๋ฆฌ๊ธฐ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค.(๋งŽ์€ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ ์œ ์šฉ)

  • ์ˆ˜์ •, ์ถ”๊ฐ€, ์‚ญ์ œ ๋“ฑ์˜ ๊ธฐ๋ก์ด ๋ชจ๋‘ ๋‚จ๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”์ ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

  • ๊ฐœ๋ฐœ์ž๋“ค์ด ๋”ฐ๋กœ ๋”ฐ๋กœ ๋ฐฑ์—…์„ ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

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

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

ํ•œ์‚ฌ๋žŒ์ด ๊ฐœ์ธ์ ์œผ๋กœ ์ง„ํ–‰ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋”๋ผ๋„ ๋ฒ„์ „ ๊ด€๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์•ž์„œ ๋งํ•œ ์žฅ์ ๋“ค์€ ์—ฌ๋Ÿฌ ๋ช…์ด ๊ฐœ๋ฐœ ํ•˜๋Š” ๊ฒƒ๊ณผ ํ•œ์‚ฌ๋žŒ์ด ๊ฐœ๋ฐœ ํ•˜๋Š” ๊ฒƒ์— ๋ชจ๋‘ ํ•ด๋‹น๋˜๋Š” ๊ฒƒ๋“ค์ž…๋‹ˆ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋“ค์€ ์•„์ฃผ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ Open Source๋กœ ๋œ ํ”„๋กœ์ ํŠธ๋“ค์€ CVS๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ *BSD, OpenOffice, Mozilla, XFree86, Apache์™€ SourceForge.net์˜ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ๋“ค ์ž…๋‹ˆ๋‹ค. ๋น„๋‹จ Open Source ๋ฟ๋งŒ์ด ์•„๋‹Œ ์ƒ์—… ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ํšŒ์‚ฌ๋“ค์—์„œ๋„ ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

1.2 ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ์ข…๋ฅ˜ #

ํ˜„์žฌ ๋‚˜์™€ ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์€ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ๊ฐ ์žฅ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • CVS (Concurrent Version System) : ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋ฉฐ ์—ญ์‚ฌ๊ฐ€ ๊นŠ์€ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. http://www.cvshome.org

  • Subversion : CVS์˜ ๋‹จ์ ์„ ๊ฐœ์„ ํ•˜๊ณ  CVS๋ฅผ ๋Œ€์ฒดํ•  ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—์„œ ์„ค๋ช…ํ•  ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. http://subversion.tigris.org

  • Visual Sourcesafe : Microsoft์—์„œ ๋งŒ๋“  ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. CVS์™€๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ ๊ด€์ ์—์„œ ์กฐ๊ธˆ์˜ ์ฐจ์ด์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์œˆ๋„์šฐ ๊ธฐ๋ฐ˜ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. http://msdn.microsoft.com/ssafe/

  • Clear Case : Rational์ด๋ผ๋Š” ํšŒ์‚ฌ์—์„œ ๋งŒ๋“  ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ IBM์— ํ•ฉ๋ณ‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒ์šฉ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. http://www-306.ibm.com/software/rational

  • BitKeeper : ๋ฆฌ๋ˆ…์Šค ์ปค๋„์ด BitKeeper๋ฅผ ์ด์šฉํ•ด์„œ ๊ฐœ๋ฐœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ์šฉ ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. http://www.bitkeeper.com

1.3 ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์˜ ์šฉ์–ด๋“ค #

์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋“ค์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ €์žฅ์†Œ : ๋ฆฌํฌ์ง€ํ† ๋ฆฌ(Repository)๋ผ๊ณ ๋„ ํ•˜๋ฉฐ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์˜ ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค๋“ค์€ ์ด ์ €์žฅ์†Œ ์•ˆ์— ์ €์žฅ์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์†Œ์Šค๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ ์†Œ์Šค์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋„ ๋ชจ๋‘ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด์„œ ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ์ด ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๋งˆ๋‹ค ๊ฐ๊ฐ ๋‹ค๋ฅธ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ Subversion์€ Berkeley DB๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•œ ํ”„๋กœ์ ํŠธ ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

์ปค๋ฐ‹(Commit) : ์ฒดํฌ์•„์›ƒ ํ•œ ์†Œ์Šค๋ฅผ ์ˆ˜์ •, ํŒŒ์ผ ์ถ”๊ฐ€, ์‚ญ์ œ ๋“ฑ์„ ํ•œ ๋’ค ์ €์žฅ์†Œ์— ์ €์žฅํ•˜์—ฌ ๊ฐฑ์‹  ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปค๋ฐ‹์„ ํ•˜๋ฉด CVS์˜ ๊ฒฝ์šฐ ์ˆ˜์ •ํ•œ ํŒŒ์ผ์˜ ๋ฆฌ๋น„์ „์ด ์ฆ๊ฐ€ํ•˜๊ณ  Subversion์˜ ๊ฒฝ์šฐ ์ „์ฒด ๋ฆฌ๋น„์ „์ด 1 ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ(Update) : ์ฒดํฌ์•„์›ƒ์„ ํ•ด์„œ ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ ์™”๋”๋ผ๋„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ปค๋ฐ‹์„ ํ•˜์—ฌ ์†Œ์Šค๊ฐ€ ๋‹ฌ๋ผ์กŒ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿด ๊ฒฝ์šฐ ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜์—ฌ ์ €์žฅ์†Œ์— ์žˆ๋Š” ์ตœ์‹  ๋ฒ„์ „์˜ ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ฐ”๋€ ๋ถ€๋ถ„๋งŒ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

๋ฆฌ๋น„์ „(Revision) : ์†Œ์Šค ํŒŒ์ผ๋“ฑ์„ ์ˆ˜์ •ํ•˜์—ฌ ์ปค๋ฐ‹ํ•˜๊ฒŒ ๋˜๋ฉด ์ผ์ •ํ•œ ๊ทœ์น™์— ์˜ํ•ด ์ˆซ์ž๊ฐ€ ์ฆ๊ฐ€ ํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ์— ์ €์žฅ๋œ ๊ฐ๊ฐ์˜ ํŒŒ์ผ ๋ฒ„์ „์ด๋ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Subversion์˜ ๊ฒฝ์šฐ ํŒŒ์ผ๋ณ„๋กœ ๋ฆฌ๋น„์ „์ด ๋งค๊ฒจ์ง€์ง€ ์•Š๊ณ  ํ•œ๋ฒˆ ์ปค๋ฐ‹ ํ•œ ๊ฒƒ์œผ๋กœ ์ „์ฒด ๋ฆฌ๋น„์ „์ด ๋งค๊ฒจ ์ง‘๋‹ˆ๋‹ค. ๋ฆฌ๋น„์ „์„ ๋ณด๊ณ  ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ์ƒํ™ฉ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž„ํฌํŠธ(Import) : ์•„๋ฌด๊ฒƒ๋„ ๋“ค์–ด์žˆ์ง€ ์•Š์€ ์ €์žฅ์†Œ์— ๋งจ ์ฒ˜์Œ ์†Œ์Šค๋ฅผ ๋„ฃ๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์ต์ŠคํฌํŠธ(Export) : ์ฒดํฌ์•„์›ƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๋ฒ„์ „ ๊ด€๋ฆฌ ํŒŒ์ผ๋“ค์„ ๋บ€ ์ˆœ์ˆ˜ํ•œ ์†Œ์Šค ํŒŒ์ผ์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค๋ฅผ ์••์ถ•ํ•˜์—ฌ ๋ฆด๋ฆฌ์ฆˆ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

1.4 ์ €์žฅ์†Œ์˜ ๋””๋ ‰ํ† ๋ฆฌ ๋ฐฐ์น˜ #

์ €์žฅ์†Œ์— ๋ฐ”๋กœ ์†Œ์Šค๋ฅผ ๋„ฃ์–ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ๊ถŒ์žฅํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ ๋ฐฐ์น˜ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

-- http://svn.samplerepository.org/svn/sample +--+---+- branches | +--+- dav-mirror | | |--- src | | |--- doc | | +--- Makefile | | | +--- svn-push | +--- svnserve-thread-pools | +---+- tags | +--- 0.10 | +--+- 0.10.1 | | |--- src | | |--- doc | | +--- Makefile | | | +--- 0.20 | +--- 0.30 | +--- 0.50 | +--- 1.01 | +---+- trunk |--- src |--- doc +--- Makefile

์œ„์— ๋ณด์ด๋Š” ๊ตฌ์กฐ๋Š” ๋ณดํ†ต ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ €์žฅ์†Œ ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜ branches, tags, trunk ๋ผ๋Š” 3๊ฐœ์˜ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋””๋ ‰ํ† ๋ฆฌ๋“ค์€ ๊ฐ๊ฐ์˜ ์šฉ๋„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. CVS๋Š” branch์™€ tag๋ฅผ ์œ„ํ•œ ๋ช…๋ น์ด ๋”ฐ๋กœ ์กด์žฌ ํ•˜์ง€๋งŒ. Subversion์˜ ๊ฒฝ์šฐ ๋ช…๋ น์ด ์žˆ๊ธด ํ•˜์ง€๋งŒ ๋‹จ์ˆœํ•œ ๋””๋ ‰ํ† ๋ฆฌ ๋ณต์‚ฌ์™€ ๊ฐ™์€ ํšจ๊ณผ๋ฅผ ๋ƒ…๋‹ˆ๋‹ค.

trunk : ๋‹จ์–ด ์ž์ฒด์˜ ๋œป์€ ๋ณธ์ฒด ๋ถ€๋ถ„, ๋‚˜๋ฌด์ค„๊ธฐ, ๋ชธํ†ต ๋“ฑ ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์žฅ ์ค‘์‹ฌ์ด ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์ž‘์—…์€ trunk ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์œ„์˜ ๊ตฌ์กฐ์—์„œ trunk ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์—๋Š” ๋ฐ”๋กœ ์†Œ์Šค๋“ค์˜ ํŒŒ์ผ๊ณผ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

branches : ๋‚˜๋ฌด์ค„๊ธฐ(trunk)์—์„œ ๋ป—์–ด์ ธ ๋‚˜์˜จ ๋‚˜๋ฌด ๊ฐ€์ง€๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. trunk ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ํฐ ํ”„๋กœ์ ํŠธ์—์„œ ๋˜ ๋‹ค๋ฅธ ์ž‘์€ ๋ถ„๋ฅ˜๋กœ ๋นผ์„œ ๋”ฐ๋กœ ๊ฐœ๋ฐœํ•ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์•ˆ์˜ ์ž‘์€ ํ”„๋กœ์ ํŠธ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. branches ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋‘์–ด ๊ทธ ์•ˆ์—์„œ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

tags : tag๋Š” ๊ผฌ๋ฆฌํ‘œ๋ผ๋Š” ๋œป์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ •๊ธฐ์ ์œผ๋กœ ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ํ•  ๋•Œ 0.1, 0.2, 1.0 ํ•˜๋Š” ์‹์œผ๋กœ ๋ฒ„์ „์„ ๋ถ™์—ฌ ๋ฐœํ‘œํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๊ทธ๋•Œ๊ทธ๋•Œ ๋ฐœํ‘œํ•œ ์†Œ์Šค๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์œ„์—์„œ ๋ณด๋ฉด tags ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์—๋Š” ๋ฒ„์ „๋ช…์œผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

2 Subversion #

Subversion์€ CVS๋ฅผ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Subversion์€ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๋ฌผ๋ก  ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ๋“ฑ์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ˜•์‹์˜ ํŒŒ์ผ์„ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2.1 CVS์™€ ๋น„๊ตํ•œ Subversion์˜ ์žฅ์ ๋“ค #

  • ์ปค๋ฐ‹ ๋‹จ์œ„๊ฐ€ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ ์ฒด์ธ์ง€์…‹์ด๋ผ๋Š” ์ ์ž…๋‹ˆ๋‹ค. CVS์—์„œ๋ผ๋ฉด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์„ ํ•œ๊บผ๋ฒˆ์— ์ปค๋ฐ‹ํ•˜๋”๋ผ๋„ ๊ฐ๊ฐ์˜ ํŒŒ์ผ๋งˆ๋‹ค. ๋ฆฌ๋น„์ „์ด ๋”ฐ๋กœ ๋ถ™์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด Subversion์—์„œ๋Š” ํŒŒ์ผ๋ณ„ ๋ฆฌ๋น„์ „์ด ์—†๊ณ  ํ•œ๋ฒˆ ์ปค๋ฐ‹ํ•  ๋•Œ๋งˆ๋‹ค ๋ณ€๊ฒฝ ์‚ฌํ•ญ๋ณ„๋กœ ๋ฆฌ๋น„์ „์ด ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

  • CVS์— ๋น„ํ•ด ์—„์ฒญ๋‚˜๊ฒŒ ๋น ๋ฅธ ์—…๋ฐ์ดํŠธ/๋ธŒ๋žœ์นญ/ํƒœ๊น… ์‹œ๊ฐ„.

  • CVS์™€ ๊ฑฐ์˜ ๋™์ผํ•œ ์‚ฌ์šฉ๋ฒ•. CVS ์‚ฌ์šฉ์ž๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์–ด๋ ค์›€ ์—†์ด ๊ธˆ๋ฐฉ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํŒŒ์ผ ์ด๋ฆ„๋ณ€๊ฒฝ, ์ด๋™, ๋””๋ ‰ํ† ๋ฆฌ ๋ฒ„์ „ ๊ด€๋ฆฌ๋„ ์ง€์›.

  • ์›์ž์ (atomic) ์ปค๋ฐ‹. CVS์—์„œ๋Š” ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•˜๋‹ค๊ฐ€ ์–ด๋Š ํ•œ ํŒŒ์ผ์—์„œ ์ปค๋ฐ‹์ด ์‹คํŒจํ–ˆ์„ ๊ฒฝ์šฐ ์•ž์˜ ํŒŒ์ผ๋งŒ ์ปค๋ฐ‹์ด ์ ์šฉ๋˜๊ณ  ๋’ค์˜ ํŒŒ์ผ๋“ค์€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Subversion์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒ์ผ์„ ์ปค๋ฐ‹ํ•˜๋”๋ผ๋„ ์ปค๋ฐ‹์ด ์‹คํŒจํ•˜๋ฉด ๋ชจ๋‘ ์ด์ „ ์ƒํƒœ๋กœ ๋˜๋Œ์•„ ๊ฐ‘๋‹ˆ๋‹ค.

  • ์–‘๋ฐฉํ–ฅ ๋ฐ์ดํ„ฐ ์ „์†ก์œผ๋กœ ๋„คํŠธ์›Œํฌ ์†Œํ†ต๋Ÿ‰(ํŠธ๋ž˜ํ”ฝ) ์ตœ์†Œํ™”.

  • ํŠธ๋ฆฌ๋ณ„, ํŒŒ์ผ๋ณ„ ์ ‘๊ทผ ์ œ์–ด ๋ฆฌ์ŠคํŠธ. ์ €์žฅ์†Œ ์“ฐ๊ธฐ ์ ‘๊ทผ์„ ๊ฐ€์ง„ ๊ฐœ๋ฐœ์ž๋ผ๋„ ์•„๋ฌด ์†Œ์Šค๋‚˜ ์ˆ˜์ •ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ €์žฅ์†Œ/ํ”„๋กœ์ ํŠธ๋ณ„ ํ™˜๊ฒฝ ์„ค์ • ๊ฐ€๋Šฅ

  • ํ™•์žฅ์„ฑ์„ ์—ผ๋‘์— ๋‘” ๊ตฌ์กฐ, ๊น”๋”ํ•œ ์†Œ์Šค

2.2 ์„ค์น˜ ์ค€๋น„ ์ž‘์—… #

์ด ์žฅ์—์„œ๋Š” ๋ฆฌ๋ˆ…์Šค, ์œ ๋‹‰์Šค ๋“ฑ์˜ POSIX ํ˜ธํ™˜ ์šด์˜์ฒด์ œ์—์„œ ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Microsoft Windows์—์„œ์˜ ์‚ฌ์šฉ์€ Microsoft Windows์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์žฅ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๊ฐ๊ฐ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ ๋ฐ FreeBSD, NetBSD ๋“ฑ์˜ ์ „์šฉ ํŒจํ‚ค์ง€์— ๋Œ€ํ•ด์„œ๋Š” ์šด์˜์ฒด์ œ๋ณ„ ์ „์šฉ ํŒจํ‚ค์ง€ ์žฅ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์„ค์น˜๋ฅผ ์œ„ํ•ด ์ค€๋น„ํ•ด์•ผ ํ•  ์ผ.

2.3 ์‚ฌ์šฉ ํ•  ๊ฐ๊ฐ์˜ ํŒŒ์ผ๋“ค ๊ตฌํ•˜๊ธฐ #

  • Subversion ์†Œ์ŠคํŒŒ์ผ http://subversion.tigris.org subversion-1.4.X.tar.gz
    Subversion์€ ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

  • Subversion ์˜์กด์„ฑ ์†Œ์Šค http://subversion.tigris.org subversion-deps-1.4.X.tar.gz ์ด ์•ˆ์— Subversion ์ปดํŒŒ์ผ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋“ค์–ด์žˆ์œผ๋‹ˆ ๊ผญ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Apache2 http://httpd.apache.org httpd-2.0.XX.tar.gz
    Apache 2 ๋„ ์ตœ์‹  ๋ฒ„์ „์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. 1.3๋ฒ„์ „์€ ์—ฐ๋™์ด ๋ถˆ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค.

  • Berkeley DB http://www.oracle.com/technology/software/products/berkeley-db/db/index.html db-4.3.29.tar.gz
    Berkeley DB๋Š” ๋ฒ„์ „์„ ๊ผญ 4.3.29์„ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • OpenSSL http://www.openssl.org/source openssl-0.9.7c.tar.gz
    OpenSSL์€ LASTEST๋ผ๊ณ  ๋œ ๊ฒƒ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์œ„์˜ ํŒŒ์ผ๋“ค์„ /root์— ๋ฐ›์Šต๋‹ˆ๋‹ค.

3 ์„ค์น˜ํ•˜๊ธฐ #

Subversion๊ณผ ์—ฐ๊ด€๋œ ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์ปดํŒŒ์ผ ํ•˜๊ณ  ์„ค์น˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

3.1 OpenSSL ์ปดํŒŒ์ผ๊ณผ ์„ค์น˜ #

# tar vxzf openssl-0.9.7c.tar.gz

cd openssl-0.97c

openssl-0.97c# ./config openssl-0.97c# make openssl-0.97c# make install

3.2 Berkeley DB ์ปดํŒŒ์ผ๊ณผ ์„ค์น˜ #

Berkeley DB๋Š” bdb ํ˜•์‹์˜ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. fsfs ํ˜•์‹์˜ ์ €์žฅ์†Œ๋งŒ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ Berkeley DB๋Š” ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

# tar vxzf db-4.3.29.tar.gz

cd db-4.3.29

db-4.3.29# cd build_unix db-4.3.29/build_unix# ../dist/configure db-4.3.29/build_unix# make db-4.3.29/build_unix# make install db-4.3.29/build_unix# echo "/usr/local/BerkeleyDB.4.3/lib" >> /etc/ld.so.conf db-4.3.29/build_unix# ldconfig

3.3 Apache ์ปดํŒŒ์ผ๊ณผ ์„ค์น˜ #

Apache๋Š” ์„ค์น˜ํ•ด๋„ ๋˜๊ณ  ์•ˆ ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค. ์›น์œผ๋กœ ์ €์žฅ์†Œ๋ฅผ ๊ณต๊ฐœํ•œ๋‹ค๊ฑฐ๋‚˜. http:// ํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•ด์„œ subversion์„ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์„ค์น˜ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

# tar vxzf httpd-2.0.59.tar.gz httpd-2.0.59# ./configure --prefix=/usr/local/apache2 --enable-suexec --enable-so --with-suexec-caller=bin --enable-ssl --with-ssl=/usr/local/ssl --enable-cache --enable-ext-filter --with-z=/usr/include --enable-dav --with-dbm=db4 --with-berkeley-db=/usr/local/BerkeleyDB.4.2 httpd-2.0.59# make httpd-2.0.59# make install

Berkeley DB๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

# tar vxzf httpd-2.0.59.tar.gz httpd-2.0.59# ./configure --prefix=/usr/local/apache2 --enable-suexec --enable-so --with-suexec-caller=bin --enable-ssl --with-ssl=/usr/local/ssl --enable-cache --enable-ext-filter --with-z=/usr/include --enable-dav httpd-2.0.59# make httpd-2.0.59# make install

3.4 Subversion ์ปดํŒŒ์ผ๊ณผ ์„ค์น˜ #

๋ฐ๋น„์•ˆ์˜ ๊ฒฝ์šฐ zlib1g-dev, libxml2-dev, libexpat1-dev์˜ ํŒจํ‚ค์ง€๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ฐฐํฌํŒ์˜ ๊ฒฝ์šฐ๋„ ๊ฑฐ์˜ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ๋œ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํŒจํ‚ค์ง€๋“ค์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ—ค๋” ํŒŒ์ผ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๋“ค์ž…๋‹ˆ๋‹ค.

์•ž์—์„œ Apache๋ฅผ ์„ค์น˜ํ–ˆ์„ ๊ฒฝ์šฐ

# tar vxzf subversion-1.4.2.tar.gz

tar vxzf subversion-deps-1.4.2.tar.gz

cd subversion-1.4.2

subversion-1.4.2# ./configure --with-zlib --with-apxs=/usr/local/apache2/bin/apxs --with-berkeley-db=/usr/local/BerkeleyDB.4.3 subversion-1.4.2# make subversion-1.4.2# make install

์•ž์—์„œ Apache๋ฅผ ์„ค์น˜ํ–ˆ์„ ๊ฒฝ์šฐ(Berkeley DB๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ)

# tar vxzf subversion-1.4.2.tar.gz

tar vxzf subversion-deps-1.4.2.tar.gz

cd subversion-1.4.2

subversion-1.4.2# ./configure --with-zlib --with-apxs=/usr/local/apache2/bin/apxs --without-berkeley-db subversion-1.4.2# make subversion-1.4.2# make install

Apache๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ

# tar vxzf subversion-1.4.2.tar.gz

tar vxzf subversion-deps-1.4.2.tar.gz

cd subversion-1.4.2

subversion-1.4.2# ./configure --with-zlib --with-berkeley-db=/usr/local/BerkeleyDB.4.3 subversion-1.4.2# make subversion-1.4.2# make install

Apache๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ(Berkeley DB๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ)

# tar vxzf subversion-1.4.2.tar.gz

tar vxzf subversion-deps-1.4.2.tar.gz

cd subversion-1.4.2

subversion-1.4.2# ./configure --with-zlib --without-berkeley-db subversion-1.4.2# make subversion-1.4.2# make install

4 ์„ธ๋ถ€ ์„ค์ • #

4.1 ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ #

์†Œ์Šค๋ฅผ ์ €์žฅํ•  ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ(Repository)๋Š” ํ”„๋กœ์ ํŠธ ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ €์žฅ์†Œ ์•ˆ์— ํ”„๋กœ์ ํŠธ์˜ ์†Œ์Šค๊ฐ€ ๋‹ค ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉฐ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค๋ฉด ๊ทธ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ ์ €์žฅ์†Œ๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. /home/svn์•ˆ์— ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ์ €์žฅ์†Œ๋ฅผ ์ถ”๊ฐ€ ํ•  ๋•Œ์—๋Š” /home/svn ์•„๋ž˜์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ผญ /home/svn์— ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ ๋‹ค๋ฅธ ๊ณณ์— ํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

๋ฒ„ํด๋ฆฌDB๋ฅผ ์ด์šฉํ•œ ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ

# mkdir /home/svn

cd /home/svn/

/home/svn# svnadmin create --fs-type bdb sample

ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ด์šฉํ•œ ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ

# mkdir /home/svn

cd /home/svn/

/home/svn# svnadmin create --fs-type fsfs sample

svnadmin์œผ๋กœ sample์ด๋ผ๋Š” ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๋ฉด /home/svn ์•„๋ž˜ sample์ด๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. ์ด ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์—๋Š” Subversion์ด ์ œ์–ดํ•˜๋Š” ํŒŒ์ผ๋“ค์ด ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์˜ ํŒŒ์ผ๋“ค์€ Berkeley DB ํ˜•์‹์œผ๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. DB ํŒŒ์ผ๋“ค์€ ์ˆ˜์ •ํ•˜๋Š” ์ผ์ด ์—†๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. sample ์ €์žฅ์†Œ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋Š” /home/svn/sample์ด ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ๋ถ€ํ„ฐ sample ์ €์žฅ์†Œ๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜์—ฌ ์„ค๋ช…์„ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

4.1.1 ๊ณต๋™ ์ž‘์—…์„ ์œ„ํ•œ ์ €์žฅ์†Œ ๊ทธ๋ฃน ์„ค์ • #

svn+ssh://๋กœ ์ž‘์—…์„ ํ•˜๋ ค๋ฉด ์‹œ์Šคํ…œ ๊ณ„์ •์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„ ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  ๊ทธ๋ฃน์„ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š”๋ฐ. ์ด๋Ÿด ๊ฒฝ์šฐ ๊ทธ๋ฃน์— ์†Œ์†๋œ ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ๋„ ์ €์žฅ์†Œ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €์žฅ์†Œ์˜ ๊ทธ๋ฃน ๊ถŒํ•œ์„ ์กฐ์ •ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฃน ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“  ๊ณ„์ •๋งŒ ์ €์žฅ์†Œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ณ . ๊ทธ๋ฃน์— ์†ํ•ด ์žˆ๋”๋ผ๋„ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋Š” ์ €์žฅ์†Œ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

# chmod -R g+w sample

4.2 Apache ์„ค์ • #

Apache๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด Apache ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Apache๊ฐ€ ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์†Œ์œ ์ž์™€ ๊ถŒํ•œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. Apache๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜ํ•˜๋ฉด nobody์™€ nogroup๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

# cd /home/svn /home/svn# chown -R nobody.nogroup sample

Apache๋ฅผ /usr/local/apache2์— ์„ค์น˜ํ–ˆ์œผ๋ฏ€๋กœ ์„ค์ •ํŒŒ์ผ์€ /usr/local/apach2/conf/httpd.conf ์ž…๋‹ˆ๋‹ค. dav, dav_svn ๋ชจ๋“ˆ์ด ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์„์ฒ˜๋ฆฌ ๋˜์–ด ์žˆ์œผ๋ฉด ์ฃผ์„์„ ์—†์• ๊ณ  ์—†๋‹ค๋ฉด ์•„๋ž˜ ๋‘์ค„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so

httpd.conf ํŒŒ์ผ ๋งจ ๋’ท๋ถ€๋ถ„์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์„ ์ €์žฅํ•œ ๋’ค์— Apache๋ฅผ ์žฌ์‹œ์ž‘ ํ•ฉ๋‹ˆ๋‹ค.

<Location /svn/sample> DAV svn SVNPath /home/svn/sample

์ด๋ ‡๊ฒŒ ์„ค์ •์„ ํ•˜๊ณ  ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ http://(Subversion๊ณผ Apache๋ฅผ ์„ค์น˜ํ•œ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample ๋กœ ์ ‘์†์„ ํ•ฉ๋‹ˆ๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €์— ์•„๋ž˜์™€ ๊ฐ™์€ ํ™”๋ฉด์ด ๋ณด์ด๋ฉด Subversion ์ €์žฅ์†Œ์™€ ์•„ํŒŒ์น˜๊ฐ€ ์ž˜ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค๋ฉด ์•„ํŒŒ์น˜ ์„ค์ •๊ณผ ์ €์žฅ์†Œ์˜ ์†Œ์œ ์ž์™€ ๊ทธ๋ฃน์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Revision 0: /


Powered by Subversion version 1.0.0.

์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•˜๋ฉด ๋ˆ„๊ตฌ๋“ ์ง€(Anonymous) ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์ €์žฅ์†Œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ณ  Subversion ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ด์šฉํ•ด์„œ ์†Œ์Šค๋ฅผ ์ฒดํฌ์•„์›ƒ, ์ต์ŠคํฌํŠธ, ์ปค๋ฐ‹์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์‹คํ–‰ ์‹œ์ผฐ์œผ๋ฉด "# svn checkout http://(Subversion์„œ๋ฒ„ IP๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample sample"์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. "Checked out revision 0."์ด ๋‚˜์˜ค๋ฉด ์ œ๋Œ€๋กœ ์„ค์ •์ด ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋‚˜(Anonymous) ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•ด์„œ ์ฒดํฌ์•„์›ƒ, ์ปค๋ฐ‹ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.2.1 Apache์—์„œ ID๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ #

์ด์ œ ID๋ฅผ ํ†ตํ•ด ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๋งŒ ์†Œ์Šค๋ฅผ ์ฒดํฌ์•„์›ƒํ•˜๊ณ  ์ปค๋ฐ‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ • ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
์•„ํŒŒ์น˜์— ์‚ฌ์šฉํ•  ํŒจ์Šค์›Œ๋“œ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. "# htpasswd -c ํŒจ์Šค์›Œ๋“œํŒŒ์ผ๋ช… ์‚ฌ์šฉ์žID"

# cd /usr/local/apache/conf /usr/local/apache/conf# ../bin/htpasswd -c passwd sampleuser New password: Re-type new password:

"# htpasswd -c"๋Š” ํŒจ์Šค์›Œ๋“œ ํŒŒ์ผ์„ ์ฒ˜์Œ ๋งŒ๋“ค ๋•Œ์˜ ์˜ต์…˜์ด๊ณ  ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ์—๋Š” "# htpasswd ํŒจ์Šค์›Œ๋“œํŒŒ์ผ๋ช… ์‚ฌ์šฉ์žID" ๋กœ ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ฐฉ๊ธˆ ์ˆ˜์ •ํ–ˆ๋˜ /usr/local/apache2/conf/httpd.conf ํŒŒ์ผ์˜ ๋งจ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ์ถ”๊ฐ€ํ•œ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ์„ค์ • ํ•ฉ๋‹ˆ๋‹ค.

<Location /svn/sample> DAV svn SVNPath /home/svn/sample AuthType Basic AuthName "pyrasis's Repository" AuthUserFile /usr/local/apache2/conf/passwd Require valid-user

4์ค„์ด ์ถ”๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. AuthType Basic์€ Apache ๊ธฐ๋ณธ ํŒจ์Šค์›Œ๋“œ ์ธ์ฆ์ž…๋‹ˆ๋‹ค. AuthName์€ ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๊ฑธ๋ฆฐ ์›นํŽ˜์ด์ง€์— ๋œจ๋Š” ๋กœ๊ทธ์ธ์ฐฝ์— ๋‚˜์˜ฌ ๋ฌธ์žฅ์ž…๋‹ˆ๋‹ค. AuthUserFile์€ ๋ฐฉ๊ธˆ ์ „ ๋งŒ๋“ค์—ˆ๋˜ ์•„ํŒŒ์น˜ ํŒจ์Šค์›Œ๋“œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ ˆ๋Œ€๊ฒฝ๋กœ๋กœ ์ ์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Require valid-user๋Š” ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž๋งŒ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ๋‹ค์‹œ sample์ €์žฅ์†Œ๋กœ ์ ‘์†ํ•ด ๋ณด๋ฉด ID์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ฌป๋Š” ์ฐฝ์ด ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งŒ๋“  ID์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ €์žฅ์†Œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์ฒดํฌ์•„์›ƒ, ์ปค๋ฐ‹๋“ฑ์„ ํ•  ๋•Œ ID์™€ ์•”ํ˜ธ๋ฅผ ๋ฌผ์–ด๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์ €์žฅ์†Œ๋ฅผ ๋ณด๋Š” ๊ฒƒ๊ณผ ์ฒดํฌ์•„์›ƒ์€ ์•„๋ฌด์—๊ฒŒ๋‚˜(Anonymous) ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ  ์ปค๋ฐ‹์€ ์ง€์ •๋œ ์‚ฌ์šฉ์ž๋งŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด httpd.conf์—์„œ ์„ค์ •ํ•œ ๋ถ€๋ถ„์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊พธ์–ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

<Location /svn/sample> DAV svn SVNPath /home/svn/sample AuthType Basic AuthName "pyrasis's Repository" AuthUserFile /usr/local/apache2/conf/passwd <LimitExcept GET PROPFIND OPTIONS REPORT> Require valid-user </LimitExcept>

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ €์žฅ์†Œ๋ฅผ ๋ณด๊ฑฐ๋‚˜ ์ฒดํฌ์•„์›ƒ์„ ํ•  ๋•Œ๋Š” ID์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ฌป์ง€ ์•Š๊ณ  ์ปค๋ฐ‹์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ. ํŒŒ์ผ๋ณต์‚ฌ ๋“ฑ์˜ ์ €์žฅ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ ํ•  ๋•Œ์—๋Š” ID์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ฌผ์–ด๋ณด๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

"# svn checkout http://(Subversion์„œ๋ฒ„ IP๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample sample" ์„ ์ž…๋ ฅํ•˜๋ฉด ID์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ฌผ์–ด์˜ต๋‹ˆ๋‹ค. ID์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋‚˜์„œ "Checked out revision 0." ์ด ์ถœ๋ ฅ๋˜๋ฉด ์ œ๋Œ€๋กœ ์„ค์ • ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

4.3 svnserve๋ฅผ ์‚ฌ์šฉํ•œ ์„œ๋ฒ„ #

Subversion์˜ ๊ณ ์œ  ํ”„๋กœํ† ์ฝœ์ธ svn://์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” svnserve๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„œ๋ฒ„ ์„ค์ •์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋ฉด Apache๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ๋ณด๋‹ค ์ฒดํฌ์•„์›ƒ, ์ปค๋ฐ‹ ์†๋„๊ฐ€ ๋” ๋น ๋ฆ…๋‹ˆ๋‹ค.

svnserve๋กœ ์„œ๋ฒ„๋ฅผ ์‹คํ–‰ ์‹œํ‚ค๋ฉด 3690๋ฒˆ์˜ ํฌํŠธ๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค. sample ์ €์žฅ์†Œ๊ฐ€ /home/svn ์•„๋ž˜์— ์žˆ์„ ๊ฒฝ์šฐ

# svnserve -d -r /home/svn/

์ด๋ ‡๊ฒŒ ์‹คํ–‰ ์‹œ์ผฐ์œผ๋ฉด "# svn checkout svn://(Subversion์„œ๋ฒ„ IP๋˜๋Š” ๋„๋ฉ”์ธ)/sample sample"์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. "Checked out revision 0."์ด ๋‚˜์˜ค๋ฉด ์ œ๋Œ€๋กœ ์„ค์ •์ด ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ ๋˜ํ•œ ์•„๋ฌด๋‚˜(Anonymous) ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•ด์„œ ์ฒดํฌ์•„์›ƒ, ์ปค๋ฐ‹ ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.3.1 svnserve์—์„œ ID๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ #

Subversion 0.33.0๋ฒ„์ „ ์ดํ›„๋ถ€ํ„ฐ svnserve๋กœ ID๋กœ ์‚ฌ์šฉ์ž ์ธ์ฆ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์ „ ๋ฒ„์ „์—์„œ svnadmin์œผ๋กœ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๋ฉด ์ €์žฅ์†Œ ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์— conf ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š์ง€๋งŒ 0.33.0 ๋ฒ„์ „์ดํ›„์— svnadmin์œผ๋กœ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด ์ €์žฅ์†Œ ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์— conf ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์—์„œ ๋จผ์ € ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค์–ด ๋‘์—ˆ๋‹ค๋ฉด ์ €์žฅ์†Œ ๋””๋ ‰ํ† ๋ฆฌ /home/svn/sample ์•„๋ž˜ conf ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. (/home/svn/sample/conf)

์ด์ œ ๊ฐ ์ €์žฅ์†Œ ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜ conf ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. /home/svn/sample/conf/svnserve.conf ํŒŒ์ผ์ด svnserve์˜ ์„ค์ • ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. 0.33.0 ๋ฒ„์ „ ์ด์ „ ๋งŒ๋“  ์ €์žฅ์†Œ์—๋Š” conf ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ svnserve.conf ํŒŒ์ผ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿด ๊ฒฝ์šฐ์—๋Š” conf ๋””๋ ‰ํ† ๋ฆฌ์™€ svnserve.conf ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

svnserve.conf ํŒŒ์ผ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์„ค์ • ํ•ฉ๋‹ˆ๋‹ค.

### This file controls the configuration of the svnserve daemon, if you ### use it to allow access to this repository. (If you only allow ### access through http: and/or file: URLs, then this file is ### irrelevant.)

### Visit http://subversion.tigris.org/ for more information.

[general] ### These options control access to the repository for unauthenticated ### and authenticated users. Valid values are "write", "read", ### and "none". The sample settings below are the defaults. anon-access = none auth-access = write ### The password-db option controls the location of the password ### database file. Unless you specify a path starting with a /, ### the file's location is relative to the conf directory. ### The format of the password database is similar to this file. ### It contains one section labelled [users]. The name and ### password for each user follow, one account per line. The ### format is ### USERNAME = PASSWORD ### Please note that both the user name and password are case ### sensitive. There is no default for the password file. password-db = passwd ### This option specifies the authentication realm of the repository. ### If two repositories have the same authentication realm, they should ### have the same password database, and vice versa. The default realm ### is repository's uuid. realm = pyrasis's Repository

anon-access = none์œผ๋กœ ์•„๋ฌด์—๊ฒŒ๋‚˜(Anonymous) ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์•˜์Šต๋‹ˆ๋‹ค. read๋กœ ํ•˜๋ฉด ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ write๋กœ ํ•ด์ฃผ๋ฉด ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

auth-access = write๋Š” ID๋กœ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์—๊ฒŒ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

password-db = passwd ์ด ์„ค์ •์€ svnserve์˜ ํŒจ์Šค์›Œ๋“œ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค ์ด์ „์˜ Apache ํŒจ์Šค์›Œ๋“œ ํŒŒ์ผ๊ณผ๋Š” ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ๋‚ด์šฉ์œผ๋กœ /home/svn/sample/conf ์•„๋ž˜ passwd ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ID = ํŒจ์Šค์›Œ๋“œ ํ˜•์‹ ์ž…๋‹ˆ๋‹ค. ์•„์ง ์•”ํ˜ธํ™”๋œ ํŒจ์Šค์›Œ๋“œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ์—…์„ ํ†ตํ•ด ๊ฐœ์„  ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

passwd

[users] sampleuser = 02030104

์ด์ œ "# svn checkout svn://(Subversion ์„œ๋ฒ„์˜ IP๋˜๋Š” ๋„๋ฉ”์ธ)/sample sample" ์„ ํ•ด๋ณด๋ฉด ID์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๊ณ  ๋‚˜์˜ต๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค์ •ํ–ˆ๋˜ ID์™€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ฒดํฌ์•„์›ƒ์ด ๋˜๋ฉฐ "Checked out revision 0." ์ด ๋‚˜์˜ค๋ฉด ์„ค์ •์ด ์ œ๋Œ€๋กœ ๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

4.4 SSH + svnserve ์„œ๋ฒ„ #

SSH2 ๋ฐ๋ชฌ์œผ๋กœ svnserve์„ ํ„ฐ๋„๋ง ํ•˜์—ฌ ์ž‘๋™์‹œํ‚ต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด svn+ssh:// ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉฐ ์‚ฌ์šฉ์ž ์ธ์ฆ์€ ์‹œ์Šคํ…œ ๊ณ„์ •์œผ๋กœ ์ธ์ฆ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋™์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์€ ๋”ฐ๋กœ ์žˆ์ง€ ์•Š์œผ๋ฉฐ SSH๋ฐ๋ชฌ๋งŒ ๋–  ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ์—์„œ svn+ssh:// ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ

ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์ ‘์†ํ•  ID์„ค์ •, ๊ฐ ์‚ฌ์šฉ์ž ๊ณ„์ •์˜ ๋””๋ ‰ํ† ๋ฆฌ์— .subversion์ด๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋ณด๋ฉด config ๋ผ๋Š” ํŒŒ์ผ์˜ ๋งจ ๋งˆ์ง€๋ง‰์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ssh -l ์„œ๋ฒ„์— ์ ‘์†ํ•  ID

~/.subversion/config

[tunnels] ssh = ssh -l sampleuser

์ฃผ์˜ํ•  ์ ์€ IP์ฃผ์†Œ๋‚˜ ๋„๋ฉ”์ธ ๋’ค์— ์ €์žฅ์†Œ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ ์–ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. svnserve๋ฅผ ๋„์›Œ์„œ /home/svn/๊ณผ ๊ฐ™์ด ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ์ €์žฅ์†Œ์˜ ์ ˆ๋Œ€๊ฒฝ๋กœ์ธ /home/svn/sample๋กœ ํ•ฉ๋‹ˆ๋‹ค.

# svn checkout svn+ssh://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/home/svn/sample sample

5 ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ #

๊ฐ„๋‹จํ•œ ์˜ˆ์ œ ํ”„๋กœ๊ทธ๋žจ์„ ํ†ตํ•ด์„œ Subversion์˜ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปค๋งจ๋“œ ๋ผ์ธ ํด๋ผ์ด์–ธํŠธ์„ ํ†ตํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. X ์œˆ๋„์šฐ, MS ์œˆ๋„์šฐ์šฉ GUI ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด์„œ๋Š” ๋’ค์— ์„ค๋ช…ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

5.1 ์—๋””ํ„ฐ ์„ค์ • #

Subversion์—์„œ ์‚ฌ์šฉํ•  ๊ธฐ๋ณธ์ ์ธ ์—๋””ํ„ฐ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ปค๋ฐ‹ ๋“ฑ์„ ํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

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

SVN_EDITOR=/usr/bin/vim export SVN_EDITOR

5.2 ๊ธฐ๋ณธ ๋””๋ ‰ํ† ๋ฆฌ ๋งŒ๋“ค๊ธฐ #

์•ž์„œ ์„ค๋ช… ํ–ˆ๋˜ trunk, branches, tags ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

trunk ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ƒ์„ฑ, ์•ž์—์„œ Apache๋ฅผ ํ†ตํ•ด ์„ค์ • ํ–ˆ๋‹ค๋ฉด http://๋ฅผ svnserve๋กœ ์„ค์ •ํ–ˆ๋‹ค๋ฉด svn://๋กœ SSH๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด svn+ssh://๋กœ ํ•˜์—ฌ ์„œ๋ฒ„ ์„ค์ •์— ๋งž๊ฒŒ ์ฃผ์†Œ๋ฅผ ์ ์–ด ์ฃผ์‹ญ์‹œ์˜ค.
apache๋ฅผ ์—ฐ๋™ํ•œ ๊ฒฝ์šฐ

# svn mkdir http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/trunk

svnserve๋งŒ ์‹คํ–‰ํ•œ ๊ฒฝ์šฐ

# svn mkdir svn://(Subversion์„œ๋ฒ„ IP๋˜๋Š” ๋„๋ฉ”์ธ)/sample/trunk

์œ„์ฒ˜๋Ÿผ ์ž…๋ ฅ์„ ํ•˜๋ฉด vim์ด ์‹คํ–‰๋˜๋ฉด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :q!๋กœ ๋น ์ ธ ๋‚˜๊ฐ‘๋‹ˆ๋‹ค.

--This line, and those below, will be ignored--

A http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/trunk

vim์„ ๋น ์ ธ ๋‚˜์™”๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜ค๋Š”๋ฐ(์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ฉด ์•„๋ž˜์™€ ์ด ๋‚˜์˜ค๊ฒŒ๋ฉ๋‹ˆ๋‹ค.) c๋ฅผ ๋ˆ„๋ฅด๊ณ  ์—”ํ„ฐ๋ฅผ ์น˜๋ฉด ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Log message unchanged or not specified a)bort, c)ontinue, e)dit

c๋ฅผ ์ž…๋ ฅํ•œ๋’ค ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์˜ค๋ฉด ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ์€ ์„ฑ๊ณตํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•๋Œ€๋กœ branches, tags ๋””๋ ‰ํ† ๋ฆฌ๋„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Committed revision 1.

๋งŒ์•ฝ read-only์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ฌ ๊ฒฝ์šฐ conf/svnserve.conf์—์„œ ๊ณ„์ •์„ ๋งŒ๋“ค์ง€ ์•Š์•„์„œ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. anonymous๋กœ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ #general, #anon-access = read ๊ฐ€ ์ฃผ์„ ์ฒ˜๋ฆฌ ๋˜์–ด ์žˆ๋Š”๋ฐ ์ฃผ์„์„ ์—†์• ๊ณ  anon-access = write๋กœ ๋ฐ”๊พธ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ œ๋Œ€๋กœ ๋งŒ๋“ค์–ด ์กŒ๋Š”์ง€ ํ™•์ธ์„ ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅ ํ•ฉ๋‹ˆ๋‹ค. list๋Š” ์ €์žฅ์†Œ ์•ˆ์˜ ๋””๋ ‰ํ† ๋ฆฌ์™€ ํŒŒ์ผ๋“ค์„ ํ‘œ์‹œํ•ด ์ค๋‹ˆ๋‹ค.

# svn list http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample branches/ tags/ trunk/

์•ž์œผ๋กœ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ, ์‚ญ์ œ, ์ด๋ฆ„๋ณ€๊ฒฝ, ํŒŒ์ผ, ์ถ”๊ฐ€, ์‚ญ์ œ, ๋ณต์‚ฌ, ์ด๋™๊ณผ ์ปค๋ฐ‹, ๋“ฑ์„ ํ•  ๋•Œ vim์ด ์‹คํ–‰๋˜๋ฉด์„œ ์–ด๋–ค ๊ฒƒ๋“ค์ด ๋ฐ”๋€Œ๋Š”์ง€ ํ‘œ์‹œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ์ž…๋ ฅํ•œ๋’ค vim์„ ์ข…๋ฃŒํ•˜๋ฉด ์ปค๋ฐ‹์ด ์™„๋ฃŒ ๋ฉ๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ a)bort, c)ontinue, e)dit๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜๋Š”๋ฐ c)ontinue)๋กœ ๊ณ„์† ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ! ์ปค๋ฐ‹ ๋กœ๊ทธ ์ž…๋ ฅ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ปค๋ฐ‹ ๋กœ๊ทธ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ–ˆ๊ณ  ๋””๋ ‰ํ† ๋ฆฌ, ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์‚ญ์ œ ํ–ˆ๋Š”์ง€๋ฅผ ๊ผผ๊ผผํžˆ ๊ธฐ๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ๋ฐ”๋€Œ๋Š” ํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ€๊ณ ์ž ํ• ๋•Œ๋‚˜ ๋ฌธ์ œ์ (๋ฒ„๊ทธ)์„ ์ถ”์ ํ• ๋•Œ ์ปค๋ฐ‹ ๋กœ๊ทธ๊ฐ€ ์•„์ฃผ ์œ ์šฉํ•˜๊ฒŒ ์ด์šฉ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

5.3 Import #

๋งจ ์ฒ˜์Œ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ์ €์žฅ์†Œ์— ์†Œ์Šค๋“ค์„ ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ ํ•˜๋Š” ๊ฒƒ์ด import ์ž‘์—…์ž…๋‹ˆ๋‹ค. sampledir ์ด๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“  ๋’ค์— ๊ทธ ์•„๋ž˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ์†Œ์Šค๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์‹ญ์‹œ์˜ค.

# mkdir sampledir

cd sampledir

sampledir# vim sample.c

#include <stdio.h>

int main() { printf("Sample Program Version 0.1n");

return 0; }

์ด ์†Œ์Šค๋ฅผ ์ €์žฅ์†Œ์˜ trunk ๋””๋ ‰ํ† ๋ฆฌ์— import ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ sampledir์€ ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ์ ์œผ๋ฉด import๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ผญ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ ์–ด ์ฃผ์‹ญ์‹œ์˜ค. ์ €์žฅ์†Œ์˜ trunk ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” sampledir ๋””๋ ‰ํ† ๋ฆฌ์•ˆ์˜ sample.c ํŒŒ์ผ๋งŒ ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋˜๊ณ  sampledir์€ ์˜ฌ๋ผ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. sampledir ์•„๋ž˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ์ €์žฅ์†Œ์˜ trunk ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์— ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

sampledir# cd ..

svn import sampledir http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/trunk

import๋„ ์œ„์—์„œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์„ ๋•Œ ์ฒ˜๋Ÿผ vim์ด ์‹คํ–‰๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. import๋˜๋Š” ํŒŒ์ผ๋“ค์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. :q!๋กœ ๋‹ซ๊ณ  c๋ฅผ ์ž…๋ ฅํ•˜๋ฉด import ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

import๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค. list ๋ช…๋ น์„ ์ด์šฉํ•ด trunk ๋””๋ ‰ํ† ๋ฆฌ์— ๋ฌด์—‡์ด ์žˆ๋‚˜ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

# svn list http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/trunk sample.c

5.4 Checkout #

์ด์ œ ๋ถ€ํ„ฐ Subversion์„ ์ด์šฉํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. checkout์„ ํ•ด์„œ ์–ด๋””์„œ๋“  ์†Œ์Šค๋ฅผ ๋ฐ›์•„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๊ธˆ import๋ฅผ ํ•˜๊ธฐ์œ„ํ•ด ๋งŒ๋“ค์—ˆ๋˜ sampledir์€ ์ง€์›Œ๋„ ๋ฉ๋‹ˆ๋‹ค.

svn checkout์€ svn co๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "svn checkout ์ €์žฅ์†Œ์ฃผ์†Œ ๋กœ์ปฌ๋””๋ ‰ํ† ๋ฆฌ" ์˜ ํ˜•์‹ ์ž…๋‹ˆ๋‹ค.

# svn checkout http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/trunk sample A sample/sample.c Checked out revision 4.

checkout์„ ํ•œ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์—๋Š” .svn ์ด๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋””๋ ‰ํ† ๋ฆฌ๋Š” Subversion ์ €์žฅ์†Œ ์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€์šฐ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

5.5 Update #

์ฒดํฌ์•„์›ƒ ํ•ด์„œ ๋ฐ›์€ ์†Œ์Šค๋ฅผ ์ €์žฅ์†Œ์˜ ์ตœ๊ทผ ๋‚ด์šฉ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค. ์ฒดํฌ์•„์›ƒ ํ•ด์„œ ๋ฐ›์€ ์†Œ์Šค์˜ revision๋ณด๋‹ค ์ €์žฅ์†Œ์˜ revision์ด ๋†’์œผ๋ฉด ์—…๋ฐ์ดํŠธ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์ „๋ถ€ ๋‹ค ๋ฐ›์•„์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณ€๊ฒฝ ๋œ ๊ฒƒ๋“ค๋งŒ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค. ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์ „์— ์–ธ์ œ๋‚˜ update ๋ช…๋ น์œผ๋กœ ์†Œ์Šค๋ฅผ ๊ฐ€์žฅ ์ตœ์‹  revision์œผ๋กœ ๋งž์ถ”๊ณ  ์ž‘์—…์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

svn update๋Š” svn up๋กœ ์ค„์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

sample# svn update

5.6 Commit #

checkout ํ•ด์„œ ๋ฐ›์€ ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅ์†Œ์— ์ˆ˜์ •๋œ ์†Œ์Šค๋ฅผ ์ ์šฉํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์ž‘์—…์„ ์ปค๋ฐ‹(Commit)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ฒดํฌ์•„์›ƒ ๋ฐ›์€ sample.c ์†Œ์Šค๋ฅผ ์•„๋ž˜์ฒ˜๋Ÿผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

#include <stdio.h>

int main() { printf("Sample Program Version 0.2n"); printf("Hello Subversionn");

return 0; }

์ด์ œ ์ปค๋ฐ‹์„ ํ•ด ๋ด…์‹œ๋‹ค ์ปค๋ฐ‹ ๋ช…๋ น์€ ์ฒดํฌ์•„์›ƒ ํ•ด์„œ ์†Œ์Šค๋ฅผ ๋ฐ›์€ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค. svn commit์€ svn ci๋กœ ์ค„์—ฌ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋ฉด ์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์—๋””ํ„ฐ๊ฐ€ ์‹คํ–‰ ๋ฉ๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ์ž…๋ ฅํ•œํ›„ ์ €์žฅ์„ ํ•˜๋ฉด ์ปค๋ฐ‹์ด ๋ฉ๋‹ˆ๋‹ค.

sample# svn commit Sending sample.c Transmitting file data . Committed revision 5.

5.7 Log #

์ด์ œ ์ €์žฅ์†Œ์— ์–ด๋– ํ•œ ๊ฒƒ๋“ค์ด ๋ณ€๊ฒฝ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋Š” log ๋ช…๋ น์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

log ๋ช…๋ น์€ ์ฒดํฌ์•„์›ƒ ๋ฐ›์€ ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์—์„œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. revision๊ณผ ๋‚ ์งœ, ๋ˆ„๊ฐ€ ์ปค๋ฐ‹์„ ํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” (no author)๋กœ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์„œ๋ฒ„ ์„ค์ •์—์„œ ์•„๋ฌด๋‚˜ ์ปค๋ฐ‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์—ฌ์„œ ์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด๊ณ  ID๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„ ํ•˜๋„๋ก ์„ค์ •์„ ํ–ˆ์œผ๋ฉด ID๊ฐ€ ํ‘œ์‹œ ๋ฉ๋‹ˆ๋‹ค.

sample# svn log

r4 | (no author) | 2003-11-23 14:40:05 +0900 (Sun, 23 Nov 2003) | 1 line


r1 | (no author) | 2003-11-23 14:39:00 +0900 (Sun, 23 Nov 2003) | 1 line


--revision๊ณผ -r์€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

sample# svn log --revision 5:19 # revision 5๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. sample# svn log -r 19:5 # revision 19๋ถ€ํ„ฐ 5๊นŒ์ง€ ์—ญ์œผ๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. sample# svn log -r 8 # revision 8์˜ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ ๋กœ๊ทธ๋ฅผ ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

sample# svn log sample.c sample# svn log http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/trunk/sample.c

-v ์˜ต์…˜์€ ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ M์€ Modify(์ˆ˜์ •)์˜ ํ‘œ์‹œ ์ž…๋‹ˆ๋‹ค. ์†Œ์Šค ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  ์ปค๋ฐ‹ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

sample# svn log -r 5 -v

r5 | (no author) | 2003-11-23 14:42:34 +0900 (Sun, 23 Nov 2003) | 1 line Changed paths: M /trunk/sample.c


A ๋Š” Add(์ถ”๊ฐ€) ํ‘œ์‹œ ์ž…๋‹ˆ๋‹ค. trunk๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ๊ณ  sample.c ํŒŒ์ผ์„ import ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— A(์ถ”๊ฐ€) ํ‘œ์‹œ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

sample# svn log -v

r4 | (no author) | 2003-11-23 14:40:05 +0900 (Sun, 23 Nov 2003) | 1 line Changed paths: A /trunk/sample.c


r1 | (no author) | 2003-11-23 14:39:00 +0900 (Sun, 23 Nov 2003) | 1 line Changed paths: A /trunk


5.8 Diff #

diff ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜ˆ์ „ ์†Œ์Šค ํŒŒ์ผ๊ณผ ์ง€๊ธˆ์˜ ์†Œ์Šค ํŒŒ์ผ์„ ๋น„๊ตํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ๋‚˜์˜จ ๋กœ๊ทธ์™€ ๊ฐ™์ด ์šฐ๋ฆฌ๋Š” revision 4(r4)์—์„œ sample.c๋ฅผ import ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  revision 5์—์„œ ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ปค๋ฐ‹ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ดˆ์— import ํ–ˆ๋˜ ์†Œ์Šค sample.c์˜ revision 4์™€ ์ˆ˜์ •ํ•ด์„œ ์ปค๋ฐ‹ํ•œ revision 5์˜ ์ฐจ์ด์ ์„ diff ๋ช…๋ น์œผ๋กœ ์ถœ๋ ฅํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. --revision 4๋งŒ ์ ์œผ๋ฉด ํ˜„์žฌ revision 5์™€ ๋น„๊ตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

sample# svn diff --revision 4 sample.c Index: sample.c

--- sample.c (revision 4) +++ sample.c (working copy) @@ -2,7 +2,8 @@

int main() {

  • printf("Sample Program Version 0.1n");
  • printf("Sample Program Version 0.2n");

  • printf("Hello Subversionn");

    return 0;

}

revision 4์™€ 5๋ฅผ ๋น„๊ต ํ•˜๊ณ  ์‹ถ์œผ๋ฉด --revision 4:5 (-r 4:5)๋กœ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. --revision 8:10 ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

sample# svn diff --revision 4:5 sample.c Index: sample.c

--- sample.c (revision 4) +++ sample.c (revision 5) @@ -2,7 +2,8 @@

int main() {

  • printf("Sample Program Version 0.1n");
  • printf("Sample Program Version 0.2n");

  • printf("Hello Subversionn");

    return 0;

}

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ CVS๋Š” revision์„ ํŒŒ์ผ ํ•˜๋‚˜ํ•˜๋‚˜์— ๋‹ค ๋งค๊ธฐ์ง€๋งŒ Subversion์€ ํŒŒ์ผ์— revision์„ ๋งค๊ธฐ์ง€ ์•Š๊ณ  ์†Œ์Šค ์ˆ˜์ •, ํŒŒ์ผ ๋ณต์‚ฌ, ์ด๋™, ์‚ญ์ œ ๋“ฑ์„ ํ•˜๊ณ  ๊ทธ๋•Œ ํ•œ ์ปค๋ฐ‹์œผ๋กœ revision์„ ๋งค๊น๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค๋ฅธ ํŒŒ์ผ๋“ค์ด๋ผ๋„ ๊ฐ™์€ revision ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

5.9 Blame #

Blame์€ ํ•œ ์†Œ์ŠคํŒŒ์ผ์„ ๋Œ€์ƒ์œผ๋กœ ๊ฐ ๋ฆฌ๋น„์ „ ๋Œ€ํ•ด์„œ ์–ด๋–ค ํ–‰์„ ๋ˆ„๊ฐ€ ์ˆ˜์ •ํ–ˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•œ ๋ช…๋ น์ž…๋‹ˆ๋‹ค.
๋ฆฌ๋น„์ „, ์ปค๋ฐ‹ํ•œ ์‚ฌ์šฉ์ž์˜ ID, ์†Œ์Šค ์ˆœ์„œ์ž…๋‹ˆ๋‹ค.

sample# svn blame sample.c 4 sampleuser #include <stdio.h> 4 sampleuser 4 sampleuser int main() 4 sampleuser { 5 sampleuser printf("Sample Program Version 0.2n"); 5 sampleuser printf("Hello Subversionn"); 4 sampleuser 4 sampleuser return 0; 4 sampleuser } 4 sampleuser

์—ฌ๊ธฐ์„œ๋Š” ์ปค๋ฐ‹ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ํ•œ๋ช… ๋ฐ–์— ์—†์œผ๋ฏ€๋กœ ์ „๋ถ€ ๋˜‘๊ฐ™์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.

ํ•œ ์˜ˆ๋กœ ์—ฌ๋Ÿฌ์‚ฌ๋žŒ์ด ์ปค๋ฐ‹ํ–ˆ์„ ๊ฒฝ์šฐ ์•„๋ž˜์ฒ˜๋Ÿผ ๋‚˜์˜ต๋‹ˆ๋‹ค.

 4 sampleuser #include <stdio.h>
 4 sampleuser
 4 sampleuser int main()
 4 sampleuser {
 7 epifanes     printf("Sample Program Version 0.3n");
 6 pyrasis      printf("Hello Subversionn");
 4 sampleuser
 4 sampleuser   return 0;
 4 sampleuser }
 4 sampleuser

ํŠน์ • ๋ฆฌ๋น„์ „๋งŒ ์ง€์ •ํ•ด์„œ ๋ณผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋น„์ „์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํ˜„์žฌ ๋ฆฌ๋น„์ „์„ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

sample# svn blame -r 4 sample.c

5.10 lock #

svn lock ๋ช…๋ น์œผ๋กœ ํŒŒ์ผ์„ ์ž ๊ธ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

sample# svn lock hello.c

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

5.11 Add #

svn add ๋ช…๋ น์œผ๋กœ ์ƒˆ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

sample# svn add hello.c A hello.c

svn add๋กœ ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•œ ๋’ค์—๋Š” svn commit์œผ๋กœ ์ปค๋ฐ‹์„ ํ•ด์ฃผ์–ด์•ผ ์™„์ „ํžˆ ํŒŒ์ผ์ด ์ €์žฅ์†Œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

sample# svn commit

๋ฌผ๋ก  ์ปค๋ฐ‹ ๋กœ๊ทธ๋„ ์ž…๋ ฅํ•ด์•ผ ๋ฉ๋‹ˆ๋‹ค.

5.12 Export #

์ฒดํฌ์•„์›ƒ์€ Subversion์ด ๋ฒ„์ „๊ด€๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ์ข… ํŒŒ์ผ์ด ์†Œ์Šค ํด๋” ์•ˆ์— ํ•จ๊ป˜ ์ƒ๊น๋‹ˆ๋‹ค. ์ด๊ฒƒ๊ณผ๋Š” ๋‹ฌ๋ฆฌ Export๋Š” ์ˆœ์ˆ˜ํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์˜ ์†Œ์Šค๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ๋“ค์–ด์ง„ ์†Œ์Šค๋ฅผ ์••์ถ•ํ•˜์—ฌ ๋ฆด๋ฆฌ์ฆˆ ํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

sample# svn export http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample2/trunk sample

--revision (-r)์œผ๋กœ revision์„ ์ง€์ •ํ•˜๋ฉด ์ง€์ •ํ•œ revision์˜ ์†Œ์Šค๋ฅผ ๋ฐ›์•„์˜ต๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฐ€์žฅ ์ตœ๊ทผ์˜ revision์˜ ๊ฒƒ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

5.13 Branch์™€ Tag #

CVS์—์„œ์˜ Branch์™€ Tag๋Š” Branch์™€ Tag๋ฅผ ์œ„ํ•œ ๋ช…๋ น์ด ์žˆ์Šต๋‹ˆ๋‹ค. CVS์—์„œ Branch์™€ Tag๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด ์ €์žฅ์†Œ์˜ ํŒŒ์ผ์—๋Š” Branch ๋˜๋Š” Tag ๋˜์—ˆ๋‹ค๋Š” ํ‘œ์‹œ๊ฐ€ ํ•จ๊ป˜ ๋ถ™๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฒดํฌ์•„์›ƒ ํ•  ๋•Œ์—๋„ Branch์™€ Tag์˜ ์†Œ์Šค๋ฅผ ๋ฐ›์•„์˜ค๋ ค๋ฉด Branch, Tag๋ฅผ ์ง€์ •ํ•˜๋Š” ์˜ต์…˜์„ ์ฃผ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

CVS์™€๋Š” ๋‹ฌ๋ฆฌ Subversion์€ Branch์™€ Tag๊ฐ€ ํŠน๋ณ„ํ•œ ๋ช…๋ น์ด ์žˆ๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ  ์ด๋Ÿฐ ๊ฒƒ๋“ค์„ ํ•œ๋‹ค๊ณ  ํ•ด๋„ ์ €์žฅ์†Œ์— ํŠน๋ณ„ํžˆ Branch, Tag๋ผ๊ณ  ๊ธฐ๋ก์ด ๋‚จ๋Š” ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค. Subversion์—์„œ Branch์™€ Tag๋Š” ๋‹จ์ˆœํ•œ ๋””๋ ‰ํ† ๋ฆฌ ๋ณต์‚ฌ ๋ช…๋ น์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๊ณ  Branch, Tag๋ฅผ ํ–ˆ๋”๋ผ๋„ ๋””๋ ‰ํ† ๋ฆฌ ๋ณต์‚ฌ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

5.13.1 Branch #

Branch๋ฅผ ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ๋Š” ์•ž์„œ ์„ค๋ช… ํ–ˆ๋“ฏ์ด ํ”„๋กœ์ ํŠธ์ค‘ ์ž‘์€ ๋ถ„๋ฅ˜๋กœ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœ ํ•˜๊ฑฐ๋‚˜ ์†Œ์Šค๋ฅผ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์‹คํ—˜์ ์ธ ์ฝ”๋“œ ๋ฅผ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ ๋“ฑ ์ž…๋‹ˆ๋‹ค.

Subversion์—์„œ๋Š” Branch๋ฅผ copy ๋ช…๋ น์œผ๋กœ ์ˆ˜ํ–‰ ํ•ฉ๋‹ˆ๋‹ค. trunk์˜ ๋‚ด์šฉ์„ Branches์•ˆ์— ์ƒˆ๋กœ์šด ์ด๋ฆ„์œผ๋กœ ๋ณต์‚ฌ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฒดํฌ์•„์›ƒ ๋ฐ›์€ ์†Œ์Šค์—์„œ ๋ฐ”๋กœ copy๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์›๊ฒฉ์—์„œ URL๋กœ ๋ณต์‚ฌ๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฒดํฌ์•„์›ƒ ๋ฐ›์€ ๊ฒƒ์€ trunk๋งŒ ๋ฐ›์€ ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  sample ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜๋ฅผ ์ „๋ถ€ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

svn checkout http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample sample sample# svn copy trunk branches/sample-branch sample# svn commit

์›๊ฒฉ์—์„œ URL๋กœ copy๋ฅผ ํ•˜๋ฉด commit๋„ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ฒดํฌ์•„์›ƒ ๋ฐ›์€ ์†Œ์Šค์—์„œ๋Š” update๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# svn copy http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/trunk http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/branches/sample-branch

Branch๋œ ์†Œ์Šค๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” branches/sample-branch๋ฅผ ์ฒดํฌ์•„์›ƒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. trunk์™€ branche๋Š” ๋”ฐ๋กœ revision์„ ๊ฐ€์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Subversion์˜ revision์€ ์ €์žฅ์†Œ ์ „์ฒด์˜ revision์ž…๋‹ˆ๋‹ค.

# svn checkout http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/branches/sample-branch sample-branch

5.13.1.1 Merge #

์œ„์™€ ๊ฐ™์ด ์šฐ๋ฆฌ๋Š” trunk๋ฅผ sample-branch๋กœ Branch ํ–ˆ์Šต๋‹ˆ๋‹ค. sample-branch๋ฅผ ์ˆ˜์ •ํ•˜๋‹ค๊ฐ€ trunk์—๋„ ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด. merge ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜ํ•˜๋‚˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์˜ฎ๊ฒจ์„œ ์ž…๋ ฅํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ merge ํ•œ ๋’ค์—๋Š” ๊ผญ ์‚ฌ๋žŒ์ด ํ™•์ธ์„ ํ•ด ๋ด์•ผ๊ฒ ์ฃ .

sample-branch๋ฅผ ์ฒดํฌ์•„์›ƒ ํ•ฉ๋‹ˆ๋‹ค.

# svn checkout http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/branches/sample-branch sample-branch

sample-branch์˜ sample.c๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ • ํ•ฉ๋‹ˆ๋‹ค. printf("Hello Worldn");๋ฅผ ์ถ”๊ฐ€ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  commit์„ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ ์ˆ˜์ •๋œ ๊ฒƒ์€ revision 7์ž…๋‹ˆ๋‹ค.

#include <stdio.h>

int main() { printf("Sample Program Version 0.2n"); printf("Hello Subversionn");

printf("Hello Worldn");

return 0; }

์ด์ œ sample์˜ trunk๋ฅผ ์ฒดํฌ์•„์›ƒ ํ•ฉ๋‹ˆ๋‹ค.

# svn checkout http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/trunk sample

trunk์˜ sample.c๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

#include <stdio.h>

int main() { printf("Sample Program Version 0.2n"); printf("Hello Subversionn");

return 0; }

์ด์ œ sample-branch์˜ ์ˆ˜์ •๋œ ๊ฒƒ์„ trunk์— merge ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. "svn merge -r N:N ์ €์žฅ์†Œ์ฃผ์†Œ ์ฒดํฌ์•„์›ƒ๋œ๋””๋ ‰ํ† ๋ฆฌ" ํ˜•์‹ ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์ €์žฅ์†Œ ์ฃผ์†Œ ํ•˜๋‚˜๋งŒ ์ž…๋ ฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์ง€๊ธˆ ์ฒดํฌ์•„์›ƒํ•œ ์†Œ์Šค์™€ merge๋ฅผ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. mergeํ•  revision ๋ฒˆํ˜ธ๋ฅผ ์ฃผ์˜ํ•ด ์ฃผ์‹ญ์‹œ์˜ค. 6:7์€ r 6๊ณผ r 7์˜ ์ฐจ์ด์ ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. sample-branch์˜ r 6๊ณผ r 7์˜ ์ฐจ์ด์ ์„ ์ง€๊ธˆ์˜ ์ฒดํฌ์•„์›ƒ๋œ trunk์— ์ ์šฉํ•˜๋ผ๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

sample# svn merge -r 6:7 http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/branches/sample-branch U sample.c sample# svn commit sample# svn update

์ด์ œ sample.c๋ฅผ ์—ด์–ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด sample-branch์—์„œ ์ˆ˜์ •ํ•œ ๊ฒƒ์ด merge๊ฐ€ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

#include <stdio.h>

int main() { printf("Sample Program Version 0.2n"); printf("Hello Subversionn");

printf("Hello Worldn");

return 0; }

ํŒŒ์ผ ํ•˜๋‚˜๋งŒ merge๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

# svn merge -r 6:7 sample.c

์ €์žฅ์†Œ ์ฃผ์†Œ๋ผ๋ฆฌ merge๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

# svn merge http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample2/trunk http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample2/branches/sample-branch

5.13.2 Tag #

Tag๋Š” ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ์„ ์›น ์‚ฌ์ดํŠธ ๋“ฑ์— ๊ณต๊ฐœํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Tag๋„ Subversion์—์„œ๋Š” Branch์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋””๋ ‰ํ† ๋ฆฌ ๋ณต์‚ฌ(copy)์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. tags ๋””๋ ‰ํ† ๋ฆฌ ์•ˆ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฆด๋ฆฌ์ฆˆ(๋ฐœํ‘œ)ํ•˜๋Š” ๋ฒ„์ „๋ณ„ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

trunk์˜ ์†Œ์Šค๋ฅผ 0.1 ๋ฒ„์ „์œผ๋กœ Tag, Branch์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฒดํฌ์•„์›ƒ ๋ฐ›์€ ์†Œ์Šค์—์„œ๋„ ํ•  ์ˆ˜ ์žˆ๊ณ  ์›๊ฒฉ์—์„œ URL๋กœ๋„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฒดํฌ์•„์›ƒ ๋ฐ›์€ ๊ฒƒ์€ trunk๋งŒ ๋ฐ›์€ ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  sample ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜๋ฅผ ์ „๋ถ€ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

# svn checkout http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample sample sample# svn copy trunk tags/0.1 sample# svn commit

์›๊ฒฉ์—์„œ URL๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ commit๋„ ๊ฐ™์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ฒดํฌ์•„์›ƒ ๋ฐ›์€ ์†Œ์Šค๋Š” update๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# svn copy http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/trunk http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/tags/0.1

์ด์ œ 0.1๋กœ Tagํ•œ ์†Œ์Šค๋ฅผ Export๋กœ ๋ฐ›์•„์„œ ์••์ถ•ํ•œ ๋’ค์— ๋ฆด๋ฆฌ์ฆˆ(๊ณต๊ฐœ)๋ฅผ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

# svn export http://(Subversion ์„œ๋ฒ„์˜ IP์ฃผ์†Œ ๋˜๋Š” ๋„๋ฉ”์ธ)/svn/sample/tags/0.1 sample-0.1

5.14 Revert #

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

sample# svn revert sample.c

5.15 ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ #

์ €์žฅ์†Œ๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ณต๊ฐ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฑ์—…์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์ €์žฅ์†Œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณด๊ด€ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ฐฑ์—…๊ณผ ๋ณต๊ตฌ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
Windows, ๋ฆฌ๋ˆ…์Šค, BSD ๋“ฑ ์šด์˜์ฒด์ œ์— ๊ด€๊ณ„์—†์ด ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Windows์—์„œ ๋ฐฑ์—…ํ•œ๊ฒƒ์„ ๋ฆฌ๋ˆ…์Šค์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ  BSD์—์„œ ๋ฐฑ์—…ํ•œ ๊ฒƒ์„ Windows์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
์ €์žฅ์†Œ์˜ ์„œ๋ฒ„๋ฅผ ์˜ฎ๊ธธ๋•Œ์—๋Š” ์ €์žฅ์†Œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ €์žฅ์†Œ ๋ฐฑ์—…์„ ํ•œ๋’ค ๊ทธ ๋ฐฑ์—…ํŒŒ์ผ์„ ์ด์šฉํ•˜์—ฌ ์ƒˆ ์„œ๋ฒ„์—์„œ ๋ณต๊ตฌ๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์˜ฎ๊ฒจ์•ผํ•ฉ๋‹ˆ๋‹ค.

5.15.1 Dump #

sample ์ €์žฅ์†Œ๋ฅผ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค. ํ‘œ์ค€ ์ž…์ถœ๋ ฅ์„ ํ†ตํ•ด์„œ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. svnadmin dump ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉฐ ์ด ๋ช…๋ น์€ ์ €์žฅ์†Œ ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ”๊นฅ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

repos# ls sample repos# svnadmin dump sample > sample.dump

5.15.2 Load #

์ €์žฅ์†Œ ๋ฐฑ์—… ํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ ์ €์žฅ์†Œ๋ฅผ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค. svnadmin load ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋นˆ ์ €์žฅ์†Œ๋ฅผ ์ƒ์„ฑํ•œ ๋’ค ๋ฐฑ์—… ํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ ๋ณต๊ตฌ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค.

repos# svnadmin create sample repos# ls sample sample.dump repos# svnadmin load sample < sample.dump

5.16 svnsync #

svnsync๋Š” 1.4.0์—์„œ ์ƒˆ๋กœ ์ƒ๊ธด ๋ช…๋ น์ž…๋‹ˆ๋‹ค. svnsync ๋ช…๋ น์„ ์ด์šฉํ•ด์„œ ์ €์žฅ์†Œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌํ•ด ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ ๋ณต์‚ฌํ•ด์˜ค๊ณ ์ž ํ•˜๋Š” ์›๋ณธ ์ €์žฅ์†Œ๊ฐ€ Subversion 1.4 ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฉฐ 1.4 ์ดํ•˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ svnsync ๋ช…๋ น์ด ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋จผ์ € ๋นˆ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

# cd /home/svn/ /home/svn# svnadmin create syncsample

์ƒˆ๋กœ ๋งŒ๋“  ๋นˆ ์ €์žฅ์†Œ์˜ hooks ๋””๋ ‰ํ† ๋ฆฌ์— pre-revprop-change ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•œ ๋’ค ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. /home/svn/syncsample/hooks/pre-revprop-change

#!/bin/sh

pre-revprop-change ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

/home/svn/syncsample/hooks# chmod 777 pre-revprop-change

svnsync๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ €์žฅ์†Œ๋ฅผ ์ดˆ๊ธฐํ™” ํ•ฉ๋‹ˆ๋‹ค. file:///home/svn/syncsample์€ ๋ฐฉ๊ธˆ ๋งŒ๋“  ๋นˆ ์ €์žฅ์†Œ ๊ฒฝ๋กœ์ด๊ณ  http://svn.collab.net/repos/svn์€ ๋ณต์‚ฌํ•ด ์˜ฌ ์›๋ณธ ์ €์žฅ์†Œ์˜ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค. http://, svn://๋“ฑ ์ ‘์† ๊ฐ€๋Šฅํ•œ ์ €์žฅ์†Œ ์ฃผ์†Œ์ด๋ฉด ๋˜๊ณ  trunk๋‚˜ branches๊ฐ™์€ ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์•„๋‹Œ ์ตœ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ฃผ์†Œ๋กœ ์„ค์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

/home/svn# svnsync init file:///home/svn/syncsample http://svn.collab.net/repos/svn Copied properties for revision 0.

์ด์ œ ์ €์žฅ์†Œ๋ฅผ ๋ณต์‚ฌ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

/home/svn# svnsync sync file:///home/svn/syncsample Committed revision 1. Copied properties for revision 1. Committed revision 2. Copied properties for revision 2. Committed revision 3. Copied properties for revision 3. Committed revision 4. Copied properties for revision 4. Committed revision 5. Copied properties for revision 5. Committed revision 6. Copied properties for revision 6. ....

์ตœ์‹  ๋ฆฌ๋น„์ „ ๊นŒ์ง€ ๋ณต์‚ฌํ•ด์˜ค๋ฉด svnsync ๋ช…๋ น์ด ๋๋‚œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด์ œ ์ด ์ €์žฅ์†Œ์—์„œ ์†Œ์Šค๋ฅผ ์ฒดํฌ์•„์›ƒ ํ•˜์—ฌ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Windows์˜ ๊ฒฝ์šฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ €์žฅ์†Œ ์ƒ์„ฑ

C:repos>svnadmin create syncsample

์ƒˆ๋กœ ๋งŒ๋“  ์ €์žฅ์†Œ์˜ hooks ๋””๋ ‰ํ† ๋ฆฌ์— pre-revprop-change.bat๋ผ๋Š” ๋นˆ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์ดˆ๊ธฐํ™”

C:repos>svnsync init file:///c:/repos/syncsample http://svn.collab.net/repos/svn

์ €์žฅ์†Œ ๋ณต์‚ฌ

C:repos>svnsync sync file:///c:/repos/syncsample

6 Microsoft Windows์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ #

Microsoft Windows์—์„œ๋„ Subversion์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๊ณ  ์„ค์น˜ ํŒŒ์ผ์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Windows์—์„œ๋„ ๋ฆฌ๋ˆ…์Šค, ์œ ๋‹‰์Šค์™€ ๋˜‘๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Subversion ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์œˆ๋„์šฐ์—์„œ Subversion ์„œ๋ฒ„ ์šด์˜ํ•˜๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

6.1 ์„ค์น˜ ํŒŒ์ผ ๊ตฌํ•˜๊ธฐ #

Subversion Windows ์„ค์น˜ํŒŒ์ผ

Subversion Windows http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91

Windows ์šฉ ์„ค์น˜ ํŒŒ์ผ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ZIP์œผ๋กœ ์••์ถ•๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ƒ๊ด€์—†์Šต๋‹ˆ๋‹ค.

svn-1.0.0-setup.exe

6.2 ์„ค์น˜ #

์„ค์น˜ ํŒŒ์ผ์„ ๋ฐ›์•˜๋‹ค๋ฉด ์ผ๋ฐ˜์ ์ธ Windows ํ”„๋กœ๊ทธ๋žจ์„ ์„ค์น˜ํ•˜๋“ฏ์ด ์„ค์น˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ZIP์œผ๋กœ ์••์ถ•๋œ ๊ฒƒ์€ ์ ๋‹นํ•œ ๋””๋ ‰ํ† ๋ฆฌ์— ์••์ถ•์„ ํ•ด์ œํ•œ๋’ค ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

6.3 ์‚ฌ์šฉํ•˜๊ธฐ #

์ง€๊ธˆ ์„ค์น˜ํ•œ๊ฒƒ๋“ค์€ Subversion ์ปค๋งจ๋“œ ๋ผ์ธ ํด๋ผ์ด์–ธํŠธ์™€ ์ €์žฅ์†Œ๋ฅผ ๋„คํŠธ์›Œํฌ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ ๋“ค์ž…๋‹ˆ๋‹ค. ์ปค๋งจ๋“œ๋ผ์ธ ์‚ฌ์šฉ๋ฒ•์€ ๋ฆฌ๋ˆ…์Šค, ์œ ๋‹‰์Šค์™€ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ Windows์—์„œ๋Š” ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ(cmd.exe)์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ZIP์œผ๋กœ ๋œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค ํ•œ๋‹ค๋ฉด ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ์—์„œ Subversion์˜ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ PATH์— Subversion ์••์ถ•์„ ํ•ด์ œํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜ ํŒŒ์ผ๋กœ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด ์ž๋™์œผ๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

์ปค๋ฐ‹ ๋กœ๊ทธ๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ Administrator์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ๋ณ€์ˆ˜์— ๋ณ€์ˆ˜์ด๋ฆ„ SVN_EDITOR, ๊ฐ’ notepad๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. notepad๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํŽธ์ง‘๊ธฐ๋ฅผ ์ด์šฉํ•˜๋ ค๋ฉด ํŽธ์ง‘๊ธฐ์˜ ์‹คํ–‰ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ. C:์— repos๋ผ๋Š” ํด๋”๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

C:Documents and SettingsAdministrator>cd c:repos

๋ฒ„ํด๋ฆฌ DB๋ฅผ ์ด์šฉํ•œ ์ €์žฅ์†Œ

C:repos>svnadmin create --fs-type bdb sample

ํŒŒ์ผ์‹œ์Šคํ…œ์„ ์ด์šฉํ•œ ์ €์žฅ์†Œ

C:repos>svnadmin create --fs-type fsfs sample

์ฒดํฌ์•„์›ƒ. svn://, http://๋ฅผ ์ด์šฉํ•œ ์ฒดํฌ์•„์›ƒ ๋ฐฉ์‹์€ ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ฐฉ๋ฒ•๊ณผ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค.

์œˆ๋„์šฐ ํŒŒํ‹ฐ์…˜์— ์žˆ๋Š” ์ €์žฅ์†Œ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•.

C:temp>svn checkout file:///C:/repos/sample

svnserve๋ฅผ ์‚ฌ์šฉํ•œ ์„œ๋ฒ„

C:>svnserve -d -r C:repos

๋ช…๋ นํ–‰์—์„œ ์ผ์ผ์ด ์‹คํ–‰ํ•˜๋Š” ๋ถˆํŽธํ•จ์„ ๋œ์–ด์ฃผ๋Š” SVNSERVE Manager๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ์ด์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. svnserve์˜ ๋™์ž‘/์ •์ง€ ์ƒํƒœ๋ฅผ ํŠธ๋ ˆ์ด ์•„์ด์ฝ˜์œผ๋กœ ํ‘œ์‹œํ•ด ์ฃผ๋ฉฐ ์‹œ์Šคํ…œ ์‹œ์ž‘์‹œ svnserve๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰ ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

7 ์šด์˜์ฒด์ œ๋ณ„ ์ „์šฉ ํŒจํ‚ค์ง€ #

๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ๋ณ„(Redhat, Debian, SuSE) ์ „์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง€, FreeBSD ํฌํŠธ ์ปฌ๋ ‰์…˜, NetBSD pkgsrc, Mac OS X ํŒจํ‚ค์ง€ ๋“ฑ ํŽธ๋ฆฌํ•˜๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์šด์˜์ฒด์ œ๋ณ„ ์ „์šฉ ํŒจํ‚ค์ง€๊ฐ€ ์ œ๊ณต๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผ ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์„ค์น˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์šด์˜์ฒด์ œ๋ณ„ ํŒจํ‚ค์ง€๋Š” ์•„๋ž˜ ๋งํฌ์—์„œ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
http://subversion.tigris.org/project_packages.html

8 GUI ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ #

Subversion์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜๋Š” ์ปค๋งจ๋“œ ๋ผ์ธ ๋ช…๋ น svn์€ ์‚ฌ์šฉํ•˜๊ธฐ์— ๋ถˆํŽธํ•œ ์ ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ์†Œ๊ฐœํ•  ๊ฒƒ๋“ค์€ MS Windows, X Window ๋“ฑ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Subversion ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ ์ž…๋‹ˆ๋‹ค.

8.1 TortoiseSVN #

MS Windows์šฉ GUI ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. CVS GUI ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์œ ๋ช…ํ•œ TortoiseCVS์™€ ๊ฑฐ์˜ ๊ฐ™์€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
http://tortoisesvn.tigris.org

8.2 Ankhsvn #

Visual Studio .NET ์• ๋“œ์ธ ํ˜•์‹์˜ Subversion ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. VS.NET๊ณผ ํ†ตํ•ฉ์„ฑ์ด ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค. VS.NET์˜ ์†”๋ฃจ์…˜ ๋ทฐ์—์„œ ์ปค๋ฐ‹, ์—…๋ฐ์ดํŠธ ๋“ฑ์˜ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์†”๋ฅ˜์…˜ ๋ทฐ์˜ ๊ฐ ํŒŒ์ผ์— ์ˆ˜์ •๋˜์—ˆ๊ฑฐ๋‚˜ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ํŒŒ์ผ์˜ ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•ด์ค๋‹ˆ๋‹ค.
http://ankhsvn.tigris.org

8.3 RapidSVN #

ํฌ๋กœ์Šค ํ”Œ๋žซํผ Subversion ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค. Windows, ๋ฆฌ๋ˆ…์Šค, BSD์˜ X Window์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
http://rapidsvn.tigris.org

9 ์›น ์ธํ„ฐํŽ˜์ด์Šค #

์ €์žฅ์†Œ๋ฅผ ์›น๋ธŒ๋ผ์šฐ์ €๋กœ ํŽธํ•˜๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋“ค์ž…๋‹ˆ๋‹ค.

9.1 ViewVC #

Subversion๊ดด CVS ์›น ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜์™€ mod_python ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋ฉฐ Subversion ํŒŒ์ด์ฌ ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ๋‹‰์Šค, ๋ฆฌ๋ˆ…์Šค, Windows ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ViewCVS์—์„œ ViewVC๋กœ ์ด๋ฆ„์ด ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค.)
http://www.viewvc.org

์œˆ๋„์šฐ์—์„œ Subversion๊ณผ ViewVC ์‚ฌ์šฉํ•˜๊ธฐ

9.2 WebSVN #

Subversion ์ „์šฉ ์›น ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. Subversion svnlook๊ณผ ์—ฐ๋™ํ•˜์—ฌ ์›น์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์•„ํŒŒ์น˜์™€ php๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
http://websvn.tigris.org