· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
¼­ºê¹öÀü±âÃʸŴº¾ó

¡Ø ¿ªÀÚ ÁÖ : ÀÌ ±ÛÀº SubversionÀÇ ±âÃʶó°í »ý°¢µÇ´Â ºÎºÐÀ» Version Control with Subversion For Subversion 1.2 - by Ben Collins-Sussman, Brian Ã¥¿¡¼­ ¹ßÃéÇÏ¿© ¹ø¿ªÇÏ¿´½À´Ï´Ù.

¡Ø À§Å°·Î ¿Å±ä ÀÌ ÁÖ : ÀÌ ±ÛÀº [http]KLDP Æ÷·³ÀÇ ±ÛÀ» ¿Å±ä °ÍÀÔ´Ï´Ù.


1. ¼Ò°³


SubversionÀº OpenSource ¹öÀü °ü¸® ½Ã½ºÅÛÀÔ´Ï´Ù. ÆÄÀÏÀÇ Æ®¸®´Â Áß¾Ó ÀúÀå¼Ò¿¡ À§Ä¡Çϴµ¥ ÀÌ ÀúÀå¼Ò´Â Æ÷ÇÔÇÏ°í ÀÖ´Â ÆÄÀÏ°ú µð·ºÅ丮µéÀÇ ¸ðµç º¯°æ»çÇ×À» ±â¾ïÇÏ°í ÀÖ´Ù´Â °É Á¦¿ÜÇÏ¸é º¸ÅëÀÇ ÆÄÀÏ ¼­¹ö¿Í µ¿ÀÏÇÕ´Ï´Ù. ÀÌ´Â µ¥ÀÌÅ͸¦ ¿¹ÀüÀ¸·Î µ¹¸±¼öµµ ÀÖ°í ¾î¶»°Ô º¯È­Çß´ÂÁö È÷½ºÅ丮¸¦ È®ÀÎÇÒ¼öµµ ÀÖ°Ô ÇÕ´Ï´Ù. ÀÌ°ÍÀÌ ¸¹Àº À̵éÀ̹öÀü °ü¸® ½Ã½ºÅÛÀ» ŸÀÓ¸Ó½ÅÀ̶ó°í ºÎ¸£´Â ÀÌÀ¯ÀÔ´Ï´Ù.

SubversionÀº ¿©·¯ ÄÄÇ»ÅÍ¿¡¼­ ³×Æ®¿öÅ©¸¦ ÅëÇØ Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸ç ´Ù¾çÇÑ »ç¶÷µéÀÌ ÆÄÀÏÀ» ¼öÁ¤ °¡´ÉÇÏ°Ô ÇÔÀ¸·Î½á Çù¾÷ÀÌ °¡´ÉÄÉ ÇØÁÝ´Ï´Ù. ¸ðµç ÀÛ¾÷¿¡ ¹öÀüÀÌ ¸Å°ÜÁö±â ¶§¹®¿¡ ¸¸ÀÏ À߸øµÈ ¼öÁ¤À» °¡Çß´õ¶óµµ ½±°Ô µÇµ¹¸®±â¸¸ ÇÏ¸é µË´Ï´Ù. SubversionÀº ¼Ò½º ÄÚµå»Ó ¾Æ´Ï¶ó ¾î¶² Çü½ÄÀÇ ÆÄÀϵµ °ü¸®¸¦ ÇÒ¼ö ÀÖ½À´Ï´Ù.

2. SubversionÀÇ ¿ª»ç


2000³â ÃÊ CollabNet,Inc »ç´Â CVS¸¦ ´ëüÇÒ¸¸ÇÑ ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µé °³¹ßÀÚ¸¦ ã±â ½ÃÀÛÇß½À´Ï´Ù. CollabNet,Inc »ç´Â CEE¶ó´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µé¾ú´Âµ¥ CVS´Â ±×Áß ÇϳªÀÇ ÄÄÆ÷³ÍÆ®¿´½À´Ï´Ù. ±×µéÀº CVSÀÇ ÇѰ踦 óÀ½ºÎÅÍ Àß ¾Ë°í ÀÖ¾ú±â¿¡ ´õ ³ªÀº °ÍÀ» ãÀ¸·Á ÇßÀ¸³ª ±×·± °ÍÀÌ ¾ø´ø Â÷¿´½À´Ï´Ù. ±×·¡¼­ CollabNet,Inc »ç´Â CVSÀÇ ±âº»ÀûÀÎ ¿ø¸®¸¸ À¯ÁöÇÏ°í ¹ö±×³ª À߸øµÈ ¼³°èµîÀº ¾ø¾Ø »õ·Î¿î ¹öÀü °ü¸® ½Ã½ºÅÛÀ» ¸¸µé±â·Î Çß½À´Ï´Ù.

2000³â 2¿ù, ±×µéÀº Open Source Development with CVS (Coriolis, 1999)ÀÇ ÀúÀÚÀÎ Karl Fogel¿¡°Ô »õ·Î¿î ÇÁ·ÎÁ§Æ®¿¡ ´ëÇØ ¹°¾îº¸¾Ò°í ¸¶Ä§ CVS·ÎºÎÅÍ °í»ýÇÏ°í ÀÖ´ø ±×µµ ÇÔ²² Âü¿©ÇÏ°Ô µÇ¾ú½À´Ï´Ù. ±× ÈÄ ¸î »ç¶÷À» ´õ ¿µÀÔÇÑ µÚ 5¿ù¿¡ °³¹ßÀ» ½ÃÀÛÇÏ¿´°í ¿©·¯ »ç¶÷ÀÇ µµ¿ò°ú ÇÔ²² SubversionÀº ¼ø½Ä°£¿¡ ¸¹Àº °³¹ßÀÚµéÀÇ À̸ñÀ» ÁýÁß½ÃÄ×½À´Ï´Ù. ÀÌ´Â ¸¹Àº »ç¶÷µéÀÌ CVS·ÎºÎÅÍ ¾î·Á¿òÀ» °Þ°í ÀÖ´Ù´Â »ç½ÇÀÌ ÀÔÁõµÈ ¼ÀÀÌ µÇ¾ú°í 14°³¿ùÀÇ °³¹ß³¡¿¡ SubversionÀÌ Åº»ýÇÏ¿´½À´Ï´Ù. SubversionÀº ¹«·á·Î ´Ù¿î·Îµå°¡ °¡´ÉÇϸç, ¼öÁ¤, Àç¹èÆ÷°¡ °¡´ÉÇÕ´Ï´Ù.

3. SubversionÀÇ ±â´É


3.1. Directory Versioning


CVS´Â ´ÜÁö °³º° ÆÄÀÏÀÇ È÷½ºÅ丮¸¸ ±â·ÏÇÏ´Â µ¥ ¹ÝÇØ SubversionÀº °¡»ó ¹öÀü ÆÄÀÏ ½Ã½ºÅÛÀ» ±¸ÇöÇÏ¿©, µð·ºÅ丮 Æ®¸® Àü¹ÝÀÇ ¸ðµç º¯È­¸¦ ±â·ÏÇÕ´Ï´Ù. ±×¸®°í ÆÄÀÏ°ú µð·ºÅ丮¿¡ ÇÔ²² ¹öÀüÀÌ ºÎ¿©µË´Ï´Ù.

3.2. ½ÇÁ¦ÀûÀÎ ¹öÀü È÷½ºÅ丮


CVS´Â ÆÄÀÏ ¹öÀü¿¡ Á¦ÇѵǾî Àֱ⠶§¹®¿¡ º¹»ç³ª À̸§ º¯°æ°ú °°Àº ÇàÀ§ - ÆÄÀÏÀÌ º¯°æµÈ °ÍÀÌÁö¸¸ ±×°ÍÀ» Æ÷ÇÔÇÏ´Â µð·ºÅ丮 ¶ÇÇÑ º¯°æµÈ °ÍÀÓ - ´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. °Ô´Ù°¡ CVS¿¡¼­´Â °°Àº À̸§ÀÇ ÆÄÀÏ·Î ±âÁ¸ÀÇ ÆÄÀÏÀ» ´ëüÇÏÁö ¸øÇÕ´Ï´Ù. Subversion¿¡¼­´Â ÆÄÀÏ°ú µð·ºÅ丮 ¸ðµÎ Ãß°¡,»èÁ¦,º¹»ç, À̸§ º¯°æÀÌ ÀÚÀ¯·Ó½À´Ï´Ù. ±×¸®°í »õ·Î¿î ÆÄÀÏÀÌ Ãß°¡µÉ ¶§¸¶´Ù ÇØ´çÇÏ´Â »õ·Î¿î È÷½ºÅ丮°¡ ½ÃÀ۵˴ϴÙ.

3.3. ¿øÀÚÀû Ä¿¹Ô


°³º°ÀûÀÎ ¼öÁ¤ »çÇ×µéÀÌ ¸ðµÎ ÀúÀå¼Ò¿¡ Àû¿ëÀÌ µÇµçÁö, ¾Æ´Ï¸é Çϳªµµ Àû¿ëÀÌ ¾È µÇ´Â °ÍÀ» ¸»ÇÕ´Ï´Ù. ÀÌ°ÍÀº °³¹ßÀÚµéÀÌ ¼öÁ¤ »çÇ×µéÀ» ³í¸®Àû ´ÜÀ§·Î Àû¿ëÇÏ¿©, ¼öÁ¤ »çÇ×ÀÇ ÀϺθ¸ Àû¿ëµÇ¾î ¹ß»ýµÇ´Â ¹®Á¦¸¦ ¿¹¹æÇØ ÁÝ´Ï´Ù.

3.4. ¹öÀüÈ­ µÈ ¸ÞŸ µ¥ÀÌÅÍ


°¢°¢ÀÇ ÆÄÀÏ°ú µð·ºÅ丮´Â Å°¿Í °ªÀÇ ¼Ó¼º ÁýÇÕÀ» °¡Áö°í À־ ¿øÇÑ´Ù¸é ¾î¶°ÇÑ ÀÓÀÇÀÇ Å°¿Í °ªµµ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¼Ó¼º °ªµµ ÆÄÀÏ°ú °°ÀÌ °è¼Ó ¹öÀüÈ­ µË´Ï´Ù.

3.5. ³×Æ®¿öÅ© ·¹À̾îÀÇ ¼±ÅÃ


SubversionÀº »õ·Î¿î ³×Æ®¿öÅ© ¸ÞÄ¿´ÏÁòÀ» ±¸ÇöÇϱ⠽±µµ·Ï ÇÏ´Â Ãß»óÀû ÀúÀå¼Ò Á¢±Ù¹ýÀ» °¡Áö°í ÀÖ½À´Ï´Ù. SubversionÀº Apache HTTP¼­¹ö¿¡ È®Àå ¸ðµâ·Î Ç÷¯±×ÀÎ µÉ ¼ö Àֱ⠶§¹®¿¡ °ß°íÇÏ¸ç »óÈ£ µ¿ÀÛÀÌ ¸Å¿ì ½±½À´Ï´Ù.

3.6. ÀÏ°üµÈ µ¥ÀÌÅÍ Çڵ鸵


SubversionÀº ÆÄÀÏÀÇ Â÷ÀÌÁ¡À» ¹ÙÀ̳ʸ® ´ëÁ¶ ¾Ë°í¸®ÁòÀ» ÀÌ¿ëÇϱ⠶§¹®¿¡ text¿Í binaryÆÄÀÏ ¸ðµÎ¿¡¼­ µ¿ÀÏÇÏ°Ô µ¿ÀÛÇÕ´Ï´Ù. µÎ Á¾·ùÀÇ ÆÄÀÏ ¸ðµÎ ÀúÀå¼Ò¿¡ ¾ÐÃàµÇ¾î ÀúÀåµÇ¸ç Â÷ÀÌÁ¡Àº ³×Æ®¿öÅ©¸¦ ÅëÇØ ¾ç ¹æÇâÀ¸·Î Àü¼ÛµË´Ï´Ù.

