SVN Tutorial ¹®¼­
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : ¹Ì´Ï»çÀÌÆ®>SVN>Tutorial



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 ¼Ò°³
1.1 Çü»ó°ü¸®¿¡ ´ëÇØ¼­
1.2 software ¹öÀü°ü¸®¿¡ ´ëÇØ¼­
1.3 SVN¿¡ ´ëÇØ¼­
1.4 SVN ¾ÆÅ°ÅØÃ³
2 SVN ¼³Ä¡¿Í ±âº» »ç¿ë
2.1 ¼³Ä¡
2.2 Repository
2.3 SVN ¼­¹ö¿Í SVN Ŭ¶óÀ̾ðÆ®
2.4 SVN Repository Á¢±Ù ¹æ½Ä
2.5 SVN ¼­¹ö ¼³Á¤
2.5.1 Repository »ý¼º
2.5.2 SVN Repository Á¢±Ù¹æ½Ä ¼³Á¤
2.6 ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÏÀÚ
2.7 svn Ŭ¶óÀÌ¾ðÆ® ¼³Á¤
2.8 ÇÁ·ÎÁ§Æ®¸¦ ¹Þ¾Æ¿ÀÀÚ
2.9 ÀÛ¾÷ÇÑ ³»¿ëÀ» ¿Ã¸®ÀÚ
2.10 ÀúÀå¼ÒÀÇ ³»¿ëÀ» ¹Þ¾Æ¿ÀÀÚ
2.11 »õ·Î¿î ÆÄÀÏ Ãß°¡Çϱâ
3 SVN ¿î¿ë
3.1 trunk, branches, tagsÀÇ Â÷ÀÌ
3.2 branch
3.3 ÇÁ·ÎÁ§Æ® ·Î±× È®ÀÎ
3.4 Ãæµ¹ ÇØ°á
3.5 ¼Ò½ºÄÚµå º¹±¸
3.6 merge
4 ÀúÀå¼Ò Á¤Ã¥

±×µ¿¾È Çü»ó°ü¸®¸¦ À§Çؼ­ CVS¸¦ ÁÖ·Î ½á¿Ô´Âµ¥, ¿©Â÷ÀúÂ÷ÇØ¼­ SVNÀ» »ç¿ëÇÏ´Â °æ¿ì°¡ ¸¹¾ÆÁ³À¸´Ï Æ´Æ´È÷ Á¤¸®Çغ¼ »ý°¢ÀÌ´Ù.

1 ¼Ò°³

1.1 Çü»ó°ü¸®¿¡ ´ëÇØ¼­

¼ÒÇÁÆ®¿þ¾î Çü»ó °ü¸® (Sofware Configuration Management)´Â ¼ÒÇÁÆ®¿þ¾îÀÇ È¿À²ÀûÀÎ °³¹ß/¿î¿ë/À¯Áö/º¸¼ö¸¦ À§ÇÑ Æ÷°ýÀûÀÎ ÇмúºÐ¾ß ¿ª¿µÀÌ´Ù. Çü»ó°ü¸®ÀÇ ´ë»óÀº ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ´Ù.
  1. SCM : Source code management
    SVN, CVS, VC µîÀÇ ÅøÀÌ ¿©±â¿¡ Æ÷ÇԵȴÙ.
  2. CMS : change management
    Bugzilla, JIRA, TRAC µîÀÇ ÅøÀÌ ¿©±â¿¡ Æ÷ÇԵȴÙ.
  3. BM : Build management
    ant, hudson

1.2 software ¹öÀü°ü¸®¿¡ ´ëÇØ¼­

¿©·¯¸íÀÌ ÇÔ²² ¼ÒÇÁÆ®¿þ¾î¸¦ °³¹ßÇØ¾ß ÇÏ´Â °æ¿ì, °Ô´Ù°¡ ¹°¸®ÀûÀ¸·Î ¸Ö¸® ¶³¾îÁ®¼­ ÀÛ¾÷À» ÇØ¾ß ÇÏ´Â °æ¿ì¿¡ ¼ÒÇÁÆ®¿þ¾î ¹öÀü°ü¸®°¡ Áß¿äÇÑ À̽´°¡ µÈ´Ù. °¡´ÉÇÑ ÇѸíÀÇ °³¹ßÀÚ°¡ ÇϳªÀÇ ¼Ò½ºÄڵ带 Ã¥ÀÓÁú ¼ö ÀÖµµ·Ï ¸ðµâÈ­ ÄÄÆ÷³ÍƮȭ Çϵµ·Ï ¼³°èÇϱä ÇÏÁö¸¸, ºÐ¸íÇÑ ÇѰ谡 ÀÖ´Ù. ¿©±â¿¡ Äڵ忡 ¹®Á¦°¡ »ý°åÀ» ¶§, ÀÌÀü¹öÀüÀ» ã¾Æ¼­ º¹±¸ÇØ¾ß ÇÏ´Â ¹®Á¦, ½Ç¼ö·Î ¼Ò½ºÄڵ带 µ¤¾î½á¹ö¸®´Â ¹®Á¦, ÇϳªÀÇ Äڵ带 µÎ¸í ÀÌ»óÀÌ ÀÛ¾÷ÇÒ¶§ÀÇ ¼Ò½ºÄÚµå Ãæµ¹µîÀÇ ¹®Á¦°¡ ¹ß»ýÇÏ°Ô µÈ´Ù. ¼ö½Ê¸íÀÇ °³¹ßÀÚ°¡ °³¹ß¿¡ Âü¿©ÇÒ °æ¿ì ȤÀº ÀÎÅͳÝÀ» ÅëÇÏ¿© °øµ¿À¸·Î °³¹ß¿¡ Âü¿©ÇÒ °æ¿ì¶ó¸é ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Â ½Ã½ºÅÛÀ» ¹Ýµå½Ã ±¸ÃàÇØ¾ß ÇÑ´Ù.

