· 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 ºê·£Ä¡°¡ Á¸ÀçÇÏ°Ô µË´Ï´Ù.

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

ID
Password
Join
Take care of the luxuries and the necessities will take care of themselves.


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.0128 sec