3.7. È¿À²ÀûÀÎ ºê·£Äª°ú űë


ºê·£Äª°ú űëÀÇ ºñ¿ëÀº ÇÁ·ÎÁ§Æ®ÀÇ Å©±â¿¡ ºñ·ÊÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. SubversionÀº ºê·£Ä¡¿Í ű׵éÀ» ÇÏµå ¸µÅ©¿Í ºñ½ÁÇÑ ¸ÞÄ¿´ÏÁòÀ» ÀÌ¿ëÇÏ¿© ´Ü¼øÈ÷ ÇÁ·ÎÁ§Æ®¸¦ º¹»çÇÏ´Â ¹æ¹ýÀ¸·Î »ý¼ºÇϹǷΠ½Ã°£ÀÌ ¸Å¿ì Àý¾àµË´Ï´Ù.

4. ¾ÆÅ°ÅØÃÄ


¸Ç ¾Æ·¡ÂÊÀº ¸ðµç ¹öÀüº° µ¥ÀÌÅ͸¦ ´ã°íÀÖ´Â SubversionÀÇ ÀúÀå¼Ò ÀÔ´Ï´Ù. ¸Ç À§ÂÊÀº Subversion Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥À¸·Î¼­, working copy¶ó°í ºÒ¸®´Â ¹öÀüº° µ¥ÀÌÅÍÀÇ ÀϺκÐÀ» ·ÎÄÿ¡¼­ °ü¸®ÇÕ´Ï´Ù. ÀÌ µÎ ¿µ¿ª »çÀÌ¿¡´Â ´Ù¾çÇÑ ÀúÀå¼Ò Á¢±ÙÃþÀÌ Àִµ¥, ¾î¶² °æ·Î´Â ³×Æ®¿öÅ©¸¦ Áö³ª ¼­¹ö¸¦ °ÅÃļ­ ÀúÀå¼Ò¿¡ µµ´ÞÇÏ´Â ¹Ý¸é, ¾î¶² °ÍÀº ³×Æ®¿öÅ©¸¦ Áö³ª Á÷Á¢ ÀúÀå¼Ò¿¡ Á¢±ÙÀ» ÇÕ´Ï´Ù.

5. Versioning Model


5.1. ÆÄÀÏ °øÀ¯ÀÇ ¹®Á¦Á¡


Çظ®¿Í »ø¸®°¡ ÀúÀå¼Ò¿¡¼­ ¹®¼­¸¦ µ¿½Ã¿¡ ÀÐÀº ÈÄ Çظ®°¡ ¸ÕÀú ÀÚ½ÅÀÇ ¼öÁ¤ »çÇ×À» ÀúÀå¼Ò¿¡ ±â·ÏÇß½À´Ï´Ù. ±×ÈÄ »ø¸®°¡ ½Ç¼ö·Î ÀÚ½ÅÀÇ »õ ¹öÀü ÆÄÀÏÀ» ÀúÀå¼Ò¿¡ µ¤¾î ¾µ ¼ö°¡ ÀÖ½À´Ï´Ù. Â÷ÈÄ¿¡ ½Ã½ºÅÛÀÌ ÆÄÀÏÀ» º¹±¸Çϵµ·Ï ÇÒ ¼ö ÀÖ°ÚÁö¸¸ Çظ®ÀÇ º¯°æ»çÇ×Àº »ø¸®ÀÇ »õ ¹öÀü ÆÄÀÏ¿¡¼­ ¹Ý¿µµÇ¾îÀÖÁö ¾Ê½À´Ï´Ù.

5.2. Lock-Modify-Unlock ¸ðµ¨


¸¹Àº ¹öÀü °ü¸® ½Ã½ºÅÛÀÌ ÀÚ½ÅÀÇ ÆÄÀÏÀÇ º¸È£¸¦ À§ÇØ lock-modify-unlock ¸ðµ¨À» »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸ðµ¨¿¡¼­´Â Çѹø¿¡ ¿ÀÁ÷ ÇÑ»ç¶÷¸¸ÀÌ ÆÄÀÏÀ» ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. Çظ®´Â º¯°æ »çÇ×À» Àû¿ëÇϱâ Àü ¹Ýµå½Ã ÆÄÀÏÀ» Àá±Å¾ß ÇÕ´Ï´Ù. ±×¸®°í ÀÌÁ¦ »ø¸®´Â ±× ÆÄÀÏÀ» Àá±Û¼ö ¾øÀ¸¹Ç·Î ¶ÇÇÑ ÇØ´çÆÄÀÏÀ» ¼öÁ¤ÇÒ¼ö ¾ø°Ô µË´Ï´Ù. »ø¸®´Â ¿ÀÁ÷ ÆÄÀÏÀ» ÀÐÀ» ¼ö¸¸ ÀÖÀ¸¸ç, Çظ®°¡ ÆÄÀÏ º¯°æÀ» ³¡³»°í lockÀ» Ç®±â¸¸À» ±â´Ù¸³´Ï´Ù.

ÀÌ°ÍÀº ¿©·¯ °¡Áö ¹®Á¦Á¡À» °¡Áö°í Àִµ¥ ù¹ø° lockingÀº °ü¸®Àû ¹®Á¦¸¦ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù. °¡²û Çظ®°¡ ÆÄÀÏÀ» Àá±Ù ÈÄ Çª´Â °ÍÀ» Àؾî¹ö¸°´Ù¸é »ø¸®´Â ÀÛ¾÷À» ÇÒ ¼ö ¾ø°ÔµË´Ï´Ù. µÑ°·Î, lockingÀº µ¿½Ã ÀÛ¾÷À» ºÒ°¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸ÀÏ Çظ®°¡ ÅؽºÆ® ÆÄÀÏÀÇ ¾Õ ºÎºÐÀ» ¼öÁ¤ÇÏ°í »ø¸®´Â ±× ÆÄÀÏÀÇ µÞ ºÎºÐÀ» ¼öÁ¤ÇÏ°í ½ÍÀ» °æ¿ì lockingÀº µ¿½Ã ÀÛ¾÷ÀÌ ºÒ°¡´ÉÇÕ´Ï´Ù. ÇÏÁö¸¸ ¸¸¾à µÎ ÆÄÀÏÀÌ º´ÇÕµÉ ¼ö ÀÖ´Ù¸é µÎ »ç¶÷Àº °¢°¢ÀÇ »çº»À¸·Î ÀÛ¾÷À» ÇÏ°í ÃÖÁ¾ÀûÀ¸·Î º´ÇÕÇÏ¸é µÉ °ÍÀÔ´Ï´Ù. ¼Â°·Î lockingÀº º¸¾ÈÀÇ Àǹ̸¦ ¿Ö°îÇÕ´Ï´Ù. Çظ®°¡ A ÆÄÀÏÀ» Àá±Ù ÈÄ ¼öÁ¤ÇÏ°í »ø¸®°¡ B ÆÄÀÏÀ» Àá±ÙÈÄ ¼öÁ¤ÇÑ´Ù°í °¡Á¤ÇÒ ¶§ ¼­·Î ÆÄÀÏÀ» ¼öÁ¤ÇÏ´Â µµÁß µÎÆÄÀÏÀÌ È£È¯µÇÁö ¾Ê¾Æ µ¿ÀÛÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù.

5.3. Copy-Modify-Merge ¸ðµ¨


Subversion, CVS ±×¸®°í ´Ù¸¥ ¹öÀü °ü¸® ½Ã½ºÅÛÀº locking ´ë½Å copy-modify-merge ¸ðµ¨À» »ç¿ëÇÕ´Ï´Ù. ÀÌ ¸ðµ¨¿¡¼­´Â °¢°¢ÀÇ »ç¿ëÀÚ Å¬¶óÀ̾ðÆ®°¡ ÇÁ·ÎÁ§Æ® ÀúÀå¼Ò¿¡ ¿¬°áÇÏ¿© °³ÀÎÀûÀÎ ÀÛ¾÷ º¹»çº» - ÀúÀå¼ÒÀÇ ÆÄÀÏ°ú µð·ºÅ丮¿Í ¶È°°Àº - À» ¸¸µé¾î ÀÛ¾÷ÇÕ´Ï´Ù. »ç¿ëÀÚ´Â º´ÇàÀûÀ¸·Î ÀÚ½ÅÀÇ ÆÄÀÏÀ» ¼öÁ¤Çϸç ÃÖÁ¾ÀûÀ¸·Î °³ÀÎÀû º¹»çº»µéÀÌ º´ÇÕµÇ¾î »õ·Î¿î ÃÖÁ¾ ¹öÀüÀÌ »ý¼ºµË´Ï´Ù.

Çظ®¿Í »ø¸®°¡ °°Àº ÇÁ·ÎÁ§Æ®ÀÇ ÀúÀå¼Ò·ÎºÎÅÍ º¹»çº»À» ¸¸µé¾î º´ÇàÀûÀ¸·Î ÀÛ¾÷À» ÇÕ´Ï´Ù. µÑÀº °°Àº ÆÄÀÏÀ» ¼öÁ¤ÇÏ¿´´Âµ¥ »ø¸®°¡ ¸ÕÀú ÀúÀå¼Ò¿¡ ÀÚ½ÅÀÇ º¯°æ»çÇ×À» ¹Ý¿µÇÕ´Ï´Ù. ÈÄ¿¡ Çظ®°¡ ÀúÀå¼Ò¿¡ ÆÄÀÏÀ» ¾²·ÁÇÏÁö¸¸ ÀúÀå¼Ò·ÎºÎÅÍ ÃֽŹöÀüÀÌ ¾Æ´Ï¶ó´Â °æ°í¸¦ ¹Þ½À´Ï´Ù. ´Ù½Ã¸»ÇØ A ÆÄÀÏÀº ±×°¡ º¹»çÇØ°£ ´ÙÀ½ º¯°æÀÌ µÇ¾ú´Ù´Â °ÍÀÔ´Ï´Ù. ±×·¡¼­ Çظ®´Â ÀúÀå¼Ò·ÎºÎÅÍ º¯°æ »çÇ×À» ¹Þ¾Æ ÀÚ½ÅÀÇ ÆÄÀÏ¿¡ º´ÇÕÀ» ÇÕ´Ï´Ù. ´ÙÇàÈ÷ »ø¸®ÀÇ º¯°æ »çÇ×ÀÌ ±×ÀÇ º¯°æ »çÇ×À» µ¤¾î ¾²Áö´Â ¾Ê¾Ò½À´Ï´Ù. º´ÇÕ ÈÄ ±×´Â »õ·ÎÀº ÀÛ¾÷ ÆÄÀÏÀ» ÀúÀå¼Ò¿¡ ¹Ý¿µÇÕ´Ï´Ù. ÇÏÁö¸¸ ¸¸¾à »ø¸®ÀÇ º¯°æ»çÇ×ÀÌ Çظ®ÀÇ °ÍÀ» µ¤¾î¾µ °æ¿ì´Â ¾î¶³±î¿ä? ±×·¯ÇÑ »óȲÀº Ãæµ¹(conflict)À̶ó°í Çϸç, ´ëºÎºÐ º° ¹®Á¦¾øÀÌ ÇØ°áµË´Ï´Ù. ±×·² ¶§¿¡´Â Ãæµ¹ÀÌ ¹ß»ýÇÑ µÎ ÆÄÀÏÀÇ ¿µ¿ªÀ» º¸°í ÀÛ¾÷ÀÚ°¡ ÀÎÀ§ÀûÀ¸·Î µÑÁß Çϳª¸¦ ¼±ÅÃÀ» ÇؾßÇÕ´Ï´Ù. ¼ÒÇÁÆ®¿þ¾î´Â ÀÚµ¿À¸·Î Ãæµ¹À» ÇØ°áÇÏÁö ¸øÇÕ´Ï´Ù. ¾Æ¸¶µµ Çظ®´Â »ø¸®¿ÍÀÇ ¾ê±âÇÑ ÈÄ¿¡ ¼öÁ¤ »çÇ×À» ÀûÀýÈ÷ º¯°æÇÏ¿© µ¤¾î ¾µ °ÍÀÔ´Ï´Ù.