¼ÒÇÁÆ®¿þ¾î ¹öÀü°ü¸®´Â À§¿¡¼­¿Í °°Àº »óȲ - ¿©·¯¸íÀÌ °øµ¿ÀÛ¾÷À» ÇØ¾ß ÇÏ´Â °æ¿ì, ȤÀº ¹°¸®ÀûÀ¸·Î ¸Ö¸® ¶³¾îÁø °³¹ßȯ°æ -¿¡ À־ ¼ÒÇÁÆ®¿þ¾î Äڵ尡 ÇϳªÀÇ °³¹ßÈ帧À» À̾°¥ ¼ö ÀÖµµ·Ï ¸¸µé¾îÁØ´Ù.
  1. ¼Ò½ºÄÚµåÀÇ ¼öÁ¤½Ã ±â·ÏÀ» ³²±ä´Ù. ÈÄ¿¡ ¼Ò½ºÄڵ带 ¿ø»óº¹±¸ ÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù.
  2. Ãæµ¹À» ¹æÁöÇϰí ÇØ°áÇÑ´Ù.
  3. º¯°æ»çÇ×À» ÃßÀûÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
  4. (¿ÏÀüÇÏÁø ¾ÊÁö¸¸)¹é¾÷ȯ°æÀ» ¸¸µé ¼ö ÀÖ´Ù.
ÀϹÝÀûÀ¸·Î ¼ÒÇÁÆ®¿þ¾î ¹öÀü°ü¸®´Â µÎ¸íÀÌ»óÀÌ ÀÛ¾÷ÇÏ´Â °æ¿ì¿¡ ƯÈ÷ À¯¿ëÇÏÁö¸¸ °³ÀÎÀÌ »ç¿ëÇÒ ¶§µµ ¹öÀü°ü¸® ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â°Ô ÁÁ´Ù. ¹öÀü°ü¸® ÇÁ·Î±×·¥ÀÇ »ç¿ë¾øÀÌ °³¹ßÇÏ´Ù°¡ ÄÚµå»èÁ¦,µ¤¾î¾²±â¿Í °°Àº ÀÏÀ» ´çÇØ¼­ ¸î½Ã°£ ȤÀº ¸îÀÏÀ» °í»ýÇØº» °æÇèÀÌ ÀÖ´Ù¸é ÀÌ ¸»À» ÀÌÇØÇÒ °ÍÀÌ´Ù.

1.3 SVN¿¡ ´ëÇØ¼­

SVNÀº Çü»ó°ü¸®´ë»ó ¿ä¼Òµé Áß ¼ÒÇÁÆ®¿þ¾î ¹öÀü°ü¸®¸¦ À§Çؼ­ »ç¿ëµÇ´Â SCM ÅøÀÌ´Ù. SVN¿¡ »ç¿ëµÇ±âÀü¿¡´Â CVS¶ó´Â ÅøÀÌ ¿À·§µ¿¾È µÅ ¿Ô´Ù. SVNÀº ±âº»ÀûÀ¸·Î CVS¿Í ºñ½ÁÇÑ ¹öÀü°ü¸® ü°è¸¦ °¡Áö°í ÀÖ´Ù. ¾ÖÃÊ¿¡ CVS¸¦ °³¼±½Ã۰íÀÚ ÇÏ´Â ¸ñÀû¿¡¼­ ¸¸µé¾îÁ³±â ¶§¹®À̱⵵ ÇØ¼­, ¸í·É¾îµé±îÁö ºñ½ÁÇÏ´Ù. ¶§¹®¿¡ ¾î·ÆÁö ¾Ê°Ô SVNÀ¸·Î ³Ñ¾î¿Ã ¼ö ÀÖ´Ù. ¹°·Ð ÃÖ±Ù¿¡ °³¹ßµÈ ÅøÀÌ´Ï ¸¸Å­ CVSº¸´Ù´Â Á»´õ Áøº¸µÈ ±â´ÉµéÀ» °¡Áö°í ÀÖÀ¸¸ç, CVS¿¡¼­ SVNÀ¸·Î ³Ñ¾î¿À´Â Ãß¼¼´Ù.

´ÙÀ½Àº SVNÀÌ °¡Áö°í ÀÖ´Â ÀåÁ¡µéÀÌ´Ù.
  1. plain text ÄÚµå »Ó¸¸ ¾Æ´Ï¶ó ¹ÙÀ̳ʸ® µ¥ÀÌÅ͵µ Áö¿øÇÑ´Ù
  2. Ä¿¹ÔÀÇ ´ÜÀ§°¡ °³º°ÆÄÀÏÀÌ ¾Æ´Ñ ÀÛ¾÷´ÜÀ§´Ù.
  3. cvs¿¡ ºñÇØ¼­ ºü¸£´Ù.
  4. ÆÄÀÏ À̸§º¯°æ, À̵¿, µð·ºÅ丮¿¡ ´ëÇÑ ¹öÀü°ü¸®
  5. atomic Ä¿¹Ô. cvs´Â ÆÄÀÏ´ÜÀ§·Î commit¸¦ ÇÑ´Ù. ±×·¡¼­ ¿©·¯°³ÀÇ ÆÄÀÏÀ» commit ÇÏ´ÂÁß¿¡ ¸î°³°¡ ½ÇÆÐÇÒ°æ¿ì ¼º°øµÈ°Í¸¸ Àû¿ëµÇ°í ½ÇÆÐÇѰÍÀº ±×´ë·Î ³²°Ô µÈ´Ù. svnÀº ÀÛ¾÷´ÜÀ§À̱⠶§¹®¿¡ commit¿¡ ½ÇÆÐÇÏ´Â°Ô Çϳª¶óµµ ÀÖÀ¸¸é commitÀÌ µÇÁö ¾Ê´Â´Ù. ¼ÒÇÁÆ®¿þ¾î´Â ÆÄÀÏ´ÜÀ§°¡ ¾Æ´Ñ ÀÛ¾÷´ÜÀ§·Î ¿òÁ÷ÀÌ´Â °ÍÀ¸·Î ºÁ¾ßÇϹǷΠsvnÀÇ ÀÛ¾÷´ÜÀ§ commit Á¤Ã¥ÀÌ ´õ ÇÕ¸®ÀûÀ̶ó ÇÒ ¼ö ÀÖ´Ù.