6. ¸®ºñÀü(Revisions)


¸ðµç SubversionÀÇ commit(Àû¿ë)Àº ÇϳªÀÇ ¿øÀÚÀû Æ®·£Àè¼ÇÀ¸·Î °£ÁֵǾî ÆÄÀÏ°ú µð·ºÅ丮ÀÇ ¹öÀü ¼ýÀÚ¸¦ º¯°æÇÕ´Ï´Ù. ¸¸ÀÏ ÆÄÀÏÀÇ ³»¿ëÀ» º¯°æÇϰųª, ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ »ý¼º, »èÁ¦, À̸§ º¯°æ, º¹»ç µîÀÇ ÀÛ¾÷À» Çß´Ù¸é ÇϳªÀÇ º¯°æ ¼ÂÀ¸·Î Ä¿¹ÔÇÏ°Ô µË´Ï´Ù. ÀúÀå¼ÒÀÇ ÀÔÀå¿¡¼­´Â °¢°¢ÀÇ Ä¿¹ÔÀÌ ¿øÀÚÀûÀÎ Æ®·£Àè¼ÇÀ¸·Î °£Áֵ˴ϴÙ. ¸ðµç º¯°æ»çÇ×ÀÌ Àû¿ëµÇµçÁö ¾Æ´Ï¸é ¾Æ¹« °Íµµ Àû¿ëÀÌ ¾È µÇµçÁö ÀÔ´Ï´Ù. SubversionÀº ÀÌ ¿øÀÚ¼ºÀ» °í¼öÇϴµ¥ ÇÁ·Î±×·¥À̳ª ½Ã½ºÅÛÀÌ ¸Á°¡Áö´Â °ÍÀ» ¹æÁöÇϱâ À§ÇÔÀÔ´Ï´Ù.

ÀúÀå¼Ò°¡ Ä¿¹ÔÀ» ¹Þ¾ÆµéÀÏ ¶§¸¶´Ù »õ·Î¿î ÆÄÀÏ ½Ã½ºÅÛ Æ®¸®¸¦ »ý¼ºÇϴµ¥ À̸¦ ¸®ºñÀü(revision)À̶ó°í ÇÕ´Ï´Ù. °¢ ¸®ºñÀü¿¡´Â À¯ÀÏÇÑ ÀÚ¿¬¼ö°¡ ÇÒ´çµÇ¸ç ´õ Å« ¼ýÀÚ¸¦ °¡Áú¼ö·Ï ÃÖ±Ù °ÍÀÔ´Ï´Ù. ÃÖÃÊ·Î ÇÒ´çµÇ´Â ¸®ºñÀüÀº ¼ýÀÚ 0À̸ç ÀúÀå¼Ò¿£ ºó ºÎ¸ð µð·ºÅ丮 ¿Ü¿£ ¾Æ¹« °Íµµ ¾ø´Â »óÅÂÀÔ´Ï´Ù.

À§ ±×¸²Àº ÀúÀå¼Ò¸¦ Àß ¹¦»çÇÏ°í ÀÖ½À´Ï´Ù. °¢ ¸®ºñÀü¿¡´Â ÆÄÀÏ ½Ã½ºÅÛÆ®¸®°¡ ¸Å´Þ·Á ÀÖ°í °¢ Æ®¸®´Â Ä¿¹Ô ÈÄ ÀúÀå¼ÒÀÇ ½º³À¼¦ÀÌ µË´Ï´Ù. ¸®ºñÀü ¹øÈ£´Â °³º°ÀûÀÎ ÆÄÀÏÀÌ ¾Æ´Ñ Àüü Æ®¸®¿¡ Àû¿ëµÇ´Â °ÍÀ¸·Î ¸®ºñÀü ¹øÈ£°¡ NÀ̶ó´Â °ÍÀº N¹ø° Ä¿¹Ô ÈÄÀÇ ÀúÀå¼ÒÀÇ »óŸ¦ ³ªÅ¸³½´Ù°í º¼ ¼ö ÀÖ½À´Ï´Ù. Subversion »ç¿ëÀÚ°¡ foo.c ¸®ºñÀü 5¶ó°í ÇÏ´Â °ÍÀº 5¹ø° Ä¿¹Ô ÈÄÀÇ foo.c¸¦ ¸»ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î ¸®ºñÀü N°ú ¸®ºñÀü MÀÇ ÆÄÀÏÀº ´Ù¸£Áö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.

¿¹¸¦ µé¾î ´ÙÀ½ 3°³ÀÇ ÆÄÀÏÀ» üũ¾Æ¿ô ¹Þ¾Ò´Ù°í ÇÒ ¶§ À̵éÀÇ ¸®ºñÀüÀº 4ÀÔ´Ï´Ù:

  • calc/Makefile: 4
  • integer.c: 4
  • button.c: 4


À̶§ button.c¸¸À» ¼öÁ¤ÇÏ°í Ä¿¹ÔÇϸé ÀÌ°ÍÀº ÀúÀå¼Ò¿¡ ¸®ºñÀü 5¸¦ »ý¼ºÇÒ °ÍÀÔ´Ï´Ù. ÀÌÁ¦ ³ªÀÇ ÀÛ¾÷ º¹»çº»Àº ´ÙÀ½°ú °°½À´Ï´Ù:

  • calc/Makefile: 4
  • integer.c: 4
  • button.c: 5

ÀÌÁ¦ »ø¸®°¡ interger.c¸¦ ¼öÁ¤ÇÏ¿© Ä¿¹ÔÇÏ°í ¸®ºñÀü 6ÀÌ »ý¼ºµË´Ï´Ù. ±×·¯¸é ÀúÀå¼Ò·ÎºÎÅÍ update¸¦ ¼öÇàÇÏ¸é ³ªÀÇ ÀÛ¾÷ º¹»çº»Àº ´ÙÀ½°ú °°ÀÌ º¸ÀÏ °ÍÀÔ´Ï´Ù:
  • calc/Makefile: 6
  • integer.c: 6
  • button.c: 6

³ª´Â button.c¸¦ ¼öÁ¤ÇÏ°í »ø¸®´Â integer.c¸¦ ¼öÁ¤ÇÏ¿´½À´Ï´Ù. ¹Ý¸é MakefileÀº ¸®ºñÀü 4,5,6¿¡¼­ ¸ðµÎ µ¿ÀÏÇÕ´Ï´Ù. ÇÏÁö¸¸ SubversionÀº Makefile¿¡µµ ¶È°°ÀÌ ¸®ºñÀü 6À» ºÎ¿©ÇÕ´Ï´Ù.

7. ¼­·Î ´Ù¸¥ ¸®ºñÀüÀÇ ÀÛ¾÷ ÆÄÀÏ


ÀϹÝÀûÀ¸·Î SubversionÀº À¶Å뼺À» ¸¹ÀÌ °í·ÁÇÏ¿´´Âµ¥ ±× Áß ÇÑ °¡Áö´Â ÀÛ¾÷ ÆÄÀϵéÀÌ ¼­·Î ´Ù¸¥ ¸®ºñÀüÀ» °¡Áú¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº »õ·Î¿î »ç¿ëÀÚ¿¡°Ô´Â È¥¶õ½º·¯¿ï ¼öµµ Àִµ¥, ¿¹¸¦ µé¾î foo.htmlÀ» ¼öÁ¤ÇÏ¿© Ä¿¹ÔÇÏ¿´´Ù°í ÇսôÙ. ±×¸®°í ÀúÀå¼Ò¿¡ ¸®ºñÀü 15¸¦ »ý¼ºÇÏ¿´À» ¶§ ÀÛ¾÷ ÆÄÀÏÀÌ ¸®ºñÀü 15·Î ¹Ù²ï´Ù°í ¿¹»óÇÒ¼öµµ ÀÖ°ÚÁö¸¸ ±×·¸Áö ¾Ê½À´Ï´Ù. Ŭ¶óÀ̾ðÆ®´Â svn update¸í·É¾øÀÌ´Â ÀúÀå¼ÒÀÇ »óÅ¿¡ ´ëÇؼ­ ÀüÇô ¾Ë¼ö°¡ ¾ø½À´Ï´Ù. Ä¿¹Ô°ú ¾÷µ¥ÀÌÆ®´Â ¼­·Î ´Ù¸¥ ¼º°ÝÀÇ °ÍÀ̹ǷΠsvn update¸¦ ÅëÇؼ­¸¸ ÀúÀå¼ÒÀÇ ÃֽŠ¸®ºñÀüÀ» °¡Á®¿Ã ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.

8. ºê·£Äª(Branching)


ºê·£Ä¡, ÅÂ±ë ±×¸®°í ¸Ó¡Àº ´ëºÎºÐÀÇ ¹öÀü °ü¸® ½Ã½ºÅÛ¿¡¼­ °³³äÀÌ °°½À´Ï´Ù. ºê·£ÄªÀº ¹öÀü°ü¸®ÀÇ ±âÃÊ°¡ µÇ´Â ÆÄÆ®À̸ç SubversionÀ¸·Î µ¥ÀÌÅ͸¦ °ü¸®ÇÑ´Ù¸é °á±¹¿¡´Â ÀÌ ±â´É¿¡ ÀÇÁ¸ÇÏ°Ô µË´Ï´Ù.

´ç½ÅÀÌ È¸»ç¿¡¼­ ¾î¶² ¸Å´º¾ó ¹®¼­¸¦ °ü¸®ÇÑ´Ù°í ÇÒ ¶§ ¾î´À³¯ ´Ù¸¥ÆÄÆ®¿¡¼­ ±× ¸Å´º¾óÀÇ ÀϺκÐÀ» ±×µéÀÇ ÆÄÆ®¿¡ ¸Â°Ô ¼öÁ¤ÇØ´Þ¶ó°í ÇÒ¼ö ÀÖ½À´Ï´Ù. ¾Æ¸¶µµ ¿ì¸®´Â ±× ¹®¼­ÀÇ º¹»çº»À» ¸¸µé¾î¼­ µÎ°³ÀÇ ¹®¼­¸¦ °³º°ÀûÀ¸·Î °ü¸®ÇÒ °ÍÀÔ´Ï´Ù. ±×¸®°í µÎ ¹®¼­ÀÇ ¶È°°Àº ºÎºÐÀ» º¯°æÇÒ ÀÏÀÌ Á¾Á¾ ÀÖÀ» °ÍÀÔ´Ï´Ù. µÎ ¹®¼­´Â °ÅÀÇ ¶È°°Áö¸¸ ƯÁ¤ºÎºÐ¸¸ Á¶±Ý ´Ù¸¦°ÍÀÔ´Ï´Ù. ºê·£Ä¡(branch)ÀÇ ±âº»°³³äÀº ÀÌ·¸½À´Ï´Ù. ºê·£Ä¡¶õ °°Àº Áٱ⿡¼­ ½ÃÀÛÇÏ¿© ¾î´À ½ÃÁ¡ºÎÅÍ ´Ù¸¥ÁÙ±â·Î µ¶¸³µÇ¾î ³ª¿Â °ÍÀ» ¸»ÇÕ´Ï´Ù. ºê·£Ä¡´Â ¾ðÁ¦³ª ¾î¶²µ¥ÀÌÅÍÀÇ º¹»çº»À¸·ÎºÎÅÍ »ý¼ºµÇ¾î ±× ÀڽŸ¸ÀÇ È÷½ºÅ丮¸¦ ½ÃÀÛÇÕ´Ï´Ù.

SubversionÀº ÆÄÀÏ°ú µð·ºÅ丮ÀÇ ºê·£Ä¡µéÀ» º´ÇàÀûÀ¸·Î °ü¸®ÇÒ¼ö ÀÖ´Â ¸í·É¾î¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î µ¥ÀÌÅ͸¦ º¹»çÇؼ­ ºê·£Ä¡¸¦ »ý¼ºÇÒ ¼ö ÀÖÀ¸¸ç ¾î¶² µ¥ÀÌÅÍ¿Í °ü·ÃÀÌ ÀÖ´ÂÁöµµ ±â¾ïÀ» ÇÕ´Ï´Ù. ¶ÇÇÑ ÇÑÂÊÀÇ º¯°æ »çÇ×À» ´Ù¸¥ÂÊ¿¡ º¹»çÇÒ ¼öµµ ÀÖ½À´Ï´Ù. °á±¹ ÀÚ½ÅÀÇ º¯°æ »çÇ× ÀϺθ¦ ´Ù¸¥ ºê·£Ä¡¿¡ Àû¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î °³¹ßµÈ ºÎºÐÀ» È¥ÇÕÇÏ°í ¸ÅÄ¡(mix and match)ÇÏ´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇØ ÁÝ´Ï´Ù.

9. ºê·£Ä¡ÀÇ »ç¿ë


¸Å¹ø Ä¿¹ÔÀ» ÇÒ ¶§¸¶´Ù SubversionÀº ¿ÏÀüÈ÷ »õ·Î¿î ÆÄÀÏ ½Ã½ºÅÛ Æ®¸®(¸®ºñÀü)¸¦ »ý¼ºÇÕ´Ï´Ù. »ø¸®°¡ paint¿Í calc¶ó´Â µÎ ÇÁ·ÎÁ§Æ®¸¦ Ä¿¹ÔÇß´Ù°í ÇÒ ¶§, ÀúÀå¼ÒÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°½À´Ï´Ù. °¢ ÇÁ·ÎÁ§Æ®´Â trunk¿Í branches¶ó´Â ¼­ºê µð·ºÅ丮¸¦ °¡Áö°í ÀÖ½À´Ï´Ù.

Çظ®¿Í »ø¸®°¡ calc ÇÁ·ÎÁ§Æ®¸¦ ÇÔ²² ÁøÇàÇÑ´Ù°í ÇÒ ¶§ /calc/trunk¸¦ °³¹ß ¼Ò½ºÀÇ ±âº» ÁÙ±â¶ó°í ÇÏ¸é µÑÀº ¶È°°ÀÌ /calc/trunkÀÇ ÀÛ¾÷º»À» °¡Áö°í ÀÖÀ» °ÍÀÔ´Ï´Ù.

À̶§ Çظ®°¡ ±× ÇÁ·ÎÁ§Æ®ÀÇ ±Ùº»ÀûÀÎ Àç¼öÁ¤À» ¿äû¹Þ¾Ò´Ù°í ÇսôÙ. ±×°ÍÀº ¼öÁ¤Çϴµ¥ ¸Å¿ì ±ä ½Ã°£ÀÌ °É¸± °ÍÀÌ°í ÇÁ·ÎÁ§Æ®ÀÇ ¸ðµç ÆÄÀÏÀ» °íÃÄ¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ±×¸®°í Çظ®´Â ÀÌ°÷ Àú°÷ÀÇ ¹ö±×¸¦ ¼öÁ¤ÇÏ°í ÀÖ´Â »ø¸®ÀÇ ÀÛ¾÷¿¡ ¹æÇØÇÏ°í ½ÍÁöµµ ¾Ê½À´Ï´Ù. »ø¸®´Â ¾ðÁ¦³ª ÃֽŹöÀüÀÎ /calc/trunkÀÇ ÇÁ·ÎÁ§Æ®°¡ »ç¿ë °¡´ÉÇÏ´Ù¶ó´Â °¡Á¤ ÇÏ¿¡ ÀÛ¾÷À» ÇÏ°í ÀÖÀ¸¹Ç·Î Çظ®°¡ ÀÛ¾÷À» Çϸ鼭 Çϳª Çϳª¿¡ ´ëÇØ Ä¿¹ÔÀ» ÇÑ´Ù¸é »ø¸®ÀÇ °ÍÀ» ¸Á°¡¶ß¸± °ÍÀÔ´Ï´Ù.

ÇÑ °¡Áö ¹æ¹ýÀº ÀÌ·¸½À´Ï´Ù. Çظ®¿Í »ø¸®°¡ ÇÑ ÁÖ¿¡¼­ µÎ ÁÖ°£ ÆÄÀÏ °øÀ¯¸¦ ¸ØÃß°í ÀÛ¾÷º»À¸·Î ¸ðµç ¼öÁ¤À» ³¡³»´Â °ÍÀÔ´Ï´Ù. ¹°·Ð Áß°£¿¡ Ä¿¹ÔÀº ¾ø½À´Ï´Ù. ÀÌ°ÍÀº ¸î °¡Áö ¹®Á¦Á¡À» °¡Áö°í Àִµ¥, ¿ì¼± ÀÌ°Ç ±×´ÙÁö ¾ÈÀüÇÏÁö ¾Ê´Ù´Â °ÍÀÔ´Ï´Ù. ÀúÀå¼Ò¿¡ ÀÚ½ÅÀÇ ÀÛ¾÷À» ÀÚÁÖ ¹Ý¿µÇÏ´Â ´ëºÎºÐÀÇ »ç¶÷µéÀº ÀÚ½ÅÀÇ ÀÛ¾÷º»¿¡ ½Ç¼ö¸¦ ÇÒ ¿ì·Á°¡ ÀÖ½À´Ï´Ù. µÑ°·Î´Â ÀÌ ¹æ¹ýÀÌ À¯¿¬ÇÏÁö ¾Ê´Ù´Â °ÍÀÔ´Ï´Ù. ¸¸¾à Çظ®°¡ ´Ù¸¥ µÎ´ëÀÇ ÄÄÇ»ÅÍ¿¡¼­ ÀÛ¾÷À» ÇÑ´Ù¸é ¸Å¹ø ÀÚ¸®¸¦ ¿Å±æ ¶§¸¶´Ù ÀÛ¾÷º»ÀÇ º¹»çº»À» °¡Áö°í ´Ù³à¾ß ÇÒ°ÍÀÔ´Ï´Ù. °°Àº ¸Æ¶ôÀ¸·Î Çظ®ÀÇ ÀÛ¾÷ÁßÀÎ »çÇ×À» ´Ù¸¥ »ç¶÷°ú °øÀ¯ÇϱⰡ ¾î·Æ°Ô µË´Ï´Ù. °øÅëÀûÀÎ ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÇ °¡Àå ÁÁÀº ¹æ¹ýÀº ´Ù¸¥ »ç¶÷ÀÌ ÀÚ½ÅÀÇ ÁøÇà »çÇ×À» º¸°Ô ÇÏ´Â °ÍÀÔ´Ï´Ù. ¸¸¾à ¾Æ¹«µµ ±×ÀÇ ¼öÁ¤ »çÇ×À» º¸Áö ¸øÇÑ´Ù¸é, ±ÍÁßÇÑ Çǵå¹éÀ» ¹ÞÀ» ¼ö ¾ø°Ô µË´Ï´Ù. °á±¹ Çظ®°¡ ¸ðµç ¼öÁ¤À» ¸¶Ä¡°í ÀúÀå¼Ò¿¡ ¹Ý¿µÇÏ·Á ÇÒ ¶§ ±âÁ¸ÀÇ »ø¸®ÀÇ µ¥ÀÌÅÍ¿Í ÅëÇÕÇÏ´Â °ÍÀÌ ¸Å¿ì Èûµé°Ô µË´Ï´Ù.

°¡Àå ÁÁÀº ÇØ°áÃ¥Àº ÀúÀå¼Ò¿¡ ÀڽŸ¸ÀÇ ºê·£Ä¡¸¦ »ý¼ºÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ·Î½á ´Ù¸¥ »ç¶÷ÀÇ ÀÛ¾÷À» ¹æÇØÇÏÁö ¾Ê°íµµ ³ªÀÇ ºÒ¿ÏÀüÇÑ ¼Ò½º¸¦ ÀúÀåÇÒ ¼ö ÀÖÀ¸¸ç ƯÁ¤Àΰú Á¤º¸¸¦ °øÀ¯ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

´ÙÀ½Àº /calc/branches/my-calc-branch¿¡ /calc/trunkÀÇ ºê·£Ä¡¸¦ »ý¼ºÇÑ ¿¹ÀÔ´Ï´Ù:
$ 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."
Committed revision 341.

Cheap Copies : Subversion ÀúÀå¼Ò´Â Ưº°ÇÏ°Ô ¼³°è°¡ µÇ¾ú½À´Ï´Ù. ¸¸ÀÏ µð·ºÅ丮¸¦ º¹»çÇÒ ¶§ ÀúÀå¼ÒÀÇ °ø°£ÀÌ ´Ã¾î³ª´Â °ÍÀ» °ÆÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. SubversionÀº ½ÇÁ¦·Î µ¥ÀÌÅ͸¦ º¹»çÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó »õ·Î¿î µð·ºÅ丮°¡ ±âÁ¸ÀÇ Æ®¸®¸¦ °¡¸®Å°µµ·Ï Çϴµ¥ ÀÌ°ÍÀº UnixÀÇ ÇÏµå ¸µÅ©¿Í ºñ½ÁÇÑ °³³äÀÔ´Ï´Ù. Lazy º¹»ç¶ó°íµµ ºÒ¸®¿ì´Âµ¥ ¸¸¾à µð·ºÅ丮 ³»ÀÇ ÇÑ °³ÀÇ ÆÄÀϸ¸ ¼öÁ¤µÇ¾ú´Ù¸é ½ÇÁ¦·Î´Â ÇÑ °³ÀÇ ÆÄÀϸ¸ º¯°æµÇ°í ³ª¸ÓÁö ÆÄÀϵéÀº ¿©ÀüÈ÷ ¿øº» ÆÄÀÏÀÇ ¸µÅ©¸¦ °¡Áö°í ÀÖ°Ô µË´Ï´Ù. ¹°·Ð ÀÌ ¸ÞÄ¿´ÏÁòÀº »ç¿ëÀÚ ÀÔÀå¿¡¼­´Â ´Ü¼øÈ÷ Æ®¸®°¡ º¹»çµÇ´Â °ÍÀ¸·Î º¸À̹ǷΠ¾Ë ¼ö ¾ø½À´Ï´Ù.

10. ¸Ó¡(merging)