1.4 SVN ¾ÆÅ°ÅØÃ³

http://subversion.tigris.org/images/subversion-diagram.png

SVNÀº Repository¿Í Repository¿¡ Á¢±ÙÇϱâ À§ÇÑ Interface¸¸À» Á¦°øÇÏ´Â °£´ÜÇÑ ½Ã½ºÅÛÀÌ´Ù.

2 SVN ¼³Ä¡¿Í ±âº» »ç¿ë

2.1 ¼³Ä¡

ÀÌ ¹®¼­´Â Ubuntu Linux ¿î¿µÃ¼Á¦¸¦ ´ë»óÀ¸·Î ¸¸µé¾îÁ³´Ù. À©µµ¿ì È­°æÀº °í·ÁÇÏÁö ¾Ê¾Ò´Ù.

apt-getÀ» ÀÌ¿ëÇØ¼­ °£´ÜÇÏ°Ô ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù.
# sudo apt-get install subversion 
 
Ubuntu°¡ ¾Æ´Ñ rpm ±â¹ÝÀÇ ¸®´ª½ºµµ °¢ ¹èÆ÷ÆÇ¿¡¼­ Á¦°øÇÏ´Â ÆÐŰÁö °ü¸® Åø·Î °£´ÜÇÏ°Ô ¼³Ä¡ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Á÷Á¢ ¼Ò½º¸¦ ÄÄÆÄÀÏÇØ¼­ ¼³Ä¡ÇÏ´Â ¹æ¹ýµîÀº ¼³¸íÇÏÁö ¾ÊÀ» »ý°¢ÀÌ´Ù.

2.2 Repository

SVNÀ» ´Ù·ç±â Àü¿¡ RepositoryÀÇ °³³ä¿¡ ´ëÇØ¼­ È®ÀÎÇÏ°í ³Ñ¾î°¡´Â°Ô ÁÁÀ» °Í°°´Ù.

Repository´Â ÄÚµåÀÇ ¿øº»ÀÌ ÀúÀåµÇ´Â °øµ¿ÀúÀå°ø°£ÀÌ´Ù. Äڵ带 »ç¿ëÇÏ´Â °³¹ßÀÚµéÀº ÀÌ ÀúÀå°ø°£ - ÀÌÇÏ Repository -¿¡ ÀÖ´Â ÀÚ¿øÀÎ Äڵ带 °øÀ¯ÇÑ´Ù. °øÀ¯´Â Repository¿¡ ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°í ÀÌ ÇÁ·ÎÁ§Æ®ÀÇ ÆÄÀϵéÀ» Àаí, ¾²´Â ¹æ½ÄÀ¸·Î ÀÌ·ç¾îÁø´Ù. SVNÀº Repository¸¦ ÁغñÇϰí, Repository¿¡ ÀÐ°í ¾²´Â ÀÛ¾÷À» ÇÒ¶§, Äڵ尡 Ãæµ¹ÀÌ ³ª´ÂÁö¸¦ È®ÀÎÇÏ¸ç ¾÷µ¥ÀÌÆ® ³»¿ëÀ» ±â·ÏÇÔÀ¸·Î½á ¹öÀüÁ¤º¸¸¦ ¸¸µé°í Ãæµ¹À» º¹±¸Çϸç, ÇÊ¿äÇÒ¶§ Äڵ带 ¿øº¹½ÃŰ´Â µîÀÇ ÀÏÀ» ÇÑ´Ù.

2.3 SVN ¼­¹ö¿Í SVN Ŭ¶óÀ̾ðÆ®

SVNÀº ¼­¹ö/Ŭ¶óÀÌ¾ðÆ® ¸ðµ¨À» µû¸£´Â ¼ÒÇÁÆ®¿þ¾î´Ù. SVN ¼­¹ö´Â Repository¸¦ °ü¸®¸¦ Çϰí, SVN Ŭ¶óÀÌ¾ðÆ®´Â SVN ¼­¹ö¿¡°Ô Äڵ带 ÀÐ°í ¾²´Â µîÀÇ ¿äûÀ» ÇÑ´Ù.


2.4 SVN Repository Á¢±Ù ¹æ½Ä

SVN Àº ´Ù¾çÇÑ ¹æ½ÄÀ¸·Î Repository¿¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï Çϰí ÀÖ´Ù.
file:/// ·ÎÄõð½ºÅ©·ÎÀÇ Á¢±Ù
http:// À¥À¸·ÎÀÇ Á¢±Ù
https:// SSLÀ» ÅëÇÑ À¥À¸·ÎÀÇ Á¢±Ù
svn:// SVN ¼­¹ö ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇÑ Á¢±Ù
svn+ssh:// sshÅͳÎÀ» ÅëÇÑ svn ¼­¹ö¸¦ ÀÌ¿ëÇÑ Á¢±Ù