¸Ó¡À̶õ ´Ü¾î°¡ È¥¶õ½º·´°Ô µé¸®°ÚÁö¸¸, »ç½ÇÀº ¸Å¿ì °£´ÜÇÕ´Ï´Ù. ´õ ÀûÀýÇÑ À̸§Àº diff-and-apply À̶ó°í ÇÒ¼ö Àִµ¥ ¿Ö³ÄÇÏ¸é ±×°Ô µ¿ÀÛÀÇ ÀüºÎÀ̱⠶§¹®ÀÔ´Ï´Ù. µÎ ÀúÀå¼Ò Æ®¸®¸¦ ºñ±³ÇÏ°í ±× Â÷ÀÌÁ¡À» ÀÛ¾÷º»¿¡ Àû¿ëÇϴµ¥ ¸í·É¾î´Â ´ÙÀ½ ¼¼ °³ÀÇ ÀÎÀÚ¸¦ ¹Þ½À´Ï´Ù.

  1. Ãʱâ ÀúÀå¼Ò Æ®¸® (ÁÖ·Î ºñ±³ÀÇ ¿ÞÂÊÆíÀ̶ó ÇÕ´Ï´Ù)
  2. ÃÖÁ¾ ÀúÀå¼Ò Æ®¸® (ÁÖ·Î ºñ±³ÀÇ ¿À¸¥ÆíÀ̶ó ÇÕ´Ï´Ù)
  3. ·ÎÄà º¯°æÀ¸·Î¼­ÀÇ Â÷À̸¦ Àû¿ëÇÒ ÀÛ¾÷º»(ÁÖ·Î ¸ÓÁöÀÇ ´ë»óÀ̶ó ÇÕ´Ï´Ù.)

ÀÏ´Ü ÀÌ ¼¼ °³ÀÇ ÆĶó¹ÌÅÍ°¡ ÁÖ¾îÁö¸é µÎ °³ÀÇ Æ®¸®°¡ ºñ±³µÈ °á°ú°¡ ÀÛ¾÷º»¿¡ Àû¿ëµË´Ï´Ù. ¸í·ÉÀÌ ³¡³­µÚÀÇ ¸ð½ÀÀº ¼öÀÛ¾÷À¸·Î ÆÄÀÏÀ» svn add ¶Ç´Â svn deleteÇÑ °Í°ú ¶È°°½À´Ï´Ù. ±× °á°ú°¡ ¸¾¿¡ µé¸é svn commitÀ» ÇϸéµÇ°í ¾Æ´Ï¶ó¸é svn revert·Î µÇµ¹¸®¸é µË´Ï´Ù. ´ÙÀ½Àº ¸ÓÁö »ç¿ëÀÇ ¿¹ÀÔ´Ï´Ù:
$ svn merge http://svn.example.com/repos/branch1@150 \
http://svn.example.com/repos/branch2@212 \
my-working-copy

$ svn merge -r 100:200 http://svn.example.com/repos/trunk my-working-copy

$ svn merge -r 100:200 http://svn.example.com/repos/trunk

ù¹ø° ¿¹´Â 3°³ÀÇ ÀÎÀÚ¸¦ ¸ðµÎ ¸í½ÃÇߴµ¥ °¢ Æ®¸®´Â URL@REVÀÇ ÇüÅÂÀÔ´Ï´Ù. µÎ¹ø° ¿¹´Â µ¿ÀÏÇÑ URL¿¡¼­ ¼­·Î ´Ù¸¥ ¸®ºñÀüÀ» ºñ±³ÇÒ ¶§ °£·«È÷ ¾²´Â ¹æ¹ýÀÔ´Ï´Ù. ¸¶Áö¸· ¿¹¿¡¼­´Â ¸¶Áö¸· ÆĶó¹ÌÅ͸¦ »ý·«ÇÏ¿© µðÆúÆ®·Î ÇöÀç µð·ºÅ丮¸¦ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù.

½Ã°£ÀÌ Áö³ª¸é¼­ Æ®··Å©(trunk)¿Í °³ÀÎÀûÀÎ ºê·£Ä¡(branch)¿¡ ¸¹Àº º¯°æ»çÇ×ÀÌ ÀϾ °ÍÀÔ´Ï´Ù. ÀÌÁ¦ Çظ®´Â °³ÀÎ ºê·£Ä¡ÀÇ ¼öÁ¤À» ¸¶Ä¡°í ¸ÞÀÎ Æ®··Å©¿¡ º¯°æ »çÇ×À» Àû¿ëÇÏ·Á°í ÇÕ´Ï´Ù. À̶§ svn merge°¡ ¾î¶»°Ô »ç¿ëµÉ¼ö ÀÖÀ»±î¿ä. svn merge´Â µÎ°³ÀÇ Æ®¸®¸¦ ºñ±³ÇÏ¿© ±× Â÷ÀÌÁ¡À» ÀÛ¾÷º»¿¡ Àû¿ëÇÕ´Ï´Ù. ±×·¯¹Ç·Î º¯°æ»çÇ×À» ¹Þ±âÀ§ÇØ ÀÏ´ÜÀº ÀÛ¾÷º»À» ÆÄÀÏÀ» ÃÖ½ÅÀ¸·Î À¯ÁöÇÕ´Ï´Ù. ±× ´ÙÀ½Àº ºñ±³ÇÒ µÎ Æ®¸®¸¦ ¼±ÅÃÇØ¾ß ÇÕ´Ï´Ù. ¸¹Àº À̵éÀÌ Æ®··Å©ÀÇ ÃֽŠƮ¸®¸¦ °³ÀÎ ºê·£Ä¡ÀÇ ÃֽŠƮ¸®¿Í ºñ±³ÇÏ¸é µÈ´Ù°í »ý°¢Çϴµ¥ ÀÌ°ÍÀº À߸øµÈ »ý°¢ÀÔ´Ï´Ù. ÃÖ½ÅÀÇ Æ®··Å©¿Í ºê·£Ä¡ÀÇ Æ®¸®¸¦ ºñ±³ÇÏ´Â °ÍÀº ºê·£Ä¡ÀÇ º¯°æ»çÇ×À» ¿ÏÀüÈ÷ ¼³¸íÇØÁÖÁö ¸øÇÕ´Ï´Ù. ÀÌ´Â ³Ê¹« ¸¹Àº º¯°æ»çÇ×À» Æ÷ÇÔÇÏ°í Àִµ¥, ºê·£Ä¡ÀÇ º¯°æ»çÇ×»Ó¸¸ÀÌ ¾Æ´Ï¶ó Æ®··Å©ÀÇ »èÁ¦µÈ »çÇ×±îÁöµµ º¸¿©Áֱ⠶§¹®ÀÔ´Ï´Ù. ºê·£Ä¡ÀÇ º¯°æ»çÇ׸¸À» Ç¥ÇöÇÏ·Á¸é ºê·£Ä¡ÀÇ Ãʱâ»óÅÂ¿Í ÃÖÁ¾»óŸ¦ ºñ±³ÇØ¾ß ÇÕ´Ï´Ù. Ãʱ⸮ºñÀüÀº svn log¸¦ ÀÌ¿ëÇÏ¸é ¾Ë ¼ö ÀÖ°í ÃÖÁ¾ ¸®ºñÀüÀº HEAD¶ó´Â ¸®ºñÀüÀ» »ç¿ëÇÏ¸é µË´Ï´Ù. ´ÙÀ½Àº ¸Ó¡ÀÇ ¿¹ÀÔ´Ï´Ù:
$ cd calc/trunk
$ svn update
At revision 405.
ÇöÀç ÃֽŠ¸®ºñÀüÀº 405ÀÓÀ» º¸¿©ÁÝ´Ï´Ù.

$ svn merge -r 341:405 http://svn.example.com/repos/calc/branches/my-calc-branch
U integer.c
U button.c
U Makefile
ºê·£Ä¡ÀÇ r341°ú r405ÀÇ Â÷À̸¦ ÀÛ¾÷º»¿¡ Àû¿ëÇÕ´Ï´Ù. ¼¼ °³ÀÇ ÆÄÀÏÀÌ ¾÷µ¥ÀÌÆ® µÇ¾ú½À´Ï´Ù.

$ svn status
M integer.c
M button.c
M Makefile
»óŸ¦ È®ÀÎÇغ¸´Ï ¼¼°³ÀÇ ÆÄÀÏÀÌ ¼öÁ¤µÈ »óÅÂÀÔ´Ï´Ù.

$ svn commit -m "Merged my-calc-branch changes r341:405 into the trunk."
Sending integer.c
Sending button.c
Sending Makefile
Transmitting file data ...
Committed revision 406.
Ä¿¹ÔÀ» ÇÏ´Ï r406·Î ÀúÀåµÇ¾ú½À´Ï´Ù.

¸Ó¡À» ÇÑµÚ ¹ö±×ÇȽº¿Í ±â´É °³¼±À» À§Çؼ­ ÇÑÁÖ°£ ´õ ºê·£Ä¡¿¡¼­ ÀÛ¾÷À» ÇÏ°Ô µÇ¾ú´Ù°í °¡Á¤À» ÇÏ°Ú½À´Ï´Ù. ÀúÀå¼ÒÀÇ Çìµå´Â ¸®ºñÀü480ÀÏ ¶§ ¿¹ÀüÀÇ ¼öÁ¤»çÇ×ÀÌ Áߺ¹µÇÁö ¾Ê°í ¿ÀÁ÷ »õ·Î¿î º¯°æ»çÇ׸¸ ¸Ó¡Çϵµ·Ï ÇÏ°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ÀÛ¾÷ÇØ¾ß ÇÕ´Ï´Ù. svn log·Î ¸¶Áö¸· ¸Ó¡Çß´ø ¶§ÀÇ ¸®ºñÀüÀ» È®ÀÎÇغ¾´Ï´Ù.
$ cd calc/trunk
$ svn log
¡¦
------------------------------------------------------------------------
r406 | user | 2004-02-08 11:17:26 -0600 (Sun, 08 Feb 2004) | 1 line
Merged my-calc-branch changes r341:405 into the trunk.
------------------------------------------------------------------------
¡¦
¸¶Áö¸· ¸Ó¡ ½ÃÁ¡ÀÇ ¸®ºñÀüÀÌ 406À̹ǷΠóÀ½ºÎÅÍ 405±îÁö´Â ¸Ó¡ÀÌ µÈ°ÍÀÔ´Ï´Ù. ±×·¯¹Ç·Î ¸®ºñÀü406ºÎÅÍ HEAD±îÁö¸¸ ¸Ó¡ÇÏ¸é µË´Ï´Ù.

$ svn update
At revision 480.

$ svn merge -r 406:480 http://svn.example.com/repos/calc/branches/my-calc-branch
U integer.c
U button.c
U Makefile
r406ºÎÅÍ r408±îÁö ¸Ó¡ÇÕ´Ï´Ù.

$ svn commit -m "Merged my-calc-branch changes r406:480 into the trunk."
Sending integer.c
Sending button.c
Sending Makefile
Transmitting file data ...
Committed revision 481.
Ä¿¹ÔÀ» ÇÏ´Ï ÀúÀå¼ÒÀÇ ¸®ºñÀüÀÌ 481·Î º¯°æµÇ¾ú½À´Ï´Ù.

¸Ó¡Àº µÇµ¹¸®±â ±â´ÉÀ¸·Îµµ »ç¿ëÇÒ¼ö Àִµ¥, ´ÙÀ½Àº r303À» r302¹öÀüÀ¸·Î µÇµ¹¸®±â ÇÏ´Â °ÍÀ» º¸¿©ÁÖ°í ÀÖ½À´Ï´Ù:
$ svn merge -r 303:302 http://svn.example.com/repos/calc/trunk
U integer.c
$ svn status
M integer.c

$ svn commit -m "Undoing change committed in r303."
Sending integer.c
Transmitting file data .
Committed revision 350.

11. °³¹ßÀÚÀÇ ºê·£Ä¡ »ç¿ëÆÐÅÏ