2.5 SVN ¼­¹ö ¼³Á¤

SVN¼­¹ö ¼³Á¤Àº Å©°Ô ¾Æ·¡ÀÇ 3´Ü°è °úÁ¤À» °ÅÄ£´Ù.
  1. °øÀ¯ÇÒ ÆÄÀÏÀÌ Á¸ÀçÇÏ´Â Repository ¼³Á¤
  2. SVN Repository ÀÇ Á¢±Ù ¹æ½Ä¼³Á¤
  3. °èÁ¤¼³Á¤

2.5.1 Repository »ý¼º

svnadmin À» ÀÌ¿ëÇØ¼­ Repository¸¦ ¸¸µé ¼ö ÀÖ´Ù. repository´Â ÀÏ¹ÝÆÄÀϽýºÅÛ°ú berkeley DBŸÀÔÀÌ ÀÖ´Ù. Ưº°ÇÑ ¿É¼ÇÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é berkeley db Çü½ÄÀ¸·Î »ý¼ºµÇ¸ç --fs-type¸¦ ÀÌ¿ëÇØ¼­ ŸÀÔÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. repository ÀÇ À§Ä¡´Â /home/project ·Î ÇϰڴÙ.

¸ÕÀú /home/project µð·ºÅ丮¸¦ »ý¼ºÇÑ´Ù.
# mkdir /home/project 
 

ÀÌÁ¦ ÀúÀå¼Ò¸¦ »ý¼ºÇÑ´Ù. À̸§Àº sample·Î ÇØ´Ù. º¸Åë ÀúÀå¼Ò´Â ÇÁ·ÎÁ§Æ®¿Í ´ëÀÀÇϸç ÇÁ·ÎÁ§Æ®ÀÇ Æ¯¼ºÀ» Àß Ç¥ÇöÇÏ´Â À̸§À» °¡Áöµµ·Ï ÇÑ´Ù.
# ÀÏ¹Ý ÆÄÀϽýºÅÛÀ¸·Î »ý¼º 
$ svnadmin create --fs-type fsfs /home/project/sample 
# berkeley db Çü½ÄÀ¸·Î »ý¼º 
$ svnadmin create --fs-type bdb /home/project/sample 
 
ÀÏ¹ÝÆÄÀϽýºÅÛ ´ë½Å¿¡ ±»ÀÌ bdb¸¦ ½á¾ßÇÒ ºÐ¸íÇÑ ÀÌÀ¯°¡ ÀÖ´ÂÁö´Â È®½ÇÇÏÁö ¾Ê´Ù. berkeley db´Â NFS, AFS, SMB µîÀ¸·Î °øÀ¯ÇϰíÀÚ ÇÒ¶§, ¹®Á¦°¡ »ý±æ ¼ö ÀÖÀ¸´Ï ±×³É ÀÏ¹ÝÆÄÀϽýºÅÛÀ¸·Î »ý¼ºÇϵµ·Ï ÇÏÀÚ.

2.5.2 SVN Repository Á¢±Ù¹æ½Ä ¼³Á¤

¿©·¯°¡Áö ¹æ¹ýÀÌ Àִµ¥, ¿©±â¿¡¼­´Â svn ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇÑ Á¢±Ù¹æ½Ä¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ.

svnÀº svnserve ¶ó´Â °¡º­¿î ¼­¹öÇÁ·Î±×·¥À» Á¦°øÇϸç, À̰ÍÀ» ÀÌ¿ëÇØ¼­ ¼­¹ö¸¦ ½ÇÇà½Ãų ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÇØ¼­ ¼­¹ö¸¦ ½ÇÇàÇϸé svn:// ȤÀº svn+ssh:// URL Çü½ÄÀ» ÀÌ¿ëÇØ¼­ ¼­¹ö¿¡ Á¢±ÙÇÒ ¼ö ÀÖ´Ù. /etc/service ¸¦ ¿­¾îº¸¸é svn ¼­ºñ½º Æ÷Æ®°¡ Á¤ÀǵǾî ÀÖ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. Ç¥ÁØ ¼­ºñ½º Æ÷Æ®´Â 3690À» »ç¿ëÇÑ´Ù.
svn             3690 / tcp        subversion      # Subversion protocol 
svn             3690 / udp        subversion 
 

svnserv´Â stand alone ¸ðµå, Áï daemon¸ðµå¿Í inetd¸ðµå µÑ Áß ¼±ÅÃÇØ¼­ ¶ç¿ï ¼ö ÀÖ´Ù. ¿©±â¿¡¼­´Â µ¥¸ó¸ðµå·Î ½ÇÇà½ÃŰ´Â ¹æ¹ý¿¡ ´ëÇØ¼­¸¸ ¾Ë¾Æº¼ °ÍÀÌ´Ù.

¸ÕÀú Á¢±ÙÀ» Çã¿ëÇÒ °èÁ¤À» ¸¸µéÀÚ °èÁ¤°ü·Ã ¼³Á¤ÆÄÀÏÀº /home/project/sample/conf ¹Ø¿¡ ÀÖ´Ù. svnserve.conf ¿¡¼­ ÀÎÁõ¿¡ »ç¿ëµÉ ¹æ¹ýÀ» ¼³Á¤ÇÒ ¼ö Àִµ¥, general ¼½¼ÇÀÇ password-db ¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏÀÚ.
[general] 
# passwd ÆÄÀÏ·Î ÆÐ½º¿öµå¸¦ °ü¸®ÇÑ´Ù. 
password-db = passwd 
 
ÀÌÁ¦ /home/project/conf/passwd ÆÄÀÏ¿¡ ¾Æ·¡¿Í °°Àº Çü½ÄÀ¸·Î À¯Àú°èÁ¤Á¤º¸¸¦ ÀÔ·ÂÇÏ¸é µÈ´Ù.
#username = password 
yundream = 123456 
 

svn ¼­¹ö¸¦ ½ÇÇàÇÑ´Ù. -d´Â µ¥¸ó¸ðµå·Î ½ÇÇàÇϱâ À§Çؼ­, -rÀº repository¸¦ ÁöÁ¤Çϱâ À§ÇÑ ¿É¼ÇÀÌ´Ù.
$ svnserve -d -r /home/project 
# 3690 Æ÷Æ®°¡ ¿­·ÁÀÖ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. netstat·Î È®ÀÎÇØº¸ÀÚ.  
$ netstat -na | grep 3690 
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN 
 

ÀÌÁ¦ trunk, branches, tags µð·ºÅ丮¸¦ »ý¼ºÇÑ´Ù.
$ svn mkdir svn://localhost/sample/trunk --username yundream 
$ svn mkdir svn://localhost/sample/branches --username yundream 
$ svn mkdir svn://localhost/sample/tags --username yundream 
 

2.6 ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÏÀÚ

ÀÌ·¸°Ô ÇØ¼­ sample ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇÒ ÀúÀå¼Ò±îÁö °®Ãß¾îÁ³´Ù. ÀÌÁ¦ ÇÁ·ÎÁ§Æ®ÁøÇàÀ» À§Çؼ­ ÇÊ¿äÇÑ Äڵ带 ¿Ã¸®¸é µÇ´Âµ¥, ÀÌÀÛ¾÷À» import¶ó°í ÇÑ´Ù.

ÀÏ´Ü myproject ¶ó´Â µð·ºÅ丮¸¦ »ý¼ºÇÑ´Ù. ÀÌ µð·ºÅ丮¿¡´Â hello.c ¶ó´Â Äڵ带 °¡Áö°í ÀÖ´Ù.
# mkdir myproject 
 
´ÙÀ½Àº hello.c ÀÇ ³»¿ëÀÌ´Ù.
int main(int argc, char **argv) 
{ 
    printf("Hello World!!!\n"); 
} 
 

import ¿É¼ÇÀ» ÀÌ¿ëÇØ¼­ ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ´Ù.
# svn import myproject svn://localhost/sample/trunk --username yundream 
ÀÎÁõ ¿µ¿ª(realm): <svn://localhost:3690> 51c49533-dcd9-41dc-b726-0c7fb9b7a5fc 
'yundream'ÀÇ ¾ÏÈ£: 
Ãß°¡          myproject/hello.c 
 

2.7 svn Ŭ¶óÀÌ¾ðÆ® ¼³Á¤

svn ÆÐŰÁö¸¦ ¼³Ä¡Çϸé Ŭ¶óÀÌ¾ðÆ®±îÁö ¼³Ä¡°¡ µÇ¹Ç·Î µüÈ÷ ½Å°æ¾µ °ÍÀº ¾ø´Ù. ´Ù¸¸ ¿¡µðÅÍ È¯°æÁ¤µµ´Â ½Å°æÀ» ¾µ Çʿ䰡 ÀÖ´Ù.

svnÀº ÇÁ·ÎÁ§Æ®¸¦ import Çϰųª commit ȤÀº update ÇÒ¶§, °£´ÜÇÑ ¸Þ½ÃÁö¸¦ ³²±æ ¼ö ÀÖ´Ù. ÀÌ ¸Þ½ÃÁö´Â ·Î±×ÇüÅ·Π°ü¸®°¡ µÇ¾î¼­, ³ªÁß¿¡ À̽´¸¦ ÃßÀûÇϴµ¥ µµ¿òÀÌ µÈ´Ù. ÀÌ ¸Þ½ÃÁö¸¦ ÆíÁýÇÒ¶§ ¾î¶² ¿¡µðÅ͸¦ »ç¿ëÇÒÁö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.

»ç¿ëÇÒ ¿¡µðÅʹ ȯ°æº¯¼ö SVN_EDITOR ¿¡ ¿¡µðÅ͸¦ ÁöÁ¤ÇϸéµÈ´Ù. vi¸¦ »ç¿ëÇÏ°í ½Í´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÇϸéµÈ´Ù.
# export SVN_EDITOR=/usr/bin/vi 
 

·Î±×ÀÎÇÒ¶§ ÀÚµ¿À¸·Î ȯ°æº¯¼ö°¡ ÁöÁ¤µÇµµ·Ï ÇÏ°í ½Í´Ù¸é Ȩµð·ºÅ丮ÀÇ .bash_profile ¿¡ À§ÀÇ ¸í·ÉÀ» Ãß°¡ÇÏ¸é µÈ´Ù.

2.8 ÇÁ·ÎÁ§Æ®¸¦ ¹Þ¾Æ¿ÀÀÚ

repository¸¦ »ý¼ºÇϰí ÇÁ·ÎÁ§Æ®±îÁö µî·Ï½ÃÄ×À¸´Ï ÇÔ²² ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇÒ ±âº»ÀûÀΠȯ°æÀº °®Ãß¾îÁ³´Ù°í º¼ ¼ö ÀÖ´Ù. ÀÌÁ¦ ÇÁ·ÎÁ§Æ® Âü°¡ÀÚ´Â ÇÁ·ÎÁ§Æ®¸¦ ¹Þ¾Æ¿Í¼­ ¿øÇÏ´Â ÀÛ¾÷À» ÇÏ¸é µÈ´Ù.