´ëºÎºÐÀÇ ¼ÒÇÁÆ®¿þ¾î´Â ÀüÇüÀûÀÎ ¶óÀÌÇÁ»çÀÌŬ - ÄÚµù, Å×½ºÆ®, ¸±¸®Áî, ¹Ýº¹ - ÀÌ Àִµ¥ ¿©±â¿¡´Â µÎ °¡Áö ¹®Á¦Á¡ÀÌ ÀÖ½À´Ï´Ù. ¿ì¼±, °³¹ßÀÚ´Â Ç°Áú ÀÎÁõÆÀÀÌ ¸±¸®ÁîµÈ Á¦Ç°À» °Ë»çÇÒ µ¿¾È ±â´Ù·Á¾ß¸¸ ÇÕ´Ï´Ù. µÑ° ´ëºÎºÐÀÇ ÆÀÀº ±¸ ¹öÀü°ú ¸±¸®ÁîµÈ ¹öÀüÀ» ÇÔ²² ¼­Æ÷Æ®ÇØ¾ß ÇÕ´Ï´Ù. ¸¸ÀÏ ÃÖ±Ù¿¡ ¹ö±×°¡ ¹ß°ßµÇ¾ú´Ù¸é ¸±¸®ÁîµÈ Á¦Ç°¿¡µµ ¹ö±×°¡ Á¸ÀçÇÒ°ÍÀε¥ »ç¿ëÀÚ´Â »õ·Î¿î ¸±¸®Á ±â´Ù¸®Áö ¾Ê°í Áï½Ã ¹ö±×°¡ ¼öÁ¤µÇ±â¸¦ ¹Ù¶ö°ÍÀÔ´Ï´Ù. À̶§ ¹öÀü°ü¸®°¡ ÇÊ¿äÇѵ¥ ÀüÇüÀûÀÎ ÇÁ·Î¼¼½º´Â ´ÙÀ½°ú °°½À´Ï´Ù:

  1. °³¹ßÀÚ´Â Æ®··Å©¿¡ ¸ðµç »õ ÀÛ¾÷À» ¿Ã·Á³õ´Â´Ù. ¸ÅÀÏ ¸ÅÀÏ ¼öÁ¤»çÇ×ÀÌ Æ®··Å©¿¡ Ä¿¹ÔµÈ´Ù. »õ ±â´É, ¹ö±×ÇȽº µîµî¡¤¡¤¡¤¡¤¡¤¡¤.
  2. Æ®··Å©¸¦ ¸±¸®Áî ºê·£Ä¡·Î Ä«ÇÇÇÑ´Ù. °³¹ßÆÀÀÌ »ý°¢Çϱ⿡ Á¦Ç°À» ¸±¸®ÁîÇÒ Áغñ°¡ µÇ¾ú´Ù°í »ý°¢ÇÒ ¶§ Æ®··Å©¸¦ ºê·£Ä¡·Î Ä«ÇÇÇÑ´Ù. ¿¹¸¦ µé¾î /branches/1.0°¡ µÉ°ÍÀÌ´Ù.
  3. ÆÀÀº ÀÌ¿Í º´ÇàÇؼ­ ÀÛ¾÷À» °è¼ÓÇÑ´Ù. ÇÑ ÆÀÀÌ ¸±¸®Áî ºê·£Ä¡ÀÇ Å×½ºÆ®¸¦ ÇÒ ¶§ , ´Ù¸¥ ÆÀÀº Æ®··Å©¿¡¼­ °è¼Ó ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù. ¾î´À ÂÊ¿¡¼­µç ¹ö±×°¡ ¹ß°ßµÇ¸é ¹ö±×ÇȽº°¡ ¿Ô´Ù°¬´Ù ÇÒ°ÍÀÌ´Ù. ÇÏÁö¸¸ ¾î´À ½ÃÁ¡ÀÌ µÇ¸é, ±×·± ÇÁ·Î¼¼½º´Â ¸ØÃß°í ºê·£Ä¡´Â ¸±¸®Áî ¹Ù·Î Á÷ÀüÀÇ ÃÖÈÄ Å×½ºÆ® ¹öÀüÀ¸·Î °íÁ¤µÉ °ÍÀÌ´Ù.
  4. ºê·£Ä¡´Â ű׵ǰí(tagged) ¸±¸®ÁîµÈ´Ù. Å×½ºÆ®°¡ ³¡³ª¸é /branches/1.0Àº ·¹ÆÛ·±½º ½º³À¼¦ÀÎ /tags/1.0.0À¸·Î Ä«ÇǵȴÙ. ÀÌ Å±״ ÆÐÅ°ÁöÈ­ µÇ¾î °í°´¿¡°Ô ¸±¸®ÁîµÈ´Ù.
  5. ºê·£Ä¡´Â Ç×»ó À¯Áö º¸¼öµÈ´Ù. Æ®··Å©¿¡¼­´Â 2.0¹öÀüÀÇ ÀÛ¾÷ÀÌ °è¼ÓµÈ´ÙÇصµ, ¹ö±×ÇȽº´Â Æ®··Å©¿¡¼­ /branches/1.0À¸·Î °è¼Ó Æ÷ÆõȴÙ. ÀÏÁ¤·®ÀÇ ¹ö±×ÇȽº°¡ ½×À̸é, ¹öÀü 1.0.1À» ¸±¸®ÁîÇϱâ·Î °áÁ¤ÇÑ´Ù. /branches/1.0Àº /tags/1.0.1·Î º¹»çµÇ°í ű״ ¶Ç´Ù½Ã ÆÐÅ°ÁöÈ­ µÇ¾î °í°´¿¡°Ô ¸±¸®ÁîµÈ´Ù.

ÀÌ ¸ðµç °úÁ¤ÀÌ ¼ÒÇÁÆ®¿þ¾î °³¹ß¿¡¼­ ¹Ýº¹µÇ´Âµ¥, 2.0¹öÀüÀÇ °³¹ßÀÌ ¿Ï·áµÇ¸é, »õ·Î¿î 2.0¹öÀü ¸±¸®Áî ºê·£Ä¡°¡ ¸¸µé¾îÁö°í, Å×½ºÆ®µÇ°í, ÅÂ±×µÈ ÈÄ ¸±¸®Áî µË´Ï´Ù. ¸î ³â ÈÄ ÀúÀå¼Ò´Â À¯Áö º¸¼öµÇ´Â ¸±¸®Áî ºê·£Ä¡ ¿©·¯ °³¿Í ÃÖÁ¾ ¹öÀüÀÎ ÅÂ±× ¿©·¯ °³°¡ ³²¾ÆÀÖÀ» °ÍÀÔ´Ï´Ù.

12. ÇÇÃÄ ºê·£Ä¡ (feature branch)


ÇÇÃÄ ºê·£Ä¡´Â Æ®··Å©ÀÇ ÀÛ¾÷À» ¹æÇØÇÏÁö ¾ÊÀ¸¸é¼­ º¹ÀâÇÑ ¼öÁ¤ ÀÛ¾÷À» Çϵµ·Ï ¸¸µç Àӽà ºê·£Ä¡¸¦ ¸»ÇÕ´Ï´Ù. ¿µ±¸ÀûÀ¸·Î À¯Áö º¸¼öµÇ´Â ¸±¸®Áî ºê·£Ä¡¿Í´Â ´Þ¸® ÇÇÃÄ ºê·£Ä¡´Â »ý¼ºÈÄ Àá½Ã »ç¿ëµÇ´Ù°¡ Æ®··Å©·Î ¸ÓÁöµÇ°í ¿µ±¸ÀûÀ¸·Î »èÁ¦µË´Ï´Ù. ¾î¶² ÇÁ·ÎÁ§Æ®´Â ÇÇÃĺ귣ġ¸¦ ÀüÇô »ç¿ëÇÏÁö ¾ÊÀ» ¼öµµ ÀÖÀ¸¸ç ¾î¶² ÇÁ·ÎÁ§Æ®´Â ºê·£Ä¡¸¦ ±Ø´ÜÀûÀ¸·Î ¸¹ÀÌ »ç¿ëÇÕ´Ï´Ù. ±×·¡¼­ ¾î¶² Á¶±×¸¶ÇÑ º¯°æ »çÇ×µµ Æ®··Å©·Î Á÷Á¢ Ä¿¹ÔµÇ´Â °æ¿ì°¡ ¾ø°í ÇÇÃĺ귣Ƽ¿¡ Àû¿ëµÈÈÄ ¸®ºä¸¦ °ÅÃÄ Æ®··Å©·Î ¸ÓÁöµË´Ï´Ù. ±×¸®°í ÇÇÃĺ귣ġ´Â »èÁ¦µÇ´Âµ¥ ÀÌ °æ¿ì Æ®··Å©ÀÇ µ¥ÀÌÅÍ°¡ ¾ðÁ¦³ª ¾ÈÁ¤ÀûÀÌ¸ç »ç¿ë°¡´ÉÇÏ´Ù´Â ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù. ÇÇÃÄ ºê·£Ä¡¿¡¼­ ÀÛ¾÷À» °è¼ÓÇÏ´Ù ¸î ÁÖ ÈÄ Æ®··Å©¿Í ½ÌÅ©¸¦ ¸ÂÃß·Á¸é ºÎ´ãÀÌ ¸Å¿ì Å©¹Ç·Î Á¤Ã¥À» Á¤Çؼ­ ÀÏÁÖÀÏ¿¡ Çѹø Áö³­ ÁÖ Æ®··Å©ÀÇ º¯°æ»çÇ×À» ºê·£Ä¡·Î Á¤±âÀûÀ¸·Î ¾÷µ¥ÀÌÆ® ÇÏ´Â °ÍÀÌ ÇÊ¿äÇÕ´Ï´Ù. À̶§ ·Î±× ¸Þ½ÃÁö¿¡ ¸¶Áö¸· ¸Ó¡ÇÑ ±â·ÏÀ» Àß À¯ÁöÇÏ¿© Áߺ¹ ¸Ó¡ÇÏÁö ¾Êµµ·Ï ÇÕ´Ï´Ù. Áߺ¹ ¸Ó¡Àº ÇÇÇظ¦ ÁÖ´Â °ÍÀº ¾Æ´ÏÁö¸¸ ¸Ó¡ È¿À²À» ¶³¾î¶ß¸®±â ¶§¹®ÀÔ´Ï´Ù. ¾î´À ½ÃÁ¡ÀÌ µÇ¸é ½ÌÅ©°¡ ¸ÂÃß¾îÁø ÇÇÃÄ ºê·£Ä¡¸¦ Æ®··Å©¿¡ ¸ÓÁöÇؾßÇÒ »óȲÀÌ ¿Ã °Ì´Ï´Ù. ¸¶Áö¸·À¸·Î ÃֽŠƮ··Å©ÀÇ µ¥ÀÌÅÍ·Î ºê·£Ä¡¸¦ ¾÷µ¥ÀÌÆ®Çϸé ÀÌÁ¦ ºê·£Ä¡¿Í Æ®··Å©´Â ³»°¡ ºê·£Ä¡¿¡ °¡ÇÑ º¯°æ »çÇ×À» Á¦¿ÜÇÏ°í´Â ¸ðµÎ µ¿ÀÏÇÏ°Ô ¸ÂÃß¾îÁú °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô ÇÑ ÈÄ ºê·£Ä¡¿Í Æ®··Å©¸¦ ºñ±³ÇÏ¿© ¸ÓÁö¸¦ ¼öÇàÇÕ´Ï´Ù. ´ÙÀ½Àº ¿¹ÀÔ´Ï´Ù:
$ cd trunk-working-copy
$ svn update
At revision 1910.
$ svn merge http://svn.example.com/repos/calc/trunk@1910 \
http://svn.example.com/repos/calc/branches/mybranch@1910
U real.c
U integer.c
A newdirectory
A newdirectory/newfile
¡¦
HEAD ¸®ºñÀüÀ» ºñ±³ÇÑ µÚ ¿ÀÁ÷ ³ªÀÇ º¯°æ »çÇ׸¸ÀÌ Ä¿¹ÔµË´Ï´Ù. ÀÌ ¶§´Â ¾÷µ¥ÀÌÆ®ÇÑ µÚÀ̹ǷΠµÑ´Ù Æ®··Å©ÀÇ º¯°æ »çÇ×À» °¡Áö°í ÀÖ½À´Ï´Ù.