ÃÖÃÊ¿¡ ÇÁ·ÎÁ§Æ®¸¦ ¹Þ¾Æ¿À´Â ÀÛ¾÷À» checkout¶ó°í ÇѸç, co ȤÀº checkout ¿É¼ÇÀ» ÀÌ¿ëÇØ¼­ ÇÁ·ÎÁ§Æ®¸¦ ¹Þ¾Æ¿Ã ¼ö ÀÖ´Ù.

sample ÇÁ·ÎÁ§Æ®¸¦ myproject µð·ºÅ丮·Î ¹Þ¾Æ¿Í º¸ÀÚ.
# svn co svn://localhost/sample/trunk --username yundream myproject 
A   myproject/hello.c 
 

2.9 ÀÛ¾÷ÇÑ ³»¿ëÀ» ¿Ã¸®ÀÚ

ÇÁ·ÎÁ§Æ®¸¦ checkoutÀ» ÇßÀ¸´Ï ¼Ò½ºÄڵ带 ¼öÁ¤Çϵµ·Ï ÇÏÀÚ. hello.c ÇÁ·Î±×·¥Àº º° ¹®Á¦¾øÀÌ compileµÇ°í ½ÇÇàµÇ±ä ÇÏÁö¸¸, main ÇÔ¼ö°¡ return °ªÀ» °¡Áö°í ÀÖÁö ¾Ê´Ù´Â °Í°ú printf¸¦ À§ÇÑ stdio.h Çì´õÆÄÀÏÀ» ÀÎŬ·çµå ½ÃŰÁö ¾Ê°í ÀÖ´Ù´Â »ç¼ÒÇÑ ¹®Á¦Á¡À» °¡Áö°í ÀÖ´Ù. ±×·¡¼­ ¾Æ·¡¿Í °°ÀÌ ¼Ò½ºÄڵ带 ¼öÁ¤Çß´Ù.
#include <stdio.h> 
 
int main() 
{ 
    printf("Hello World!!!\n"); 
    return 0; 
} 
 
ÀÛ¾÷À» ÇßÀ¸´Ï, ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÑ ´Ù¸¥ °³¹ßÀڵ鵵 È®ÀÎÇÒ ¼ö ÀÖµµ·Ï Äڵ带 ¿Ã·Á¾ß ÇÒ °ÍÀÌ´Ù. À̰ÍÀ» commitÀ̶ó°í ÇÑ´Ù.
# svn commit --username yundream 
ÀÎÁõ ¿µ¿ª(realm): <svn://localhost:3690> 51c49533-dcd9-41dc-b726-0c7fb9b7a5fc 
'yundream'ÀÇ ¾ÏÈ£: 
Àü¼ÛÁß         hello.c 
 

2.10 ÀúÀå¼ÒÀÇ ³»¿ëÀ» ¹Þ¾Æ¿ÀÀÚ

¾ÆÄ§¿¡ ÄÄÇ»Å͸¦ ۰í ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇϱâ·Î Çß´Ù¸é, °¡Àå ¸ÕÀúÇØ¾ß ÇÒÀÏÀº ¾îÁ¦ »õ·Î ¹Ù²ï³»¿ëÀÌ ÀÖ´ÂÁö¸¦ È®ÀÎÇØ¼­ ÃÖ½ÅÀÇ ¼Ò½ºÄڵ带 ¹Þ¾Æ¿À´Â ÀÏÀÌ´Ù. ÇÁ·ÎÁ§Æ®¸¦ µ¿±âÈ­ ÇÏ´Â °ÍÀ̶ó°í º¸¸é µÈ´Ù. upate ȤÀº up¿É¼ÇÀ» ÀÌ¿ëÇØ¼­ ·¹Æ÷ÁöÅ丮·Î ºÎÅÍ ÃֽŠ¼Ò½ºÄڵ带 °¡Á®¿Ã ¼ö ÀÖ´Ù.

$ svn up hello.c 
U    hello.c 
¾÷µ¥ÀÌÆ® µÈ ¸®ºñÀü 4. 
 

2.11 »õ·Î¿î ÆÄÀÏ Ãß°¡Çϱâ

ÀÛ¾÷À» ÇÏ´Ùº¸¸é »õ·Î¿î ÄÚµå¶óµçÁö ¹®¼­µîÀ» Ãß°¡½ÃÄÑ¾ß ÇÏ´Â °æ¿ì°¡ »ý±æ ¼ö ÀÖ´Ù. sample ÇÁ·ÎÁ§Æ®¸¦ ¼³¸íÇÑ README.txt ÆÄÀÏÀ» »õ·Î ¸¸µé¾ú´Ù°í °¡Á¤Çغ¸ÀÚ. »õ·Î »ý¼ºÇÑ ÆÄÀÏÀº ÀúÀå¼Ò¿¡ ¿Ã·Á¼­ ¹öÀü°ü¸® ´ë»óÀ¸·Î ÇÏ°í ½Í´Ù¸é add ¿É¼ÇÀ» ÀÌ¿ëÇØ¼­ Ãß°¡ÇÒ °ÍÀ» ¸í½ÃÇÏ¸é µÈ´Ù.
$ svn add README.txt 
A  (bin)  README.txt 
 
Ãß°¡Çß´Ù°í ÇØ¼­ Áï½Ã ÀúÀå¼Ò¿¡ ¿Ã¶ó°¡´Â °Ç ¾Æ´Ï´Ù. commit ¸¦ ÇØ¾ß ºñ·Î¼­ ÀúÀå¼Ò¿¡ ¿Ã¶ó°£´Ù.
$ svn commit -m "README ÆÄÀÏ Ãß°¡" 
Ãß°¡    (bin)  README.txt 
ÆÄÀÏ µ¥ÀÌÅÍ Àü¼ÛÁß . 
Ä¿¹ÔµÈ ¸®ºñÀü 5. 
 