13. ÀÛ¾÷º» ½ºÀ§Äª(switching a working copy)


svn switch ¸í·É¾î´Â ÇöÀçÀÇ ÀÛ¾÷º»À» ´Ù¸¥ºê·£Ä¡·Î ¹Ù²Ù¾î ÁÝ´Ï´Ù.

´ÙÀ½Àº ¿¹ÀÔ´Ï´Ù.

$ cd calc
ÀÛ¾÷µð·ºÅ丮·Î µé¾î°©´Ï´Ù.

$ svn info | grep URL
URL: http://svn.example.com/repos/calc/trunk
ÀúÀå¼ÒÀÇ URLÀ» È®ÀÎÇغ¾´Ï´Ù.

$ svn switch http://svn.example.com/repos/calc/branches/my-calc-branch
U integer.c
U button.c
U Makefile
Updated to revision 341.
Switch¸¦ ÀÌ¿ëÇØ ÀúÀå¼ÒÀÇ À§Ä¡¸¦ º¯°æÇÕ´Ï´Ù.

$ svn info | grep URL
URL: http://svn.example.com/repos/calc/branches/my-calc-branch

ÀúÀå¼ÒÀÇ À§Ä¡°¡ ¹Ù²ï °ÍÀ» È®ÀÎÇÒ¼ö ÀÖ½À´Ï´Ù.

ºê·£Ä¡·Î ½ºÀ§ÄªÇÑ °ÍÀº óÀ½¿¡ ÀúÀå¼Ò·ÎºÎÅÍ Ã¼Å©¾Æ¿ôÇÑ°Í°ú ¿ÏÀüÈ÷ µ¿ÀÏÇÕ´Ï´Ù. ½ºÀ§Äªµµ –rÀ» ÀÌ¿ëÇØ Æ¯Á¤ ¸®ºñÀüÀ¸·Î ½ºÀ§ÄªÇÒ¼ö ÀÖ½À´Ï´Ù.

´ëºÎºÐÀÇ ÇÁ·ÎÁ§Æ®´Â ÀÌ ¿¹Á¦º¸´Ù ÈξÀ º¹ÀâÇϱ⠶§¹®¿¡ ¼­ºê µð·ºÅ丮°¡ ¸¹ÀÌ Àֱ⠶§¹®¿¡ ¼­ºê¹öÀüÀ» »ç¿ëÇÏ´Â °³¹ßÀÚ´Â ´ÙÀ½°ú °°Àº °³¹ß ¾Ë°í¸®ÁòÀ» µû¸£°í ÀÖ½À´Ï´Ù.

1. Æ®··Å©¸¦ Åë°·Î ºê·£Ä¡·Î º¹»çÇÑ´Ù.

2. Æ®··Å©¿¡¼­ ³»°¡ ÀÛ¾÷ÇÒ ºÎºÐ¸¸ ºê·£Ä¡ÂÊÀ¸·Î ½ºÀ§ÄªÇØ °³¹ßÇÑ´Ù.

Áï, ¾î¶² »ç¿ëÀÚ°¡ ºê·£Ä¡ÀÛ¾÷½Ã ƯÁ¤ ¼­ºêµð·ºÅ丮¸¸ »ç¿ëÇÒ°ÍÀ̶ó¸é svn switch ¸í·ÉÀ¸·Î ƯÁ¤ ¼­ºêµð·ºÅ丮¸¸ ½ºÀ§ÄªÇÒ¼ö ÀÖÀ½À» ¶æÇÕ´Ï´Ù. ½ÉÁö¾î´Â ¿ÀÁ÷ ÇϳªÀÇ ÆÄÀϸ¸ ºê·£Ä¡·Î ½ºÀ§ÄªÇÒ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ¿Í °°Àº ¸ð½ÀÀº ÀÛ¾÷º»ÀÌ È¥ÀçµÈ ¸®ºñÀüÀ» °¡Áú ¼ö ÀÖÀ»»Ó ¾Æ´Ï¶ó ÀúÀå¼ÒÀÇ À§Ä¡¶ÇÇÑ È¥ÀçÇÏ¿© Á¸ÀçÇÒ¼ö ÀÖÀ½À» ¶æÇÕ´Ï´Ù.

¸¸ÀÏ ÀÛ¾÷º»¿¡ °¢°¢ ´Ù¸¥ ÀúÀå¼Ò·Î ½ºÀ§ÄªµÈ ¼­ºê µð·ºÅ丮°¡ ¿©·µ Á¸ÀçÇÑ´Ù¸é, ¾÷µ¥ÀÌÆ®ÇÒ¶§ µð·ºÅ丮º°·Î °¢°¢ÀÇ ÀûÇÕÇÑ ¼­ºêÆ®¸®·ÎºÎÅÍ ÆÐÄ¡¸¦ ¹ÞÀ» °ÍÀÔ´Ï´Ù. »Ó¸¸ ¾Æ´Ï¶ó Ä¿¹ÔÀ» ÇÒ¶§ ·ÎÄÃÆÄÀÏÀº ÀúÀå¼Ò¿¡ ¿øÀÚÀûÀÎ ÇϳªÀÇ ¸®ºñÀüÀ» »ý¼ºÇÒ °ÍÀÔ´Ï´Ù. ÁÖÀÇÇÒÁ¡Àº ÀÛ¾÷º»ÀÌ °¢°¢ ¿©·¯ ÀúÀå¼ÒÀÇ À§Ä¡¸¦ ¹Ù¶óº¸°í ÀÖ´Ù°í Çصµ ±× À§Ä¡µéÀº ¸ðµÎ µ¿ÀÏÇÑ ÀúÀå¼Ò ¾È¿¡ ÀÖ¾î¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¼­ºê¹öÀüÀº ¾ÆÁ÷ ÀúÀå¼Ò°£ÀÇ Åë½ÅÀÌ Çã¿ëµÇÁö ¾Ê½À´Ï´Ù.

14. ½ºÀ§Äª°ú ¾÷µ¥ÀÌÆ®


svn switch¿Í svn update°¡ ºñ½ÁÇغ¸Àδٴ »ý°¢À» Çغ¸¾Ò½À´Ï±î? »ç½Ç switch´Â update ¸í·ÉÀÇ »óÀ§°³³äÀÔ´Ï´Ù. Svn update¸¦ ÇÒ ¶§, Æ®¸®¸¦ ºñ±³ÇÏ¿© ±× Â÷ÀÌÁ¡À» Ŭ¶óÀ̾ðÆ®¿¡°Ô º¸³À´Ï´Ù. Switch¿Í updateÀÇ ÇÑ°¡Áö Â÷ÀÌÁ¡Àº update´Â ¾ðÁ¦³ª µ¿ÀÏÇÑ °æ·ÎÀÇ °ÍÀ» ºñ±³ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.

Áï, /calc/trunkÀÇ ÀÛ¾÷º»Àº svn update¸¦ ÅëÇØ ÀÚµ¿ÀûÀ¸·Î /calc/trunkÀÇ ÃֽŠ¸®ºñÀü°ú ºñ±³¸¦ ¼öÇàÇÕ´Ï´Ù. ÇÏÁö¸¸ switch¸¦ »ç¿ëÇÑ´Ù¸é /calc/trunkÀÇ °ÍÀ» ¾î¶² ºê·£Ä¡ÀÇ °æ·ÎÀÇ ÃֽŸ®ºñÀü°ú ºñ±³¸¦ ¼öÇàÇÏ°Ô µË´Ï´Ù.

´Ù½Ã¸»ÇØ update´Â ÀÛ¾÷º»À» ½Ã°£»óÀ¸·Î À̵¿ÇÒ¼ö Àִµ¥ ¹ÝÇØ switch¸í·ÉÀº ½Ã°ø°£»óÀ» À̵¿ÇÒ¼ö ÀÖ½À´Ï´Ù.


Siwtch¿Í update¸í·É¾î´Â ¸ðµÎ ÀúÀå¼Ò¿¡¼­ »õ·Î¿î µ¥ÀÌÅ͸¦ ¹ÞÀºÈÄ¿¡µµ ·ÎÄÃÆÄÀÏÀÇ ¼öÁ¤»çÇ×Àº º¸Á¸µÈ´Ù´Â Ư¡ÀÌ ÀÖ½À´Ï´Ù. À̸¦ ÀÌ¿ëÇϸé ÀÛ¾÷À» »ó´çÈ÷ ÆíÇÏ°Ô ÇÒ¼ö Àִµ¥ ÇÑ ¿¹·Î /calc/trunkÀÇ ÀÛ¾÷º»À¸·Î ÀÛ¾÷À» ÇÏ´Ù°¡ ºÐµæ ºê·£Ä¡¿¡ º¯°æ»çÇ×À» Àû¿ëÇÏ°í ½Í´Ù¸é ÇØ´ç ºê·£Ä¡·Î ½ºÀ§ÄªÀ» ÇÕ´Ï´Ù. ·ÎÄÃÆÄÀÏÀÇ º¯°æ»çÇ×Àº ±×´ë·Î À̱⠶§¹®¿¡ Å×½ºÆ®Çغ¸°í ¸¶À½¿¡ µé¸é ºê·£Ä¡·Î Ä¿¹ÔÇÕ´Ï´Ù.

15. ű×(Tags)


¶Ç´Ù¸¥ ¼­ºê¹öÀüÀÇ °³³ä¿¡´Â ű×(Tag)°¡ ÀÖ½À´Ï´Ù. ű״ ´ÜÁö ¾î´À½Ã±âÀÇ ÇÁ·ÎÁ§Æ®ÀÇ ½º³À¼¦À» ÀǹÌÇÕ´Ï´Ù. ±×¸®°í ¼­ºê¹öÀü¿¡¼­´Â °¢ ¸®ºñÀüÀÌ ¹Ù·Î ¸Å¹øÄ¿¹ÔÈÄ ÆÄÀϽýºÅÛÀÇ ½º³À¼¦ÀÔ´Ï´Ù. ÇÏÁö¸¸ »ç¶÷µéÀº ű׿¡ release-1.0°ú °°Àº Á»´õ Á÷°üÀûÀÎ À̸§À» ºÙÀÌ°í ½Í¾îÇÏ¸ç ´õ ÀÛÀº ¼­ºêµð·ºÅ丮ÀÇ ½º³À¼¦À» ¸¸µé°í ½Í¾îÇÕ´Ï´Ù. ±×¸®°í ¶ÇÇÑ ¸±¸®Áî1.0ÀÌ ¸®ºñÀü4822 À̶ó´Â °ÍÀ» ±â¾ïÇϱ⵵ ½±Áö ¾Ê½À´Ï´Ù.

16. °£´ÜÇÑ ÅÂ±× ¸¸µé±â


´ÙÀ½Àº /calc/trunkÀÇ ½º³À¼¦À» ¸¸µå´Â ¿¹ÀÔ´Ï´Ù.
$ svn copy http://svn.example.com/repos/calc/trunk \
http://svn.example.com/repos/calc/tags/release-1.0 \
-m "Tagging the 1.0 release of the 'calc' project."

Committed revision 351.