ÀÌÁ¦ ´Ù¸¥ °³¹ßÀÚµéÀÌ update ÇÏ´Â ½ÃÁ¡¿¡¼­ ´Ù¸¥ ¼öÁ¤µÈ ³»¿ëµé°ú ÇÔ²² README.txt ÆÄÀÏÀ» ¹Þ¾Æ¿À°Ô µÉ °ÍÀÌ´Ù.

3 SVN ¿î¿ë

3.1 trunk, branches, tagsÀÇ Â÷ÀÌ

trunk, branches, tagsÀÇ ¶æÀ» ¾Ë¾Æ¾ß Á¦´ë·Î Ȱ¿ëÇÒ ¼ö ÀÖ°ÚÁÒ.
  • trunk : ÁÖ¿ä °³¹ß ÁÙ±âÀÔ´Ï´Ù. ÇÁ·ÎÁ§Æ®´Â trunk¿¡¼­ ½ÃÀÛÀÌ µË´Ï´Ù.
  • branches : ¾î¶² ÀÌÀ¯·Î trunk¿¡¼­ º¹»çµÅ¼­ »õ·Î ¸¸µé¾îÁø ÇÁ·ÎÁ§Æ®ÀÔ´Ï´Ù. °¡ÁöÄ¡±â¸¦ ¿¬»óÇÑ´Ù°í ÇØ¼­ branches¶ó°í ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ ¼³¸íÀº ¹Ù·Î ¾Æ·¡ ÀýÀ» Âü°íÇÏ½Ã¸é µË´Ï´Ù.
  • tag : trunk¿Í branchesÀÇ Æ¯Á¤ ½Ã°£À» °¡¸®Å°´Â Æ÷ÀÎÅÍÀÔ´Ï´Ù. ÁÖ·Î ÇÁ·ÎÁ§Æ®ÀÇ ¸±¸®Áî Áֱ⿡ ¸ÂÃ߾, °¢ ÁÖ±âÀÇ Äڵ带 º¸Á¸Çϱâ À§Çؼ­ »ç¿ëÇÕ´Ï´Ù. ¿¹ÄÁµ¥ beta, alpha, RC, RTM µîÀÌ ÁÖ¿ä ¸±¸®Áî ÁֱⰡ µÉ °Ì´Ï´Ù. tag´Â º¸Åë ÇØ´ç ¸±¸®Áî Áֱ⿡¼­ °¡Àå ¾ÈÁ¤È­ µÆ´Ù°í ÆÇ´ÜÇÏ´Â ½ÃÁ¡¿¡ Àû¿ëÀ» ÇÕ´Ï´Ù.

3.2 branch

ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇÏ´Ù º¸¸é, ¿øº» ÇÁ·ÎÁ§Æ®¸¦ ±â¹ÝÀ¸·Î »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé°Å³ª ȤÀº ¿øº» ÇÁ·ÎÁ§Æ®¸¦ Å×½ºÆ®Çϱâ À§Çؼ­ µû·Î ºÐ¸®ÇؾßÇÒ °æ¿ì°¡ »ý±é´Ï´Ù.

ÀÌ·²¶§ branches¸¦ »ç¿ëÇÕ´Ï´Ù.

calc¶ó´Â ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇϰí ÀÖ´Ù°í °¡Á¤ÇØ º¸ÁÒ. ÀÌ calc ÇÁ·Î±×·¥Àº »çÄ¢¿¬»ê¸¸À» ¼öÇàÇϰí ÀÖ½À´Ï´Ù. ±×·±µ¥ ½ÇÇèÀûÀ¸·Î ·çÆ®¿¬»ê ±â´ÉÀ» ³Ö¾ú½À´Ï´Ù. ·çÆ®¿¬»ê ÄÚµå´Â ¾ÆÁ÷Àº ½ÇÇèÀûÀÎ ÄÚµå¶ó¼­ trunk¿¡ ¾ÆÁ÷Àº ³ÖÀ» ¼ö ¾ø½À´Ï´Ù. ±â´ÉÀ» Ãß°¡ÇØ¾ß ÇÒÁöµµ È®½ÇÇÏÁö ¾Ê°í¿ä. Ãß°¡ÇÑ´Ù°í ÇØµµ ÃæºÐÈ÷ ¾ÈÁ¤È­µÈ ´ÙÀ½¿¡ ¿øº» ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔÇØ¾ß µÇ°ÚÁÒ.

ÀÌ °æ¿ì calc ÇÁ·ÎÁ§Æ®¸¦ º¹»çÇØ¼­ my-calcÀ̶ó´Â branch¸¦ ¸¸µé¾î¼­ ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇÕ´Ï´Ù.


branch ÇÁ·ÎÁ§Æ®ÀÇ ¿Ï¼ºµµ°¡ ÃæºÐÈ÷ ³ô¾ÆÁ³´Ù°í »ý°¢µÇ¸é, ±×¶§ trunk¿Í mergeÇÏ¸é µË´Ï´Ù.