/calc/trunk¸¦ /calc/tags/release-1.0 À¸·Î º¹»çÇÏ¿´½À´Ï´Ù. release-1.0µð·ºÅ丮´Â º¹»çÇÒ ´ç½Ã Æ®··Å©ÀÇ HEAD¸®ºñÀüÀ» ³ªÅ¸³»´Â ½º³À¼¦À¸·Î °è¼Ó ³²¾ÆÀÖÀ» °ÍÀÔ´Ï´Ù. º¹»ç½Ã ´õ¿í Á¤È®È÷ÇÏ·Á¸é r 350 À̶ó´Â ¿É¼ÇÀ» ÁÜÀ¸·Î½á ¸®ºñÀü 350ÀÌ ¸±¸®Áî1.0À̶ó´Â °ÍÀ» ¸í½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ °úÁ¤Àº ºê·£Ä¡¸¦ »ý¼ºÇÏ´ø °úÁ¤°ú µ¿ÀÏÇѵ¥ ¼­ºê¹öÀüÀÔÀå¿¡¼­´Â ÅÂ±×¿Í ºê·£Ä¡ÀÇ Â÷ÀÌ°¡ ¾øÀ¸¸ç µÑ ´Ù ±×Àú º¹»ç¸¦ ÅëÇØ »ý¼ºµÈ Æò¹üÇÑ µð·ºÅ丮ÀÏ »ÓÀÔ´Ï´Ù. ±×¸®°í tags¶ó´Â µð·ºÅ丮·Î º¹»ç¸¦ ÇÑ ÀÌÀ¯´Â ´ÜÁö »ç¶÷ÀÌ ±×·¸°Ô Çϱâ·Î °áÁ¤Ç߱⠶§¹®ÀÔ´Ï´Ù. ´©±º°¡ ű׷ΠĿ¹ÔÀ» ÇÏÁö ¾Ê´Â´Ù¸é ½º³À¼¦À¸·Î ³²¾ÆÀÖ°ÚÁö¸¸ ´©±º°¡ Ä¿¹ÔÀ» ÇÏ´Â ¼ø°£ ű״ Àǹ̻ó ºê·£Ä¡°¡ µÇ¹ö¸³´Ï´Ù.

17. º¹ÀâÇÑ ÅÂ±× ¸¸µé±â


Å« ÇÁ·ÎÁ§Æ®¿¡´Â ¸¹Àº ¼­ºêµð·ºÅ丮¿Í ´õ¿í ¸¹Àº ÆÄÀϵéÀÌ Àֱ⠸¶·ÃÀÔ´Ï´Ù. ¸¸ÀÏ ´Ù¾çÇÑ ±â´É°ú ¹ö±×ÇȽºµÈ ÀÛ¾÷º»À» °¡Áö°í ½Í´Ù¸é ƯÁ¤ ¸®ºñÀüÀ¸·Î udpateÇϰųª ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ ƯÁ¤ ºê·£Ä¡·Î switchÇÔÀ¸·Î½á È¥ÀçµÈ ¸®ºñÀüÀÇ ·ÎÄÃÆÄÀϵéÀ» ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÀÛ¾÷º»ÀÇ ½º냡¼¦À» ¸¸µé°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù.

$ ls

my-working-copy/

$ svn copy my-working-copy http://svn.example.com/repos/calc/tags/mytag

Committed revision 352.

copy¸í·É¾î´Â ´Ù¾çÇÑ ±â´ÉÀ» °¡Áö°í Àִµ¥ ¿©±â¼­´Â copy¸¦ ÅëÇÏ¿© ÆÄÀÏÀ» uploadÇÏ°í ÀÖ½À´Ï´Ù. ´Ù¸¥»ç¶÷Àº ÀÌ ÆÄÀÏÀ» üũ¾Æ¿ôÇϰųª svn merge¸¦ ÅëÇÏ¿© º¯°æ»çÇ׸¸ ¹Þ¾Æ°¥¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù.

18. ÀúÀå¼Ò ·¹À̾ƿô


ÀúÀå¼Ò¸¦ ±¸¼ºÇϴ ǥÁØÀûÀÌ°í ÃßõÇÒ¸¸ÇÑ ¹æ¹ýÀÌ ¸î °³ ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ »ç¶÷µéÀº °³¹ßÀÇ Áß½ÉÀÌ µÇ´Â Áٱ⿡ trunk¸¦ »ç¿ëÇϸç, ºê·£Ä¡ º¹»çº»¿¡ branches¸¦, ±×¸®°í ÅÂ±× º¹»çº»¿¡ tags¸¦ »ç¿ëÇÕ´Ï´Ù. ÀúÀå¼Ò°¡ ÇϳªÀÇ ÇÁ·ÎÁ§Æ®¸¸ °ü¸®ÇÑ´Ù¸é ÀúÀå¼ÒÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°½À´Ï´Ù.

/trunk
/branches
/tags

ÇÏÁö¸¸ ÀúÀå¼Ò°¡ ¿©·¯ °³ÀÇ ÇÁ·ÎÁ§Æ®¸¦ °ü¸®ÇÑ´Ù¸é ·¹À̾ƿôÀº ´ÙÀ½°ú °°À» °ÍÀÔ´Ï´Ù.

/paint/trunk
/paint/branches
/paint/tags

/calc/trunk
/calc/branches
/calc/tags


¹°·Ð ÀϹÝÀûÀÎ ·¹À̾ƿôÀ» ¹«½ÃÇÏ°í »óȲ¿¡ ¸Â´Â ´Ù¸¥ ¹æ¹ýÀ» »ç¿ëÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. svn move¸í·ÉÀ» ÅëÇØ branches¿Í tagsÀÇ À§Ä¡¸¦ À̵¿ÇÒ¼öµµ ÀÖ½À´Ï´Ù.

ÇÏÁö¸¸ °øÀ¯ÇÏ°í ÀÖ´Â µð·ºÅ丮°¡ À̵¿ÇÏ¸é ´Ù¸¥ »ç¶÷ÀÌ update¸í·ÉÀ» ½ÇÇàÇÒ ¶§ °æ·Î°¡ ´õ ÀÌ»ó Á¸ÀçÇÏÁö ¾Ê´Â´Ù´Â ¿¡·¯°¡ ¹ß»ýÇϱ⠶§¹®¿¡ »õ·Î¿î °æ·Î·Î switchÇØ¾ß ÇÕ´Ï´Ù.

19. µ¥ÀÌÅÍÀÇ ÀÏ»ý


¿¹¸¦µé¾î Calc ¶ó´Â ÇÁ·ÎÁ§Æ®ÀÇ ºê·£Ä¡¿¡¼­ÀÇ ÀÛ¾÷À» ¸¶ÃÆ´Ù¸é Æ®··Å©·Î Ä¿¹ÔÀ» ÇÒ°ÍÀÔ´Ï´Ù. ±×¸®°í ºê·£Ä¡ÀÇ °³ÀÎÀûÀÎ µð·ºÅ丮´Â ´õ ÀÌ»ó ÇÊ¿ä°¡ ¾øÀ¸¹Ç·Î »èÁ¦¸¦ Çصµ µË´Ï´Ù.

$ svn delete http://svn.example.com/repos/calc/branches/my-calc-branch \
-m "Removing obsolete branch of calc project."

Committed revision 375.


ÀÌÁ¦ °³ÀÎÀûÀÎ ºê·£Ä¡´Â »ç¶óÁ³Áö¸¸ ÇÊ¿äÇÏ´Ù¸é ¾ðÁ¦µçÁö ´Ù½Ã »ì·Á³¾¼ö°¡ ÀÖ½À´Ï´Ù. ¼­ºê¹öÀü¿¡¼­ µ¥ÀÌÅ͸¦ ´Ù½Ã »ì·Á³»´Â °ÍÀº ¾ÆÁÖ °£´ÜÇÕ´Ï´Ù.
$ svn copy -r 374 http://svn.example.com/repos/calc/branches/my-calc-branch \
http://svn.example.com/repos/calc/branches/my-calc-branch

Committed revision 376.

»èÁ¦ÀüÀÇ HEAD¸®ºñÀüÀ» ¸í½ÃÇÏ°í copy¸¦ ÇÏ¸é ´Ù½Ã »ì¾Æ³³´Ï´Ù.

°³ÀÎÀûÀÎ ºê·£Ä¡´Â ¼ö¸íÀÌ ¸Å¿ì ª¾Æ¼­ ³ªÀÇ ÀÛ¾÷ÀÌ ³¡³ª¸é ³ªÀÇ ºê·£Ä¡µµ ³¡³³´Ï´Ù. ÇÏÁö¸¸ ¼ÒÇÁÆ®¿þ¾î °³¹ß¿¡¼­´Â Áß½ÉÀÌ µÇ´Â ºê·£Ä¡¸¦ µ¿½Ã¿¡ 2°³¸¦ ¿î¿µÇϸ鼭 ²Ï ±ä ÁÖ±â·Î ³ª¶õÈ÷ °³¹ßÇÏ´Â °Í ¶ÇÇÑ ÈçÈ÷ ÀÖ´Â ÀÏÀÔ´Ï´Ù. ¿¹¸¦ µé¾î calcÇÁ·ÎÁ§Æ®ÀÇ ¾ÈÁ¤¹öÀüÀ» ¸±¸®ÁîÇÒ ½Ã±â°¡ µÇ¾ú´Ù°í ÇÒ ¶§ ¹ö±×¸¦ Àâ´Âµ¥ ¸î °³¿ùÀÌ °É¸±°ÍÀ̶ó´Â °ÍÀ» ¾Ë°í ÀÖ´Ù°í ÇսôÙ. ´Ù¸¥ »ç¶÷µéÀº »õ·Î¿î ±â´ÉÀ» Ãß°¡ÇÏ°ÚÁö¸¸ Á¤ÀÛ °³¹ßÀ» ±×¸¸µÎ°í ±â´Ù¸®¶ó°í´Â ÇÒ¼ö ¾ø´Â »óȲÀÏ °ÍÀÔ´Ï´Ù. À̶§ stableÀ̶ó´Â ºê·£Ä¡¸¦ ¸¸µé°í ¹ö±×¸¦ ¼öÁ¤ÇÒ¼ö ÀÖ½À´Ï´Ù.

$ svn copy http://svn.example.com/repos/calc/trunk \
http://svn.example.com/repos/calc/branches/stable-1.0 \
-m "Creating stable branch of calc project."

Committed revision 377.


°³¹ßÀÚµéÀº /calc/trunk¿¡¼­ »õ·Î¿î Ãֽűâ¼úÀ» °è¼Ó Àû¿ëÇÒ¼ö ÀÖÀ¸¸ç, µ¿½Ã¿¡ ¹ö±×ÇȽº´Â stable ºê·£Ä¡¿¡¼­ ÀÌ·ç¾îÁö°Ô µË´Ï´Ù. ±×¸®°í Æ®··Å©¿¡¼­ ¼öÁ¤µÈ ¹ö±×ÇȽº¸¦ ¼±ÅÃÀûÀ¸·Î stableºê·£Ä¡¿¡ Àû¿ëÇϱ⵵ ÇÕ´Ï´Ù. ÀÌ°æ¿ì´Â ¸±¸®ÁîÀü±îÁö ²Ï ±ä ½Ã°£ stable ºê·£Ä¡°¡ Á¸ÀçÇÏ°Ô µË´Ï´Ù.

¸¶Áö¸·À¸·Î ¼­ºê¹öÀüÀÇ ºê·£Ä¡¿Í ű״ ¸Å¿ì °¡º­¿î ÀÛ¾÷À̹ǷΠÀÚÀ¯·Ó°Ô »ç¿ëÇصµ µË´Ï´Ù.



sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2008-03-31 17:55:36
Processing time 0.0014 sec