ȤÀº »õ·Î¿î ¹öÀüÀÇ ÇÁ·ÎÁ§Æ®°¡ °³¹ßµÆÀ» ¶§, ÀÌÀü ¹öÀüÀÇ ÇÁ·ÎÁ§Æ®¸¦ ±×´ë·Î ÁøÇàÇϱâ À§Çؼ­ »ç¿ëÇÕ´Ï´Ù. Apache 2.2.2 ¹öÀüÀ» °³¹ßÇÏ´Ù°¡ »õ·Î¿î ±â´ÉÀ» Ãß°¡Çؼ­ 2.3À¸·Î ¹öÀüÀ» ¿Ã·È´Ù°í °¡Á¤ÇØ º¸°Ú½À´Ï´Ù. »õ·Î¿î Apache ¹öÀüÀÌ ³ª¿ÔÁö¸¸, ¿©ÀüÈ÷ ¸¹Àº »ç¶÷µéÀÌ Apahce 2.2.2 ¹öÀüÀ» »ç¿ëÇϰí ÀÖÀ» °Ì´Ï´Ù. ±×·¯´Ï ºñ·Ï ¿¹Àü ¹öÀüÀ̱ä 2.2.2 ¹öÀü¿¡ ´ëÇÑ ¹ö±× ÆÐÄ¡, ¼öÁ¤µîÀÇ ÀÛ¾÷Àº °è¼Ó ÁøÇàÀÌ µÇ¾ß ÇÕ´Ï´Ù. ÀÌ ¶§µµ branches¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸¹öÀüÀÇ Apache¸¦ À§ÇÑ branches¸¦ ±¸¼ºÇؼ­ ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇÏ´Â °ÅÁÒ.

branch´Â °£´ÜÇÏ°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. branch¶ó´Â ´Ù¼Ò Ãß»óÀûÀÎ ¿ë¾î¸¦ »ç¿ëÇØ¼­ ¾î·Á¿öÇÏ´Â °Í °°Àºµ¥, ±×³É Áö±Ý ÁøÇàÁßÀÎ ÇÁ·ÎÁ§Æ®¸¦ º¹»çÇÏ´Â °Ì´Ï´Ù. ½ÇÁ¦ copy ¿É¼ÇÀ» ÀÌ¿ëÇØ¼­ branch¸¦ ¸¸µì´Ï´Ù. copy ¿É¼ÇÀ¸·Î my-calc¶ó´Â branch ÇÁ·ÎÁ§Æ®¸¦ ¸¸µå´Â ¹æ¹ýÀÔ´Ï´Ù.
$ svn copy http://svn.example.com/repos/calc/trunk \ 
           http://svn.example.com/repos/calc/branches/my-calc-branch \ 
      -m "Creating a private branch of /calc/trunk." 
 

ÀÌÁ¦ my-calc-branch¶ó´Â À̸§ÀÇ »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé¾ú½À´Ï´Ù. ¹°·Ð calc ÇÁ·ÎÁ§Æ®ÀÇ µð·ºÅ丮¿Í ÆÄÀϵéÀÌ ±×´ë·Î º¹»çµË´Ï´Ù.

<img src="https://docs.google.com/drawings/pub?id=1Ot8hW9DYzU9fYiQr3qPYNSTHYIWvVxmlNbO_H5jIe_8&w=273&h=367"> 
 

branch´Â µ¶¸³ÀûÀÎ ÇÁ·ÎÁ§Æ®·Î checout ÇØ¼­ »ç¿ëÇÏ¸é µË´Ï´Ù. ±âŸ »ç¿ë¹æ¹ýµµ ÀüÇô´Ù¸¦ ¹Ù°¡ ¾ø½À´Ï´Ù.
# svn checkout http://svn.example.com/repos/calc/branches/my-calc-branch 
A  my-calc-branch/Makefile 
A  my-calc-branch/integer.c 
A  my-calc-branch/button.c 
Checked out revision 341. 
 

3.3 ÇÁ·ÎÁ§Æ® ·Î±× È®ÀÎ

3.4 Ãæµ¹ ÇØ°á

3.5 ¼Ò½ºÄÚµå º¹±¸

3.6 merge

4 ÀúÀå¼Ò Á¤Ã¥

myTeam¿¡¼­ ¼Ò½ºÄÚµå¿Í ¹®¼­¸¦ °ü¸®Çϱâ À§Çؼ­ svn ÀúÀå¼Ò¸¦ ¿î¿µÇϱâ·Î Çß½À´Ï´Ù. ÁøÇàÇÏ´Â ÇÁ·ÎÁ§Æ®´Â Proj01, Proj02, Proj03 ÀÌ°í ¹®¼­´Â Documents¶ó´Â µð·ºÅ丮 ¹Ø¿¡ ÇÁ·ÎÁ§Æ® À̸§º°·Î ÇÏÀ§ µð·ºÅ丮¸¦ ¸¸µé¾î¼­ °ü¸®Çϱâ·Î Çß½À´Ï´Ù.

¾î¶²½ÄÀ¸·Î ±¸¼ºÇÏ´Â°Ô ÁÁÀ»±î¿ä.¾Æ·¡¿Í °°ÀÌ trunk, branch, tag¸¦ ÃÖ»óÀ§ µð·ºÅ丮·Î ÇÏ°í ±× ¾Æ·¡¿¡ ÇÁ·ÎÁ§Æ®¸¦ µÎ´Â ¹æ¹ýÀÌ ÀÖÀ» °Ì´Ï´Ù.


¹Ý´ë·Î ÇÁ·ÎÁ§Æ®¸¦ ÃÖ»ó´Ü¿¡ µÎ°í, ÇÁ·ÎÁ§Æ® º°·Î trunk, branch, tag¸¦ µÑ ¼öµµ ÀÖ½À´Ï´Ù.


¼ºÇâ¿¡ µû¶ó¼­ È£ºÒÈ£°¡ °¥¸± °Í °°±äÇÕ´Ï´Ù¸¸, ÇÁ·ÎÁ§Æ® À̸§À» Á¦ÀÏ À§·Î »©´Â°Ô ´«¿¡ Á» Àßµé¾î¿Ã °Í °°½À´Ï´Ù.


category_°³¹ßÀÚ
À̾߱â
category__18
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.