· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Subversion Book/Branching And Merging

ºê·£Ä¡(branch)¿Í merge

1Chapter. ºê·£Ä¡(branch)¿Í merge


1.1.

ºê·£Ä¡(branch), ű×(tag), ¸ÓÁö(merge)´Â ´ëºÎºÐÀÇ ¹öÀü ÄÜÆ®·Ñ ½Ã½ºÅÛ¿¡¼­ °øÅëÀûÀ¸·Î »ç¿ëÇÏ´Â °³³äÀÔ´Ï´Ù. ¸¸¾à ÀÌ·± °³³äµé¿¡ Ä£¼÷ÇÏÁö ¾Ê´Ù¸é, ÀÌ ÀåÀº ÁÁÀº ¼Ò°³±ÛÀÌ µÉ°ÍÀÔ´Ï´Ù. ¸¸¾à ÀÌ¹Ì Àͼ÷ÇÑ ³»¿ëÀ̶ó¸é, ÀÌ ÀåÀ» ÅëÇØ SubversionÀÌ ÀÌ·± °³³äµéÀ» ±¸ÇöÇÏ°í ÀÖ´ÂÁö ¾Ë·ÁÁÖ´Â Èï¹Ì·Î¿î ÀåÀÌ µÇ±æ ¹Ù¶ø´Ï´Ù.

ºê·£Ä¡(branch)´Â ¹öÀü °ü¸®ÀÇ °¡Àå ±âº»ÀÌ µÇ´Â µ¿ÀÛÀÔ´Ï´Ù. µ¥ÀÌÅ͸¦ SubversionÀ¸·Î »ç¿ëÇÑ´Ù´Â °ÍÀº °ð ÀÌ ±â´É¿¡ ÀÇÁ¸ÇÏ°Ô µÈ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ÀÌ Àå¿¡¼­´Â ´ç½ÅÀÌ SubversionÀÇ ±âº» °³³äÀ» ¹ú½á ÀÌÇØÇÏ°í ÀÖÀ½À» ÀüÁ¦·Î ÇÕ´Ï´Ù(>).


1.1. ºê·£Ä¡(branch)¶õ?

´ç½ÅÀÌ ¾î¶² ±â¾÷ÀÇ ÇÑ ºÎ¼­¿¡¼­ ¹®¼­(¹«¾ð°¡¿¡ ´ëÇÑ ÇÚµåºÏ)ÀÇ °ü¸®¸¦ ¸Ã°í ÀÖ´Ù°í »ý°¢ÇØ º¾½Ã´Ù. ¾î´À ³¯ ´Ù¸¥ ºÎ¼­·ÎºÎÅÍ ´ç½ÅÀÌ °ü¸®ÇÏ´Â ÇÚµåºÏ¿¡¼­ ¾î¶² ºÎºÐÀÌ Á¶±Ý¸¸ ¹Ù²ï ÇÚµåºÏÀ» °®°í ½Í´Ù´Â ¿äûÀ» Çß´Ù°í ÇսôÙ.

À̶§ ´ç½ÅÀº ¾î¶»°Ô ÇÒ±î¿ä? ´ë´äÀº »·ÇÕ´Ï´Ù. ¹®¼­ÀÇ º¹»çº»À» ¸¸µé¾î µÎ °³ÀÇ º¹»çº»À» µû·Î °ü¸®ÇÒ °ÍÀÔ´Ï´Ù. °¢ ºÎ¼­¿¡¼­ ¼öÁ¤À» ¿ä±¸ÇÏ¸é °¢ ºÎ¼­¿¡ ÇØ´çÇÏ´Â º¹»çº»À» ¼öÁ¤ÇÏ¸é µË´Ï´Ù.

Á¾Á¾ ¾çÂÊ º¹»çº» ¸ðµÎ¿¡¼­ ¶È°°Àº º¯°æÀ» ÇØ¾ß ÇÒ °æ¿ìµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î ÃÖÃÊÀÇ ¹®¼­¿¡ ¿ÀŸ°¡ ÀÖÀ» °æ¿ì ´Ù¸¥ º¹»çº»¿¡µµ ºÐ¸í °°Àº ½Ç¼ö°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. µÎ °³ÀÇ ¹®¼­´Â °ÅÀÇ °°À¸¸ç ¾à°£ÀÇ Â÷À̸¸ ÀÖÀ» »ÓÀÔ´Ï´Ù.

ÀÌ°ÍÀÌ ºê·£Ä¡(branch)ÀÇ ±âº» °³³äÀÔ´Ï´Ù. Áï ÇϳªÀÇ °³¹ß È帧Àº ´Ù¸¥ È帧°ú µ¶¸³ÀûÀ¸·Î Á¸ÀçÇÏÁö¸¸ °ú°Å·Î °Å½½·¯ ¿Ã¶ó°¡¸é °°Àº Á¶»óÀ» °øÀ¯ÇÏ°í ÀÖ´Â °ÍÀÔ´Ï´Ù. ºê·£Ä¡(branch)´Â Ç×»ó ¹«¾ùÀΰ¡·ÎºÎÅÍ º¹»çµÇ¾î ¸¸µé¾îÁø µÚ, Á¡Á¡ ¿øº»°ú ¸Ö¾îÁö¸é¼­ ÀڽŸ¸ÀÇ ¿ª»ç¸¦ ¸¸µé¾î°©´Ï´Ù.

Figure 1-1. °³¹ßÀÇ ºê·£Ä¡(branch)

SubversionÀº ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ ÆòÇàÇÑ(??)ParallelÇÑ ºê·£Ä¡(branch)¸¦ °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¥ÀÌÅ͸¦ Ä«ÇÇÇØ »õ ºê·£Ä¡(branch)¸¦ ¸¸µé°Å³ª µÎ °³ÀÇ ¹öÀüÀÌ ¾î¶² °ü°è¸¦ °¡Áö°í ÀÖ´ÂÁö ±â¾ïÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾î´À ºê·£Ä¡¿¡ ´ëÇÑ ¼öÁ¤À» ´Ù¸¥ ºê·£Ä¡¿¡µµ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¶Áö¸·À¸·Î, ´ç½ÅÀÌ ÀÛ¾÷ÇÏ°í ÀÖ´Â º¹»çº»ÀÇ ÀϺκп¡´Ù°¡ ´Ù¸¥ ºê·£Ä¡µéÀÇ ³»¿ëÀ» ¹Ý¿µ½Ãų ¼öµµ ÀÖ½À´Ï´Ù. Áï, ´ç½ÅÀº ¸ÅÀϸÅÀÏ ¿©·¯ °³ÀÇ ºê·£Ä¡µéÀ» ¼­·Î "È¥ÇÕÇÏ°í ºÙÀÏ(mix and match)" ¼ö ÀÖ½À´Ï´Ù.


1.2. ºê·£Ä¡(branch)ÀÇ ÀÌ¿ë

ÀÌ ½ÃÁ¡¿¡¼­ ´ç½ÅÀº °¢ Ä¿¹ÔÀÌ ¾î¶»°Ô ÀúÀå¼Ò¿¡¼­ ¿ÏÀüÈ÷ »õ·Î¿î ÆÄÀϽýºÅÛ Æ®¸®("¸®ºñÀü(revision)"À̶ó°í ºÒ¸®´Â)¸¦ ¸¸µå´ÂÁö ¾Ë°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. Ȥ½Ã ¸ð¸¥´Ù¸é, µÚ·Î µ¹¾Æ°¡ ¸®ºñÀü¿¡ °üÇÑ >¸¦ Àоî ÁÖ¼¼¿ä.

ÀÌ Àå¿¡¼­µµ 2ÀåÀÇ ¿¹¸¦ »ç¿ëÇÕ´Ï´Ù. ´ç½Å°ú µ¿·á Sally°¡ paint¿Í calc. ¶ó´Â µÎ °³ÀÇ ÇÁ·ÎÁ§Æ®°¡ ÀÖ´Â ÀúÀå¼Ò(repository)¸¦ °øÀ¯ÇÏ°í ÀÖ¾ú´ø °ÍÀ» »ý°¢Çغ¾½Ã´Ù. ±×·±µ¥ À̹ø¿¡ ´©±º°¡°¡ trunk¿Í branches, ÀÌ µÎ °³ÀÇ »õ·Î¿î »óºÎ µð·ºÅ丮¸¦ ÀúÀå¼Ò(repository)¿¡ Ãß°¡Çß½À´Ï´Ù. ÀÌÁ¦ ÇÁ·ÎÁ§Æ®´Â ÀÌÈÄ¿¡ ¼³¸íÇÒ trunkÀÇ ÇÏÀ§ µð·ºÅ丮°¡ µË´Ï´Ù.

Figure 1-2. ÀúÀå¼Ò(repository) ·¹À̾ƿôÀÇ °³½Ã

ÀÌÀü°ú °°ÀÌ ´ç½Å°ú Sally ´Â °¢°¢/trunk/calc ÇÁ·ÎÁ§Æ® ÀÛ¾÷ÀÇ º¹»çº»À» °¡Áö°í ÀÖ´Ù°í ÇÕ´Ï´Ù.

´ç½ÅÀÌ ÇÁ·ÎÁ§Æ®ÀÇ ÀçÆí¼ºÀ» ¸Ã¾Ò´Ù°í °¡Á¤ÇսôÙ. ±× ÀÛ¾÷¿¡´Â ±ä ½Ã°£ÀÌ ÇÊ¿äÇÏ°í ÇÁ·ÎÁ§Æ®ÀÇ ¸ðµçÆÄÀÏ¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù. ¹®Á¦´Â ´ç½ÅÀÌ Sally¿¡ °£¼·ÇÏ°í ½ÍÁö ¾Ê´Ù´Â °ÍÀÔ´Ï´Ù. ±×³à´Â ¾ÆÁ÷ ¿©±âÀú±â¿¡ ÀÖ´Â ÀÛÀº ¹ö±×¸¦ Àâ°í ÀÖ´Â ÁßÀÌ°í, ÀÌ ÀÛ¾÷À» Çϱâ À§Çؼ­ »ø¸®´Â ÇÁ·ÎÁ§Æ®ÀÇ ÃÖ±Ù ¹öÀüÀ» ¾ðÁ¦µçÁö »ç¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¸¸¾à ´ç½ÅÀÌ ÀÚ½ÅÀÇ º¯°æÀ» Á¶±Ý¾¿ Ä¿¹ÔÇϸé SallyÀÇ ÀÛ¾÷Àº È®½ÇÈ÷ Áß´ÜµÇ°í ¸» °ÍÀÔ´Ï´Ù.

ÀÌ·± ¹®Á¦µéÀ» ÇØ°áÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ´ç½Å°ú Sally´Â 1, 2ÁÖ°£ Á¤º¸¸¦ °øÀ¯ÇÏ´Â °ÍÀ» ±×¸¸µÓ´Ï´Ù. Áï, ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç¿¡¼­ ¸ðµçÆÄÀÏ¿¡ ´ëÇÑ Å« ÀÛ¾÷À» ½ÃÀÛÇÏÁö¸¸ ±×°ÍÀÌ ¿Ï·áÇÒ ¶§±îÁö Ä¿¹Ôµµ °»½Åµµ ÇÏÁö ¾Ê´Â ¹æ¹ýÀÔ´Ï´Ù. ±×·¯³ª ÀÌ°Í¿¡´Â ¿©·¯°¡Áö ¹®Á¦°¡ ÀÖ½À´Ï´Ù. ¿ì¼± ¾ÈÀüÇÏÁö ¾Ê½À´Ï´Ù. ´ëºÎºÐÀÇ »ç¶÷Àº ÀÛ¾÷ Ä«ÇÇ¿¡ »ç°í°¡ »ý±æ °Í¿¡ ´ëºñÇؼ­ Æ´Æ´ÀÌ ÀúÀå¼Ò(repository)¿¡ ÀÚ½ÅÀÇ ÀÛ¾÷À» º¸Á¸ÇÏ´Â °ÍÀ» ÁÁ¾ÆÇÕ´Ï´Ù. ´ÙÀ½À¸·Î ÀÌ Àü·«Àº À¯¿¬¼ºÀÌ ¾ø½À´Ï´Ù. ¸¸¾à ¿©·¯ºÐÀÌ ¿©·¯ ´ëÀÇ ÄÄÇ»ÅÍ·Î ÀÏÀ» ÁøÇàÇÏ°í ÀÖ´Ù¸é (¾Æ¸¶ µÎ ´ë Á¤µµÀÇ ÄÄÇ»ÅÍ¿¡ /calc/trunk ÀÇ ÀÛ¾÷ º¹»ç°¡ ÀÖ°ÚÁö¿ä) ÀÚ½ÅÀÇ º¯°æÀ» ¹ø°Å·Ó°Ô ¿Ô´Ù°¬´Ù ÇÏ¸ç º¹»çÇϸ鼭 ÀÛ¾÷Çϰųª ÇÑ ´ëÀÇ ÄÄÇ»ÅÍ¿¡¼­¸¸ ÀÛ¾÷À» Çؾ߸¸ ÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î ´ç½ÅÀÇ ÀÛ¾÷ÀÌ ¿Ï·áµÇ¾úÀ» ¶§ ÀÚ½ÅÀÇ º¯°æÀ» Ä¿¹ÔÇϴ°ÍÀÌ ¸÷½Ã ¾î·Á¿î °ÍÀ̶ó´Â °ÍÀ» ¾Ë ¼ö ÀÖÀ» °Ì´Ï´Ù. Sally (¶Ç´Â ´Ù¸¥ ¸â¹ö) ´Â ÀúÀå¼Ò(repository)¿¡ °¢°¢ ¸¹Àº ´Ù¸¥ º¯°æÀ» ÇÏ°í ÀÖ¾î ±×°ÍÀ» ´ç½ÅÀÇ ÀÛ¾÷ Ä«ÇÇ¿¡ mergeÇÏ´Â °ÍÀº Å« ÀÏÀÌ°ÚÁö¿ä ÀÛ¾÷À» ´Ü¼û¿¡ ³¡³»¾ß ÇÑ´Ù¸é ´õ¿í Å« ¹®Á¦°¡ µË´Ï´Ù.

Á» ´õ ÁÁÀº ¹æ½ÄÀº ÀúÀå¼Ò(repository)¿¡ Àڱ⸸ÀÇ º°µµÀÇ ºê·£Ä¡(branch), Áï Àڱ⸸ÀÇ ÀÛ¾÷¶óÀÎÀ» ¸¸µå´Â °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº ´Ù¸¥ »ç¶÷¿¡°Ô °£¼· ¹ÞÁö ¾Ê°í, ÀÚ½ÅÀÇ ¾îÁß°£ÇÑ ÀÛ¾÷À» °¡²û º¸Á¸ÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ±×·¯¸é¼­µµ ÀϺΠÁ¤º¸¿¡ ´ëÇؼ­´Â µ¿·á¿Í °øÀ¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. µÚ¿¡¼­ ±¸Ã¼ÀûÀ¸·Î ¾î¶»°ÔÇÏ´ÂÁö¸¦ ¼³¸í ÇÕ´Ï´Ù.


1.2.1. ºê·£Ä¡(branch)ÀÇ ÀÛ¼º

ºê·£Ä¡(branch)ÀÇ ÀÛ¼ºÀº ¸Å¿ì °£´ÜÇÕ´Ï´Ù svn copy Ä¿¸àµå¸¦ ÀÌ¿ëÇؼ­ ÀúÀå¼Ò(repository)¿¡ ÀÖ´Â ÇÁ·ÎÁ§Æ®¸¦ º¹»çÇϱ⸸ ÇÏ¸é µË´Ï´Ù. Subversion´Â ÇϳªÀÇ ÆÄÀϸ¸ º¹»çÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾Æ´Ï¶ó, µð·ºÅ丮 Àüü¸¦ Ä«ÇÇÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ´ç½ÅÀÌ /calc/trunk µð·ºÅ丮ÀÇ Ä«ÇǸ¦ °®°í ½Í´Ù°í °¡Á¤ ÇÕ´Ï´Ù. »õ·Î¿î Ä«ÇÇ´Â ¾îµð¿¡ µÎ¸é ÁÁÀ»±î¿ä? ¾îµð¿¡ µÎ¾îµµ »ó°üÀÌ ¾ø½À´Ï´Ù. ¾îµð¿¡ µÎ´ÂÁö´Â ÀüÀûÀ¸·Î ÇÁ·ÎÁ§Æ® ÆÀÀÇ Á¤Ã¥¿¡ µû¸¨´Ï´Ù. ¿ì¸®ÆÀÀÇ Á¤Ã¥Àº ÀúÀå¼Ò(repository)ÀÇ/calc/branches ±¸¿ª¿¡ ºê·£Ä¡(branch)¸¦ ¸ð¾ÆµÎ´Â °ÍÀÌ°í, »õ·Î ¸¸µé ºê·£Ä¡(branch) À̸§Àº "my-calc-branch" ·Î ÇսôÙ. /calc/trunkÀ» º¹»çÇؼ­ /calc/branches/my-calc-branch¶ó°í ÇÏ´Â »õ·Î¿î µð·ºÅ丮 ¸¦ ¸¸µé °ÍÀÔ´Ï´Ù.

Ä«ÇǸ¦ ¸¸µå´Â µ¥¿¡´Â µÎ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. °³³äÀ» È®½ÇÈ÷ Çϱâ À§ÇØ º¹ÀâÇÑ ¹æ¹ýÀ» ¸ÕÀú ¼³¸íÇÏ°Ú½À´Ï´Ù. ¸ÕÀú ÀúÀå¼Ò(repository)ÀÇ ·çÆ® (/calc)¸¦ ÀÛ¾÷ Ä«ÇÇ¿¡ üũ¾Æ¿ô ÇÕ´Ï´Ù:

$ svn checkout http://svn.example.com/repos/calc bigwc
A  bigwc/trunk/
A  bigwc/trunk/
A  bigwc/trunk/Makefile
A  bigwc/trunk/integer.c
A  bigwc/trunk/button.c
A  bigwc/branches
Checked out revision 340.

±×¸®°í´Â, svn copyÄ¿¸àµå¿¡ ÀÛ¾÷ Ä«ÇÇ Æнº¸¦ µÑ °Ç³×ÁÖ´Â °Í¸¸À¸·Î Ä«ÇǸ¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù:

$ cd bigwc
$ svn copy trunk branches/my-calc-branch
$ svn status
A  +   branches/my-calc-branch

ÀÌ °æ¿ì,svn copy Ä¿¸àµå´Â Àç±ÍÀûÀ¸·Î trunkÀÛ¾÷ µð·ºÅ丮ÀÇ ³»¿ëÀ» »õ·Î¿î ÀÛ¾÷ µð·ºÅ丮branches/my-calc-branch ¿¡ Ä«ÇÇÇÕ´Ï´Ù. svn status Ä¿¸àµå·Î È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, º¹»çµÈ µð·ºÅ丮´Â ÀúÀå¼Ò(repository)¿¡ »õ·Î ´õÇØÁú °ÍÀ̶ó°í ¿¹¾àµË´Ï´Ù. ´Ü, AÀÇ µÚ¿¡, +½ÎÀÎÀÌ Ç¥½ÃµÇ´Âµ¥ ÁÖÀÇÇØÁÖ¼¼¿ä. ÀÌ°ÍÀº, Ãß°¡ ¿¹¾àÀÌ ¿ÏÀüÈ÷ »õ·Î¿î °ÍÀÌ ¾Æ´Ï¶ó, ¹«¾ùÀΰ¡ÀÇ Ä«ÇÇ ÀÎ °ÍÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. º¯°æÀ» Ä¿¹ÔÇϸé SubversionÀº ³×Æ®¿öÅ© ³Ñ¾î·Î ÀÛ¾÷ Ä«ÇÇ µ¥ÀÌÅÍÀÇ Àüü¸¦ º¸³»´Â °ÍÀÌ °ÍÀÌ ¾Æ´Ï¶ó, /calc/trunk¸¦ Ä«ÇÇÇÏ´Â °ÍÀ¸·Î ÀúÀå¼Ò(repository)¿¡ /branches/calc/my-calc-branch ¸¦ ¸¸µì´Ï´Ù:

$ svn commit -m "Creating a private branch of /calc/trunk. "
Adding      branches/my-calc-branch
Committed revision 341.

±×·±µ¥, ºê·£Ä¡(branch)¸¦ ¸¸µå´Â Á» ´õ °£´ÜÇÑ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ¸ÕÀú ¼³¸íÇØ¾ß ¸¶¶¥Çß½À´Ï´Ù ÇÏÁö¸¸: svn copy ´Â Àμö¿¡ URL¸¦ µÎ °³ ÃëÇÏ´Â °ÍÀÌ ÇÒ ¼ö ÀÖ´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù.

$ svn copy http://svn.example.com/repos/trunk/calc \
           http://svn.example.com/repos/branches/calc/my-calc-branch \
      -m "Creating a private branch of /trunk/calc"

Committed revision 341.

ÀÌ µÎ °³ÀÇ ¹æ¹ý¿¡´Â ¾Æ¹« Â÷À̵µ ¾ø½À´Ï´Ù. ¾çÂÊ ¸ðµÎ »õ·Î¿î ¸®ºñÀü 341ÀÇ µð·ºÅ丮¸¦ ¸¸µé¾î, »õ·Ó´Ù µð·ºÅ丮´Â/trunk/calcÀÇ Ä«ÇÇ¿¡ µË´Ï´Ù. ´Ù¸¸ µÎ¹ø°ÀÇ ¹æ¹ýÀºµ¿½Ã¿¡ Ä¿¹Ôµµ ¹ßÇàÇÕ´Ï´Ù. [1] µÎ¹ø° ¹æ¹ý(URL°£ Ä«ÇÇ)Àº Áï½Ã Ä¿¹ÔÀÌ ÀϾ´Ï´Ù. ÀÌ ¹æ¹ýÀº ÀúÀå¼Ò¿¡ ÀÖ´Â ¸¹Àº ÆÄÀϵéÀ» üũ ¾Æ¿ô ÇØ¿ÀÁö ¾Ê±â ¶§¹®¿¡ º¸´Ù Æí¸®ÇÑ ¹æ¹ýÀÔ´Ï´Ù. ½ÇÁ¦·Î, ÀÌ ¹æ¹ýÀº ½ÇÁ¦·Î´Â Ä«ÇÇ°¡ ÀüÇô ÀϾÁö ¾Ê½À´Ï´Ù.

Figure 1-3. »õ·Î¿î Ä«ÇÇ°¡ ÀÖ´Â ÀúÀå¼Ò(repository)


1.2.2. ÀڽſëÀÇ ºê·£Ä¡(branch)¿¡¼­ÀÇ ÀÛ¾÷

ÀÌ°ÍÀ¸·Î ÇÁ·ÎÁ§Æ®¿¡ »õ·Î¿î ºê·£Ä¡(branch)¸¦ ¸¸µé ¼ö°¡ ÀÖ¾úÀ¸¹Ç·Î, »õ·Î¿î ÀÛ¾÷ Ä«ÇǸ¦ üũ¾Æ¿ô ÇÒ ¼ö ÀÖ½À´Ï´Ù:

$ svn checkout http://svn.example.com/repos/branches/calc/my-calc-branch
A  my-calc-branch/Makefile
A  my-calc-branch/integer.c
A  my-calc-branch/button.c
Checked out revision 341.

There's nothing special about this working copy; it simply mirrors a different directory in the repository. When you commit changes, however, Sally won't ever see them when she updates. Her working copy is of /calc/trunk. (Be sure to read the section called ¡°Switching a Working Copy¡± later in this chapter: the svn switch command is an alternate way of creating a working copy of a branch.) ÀÌ ÀÛ¾÷ Ä«ÇÇ(working copy)¿¡´Â ±»ÀÌ Æ¯º°ÇÑ °ÍÀº ¾ø½À´Ï´Ù. ´ÜÁö ÇØ´ç ÀúÀå¼Ò(repository)ÀÇ ´Ù¸¥ µð·ºÅ丮·ÎÀÇ ¹Ì·¯¸µÀÏ»ÓÀÔ´Ï´Ù. ´ç½ÅÀÌ º¯°æÀ» Ä¿¹ÔÇÒ¶§¿¡µµ Sally°¡ update°ú´Â »ó°ü¾ø½À´Ï´Ù. (When you commit, She won't ever see them when she updates.) ±×³àÀÇ ÀÛ¾÷ Ä«ÇÇ´Â /calc/trunk ÀÔ´Ï´Ù. (À̹ø chapterÀÌÈÄ¿¡ [ÀÛ¾÷ Ä«ÇÇÀÇ º¯È¯] ¼½¼ÇÀ» ²À ÀÐÀ¸¼¼¿ä : svn switch ¸í·É¾î°¡ ºê·£Ä¡ÀÇ ÀÛ¾÷Ä«ÇǸ¦ »õ·Î ¸¸µå´Â °Í¿¡ ´ëÇÑ °ÍÀÔ´Ï´Ù.

ÀÏÁÖÀÏ°£ÀÌ °æ°úÇÏ´Â µ¿¾È¿¡, ÀÌÇÏÀÇ Ä¿¹ÔÀÌ ÀϾ´Ù°í ÇսôÙ:

  • /branches/calc/my-calc-branch/button.c, (À¸)·Î º¯°æÀ» ´õÇØ ¸®ºñÀü 342¸¦ ¸¸µé¾ú´Ù.

  • /branches/calc/my-calc-branch/integer.c, (À¸)·Î º¯°æÀ» ´õÇØ ¸®ºñÀü 343À» ¸¸µé¾ú´Ù.

  • Sally´Â /trunk/calc/integer.c¿¡ ¼öÁ¤À» ´õÇØ ¸®ºñÀü 344¸¦ ¸¸µé¾ú´Ù.

ÀÌ°ÍÀ¸·Î,integer.c¿¡ µÎ °³ÀÇ µ¶¸³Çß´Ù °³¹ß ¶óÀÎÀÌ »ý°å½À´Ï´Ù:

Figure 1-4. ¾î´À ÆÄÀÏÀÇ È÷½ºÅ丮ÀÇ ºê·£Ä¡(branch)È­

integer.cÀÇ Ä«ÇÇ¿¡ ÀϾ º¯°æ È÷½ºÅ丮¸¦ º¸¸é(ÀÚ) Àç¹ÌÀÖ´Â °ÍÀ» ¾Ð´Ï´Ù:

$ pwd
/home/user/my-calc-branch

$ svn log integer.c
------------------------------------------------------------------------
r343 | user | 2002-11-07 15:27:56 -0600 (Thu, 07 Nov 2002) | 2 lines

* integer.c:  frozzled the wazjub.

------------------------------------------------------------------------
r303 | sally | 2002-10-29 21:14:35 -0600 (Tue, 29 Oct 2002) | 2 lines

* integer.c:  changed a docstring.

------------------------------------------------------------------------
r98 | sally | 2002-02-22 15:35:29 -0600 (Fri, 22 Feb 2002) | 2 lines

* integer.c:  adding this file to the project.

------------------------------------------------------------------------

SubversionÀº Ä«ÇÇµÈ ½ÃÁ¡±îÁöÀÇinteger.c ÀÇ È÷½ºÅ丮¸¦ ´õµë°í ÀÖ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. (ºê·£Ä¡(branch)´Â ¸®ºñÀü 341 ±×¸®°í ¸¸µé¾îÁø °ÍÀ» »ý°¢ÇØ ³» ÁÖ¼¼¿ä). À̹øÀº Sally°¡ ÀÚ½ÅÀÇ ÆÄÀÏ ÀÇ Ä«ÇÇ¿¡ ´ëÇؼ­ °°Àº Ä¿¸àµå¸¦ ½ÇÇàÇßÀ» ¶§ÀÇ ¸ð½ÀÀ» º¸°Ú½À´Ï´Ù:

$ pwd
/home/sally/calc

$ svn log integer.c
------------------------------------------------------------------------
r344 | sally | 2002-11-07 15:27:56 -0600 (Thu, 07 Nov 2002) | 2 lines

* integer.c:  fix a bunch of spelling errors.

------------------------------------------------------------------------
r303 | sally | 2002-10-29 21:14:35 -0600 (Tue, 29 Oct 2002) | 2 lines

* integer.c:  changed a docstring.

------------------------------------------------------------------------
r98 | sally | 2002-02-22 15:35:29 -0600 (Fri, 22 Feb 2002) | 2 lines

* integer.c:  adding this file to the project.

------------------------------------------------------------------------

Sally´Â ÀÚ½ÅÀÇ ¸®ºñÀü 344ÀÇ º¯°æÀ» º¼ ¼ö°¡ ÀÖ½À´Ï´Ù¸¸, ´ç½ÅÀÌ ¸®ºñÀü 343¿¡ ÇÑ º¯°æÀº º¼ ¼ö°¡ ¾ø½À´Ï´Ù. Subversion¿¡¼­´Â, ÀÌ µÎ Ä¿¹ÔÀº ´Ù¸¥ ÀúÀå¼Ò(repository)ÀÇ Àå¼Ò¿¡ ÀÖ´Â ´Ù¸¥ ÆÄÀÏ¿¡ ´ëÇØ ÀϾ´Ï´Ù. ±×·¯³ª, SubversionÀº, µÎ °³ÀÇ ÆÄÀÏÀÌ °øÅëÀÇ È÷½ºÅ丮¸¦ °¡Áö°í ÀÖ´Â °ÍÀ»³ªÅ¸³»µµ ÀÖ½À´Ï´Ù. ¸®ºñÀü 341 ±×¸®°í ÀϾ ºê·£Ä¡(branch) Ä«ÇÇ ÀüÀº ¾çÀÚ´Â °°Àº ÆÄÀÏÀ» »ç¿ëÇÏ°í ÀÖ¾ú½À´Ï´Ù. Sally¿Í ´ç½ÅÀÌ ¾î´ÀÂÊÀ̳ª ¸®ºñÀü 303À¸·Î 98À» º¼ ¼ö°¡ ÀÖ´Â °ÍÀº ±âŸ°ÀÔ´Ï´Ù.


1.2.3. ÀÌ À̾߱âÀÇ ±³ÈÆ

ÀÌ ¸¶µð¿¡¼­ÀÇ Áß¿ä »çÇ×Àº µÑÀÔ´Ï´Ù.

  1. ´Ù¸¥ ¸¹Àº ¹öÀü °ü¸® ½Ã½ºÅÛ°ú´Â ´Þ¶ó SubversionÀÇ ºê·£Ä¡(branch)´Â ÀúÀå¼Ò(repository)ÀÇ º¸Åë ÆÄÀÏ ½Ã½ºÅÛ µð·ºÅ丮 ·Î¼­ Á¸ÀçÇÕ´Ï´Ù. Ưº°ÇÑ ±¸Á¶°¡ ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù.

  2. SubversionÀº ³»ºÎÀûÀ¸·Î´Â"ºê·£Ä¡(branch)"¶ó´Â °³³äÀ» °¡ÁöÁö ¾Ê½À´Ï´Ù ±×°ÍÀº ´Ü¼øÇÑ º¹»çº»ÀÔ´Ï´Ù. ´Ü¼øÈ÷ µð·ºÅ丮¸¦ º¹»çÇÑ °á°ú°¡ "ºê·£Ä¡(branch)"ÀÎ °ÍÀº, ¿©·¯ºÐÀÌ ±×·¯ÇÑ Àǹ̷Π»ý°¢Çϱ⠶§¹®ÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ ±× µð·ºÅ丮¸¦ ´Ù¸¥ Àǹ̷Π»ý°¢ÇÏ°í ´Ù¸£°Ô Ãë±ÞÇÒ ¼öµµ ÀÖÁö¸¸, ¾î·µç Subversion¿¡°Ô´Â º¹»ç ÀÇÇØ ÀÛ¼ºµÈ º¸Åë µð·ºÅ丮ÀÏ »ÓÀÔ´Ï´Ù.


1.3. ºê·£Ä¡(Branch)°£ º¯°æÀÇ º¹»ç

ÇöÀç ´ç½Å°ú Sally´Â ÇÁ·ÎÁ§Æ®¿¡¼­ »¸¾î ³ª¿Â µÎ ºê·£Ä¡¿¡¼­ °¢°¢ ÀÛ¾÷À» ÁøÇàÇÏ°í ÀÖ½À´Ï´Ù. ´ç½ÅÀº ÀڽŸ¸ÀÇ(private) ºê·£Ä¡¿¡¼­, Sally´Â ¸ÞÀÎ ÀÛ¾÷ °ø°£ÀÎ trunk¿¡¼­ ÀÛ¾÷ÁßÀÔ´Ï´Ù.

¿©·¯¸íÀÇ ÀÛ¾÷ÀÚ°¡ ÀÖ´Â ÇÁ·ÎÁ§Æ®¿¡¼­´Â ´ëºÎºÐÀÇ ÀÛ¾÷ÀÚ°¡ trunkÀÇ ÀÛ¾÷¿ë Ä«ÇǸ¦ °¡Áö°í Àִ°ÍÀÌ º¸ÅëÀÔ´Ï´Ù. ´©±º°¡°¡ trunk¿¡ Å« º¯È­¸¦ °¡Á®¿Ã ¸¸ÇÑ ÀÛ¾÷À» ¿À·§µ¿¾È ÇØ¾ß ÇÑ´Ù¸é, º¸ÅëÀº ÀڽŸ¸ÀÇ ºê·£Ä¡¸¦ ¸¸µé°í ÀÛ¾÷ÀÌ ³¡³ª¸é ¼öÁ¤»çÇ×À» commitÇÕ´Ï´Ù.

±×·¡¼­, Sally°¡ ´Ù¸¥ »ç¶÷°ú ÇÊ¿ä¾ø´Â °£¼·À» ÇÏÁö ¾ÊÀ» ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Â ¹Ý¸é ¼­·Î ³Ê¹« µ¿¶³¾îÁö°Ô ÀÛ¾÷ÀÌ ÀÌ·ç¾î Áú ¼öµµ ÀÖ´Â ´ÜÁ¡µµ ÀÖ½À´Ï´Ù. È¥ÀÚ ÀÛ¾÷Àå¿¡ Ʋ¿© ¹ÚÇô ÁøÇàÇÏ´Â ¹æ¹ý·ÐÀÇ ¹®Á¦´Â ´ç½ÅÀÌ ´ç½Å ÀڽŸ¸ÀÇ ºê·£Ä¡¿¡¼­ ÀÛ¾÷À» ³¡¸¶Ä¡°í, ÁÖ ÀÛ¾÷ °ø°£ÀÎ trunk¿¡ º´ÇÕ(merge)ÇÏ·Á°í ÇÒ¶§ ´ë±Ô¸ðÀÇ Ãæµ¹(conflicts)ÀÌ ºÒ°¡ÇÇ ÇÏ´Ù´Â °ÍÀÔ´Ï´Ù.

´ë½Å¿¡ ÀÛ¾÷À» ÁøÇàÇϸ鼭 ´ç½Å°ú Sally°¡ º¯°æÀ» °è¼Ó °øÀ¯ÇÏ´Â ¹æ¹ýÀ» »ç¿ë ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¾î¶² º¯°æÀ» °øÀ¯ÇÒÁö´Â ´ç½ÅÀÌ °áÁ¤ÇÒ ¹®Á¦ÀÔ´Ï´Ù. ¼­ºê¹öÀü(Subversion)Àº ºê·£Ä¡ °£ÀÇ Â÷ÀÌÁ¡ Áß ÀϺκи¸ Ä«ÇÇ(selectively copy)ÇÏ´Â ±â´ÉÀÌ ÀÖ½À´Ï´Ù. ±×¸®°í, ´ç½ÅÀÌ ´ç½ÅÀÇ ºê·£Ä¡¿¡¼­ ¸ðµç ÀÛ¾÷À» ³¡¸¶ÃÆÀ»¶©, ´ç½ÅÀÇ ºê·£Ä¡¿¡¼­ º¯°æµÈ ¸ðµç °ÍÀ» trunk¿¡ ´Ù½Ã Ä«ÇÇÇÏ¸é µË´Ï´Ù.


1.3.1. ƯÁ¤ º¯°æ¸¸ Ä«ÇÇÇϱâ

ÀÌÀü ¼½¼Ç¿¡¼­, ´ç½Å°ú Sally´Â ¼­·Î ´Ù¸¥ ºê·£Ä¡ÀÇ interger.c¿¡ º¯°æÀ» °¡Çß½À´Ï´Ù. ¸¸¾à ´ç½ÅÀÌ Sally°¡ ¼öÁ¤ÇÑ ¸®ºñÀü 334ÀÇ ¸Þ¼¼Áö¸¦ ÅëÇØ Sally°¡ ¸î¸î öÀÚ ¿À·ù¸¦ ¼öÁ¤ÇÑ °ÍÀ» ¾Ë¾Ò´Ù°í ÇսôÙ. ±×·³ ÀǽÉÇÒ ¿©Áöµµ ¾øÀÌ ´ç½ÅÀÇ Ä«ÇÇ¿¡µµ °°Àº öÀÚ ¿À·ù°¡ ÀÖÀ» °Ì´Ï´Ù. ´ç½ÅÀº °ð °°Àº öÀÚ ¿À·ù¸¦ ã¾Æ ³»¾î °íÄ¥ °ÍÀÌ°í, ±× ¼öÁ¤Àº ¾ðÁ¨°¡ ´ç½ÅÀÇ ºê·£Ä¡¸¦ ¸ÓÁöÇÒ ¶§ Ãæµ¹(conflict)À» ÀÏÀ¸Å³ ¼ö ÀÖ½À´Ï´Ù. Â÷¶ó¸® ´ç½ÅÀÌ °°Àº °÷¿¡ ¸¹Àº ÀÛ¾÷À» Çϱâ Àü¿¡ Sally°¡ ¼öÁ¤ÇÑ °ÍÀ» ´ç½ÅÀÇ ºê·£Ä¡¿¡ Àû¿ë½ÃÅ°´Â °ÍÀÌ ´õ ÁÁÀ» °ÍÀÔ´Ï´Ù.

ÀÌÁ¦ svn merge ¸í·ÉÀ» »ç¿ëÇÒ ¶§ÀÔ´Ï´Ù. ÀÌ ¸í·ÉÀº svn diff¿Í »çÃÌ Áö°£À̶ó°í ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. (diff ¸í·ÉÀº 3Àå¿¡ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù) µÎ ¸í·É¾î ¸ðµÎ ÀúÀå¼Ò(repository)¿¡ ÀÖ´Â ¾î¶² µÎ ¿ÀºêÁ§Æ®¸¦ ºñ±³ÇÏ¿© ±× Â÷ÀÌÁ¡À» ¾Ë·ÁÁÝ´Ï´Ù. ¿¹·Î, ´ç½ÅÀº svn diff ¸í·ÉÀ» ½á¼­ »ø¸®°¡ ¸®ºñÀü 334¿¡¼­ ¹«¾ùÀ» º¯È­ ½ÃÄ×´ÂÁö Á¤È®È÷ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.

$ svn diff -r 343:344 http://svn.example.com/repos/trunk/calc

Index: integer.c
===================================================================
--- integer.c	(revision 343)
+++ integer.c	(revision 344)
@@ -147, 7 +147, 7 @@
     case 6:  sprintf(info->operating_system, "HPFS (OS/2 or NT)"); break;
     case 7:  sprintf(info->operating_system, "Macintosh"); break;
     case 8:  sprintf(info->operating_system, "Z-System"); break;
-    case 9:  sprintf(info->operating_system, "CPM"); break;
+    case 9:  sprintf(info->operating_system, "CP/M"); break;
     case 10:  sprintf(info->operating_system, "TOPS-20"); break;
     case 11:  sprintf(info->operating_system, "NTFS (Windows NT)"); break;
     case 12:  sprintf(info->operating_system, "QDOS"); break;
@@ -164, 7 +164, 7 @@
     low = (unsigned short) read_byte(gzfile);  /* read LSB */
     high = (unsigned short) read_byte(gzfile); /* read MSB */
     high = high  8;  /* interpret MSB correctly */
-    total = low + high; /* add them togethe for correct total */
+    total = low + high; /* add them together for correct total */
 
     info->extra_header = (unsigned char *) my_malloc(total);
     fread(info->extra_header, total, 1, gzfile);
@@ -241, 7 +241, 7 @@
      Store the offset with ftell() !  */
 
   if ((info->data_offset = ftell(gzfile))== -1) {
-    printf("error: ftell() retturned -1. \n");
+    printf("error: ftell() returned -1. \n");
     exit(1);
   }
 
@@ -249, 7 +249, 7 @@
   printf("I believe start of compressed data is %u\n", info->data_offset);
   #endif
   
-  /* Set postion eight bytes from the end of the file.  */
+  /* Set position eight bytes from the end of the file.  */
 
   if (fseek(gzfile, -8, SEEK_END)) {
     printf("error: fseek() returned non-zero\n");

svn mergeµµ °ÅÀÇ °°Àº ¿ªÈ°À» ÇÕ´Ï´Ù. ´ç½ÅÀÇ Å͹̳ο¡ Â÷ÀÌÁ¡À» »Ñ·ÁÁÖ´Â ´ë½Å¿¡, merge´Â Â÷ÀÌÁ¡À» ´ç½ÅÀÇ ÀÛ¾÷ Ä«ÇÇ¿¡ ·ÎÄà º¯°æÀ¸·Î Á÷Á¢ Àû¿ë ½Ãŵ´Ï´Ù.

$ svn merge -r 343:344 http://svn.example.com/repos/trunk/calc
U  integer.c

$ svn status
M  integer.c

À§ÀÇ svn mergeÀÇ Ãâ·Â °á°ú°¡ ÀǹÌÇÏ´Â °ÍÀº ´ç½ÅÀÇ Ä«ÇǺ»ÀÎ interger.c°¡ ÆÐÄ¡ µÇ¾ú´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌÁ¦ ÀÌ ÆÄÀÏÀº Sally°¡ ¼öÁ¤ÇÑ °ÍÀ» Æ÷ÇÔÇÕ´Ï´Ù. ´Ù¸£°Ô ¾ê±âÇÏ¸é ¼öÁ¤ »çÇ×ÀÌ trunk¿¡¼­ ´ç½ÅÀÇ ÀÛ¾÷ Ä«ÇÇÀÎ °³ÀÎ¿ë ºê·£Ä¡·Î Ä«ÇÇ µÇ¾ú´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ ½ÃÁ¡¿¡¼­ ´ç½ÅÀÇ ·ÎÄà º¯°æÀ» üũÇؼ­ Á¦´ë·Î µ¹¾Æ°¡´ÂÁö È®ÀÎÇÏ´Â ÀÛ¾÷ÀÌ ´õ ÇÊ¿äÇÕ´Ï´Ù.

Á» ÀÏÀÌ ¾ÈÇ®¸®´Â ½Ã³ª¸®¿À¸¦ °¡Á¤ÇØ º¾½Ã´Ù. interger.c¸¦ merge½ÃÄ×À»´ë Ãæµ¹ÀÌ ÀϾ½À´Ï´Ù. Á¤½Ä´ë·Î ÀÌ Ãæµ¹À» ÇØ°áÇÒ ¼öµµ ÀÖ°í (3ÀåÀ» Âü°íÇϼ¼¿ä), ´ç½ÅÀÌ ¹æ±ÝÇÑ º´ÇÕ(merge)ÀÌ º°·Î ÁÁÁö ¾Ê¾Ò´Ù°í »ý°¢ÇÑ´Ù¸é svn revert¸í·ÉÀ» »ç¿ëÇÏ¿© ·ÎÄà º¯°æÀ» µÇµ¹¸± ¼öµµ ÀÖ½À´Ï´Ù.

ÇÏÁö¸¸, ´ç½ÅÀÌ º´ÇÕµÈ ÆÄÀÏÀ» È®ÀÎÇÏ°í, svn commitÀ¸·Î º¯°æÀ» Àû¿ë½ÃÅ°´Â ÀϹÝÀûÀÎ °æ¿ì¸¦ º¾½Ã´Ù. ÀÌ ¶§´Â º¯°æÀÌ ´ç½ÅÀÇ ÀúÀå¼Ò¿¡ ÀÖ´Â ºê·£Ä¡¿¡ º´Çյ˴ϴÙ. ¹öÁ¯ ÄÁÆ®·Ñ¿¡¼­ ¾²´Â ¿ë¾î·Î, ÀÌ·¯ÇÑ ºê·£Ä¡ °£ÀÇ Ä«ÇǸ¦ ÇÏ´Â °æ¿ì¸¦ º¯°æÀÇ À̽Ä(porting changes)¶ó°í ÇÕ´Ï´Ù.

´ç½ÅÀÌ ·ÎÄà º¯°æÀ» commitÇÏ¿´À»¶§ ·Î±× ¸Þ¼¼Áö·Î ¾î¶² ºê·£Ä¡ÀÇ ¸®¹öÁ¯À¸·Î ºÎÅÍ ¾î¶² º¯°æÀ» À̽ÄÇÏ¿´´ÂÁö ¸í½ÃÇؾ߸¸ ÇÕ´Ï´Ù. ¿¹·Î

$ svn commit -m "integer.c: ported r344 (spelling fixes) from trunk."
Sending        integer.c
Transmitting file data .
Committed revision 360.

ÀÌ°ÍÀº ´ÙÀ½ Àå¿¡¼­ °ð ¹è¿ï Áß¿äÇÑ "ÃÖ°íÀÇ ½À°ü"ÀÔ´Ï´Ù.

ÁÖÀÇ: svn diff¿Í svn merge´Â °³³äÀûÀ¸·Î ¸Å¿ì ºñ½ÁÇÏÁö¸¸, ±¸¹®ÀûÀ¸·Î´Â ¸¹Àº Ʋ¸° Á¡À» °¡Áö°í ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº 9ÀåÀ̳ª svn help¸¦ ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù. ¿¹¸¦ µé¾îsvn merge´Â Ÿ±ê ÀÎÀÚ·Î ÀÛ¾÷º»ÀÇ °æ·Î¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù. ¿¹·Î Æ®¸®ÀÇ º¯°æÀ» Àû¿ëÇÏ´Â Àå¼Ò °°Àº °÷ ÀÔ´Ï´Ù. Ÿ±êÀ» ÁöÁ¤ÇØ ÁÖÁö ¾ÊÀ¸¸é, ´ç½ÅÀÌ ´ÙÀ½°ú °°Àº ÀϹÝÀûÀÎ ÀÛ¾÷À» ½ÇÇàÇÏ·Á°í ÇÑ´Ù°í »ý°¢ÇÕ´Ï´Ù.

  1. µð·ºÅ͸®ÀÇ º¯°æÀ» ´ç½ÅÀÌ ÇöÀç ÀÛ¾÷ÇÏ°í ÀÖ´Â µð·ºÅ͸®¿¡ º´ÇÕ(merge)ÇÏ·Á°í ÇÑ´Ù.

  2. ÆÄÀÏÀÇ º¯°æÀ» ÇöÀç ÀÛ¾÷ÇÏ°í ÀÖ´Â µð·ºÅ͸®¿¡ ÀÖ´Â °°Àº À̸§ÀÇ ÆÄÀÏ¿¡ º´ÇÕ(merge)ÇÏ·Á°í ÇÑ´Ù.

Ÿ±ê °æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾Ê°í µð·ºÅ͸®¸¦ º´ÇÕ(merge)ÇÏ·Á ÇÏ´Â °æ¿ì, svn merge´Â ÇöÀç »óȲÀ» ù ¹ø° °æ¿ì¶ó »ý°¢ÇÏ°í ´ç½ÅÀÇ ÇöÀç ÀÛ¾÷ µð·ºÅ͸®¿¡ º¯°æÀ» Àû¿ë½ÃÅ°·Á°í ÇÕ´Ï´Ù. ¸¸¾à ´ç½ÅÀÌ Æ¯Á¤ ÆÄÀÏÀ» º´ÇÕÇÏ·Á ÇÏ°í, ±× ÆÄÀÏ°ú °°Àº À̸§ÀÇ ÆÄÀÏÀÌ ´ç½ÅÀÇ ÀÛ¾÷ µð·ºÅ͸®¿¡ Á¸ÀçÇÑ´Ù¸é, svn merge´Â µÎ ¹ø° °æ¿ì¶ó »ý°¢ÇÏ°í °°Àº À̸§ÀÇ ·ÎÄà ÆÄÀÏ¿¡ º¯°æÀ» Àû¿ë½ÃÅ°·Á ÇÕ´Ï´Ù

¸¸¾à ´ç½ÅÀÌ ´Ù¸¥ °÷¿¡ º¯°æÀ» Àû¿ë½ÃÅ°·Á ÇÒ °æ¿ì¿¡´Â, ±×°ÍÀ» ¸í½ÃÇØ¾ß ÇÕ´Ï´Ù. ¿¹·Î, ´ç½ÅÀÇ ÀÛ¾÷°ø°£ »óÀ§ µð·ºÅ͸®¿¡ ÀÖÀ» °æ¿ì, º¯°æÀ» Àû¿ëÇÒ Å¸±ê µð·ºÅ͸®¸¦ ¼³Á¤ÇØ Áà¾ß ÇÕ´Ï´Ù.

$ svn merge -r 343:344 http://svn.example.com/repos/trunk/calc my-calc-branch
U   my-calc-branch/integer.c

1.3.2. º´ÇÕÇÒ ¶§ ÁÁÀº ½À°üµé


1.3.2.1. º´ÇÕÇÑ ³»¿ëÀ» ¼öµ¿À¸·Î ±â·ÏÇ϶ó

Â÷ÀÌÁ¡À» º´ÇÕÇÏ´Â °ÍÀº ´Ü¼øÇÏ°Ô µé¸®Áö¸¸, ½ÇÁ¦·Î Çغ¸¸é ±²ÀåÈ÷ ¸Ó¸® ¾ÆÇ ÀÛ¾÷ÀÔ´Ï´Ù. ÇÑ ºê·£Ä¡(branch)¿¡¼­ ´Ù¸¥ ºê·£Ä¡·Î °è¼ÓÇؼ­ º´ÇÕÀ» ÇÏ´Ù º¸¸é ½Ç¼ö·Î °°Àº º¯°æÀ» µÎ ¹ø Àû¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¾î¶² °æ¿ì¿¡´Â ÀÌ·± ÀÏÀÌ »ý°Üµµ º° ¹®Á¦°¡ ¾øÀ» ¼öµµ ÀÖ½À´Ï´Ù. ÆÄÀÏÀ» ÆÐÄ¡ ÇÒ ¶§, ¼­ºê¹öÀü(Subversion)Àº ÆÄÀÏÀÌ ÀÌ¹Ì º¯°æµÇ¾ú´Ù´Â °ÍÀ» ´ëü·Î °¨ÁöÇÏ°í ¾Æ¹« Àϵµ ÇÏÁö ¾Ê½À´Ï´Ù. ÇÏÁö¸¸ ¾î¶² ½ÄÀ¸·Îµç ÀÌ¹Ì º¯°æµÈ °÷¿¡ ¶Ç´Ù½Ã º¯°æÀÌ °¡ÇØÁ³´Ù¸é Ãæµ¹(conflict)ÀÌ »ý±æ °ÍÀÔ´Ï´Ù. ÀÌ»óÀûÀ¸·Î´Â, ¹öÀü ÄÁÆ®·Ñ ½Ã½ºÅÛÀÌ ÇÑ ºê·£Ä¡¿¡ ´ëÇÑ ¼öÁ¤»çÇ×ÀÇ Áߺ¹ Àû¿ëÀ» ¸·¾Æ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ½Ã½ºÅÛÀÌ ÇÑ ºê·£Ä¡¿¡ ´ëÇØ ÀÌ¹Ì ¼öÁ¤ÇÑ »çÇ×µéÀ» ÀÚµ¿ÀûÀ¸·Î ±â¾ïÇß´Ù°¡, ±×°ÍÀ» ´ç½Å¿¡°Ô Á¦°øÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ Á¤º¸¸¦ ÅëÇØ ÀÚµ¿ÀûÀÎ º´ÇÕÀ» ÃÖ´ëÈ­ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¾Æ½±°Ôµµ, ¼­ºê¹öÀü(Subversion)Àº ÀÌ·¯ÇÑ ½Ã½ºÅÛÀÌ ¾Æ´Õ´Ï´Ù. CVS¿Í ¸¶Âù°¡Áö·Î ¼­ºê¹öÀü 1.0Àº º´ÇÕ¿¡ °üÇÑ ¾î¶°ÇÑ Á¤º¸µµ ±â·ÏÇÏÁö ¾Ê°í ÀÖ½À´Ï´Ù. ´ç½ÅÀÌ ·ÎÄÃÀÇ º¯°æÀ» Ä¿¹Ô(commit)ÇÒ ¶§, ÀúÀå¼Ò(repository)´Â ÀÌ·¯ÇÑ º¯°æÀÌ svn mergeÀÇ °á°ú·Î ³ª¿Â °ÍÀÎÁö, ¾Æ´Ï¸é Á÷Á¢ ±× ÆÄÀÏÀ» ¼öÁ¤ÇÑ °ÍÀÎÁö ¾ËÁö ¸øÇÕ´Ï´Ù.

ÀÌ°Ô »ç¿ëÀÚ¿¡°Õ ¾î¶² ÀǹÌÀϱî¿ä? ¼­ºê¹öÀüÀÌ ÀÌ·¯ÇÑ ±â´É Ãß°¡¸¦ ÇÒ ¶§ ±îÁö´Â º´ÇյǴ Á¤º¸¸¦ Á÷Á¢ ¼öµ¿À¸·Î °ü¸®ÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ±â·ÏÇϱâ Á¦ÀÏ ÁÁÀº °÷Àº Ä¿¹Ô ·Î±× ¸Þ½ÃÁö ÀÔ´Ï´Ù. ¾ÕÀÇ ¿¹Á¦¿¡¼­ º¸¾ÒµíÀÌ, ¾î¶² ¸®ºñÁ¯À¸·ÎºÎÅÍ (ȤÀº ¸®ºñÁ¯ ¹üÀ§·ÎºÎÅÍ) º´ÇÕÀ» Çß´ÂÁö ·Î±× ¸Þ½ÃÁö¿¡ ±â·ÏÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù. ÃßÈÄ¿¡ svn log¸í·ÉÀ» ÅëÇØ ´ç½ÅÀÇ ºê·£Ä¡°¡ ¾î¶² º¯°æÀ» Àû¿ëÇß´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» ÅëÇؼ­ ÀÌ¹Ì º¯°æµÈ À̽ÄÀ» Áߺ¹Çؼ­ Àû¿ëÇÏÁö ¾Ê°Ô ÁÖÀÇÇؼ­ svn merge¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

´ÙÀ½ Àå¿¡¼­, ÀÌ·¯ÇÑ Å×Å©´ÐÀ» ÀÛµ¿ÇÏ´Â ¿¹Á¦·Î º¸¿©µå¸®°Ú½À´Ï´Ù.


1.3.2.2. º´ÇÕÀ» »çÀü¿¡ °ËÅäÇÏÀÚ

º´ÇÕÀÇ °á°ú°¡ ·ÎÄÿ¡¸¸ Àû¿ëµÇ±â ¶§¹®¿¡, ±×¸® À§Ç輺ÀÌ ³ôÀº ÀÛ¾÷Àº ¾Æ´Õ´Ï´Ù. º´ÇÕÀÇ À߸øµÇ¾úÀ» °æ¿ì¿¡´Â ´Ü¼øÈ÷ svn revert ¸í·ÉÀ» ÀÌ¿ëÇؼ­ º¯°æÀ» ´Ù½Ã µÇµ¹¸®°í Àç½Ãµµ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÇÏÁö¸¸, ´ç½ÅÀÌ ´ç½ÅÀÇ ÀÛ¾÷ º»¿¡¸¸ ¹«¾ð°¡ ¼öÁ¤ÇßÀ» ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì º´ÇÕÀ» Àû¿ëÇÏ¸é ´ç½ÅÀÌ ÀÌ¹Ì ¼öÁ¤ÇÑ °Í°ú ¼¯ÀÌ°Ô µÉ °ÍÀÌ°í, svn revert´Â ´õ ÀÌ»ó »ç¿ëÇÒ ¼ö ¾øÀ» °ÍÀÔ´Ï´Ù. ÀÌ µÎ °¡Áö º¯°æÀº ÀÌÁ¦ ºÐ¸®µÉ ¼ö ¾ø±â ¶§¹®ÀÔ´Ï´Ù. ÀÌ·± °æ¿ì, »ç¶÷µéÀº º´ÇÕÀ» Àû¿ëÇϱâ Àü¿¡ º´ÇÕµÈ °á°ú¸¦ ¹Ì¸® ¿¹ÃøÇϰųª, ½ÇÇèÇØ º¸±æ ¿øÇÒ °Ì´Ï´Ù. ÀÌ·¸°Ô Çغ¸´Â ½¬¿î ¹æ¹ýÀº ¿ì¸®°¡ ù ¹ø° º´ÇÕ ¿¹Á¦¿¡¼­ º¸¿©ÁØ °Íó·³, svn diff¸¦ ´ç½ÅÀÌ ½ÇÇàÇÏ·Á°í ÇÏ´Âsvn merge¿Í °°Àº ÀÎÀÚ·Î ½ÇÇàÇÏ´Â °ÍÀÔ´Ï´Ù. »çÀü¿¡ °ËÅäÇØ º¼ ¼ö ÀÖ´Â ´Ù¸¥ ¹æ¹ýÀº º´ÇÕ ¸í·É¿¡ --dry-run ¿É¼ÇÀ» ÁÖ´Â °ÍÀÔ´Ï´Ù.

$ svn merge --dry-run -r 343:344 http://svn.example.com/repos/calc/trunk
U  integer.c

$ svn status
#  nothing printed, working copy is still unchanged.

--dry-run ¿É¼ÇÀ» »ç¿ëÇÏ¸é ´ç½ÅÀÇ ÀÛ¾÷ º»¿¡´Â ¾î¶°ÇÑ º¯°æµµ °¡ÇØÁöÁö ¾Ê½À´Ï´Ù. ÀÌ°ÍÀº ÁøÂ¥ º´ÇÕÀ» Àû¿ëÇßÀ» ¶§ »Ñ·ÁÁú »óÅ ÄÚµå(status code)¸¸À» º¸¿©ÁÙ »ÓÀÔ´Ï´Ù. svn diff¸í·ÉÀÌ ³Ê¹« »ó¼¼ÇÑ Á¤º¸¸¦ ÁÙ ¶§´Â À§ÀÇ ¿É¼ÇÀ¸·Î º´ÇÕÇÒ ¶§ ³ªÅ¸³¯ ¼ö ÀÖ´Â °íÂ÷¿øÀû(high level) »çÀü °ËÅ並 ÇÒ ¼ö ÀÖ¾î À¯¿ëÇÕ´Ï´Ù.


1.3.2.3. °èÅë(Ancestry)Á¤º¸¸¦ »ç¿ëÇϰųª ¹«½ÃÇϱâ

¼­ºê¹öÀü °³¹ßÀÚ¿Í À̾߱⸦ ³ª´«´Ù¸é, °èÅë(Ancestry)¶ó´Â ¿ë¾î¸¦ ¸¹ÀÌ µéÀ» ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ ´Ü¾î´Â ÀúÀå¼Ò¿¡ ÀÖ´Â µÎ ¿ÀºêÁ§Æ®ÀÇ °ü°è¸¦ ³ªÅ¸³¾ ¶§ »ç¿ëµË´Ï´Ù. ¸¸¾à¿¡ µÑÀÌ ¼­·Î ¿¬°üµÇ¾îÀÖ´Ù¸é, ÇÑ ¿ÀºêÁ§Æ®°¡ ´Ù¸¥ ¿ÀºêÁ§Æ®ÀÇ Á¶»óÀ̶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿¹·Î, ´ç½ÅÀÌ foo.cÆÄÀÏ¿¡ ¼öÁ¤À» Çؼ­ ¸®ºñÀü100À¸·Î Ä¿¹ÔÀÌ µÇ¾ú´Ù°í ÇսôÙ. ±×·¯¸é foo.c@99(¸®ºñÀü 99ÀÇ foo.c)´Â foo.c@100ÀÇ Á¶»óÀÔ´Ï´Ù. ´Ù½Ã ´ç½ÅÀÌ foo.c¸¦ »èÁ¦ÇÏ°í ¸®¹öÀü 101·Î Ä¿¹Ô ÇÏ°í, ´Ù½Ã °°Àº ÆÄÀÏ À̸§À» °¡Áø ÆÄÀÏÀ» ¸®¹öÀü 102·Î Ãß°¡ÇÏ¿´´Ù°í ÇսôÙ. ÀÌ °æ¿ì foo.c@99¿Í foo.c@102´Â ¼­·Î °°Àº °æ·Î¸¦ °¡Á®¼­ ¿¬°üµÈ °Íó·³ º¸ÀÌÁö¸¸, »ç½Ç ÀúÀå¼Ò¿¡¼­ ÀÌ ÆÄÀÏÀº ¼­·Î ¿¬°üÀÌ ÀüÇô ¾ø½À´Ï´Ù. ÀÌ ÆÄÀϵéÀº È÷½ºÅ丮µµ °øÀ¯ÇÏÁö ¾Ê°í, ¼­·Î °èÅëµµ Ʋ¸³´Ï´Ù.

ÀÌ À̾߱⸦ ²¨³½ ÀÌÀ¯´Â svn diff¿Í svn merge¿¡¼­ Áß¿äÇÑ Â÷À̸¦ º¸À̱⠶§¹®ÀÔ´Ï´Ù. ÀüÀÚÀÇ ¸í·ÉÀº °èÅëÀ» ¹«½ÃÇÏÁö¸¸, ÈÄÀÚÀÇ ¸í·ÉÀº °èÅë Á¤º¸¸¦ ÀÌ¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, svn diff·Î foo.cÀÇ ¸®ºñÀü 99¿Í ¸®ºñÀü 102¸¦ ºñ±³ÇÑ´Ù°í ÇßÀ» ¶§, ÁÙ ´ÜÀ§·Î Â÷ÀÌ(diffs)¸¦ ó¸®ÇÑ °á°ú¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù. diff¸í·ÉÀº ±×³É µÎ °æ·Î¸¦ ´Ü¼øÈ÷ ºñ±³ÇÕ´Ï´Ù. ÇÏÁö¸¸, svn merge·Î À§ÀÇ µÎ ¿ÀºêÁ§Æ®¸¦ ºñ±³ÇßÀ» °æ¿ì¿¡´Â ¼­ºê¹öÀüÀº ÀÌ µÎ ÆÄÀÏÀÌ ¼­·Î ¿¬°üµÇÁö ¾Ê¾Ò´Ù´Â °ÍÀ» ÆľÇÇÏ°í ÀÌÀü ÆÄÀÏÀ» »èÁ¦ÇÑ ÈÄ »õ ÆÄÀÏÀ» Ãß°¡ÇÒ °ÍÀÔ´Ï´Ù. Áï D foo.cÈÄ A foo.c ÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.

´ëºÎºÐÀÇ º´ÇÕÀº ¼­·Î °èÅëÀûÀ¸·Î ¿¬°üµÈ Æ®¸®¸¦ ºñ±³ÇÏ´Â ÀÛ¾÷À» ÇÊ¿ä·Î ÇÏ°í, svn mergeÀÇ ±âº» Çൿµµ ±×·± °Í ÀÔ´Ï´Ù. ÇÏÁö¸¸, ¶§¶§·Î ¼­·Î ¿¬°üµÇÁö ¾ÊÀº Æ®¸®¸¦ º´ÇÕÇÏ´Â °æ¿ìµµ ÀÖÀ» °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ¼­·Î ´Ù¸¥ º¥´õ¿¡¼­ ¸±¸®ÁîÇÑ µÎ°³ÀÇ ¼Ò½º ÄÚµå Æ®¸®¸¦ ¹Þ¾Ò´Ù°í ÇսôÙ(¡°º¥´õ ºê·£Ä¡µé¡±ÀåÀ» Âü°íÇØ ÁֽʽÿÀ). ¸¸¾à¿¡ svn merge¸í·ÉÀ» ½á¼­ µÎ Æ®¸®¸¦ º´ÇÕÇÏ·Á°í ÇÑ´Ù¸é ù ¹ø° Æ®¸®°¡ ¸ðµÎ »èÁ¦µÇ°í µÎ ¹ø° Æ®¸®°¡ ¸ðµÎ Ãß°¡µÇ´Â °ÍÀ» º¸°Ô µÉ °ÍÀÔ´Ï´Ù!

ÀÌ °æ¿ì¿¡´Â svn merge ¸í·ÉÀÌ °æ·Î¸¸ »ç¿ëÇÏ°í, ÆÄÀϵé°ú µð·ºÅ͸®µéÀÇ ¿¬°ü °ü°è´Â ¹«½ÃÇϸ鼭 ºñ±³ÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. º´ÇÕ ½Ã¿¡ --ignore-ancestry ¿É¼ÇÀ» Ãß°¡Çϸé svn diff¸í·É°ú °°Àº ÇüÅ·Πµ¿ÀÛÇÕ´Ï´Ù. (¹Ý´ë·Î, svn diff¸í·É¿¡ --notice-ancestry ¿É¼ÇÀ» Ãß°¡Çϸé diff°¡ mergeó·³ ÇൿÇÕ´Ï´Ù.)


1.3.3. ºê·£Ä¡(branch) ÀüüÀÇ merge

Áö±Ý, »ý°¢ÇØ ¿Â ¿¹¸¦ ¿Ï°á½ÃÅ°±â (À§ÇØ)¶§¹®¿¡, Á¶±Ý ½Ã°£ÀÌ °æ°úÇß´Ù°í ÇÕ´Ï´Ù. ¸çÄ¥Àΰ¡ °æ°úÇØ, ¸¹Àº º¯°æÀÌ trunk¿¡µµ ¼±¹ÝÀÇ »çÀûÀÎ ºê·£Ä¡(branch)¿¡µµ ¿ÀÄÚ½Ã. ±×¸®°í ´ç½ÅÀº »çÀûÀÎ ºê·£Ä¡(branch)»ó¿¡¼­ÀÇ ÀÛ¾÷À» ³¡³Â´Ù°í ÇսôÙ; ±â´É Ãß°¡, ¶Ç´Â ¹ö±× ÇȽº(bug-fix)°¡ ¿Ï·áÇØ, ´Ù¸¥ »ç¶÷ÀÌ ±× ºÎºÐÀ» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) Çϱâ À§Çؼ­, ´ç½ÅÀÇ ºê·£Ä¡(branch)»óÀÇ º¯°æÁ¡ÀÇ ¸ðµç °ÍÀ» trunk ¿¡ merge ÇÏ°í ½Í´Ù°í ÇÕ´Ï´Ù.

±×·±µ¥, ÀÌ·¯ÇÑ »óȲ¿¡¼­´Â, ¾î¶»°Ô ÇØsvn merge (À»)¸¦ »ç¿ëÇϸé ÁÁÀº °ÍÀϱî¿ä? ÀÌ Ä¿¸àµå´Â µÎ °³ÀÇ Æ®¸®¸¦ ºñ±³ÇØ, ±× Â÷ºÐÀ» ÀÛ¾÷ Ä«ÇÇ¿¡ Àû¿ëÇÏ´Â °ÍÀÎ °ÍÀ» »ý°¢ÇØ ³» ÁÖ¼¼¿ä. º¯°æÁ¡ (À»)¸¦ ¹Þ±â À§Çؼ­(¶§¹®¿¡)´Â, ´ç½ÅÀº trunkÀÇ ÀÛ¾÷ Ä«ÇǸ¦ ¼Õ¿¡ ³ÖÀ» ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ¿©±â¿¡¼­´Â ´ç½ÅÀº(¿ÏÀüÇÏ°Ô °»½ÅµÈ) ¿ø·¡ÀÇ ÀÛ¾÷ Ä«ÇǸ¦ ¾ÆÁ÷ °¡Áö°í ÀÖ´ÂÁö, /trunk/calcÀÇ »õ·Î¿î ÀÛ¾÷ Ä«ÇǸ¦ üũ¾Æ¿ô ÇÑ °Í (¿Í)°ú °¡Á¤ÇÕ´Ï´Ù.

±×·¯³ª, ¾î´À Æ®¸®¿Í ¾î´À Æ®¸®¸¦ ºñ±³Çϸé ÁÁÀº °ÍÀϱî¿ä? Á¶±Ý »ý°¢Çϸé(ÀÚ), ±× ´ë´äÀº ºÐ¸íÇÏ°Ô »ý°¢µË´Ï´Ù: ´ÜÁö trunkÀÇ ÃÖ½ÅÀÇ Æ®¸®¿Í ´ç½ÅÀÇ ºê·£Ä¡(branch)ÀÇ ÃÖ½ÅÀÇ Æ®¸®ÀÔ´Ï´Ù. ±×·¯³ª, Á¶½ÉÇØ ÁÖ¼¼¿ä ÀÌ °¡Á¤ÀºÀ߸øÇØÀÔ´Ï´Ù. ±×¸®°í ÀÌÀü Â÷ÀÌ¿¡, ´ëºÎºÐÀÇ ÃʽÉÀÚ´Â ´çÇØ ¹ö¸³´Ï´Ù! svn merge´Âsvn diff¿Í °°ÀÌ ÀÏÇϹǷΠ¸¶Áö¸· Æ®··Å©¿Í ºê·£Ä¡(branch)ÀÇ Æ®¸®ÀÇ ºñ±³´Â ´ÜÁö ´ç½ÅÀÌ ÀÚ½ÅÀÇ Æ®¸®¿¡ ´ëÇؼ­ °£ º¯°æÁ¡¸¸À» ³ªÅ¸³»´Â °ÍÀ̾ƴϴ٠ÀǸ¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù. ±×·¯ÇÑ ºñ±³´Â, ¸Å¿ì ¸¹Àº º¯°æÀ» Ç¥½ÃÇÏ°ÚÁö¿ä: ±×°ÍÀº, ´ç½ÅÀÇ ºê·£Ä¡(branch)¿¡ ´ëÇÑ Ãß°¡Á¡¸¸À» Ç¥½ÃÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ´ç½ÅÀÇ ºê·£Ä¡(branch)¿¡¼­´Â °áÄÚ ÀϾÁö ¾Ê¾Ò´Ù, trunk»óÀÇ º¯°æÁ¡ÀÇÃë¼Òµµ Ç¥½ÃÇØ ¹ö¸®°ÚÁö¿ä.

´ç½ÅÀÇ ºê·£Ä¡(branch)»ó¿¡ ÀϾ º¯°æ¸¸À» ³ªÅ¸³»·Á¸é , ´ç½ÅÀÇ ºê·£Ä¡(branch)ÀÇ Ãʱ⠻óÅÂ¿Í ÃÖÁ¾ÀûÀÎ »óŸ¦ ºñ±³ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. svn logÄ¿¸àµå¸¦ ´ç½ÅÀÇ ºê·£Ä¡(branch)»ó¿¡¼­ »ç¿ëÇϸé, ±× ºê·£Ä¡(branch)´Â ¸®ºñÀü 341À¸·Î ¸¸µé¾îÁø °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í, ºê·£Ä¡(branch) ÀÇ ÃÖÁ¾ÀûÀÎ »óÅ´Â, ´ÜÁö, HEAD ¸®ºñÀüÀ» ÁöÁ¤ÇÏ¸é ¾Ð´Ï´Ù.

°á±¹, ÃÖÁ¾ÀûÀÎ merge 󸮴 ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù:

$ cd trunk/calc

$ svn merge -r 341:HEAD http://svn.example.com/repos/branches/calc/my-calc-branch
U   integer.c
U   button.c
U   Makefile

$ svn status
M   integer.c
M   button.c
M   Makefile

[examine the diffs, compile, test, etc. ]

$ svn commit -m "Merged all my-calc-branch changes into the trunk. "

1.4. ÀúÀå¼Ò(repository)·ÎºÎÅÍÀÇ º¯°æÀ» »èÁ¦ÇÑ´Ù

svn merge °¡ ÁÁ°Ô ÀÖ´Â »ç¿ë¹ýÀº ¹ú½á Ä¿¹ÔÇß´Ù º¯°æÀ» ·Ñ¹é(rollback) ÇÏ´Â °ÍÀÔ´Ï´Ù. integer.c (À»)¸¦ º¯°æÇÑ ¸®ºñÀü 303ÀÇ º¯°æÀº ¿ÏÀüÇÏ°Ô ½Ç¼ö¿´´Ù°í ÇÕ´Ï´Ù. ±×°ÍÀº Ä¿¹ÔÇØ¾ß ÇÏÁö´Â ¾Ê¾Ò½À´Ï´Ù. ÀÛ¾÷ Ä«ÇÇÀÇ º¯°æÀ» Ãë¼ÒÇϴµ¥ (Àº)´Âsvn merge ¸¦ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ±× ÈÄ·Î ·ÎÄà ÀÇ º¯°æÀ» ÀúÀå¼Ò(repository)¿¡ Ä¿¹ÔÇÕ´Ï´Ù. ÇÏÁö ¾ÊÀ¸¸é ¾È µÇ´Â °ÍÀº, ¹Ý´ë ¹æÇâÀÇÂ÷ºÐÀ» ÁöÁ¤ÇÏ´Â °Í »ÓÀÔ´Ï´Ù:

$ svn merge -r 303:302 http://svn.example.com/trunk/calc
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.

ÀúÀå¼Ò(repository) ¸®ºñÀü¿¡ ´ëÇÑ Çϳª ´õÀÇ »ý°¢Àº, ±×°ÍÀ» ƯÁ¤ÀÇ º¯°æÀÇ ¸ðÀÓÀ̶ó°í »ý°¢ÇÏ´Â °ÍÀÔ´Ï´Ù(¸î°³ÀÇ ¹öÀü °ü¸® ½Ã½ºÅÛ¿¡¼­´Â, ÀÌ°ÍÀ»,changesets¿Í ºÎ¸£°í ÀÖ½À´Ï´Ù). -r ½ºÀ­Ä¡¸¦ »ç¿ëÇØ svn merge ¸¦ È£ÃâÇÏ´Â °ÍÀ¸·Î, ¾î´À üÀÎÁö ¼¼Æ®¸¦ Àû¿ëÇÏ´ÂÁö, ȤÀº ÀÖ´Â ¹üÀ§ÀÇ Ã¼ÀÎÁö ¼¼Æ® ÀüºÎ¸¦ ÀÛ¾÷ Ä«ÇÇ¿¡ Àû¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¿ì¸®ÀÇ °æ¿ì¶ó¸ésvn merge (À»)¸¦ »ç¿ëÇØ Ã¼ÀÎÁö ¼¼Æ®#303¸¦ ÀÛ¾÷ Ä«ÇÇ¿¡¹Ý´ë ¹æÇâÀ¸·Î Àû¿ëÇÕ´Ï´Ù.

ÀÌ·¯ÇÑ º¯°æÀÇ Ãë¼Ò´Â, º¸Åësvn merge ÀÇ Á¶ÀÛ¿¡ Áö³ªÁö ¾Ê±â ¶§¹®¿¡, ÀÛ¾÷ Ä«ÇÇ°¡ ¹Ù¶ó´Â »óÅ°¡ µÇ¾ú´ÂÁö ¾î¶°Çß´ÂÁö´Â svn status ¿Ísvn diff ¸¦ »ç¿ëÇÒ ¼ö°¡ ÀÖ¾î ±× ÈÄsvn commit ·Î ÀúÀå¼Ò(repository)¿¡ ÃÖÁ¾ÀûÀÎ ¹öÀüÀ» º¸³¾ ¼ö°¡ ÀÖ´Ù, ¶ó°í ÇÏ´Â °ÍÀ» ´­·¯ µÎ¾î ÁÖ¼¼¿ä. Ä¿¹Ô ÈÄ´Â ÀÌ Æ¯º°ÇÑ Ã¼ÀÎÁö ¼¼Æ®´Â ÀÌ¹Ì HEAD ¸®ºñÀü¿¡´Â ¹Ý¿µµÇÁö ¾Ê½À´Ï´Ù.

ÀÌ·¸°Ô »ý°¢ÇÒÁöµµ ¸ð¸¨´Ï´Ù: ·Î Çϸé(ÀÚ), ±×°ÍÀº ¡¸Ãë¼Ò¡¹°¡ ¾Æ´Ï´Ù (ÀÌ)°¡ ¾Æ´Ñ°¡. º¯°æÀº ¾ÆÁ÷ ¸®ºñÀü 303¿¡ Á¸ÀçÇÏ°í ÀÖ´Â °ÍÀº, À̶ó°í. ¸¸¾à ´©±º°¡°¡calc ÇÁ·ÎÁ§Æ®ÀÇ ¸®ºñÀü 303 (¿Í)°ú 349ÀÇ »çÀÌÀÇ ¹öÀüÀ» üũ¾Æ¿ô Çß´Ù°í Çϸé(ÀÚ), À߸øÇß´Ù º¯°æÀ» ¹Þ¾ÆµéÀÌ´Â °ÍÀº ¾Æ´ÑÁö, ´Ù¸¥Áö, ¶ó°í.

¸»¾¸ÇϽô ´ë·Î. ¿ì¸®°¡, º¯°æÀÇ °Í"Ãë¼Ò"¿¡ ´ëÇØ ¸»ÇÒ ¶§, »ç½ÇÀº"HEAD·ÎºÎÅÍ ¾ø¾Ö´Â °Í"À» ¸»ÇÕ´Ï´Ù. ¿ø·¡ÀÇ º¯°æÀº ÀúÀå¼Ò(repository)ÀÇ È÷½ºÅ丮¿¡ ¿©ÀüÈ÷ ³²¾Æ ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ »óȲ¿¡¼­´Â ÀÌ°ÍÀ¸·Î ÃæºÐÇÕ´Ï´Ù. ¾î·µç ´ëºÎºÐÀÇ »ç¶÷µéÀº ÇÁ·ÎÁ§Æ®ÀÇ HEAD¸¦ µÚÂѴ´٠ÀÏ¿¡¸¸ Èï¹Ì°¡ Àֱ⠶§¹®ÀÔ´Ï´Ù. ±×·¯³ª, Ä¿¹Ô¿¡ °üÇÑ ¸ðµç Á¤º¸¸¦ »èÁ¦ÇÏ°í ½Í´Ù°í ÇÏ´Â ¿¹¿ÜÀûÀÎ »óȲµµ ÀÖ°ÚÁö¿ä. (¾Æ¸¶, ´©±º°¡°¡ ±ØºñÀÇ ¹®¼­¸¦ Ä¿¹ÔÇØ ¹ö¸°, µî) ÀÌ°ÍÀº ±×·¸°Ô ½¬¿î ÀÏÀÌ ¾Æ´Õ´Ï´Ù. SubversionÀº ÀǵµÀûÀ¸·Î °áÄÚ Á¤º¸°¡ ¾ø¾îÁöÁö ¾Ê°Ô ¼³°èµÇ°í Àֱ⠶§¹®ÀÔ´Ï´Ù. È÷½ºÅ丮·ÎºÎÅÍÀÇ ¸®ºñÀüÀÇ »èÁ¦´Â, ¿¬¼âÀûÀÎ ¿µÇâÀ» ÁÖ¾î ¸ðµç ÈÄ¼Ó ¸®ºñÀü°ú ¾Æ¸¶ ¸ðµç ÀÛ¾÷ Ä«ÇÇ¿¡ È¥¶õÀ» ÀÏÀ¸Åµ´Ï´Ù. [3]


1.5. ÀÛ¾÷ Ä«ÇÇÀÇ º¯È¯

svn switch Ä¿¸àµå´Â Á¸ÀçÇÏ°í ÀÖ´Â ÀÛ¾÷ Ä«ÇǸ¦ ´Ù¸¥ ºê·£Ä¡(branch)·Î º¯È¯ÇÕ´Ï´Ù. ÀÌ Ä¿¸àµå´Â ºê·£Ä¡(branch)·Î ÀÛ¾÷Çϴµ¥ Ç×»ó ÇÊ¿ä¶ó°í ÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù¸¸, À¯Àú¿¡ ´ëÇؼ­ Æí¸®ÇÑ ¼îÆ® ÄÆ (À»)¸¦ ÁغñÇÕ´Ï´Ù. ÀüÀÇ ¿¹·Î, »çÀûÀÎ ºê·£Ä¡(branch)¸¦ ¸¸µç µÚ, ±× »õ·Ó´Ù ÀúÀå¼Ò(repository) µð·ºÅ丮ÀÇ ÀÛ¾÷ Ä«ÇǸ¦ üũ¾Æ¿ô Çß½À´Ï´Ù. ±×·¸°Ô ÇÑ´Ù ´ë½Å¿¡, ´ÜÁö/trunk/calc ÀÇ ÀÛ¾÷ Ä«ÇǸ¦ »õ·Ó´Ù ºê·£Ä¡(branch)ÀÇ Àå¼ÒÀÇ Ä«ÇÇ·Î º¯°æÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù:

$ cd calc

$ svn info | grep URL
URL: http://svn.example.com/trunk/calc

$ svn switch http://svn.example.com/branches/calc/my-calc-branch
U   integer.c
U   button.c
U   Makefile
Updated to revision 341.

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

ºê·£Ä¡(branch)¿¡"½ºÀ­Ä¡"ÇÑ ÈÄ¿¡´Â, ÀÛ¾÷ Ä«ÇÇÀÇ ³»¿ëÀº ±× µð·ºÅ丮 (À»)¸¦ »õ·Ó°Ô üũ¾Æ¿ô ÇßÀ» °æ¿ì¿Í ¿ÏÀüÈ÷ °°Àº °ÍÀÌ µË´Ï´Ù. ±×¸®°í º¸Åë ÀÌ Ä¿¸àµå¸¦ »ç¿ëÇÏ´Â ÆíÀÌ º¸´Ù È¿À²ÀûÀÔ´Ï´Ù. ±×·¸´Ù°í ÇÏ´Â °ÍÀº, ´ëºÎºÐ ºê·£Ä¡(branch)´Â ¾ÆÁÖ Á¶±Ý ³»¿ëÀÌ ´Ù¸¦ »ÓÀÔ´Ï´Ù. ¼­¹ö´Â ±× ºê·£Ä¡(branch) µð·ºÅ丮 (À»)¸¦ ¹Ý¿µ½ÃÅ°±â À§Çؼ­(¶§¹®¿¡) ÀÛ¾÷ Ä«ÇÇ·Î ÇÏÁö ¾ÊÀ¸¸é ¾È µÇ´Â ÃÖ¼ÒÇÑÀÇ º¯°æ¸¸À» ¼Û½ÅÇÏ¸é »ð´Ï´Ù.

svn switch ´Â--revision (-r) ¿É¼ÇÀ» ÃëÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î, Ç×»ó ÀÛ¾÷ Ä«ÇÇ (À»)¸¦ ºê·£Ä¡(branch)ÀÇ"ÃֽŠ»óÅÂ"¿¡·Î ¿Å±æ ÇÊ¿ä°¡ ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù.

¹°·Ð, ´ëºÎºÐÀÇ ÇÁ·ÎÁ§Æ®´Âcalcº¸´Ù´Â Á» ´õ º¹ÀâÇØ, º¹¼öÀÇ ¼­ºê µð·ºÅ丮¸¦ Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù. Subversion À¯Àú´Â ºê·£Ä¡(branch)¸¦ ÀÌ¿ëÇÒ ¶§¿¡´Â ÀÚÁÖ(Àß), ƯÁ¤ÀÇ ¹æ½ÄÀ» ÇÕ´Ï´Ù. :

  1. ÇÁ·ÎÁ§Æ®ÀÇ'°£(trunk)'Àüü¸¦ »õ·Î¿î ºê·£Ä¡(branch) µð·ºÅ丮 ¿¡ Ä«ÇÇÇÑ´Ù.

  2. '°£(trunk)'ÀÇ ÀÛ¾÷ Ä«ÇÇÀÇÀϺθ¸À» ºê·£Ä¡(branch)¿¡ ¹Ð·¯ ÇÑ´Ù.

¹Ù²Ù¾î ¸»Çϸé(ÀÚ), À¯Àú°¡ ƯÁ¤ÀÇ ¼­ºê µð·ºÅ丮»ó¿¡¼­¸¸ ºê·£Ä¡(branch)ÀÇ ÀÛ¾÷ÀÌ ÀϾ´Ù ÀÏÀ» ¾Ë°í ÀÖ´Â °æ¿ì¿¡´Âsvn switch¸¦ »ç¿ëÇØ ºê·£Ä¡(branch)¿¡ ±× ¼­ºê µð·ºÅ丮¸¸À» À̵¿ÇÕ´Ï´Ù. (ȤÀº, ²÷Àº ÇϳªÀÇ ÀÛ¾÷ ÆÄÀÏ ¸¸À» ºê·£Ä¡(branch)¿¡ switch ÇÏ´Â °Í Á¶Â÷ ÀÖ½À´Ï´Ù! ) ±×¹æ¹ý¿¡¼­´Â, ÀÛ¾÷ Ä«ÇÇ ÀÇ °ÅÀÇ ¸ðµç °»½ÅÀ» º¸Åë'°£(trunk)'·ÎºÎÅÍ Á¾·¡ ´ë·Î ¹Þ´Â °ÍÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù¸¸, ¹Ù²Û ºÎºÐ¸¸Å­Àº º¯°æµÇ´Â ÀÏ ¾øÀÌ ³²½À´Ï´Ù(¸¸¾à ºê·£Ä¡(branch) ¿¡ ´ëÇؼ­ ´©±º°¡°¡ º¯°æÁ¡À» Ä¿¹ÔÇϱ⸸ ÇÏÁö ¾ÊÀ¸¸é). ÀÌ ±â´ÉÀº"È¥ÇÕ ÀÛ¾÷ Ä«ÇÇ" ±×·¸´Ù°í ÇÏ´Â °³³ä¿¡ ¿ÏÀüÈ÷ »õ·Î¿î Â÷¿øÀ» µ¡ºÙÀÌ°Ô µË´Ï´Ù ÀÛ¾÷ Ä«ÇÇ´Â ÀÛ¾÷ ¸®ºñÀüÀÇ È¥ÇÕÀ» Æ÷ÇÔÇÏ´Â °ÍÀÌ °¡´ÉÇÑ ÇÑ¿¡¼­´Â ¾ø°í, ÀúÀå¼Ò(repository) À§Ä¡ÀÇ È¥ÇÕµµ Æ÷ÇÔÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

¸¸¾à ÀÛ¾÷ Ä«ÇÇ°¡ ´Ù¸¥ ÀúÀå¼Ò(repository) À§Ä¡·ÎºÎÅÍÀÇ ½ºÀ­Ä¡ µÈ ¼­ºê Æ®¸® (À»)¸¦ ¸î°³Àΰ¡ Æ÷ÇÔÇÑ´Ù¸é, ±×°ÍÀº °è¼Ó º¸ÅëÀ¸·Î ±â´ÉÇÕ´Ï´Ù. °»½ÅÇϸé(ÀÚ), °¢°¢ÀÇ ¼­ºê Æ®¸®ÀÇ ÆÐÄ¡¸¦ ÀûÀýÈ÷ ¹Þ°ÚÁö¿ä. Ä¿¹ÔÇϸé(ÀÚ) ·ÎÄà ¼öÁ¤Àº ÇϳªÀÇ ºÒ°¡ºÐÀÇ º¯°æÀ» ÀúÀå¼Ò(repository)¿¡ Àû¿ëÇÏ°ÚÁö¿ä.

ÀúÀå¼Ò(repository) À§Ä¡ÀÇ È¥ÇÕÀ» ÀÛ¾÷ Ä«ÇÇ¿¡ ¹Ý¿µ½Ãų ¼ö ÀÖ½À´Ï´Ù¸¸, ÀÌ·¯ÇÑ ÀúÀå¼Ò(repository) À§Ä¡´Â ¸ðµÎ°°Àº ÀúÀå¼Ò(repository) ÀÇ ¾È¿¡ ¾øÀ¸¸é ¾ÈµË´Ï´Ù. SubversionÀÇ ÀúÀå¼Ò(repository)´Â ¾ÆÁ÷ ¼­·Î Åë½Å ÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ°ÍÀº Subversion1. 0ÀÌÈÄ¿¡ °èȹµÇ°í ÀÖ´Â ±â´ÉÀÔ´Ï´Ù. [4]

svn switch ´Â º»ÁúÀûÀ¸·Î´Âsvn update ÀÇ º¯Á¾À̹ǷÎ, °°Àº µ¿ÀÛÀ» °øÀ¯ÇÕ´Ï´Ù. ÀÛ¾÷ Ä«ÇÇÁßÀÇ ¾î¶°ÇÑ ·ÎÄÃÀÇ º¯°æµµ ÀúÀå¼Ò(repository)·ÎºÎÅÍ »õ·Î¿î µ¥ÀÌÅÍ°¡ ´êÀ» ¶§ º¸Á¸µË´Ï´Ù. ÀÌ°ÍÀ¸·Î ¸ðµç ¿µ¸®ÇÑ Àܱâ¼úÀÌ (µè)¹¯°Ô µË´Ï´Ù.

¿¹¸¦ µé¾î/trunk ÀÇ ÀÛ¾÷ Ä«ÇÇ°¡ ÀÖ¾î °Å±â¿¡ ¸î°³Àΰ¡ º¯°æÀ» ´õÇß´Ù°í ÇÕ´Ï´Ù. ±×¸®°í µ¹¿¬, »ç½ÇÀº ºê·£Ä¡(branch)¿¡ ÇÏ´Â º¯°æÀ̾ú´ø ÀÏ·Î ´«Ä¡Ã©´Ï´Ù. ¹®Á¦ ¾ø½À´Ï´Ù. ÀÛ¾÷ Ä«ÇǸ¦svn switch ±×¸®°í ºê·£Ä¡(branch)¿¡ ½ºÀ­Ä¡ Çصµ, ·ÎÄÃÀÇ º¯°æÀº ±×´ë·Î ³²½À´Ï´Ù. ±×¸®°í, ±×°ÍÀ» ºê·£Ä¡(branch)¿¡ ´ëÇؼ­ Å×½ºÆ®ÇØ, Ä¿¹ÔÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.


1.6. ű×

´Ù¸¥ ¹öÀü °ü¸®ÀÇ °³³ä¿¡,űװ¡ ÀÖ½À´Ï´Ù. ű״ ¾î¶² ½ÃÁ¡¿¡¼­ÀÇ ÇÁ·ÎÁ§Æ®ÀÇ"snapshot"ÀÔ´Ï´Ù. Subversion ±×·³ ÀÌ ¾ÆÀ̵ð¾î´Â ¹ú½á ´Ù¾çÇÑ Àå¼Ò¿¡ ÀÖ´Â °Íó·³ º¸ÀÔ´Ï´Ù. °¢°¢ ÀÇ ÀúÀå¼Ò(repository) ¸®ºñÀüÀº È®½ÇÈ÷ ±×°ÍÀÔ´Ï´ÙÁï, ±×°ÍÀº Ä¿¹Ô Á÷ÈÄÀÇ ÆÄÀÏ ½Ã½ºÅÛÀÇ snapshotÀÔ´Ï´Ù.

±×·¯³ª, »ç¶÷Àº ÀÚÁÖ Å±׿¡ ´ëÇؼ­ Àΰ£¿¡°Ô Ä£¼÷ÇÔÀÌ ÀÖ´Â À̸§À» ºÙÀÌ°í ½ÍÀ¸¸é »ý°¢ÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î,"release-1. 0"°ú °°Àº. ¶Ç, ÆÄÀÏ ½Ã½ºÅÛ ÀÇ Á» ´õ ÀÛÀº ¼­ºê µð·ºÅ丮ÀÇ snapshot¸¦ °®°í ½ÍÀº Àϵµ ÀÖ½À´Ï´Ù. °á±¹, ¾î´À ¼ÒÇÁÆ®ÀÇ ÀϺÎÀÇ release-1. 0 ÀÌ ¸®ºñÀü 4822ÀÇ Æ¯Á¤ÀÇ ¼­ºê µð·ºÅ丮 (ÀÌ)¶ó°í ÀÖ´Â °ÍÀ» »ý°¢ÇØ ³»´Â °ÍÀº °£´ÜÇÏÁö´Â ¾Ê½À´Ï´Ù.


1.6.1. °£´ÜÇÑ Å±×ÀÇ ÀÛ¼º

Çѹø ´õ,svn copy ÀÇ µµ¿òÀ» ¹Þ½À´Ï´Ù. ¸¸¾à HEAD ¸®ºñÀüÀÇ/trunk/calc ÀÇ ½º³À ¼îÆ®¸¦ ¸¸µé°í ½ÍÀ» ¶§¿¡´Â, ±× Ä«ÇǸ¦ ÃëÇϸé ÁÁ±â ¶§¹®¿¡ Çß´Ù:

$ svn copy http://svn.example.com/repos/trunk/calc \
           http://svn.example.com/repos/tags/calc/release-1. 0 \
      -m "Tagging the 1.0 release of the 'calc' project. "

Committed revision 351.

ÀÌ ¿¹¿¡¼­´Â/tags/calc µð·ºÅ丮°¡ ¹ú½á Á¸ÀçÇÏ°í ÀÖ´Â °ÍÀ¸·Î ÇÏ°í ÀÖ½À´Ï´Ù. Ä«ÇÇ ¿Ï·á ÈÄ, »õ·Ó´Ù release-1. 0 µð·ºÅ丮´Â, ´ç½ÅÀÌ Ä«ÇÇÇß´Ù ½ÃÁ¡ÀÇ HEAD ¸®ºñÀü¿¡ ´ëÇØ ÇÁ·ÎÁ§Æ®°¡ ¾î¶»°Ô º¸ÀÌ°í ÀÖ¾ú´ÂÁö¸¦ ½º³À ¼îÆ®·Î¼­ ¿µ¿øÈ÷ ³²±â´Â °ÍÀÔ´Ï´Ù. ¹°·Ð, ¾î´À ¸®ºñÀüÀ» Ä«ÇÇÇұ ÀÓÇؼ­ Á» ´õ Á¤È®ÇÏ°í ½ÍÀ¸¸é »ý°¢ÇÒÁöµµ ¸ð¸¨´Ï´Ù. ´Ù¸¥ »ç¶÷ÀÌ ´ç½ÅÀÌ º¸Áö ¾ÊÀ» ¶§¿¡ ÇÁ·ÎÁ§Æ®¿¡ ´ëÇØ º¯°æÁ¡À» Ä¿¹ÔÇÏ°í ÀÖ¾úÀ»Áöµµ ¸ð¸£Áö ¾Ê±â ¶§¹®¿¡. ¸¸¾à ´ç½ÅÀÌ /trunk/calc ÀÇ ¸®ºñÀü 350ÀÌ ÀÚ½ÅÀÇ °¡Áö°í ½ÍÀº ½º³À ¼îÆ®¶ó°í ¾Ë°í ÀÖÀ¸¸ésvn copy Ä¿¸àµå¿¡ -r 350À» ÁöÁ¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

±×·¸Áö¸¸ Á¶±Ý ±â´Ù·Á ÁÖ¼¼¿ä: ÀÌ ÅÂ±× ÀÛ¼ºÀÇ ¼ö¼ÓÀº ºê·£Ä¡(branch)¸¦ ¸¸µç´Ù À§ÇØ(¶§¹®¿¡) »ç¿ëÇØ ¿Â ¼ö¼Ó°ú °°Áö ¾Ê¾Æ? ½ÇÀº ±×·¸½À´Ï´Ù. Subversion ¿¡¼­´Â ÅÂ±×¿Í ºê·£Ä¡(branch)¿¡´Â Â÷ÀÌ´Â ¾ø½À´Ï´Ù. ¾çÂÊ ¸ðµÎ Ä«ÇÇ·Î ¸¸µé¾îÁø º¸Åë µð·ºÅ丮ÀÔ´Ï´Ù. Á¤È®È÷ ºê·£Ä¡(branch)¿Í °°ÀÌ Ä«ÇÇµÈ µð·ºÅ丮°¡"ű×"ÀÌ´Ù°í ¸»ÇØÁö´Â °ÍÀº, ´ÜÁö Àΰ£À̱׷¸°Ô Ãë±ÞÇϱâ·Î °áÁ¤Ç߱⠶§¹®¿¡, ´Ù¸¸ ±×°Í »ÓÀÔ´Ï´Ù. ±× µð·ºÅ丮¿¡ ¾Æ¹«µµ Ä¿¹ÔÇÏÁö ¾Ê´Â ÇÑ, ±×°ÍÀº ¿µ¿øÈ÷ snapshot·Î¼­ ³²½À´Ï´Ù. ¸¸¾à ´©±º°¡°¡ °Å±â¿¡ Ä¿¹Ô Çϱ⠽ÃÀÛÇϸé(ÀÚ), ±×°ÍÀº ºê·£Ä¡(branch)°¡ µË´Ï´Ù.

¸¸¾à ÀúÀå¼Ò(repository)¸¦ °ü¸®ÇÏ°í ÀÖ´Ù¸é, ű׸¦ °ü¸®ÇÏ·Á¸é 2ÅëÀÇ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ÃÖÃÊÀÇ ¾îÇÁ·ÎÄ¡´Â,"À¯Àú ¸Ã±è"ÀÔ´Ï´Ù. ÇÁ·ÎÁ§Æ® Æú¸®½Ã·Î¼­ ´ç½ÅÀÇ Å±׸¦ µÎ´Â Àå¼Ò¸¦ °áÁ¤ÇØ ¸ðµç À¯Àú¿¡°Ô ±× µð·ºÅ丮¸¦ Ä«ÇÇÇÒ ¶§¿¡´Â ¾î¶»°Ô Ãë±ÞÇÒ±î (À»)¸¦ ¾Ë¸³´Ï´Ù. (Áï, ¸ðµÎ°¡ °Å±â¿¡ Ä¿¹ÔÇÏÁö ¾Ê°Ô ¾à¼ÓÇÕ´Ï´Ù) µÎ¹ø°ÀÇ ¹æ½ÄÀº Á» ´õ °¡Ä¡°¡Ä¡ÀÔ´Ï´Ù. Subversion°¡ Á¦°øÇÏ´Â ¾×¼¼½º Á¦¾î ½ºÅ©¸³Æ®ÀÇ ¾î¶² °ÍÀÎÁö¸¦ »ç¿ëÇØ, ÅÂ±× area¿¡´Â »õ·Î¿î Ä«ÇǸ¦ ¸¸µå´Â °Í¸¸ÀÌ ÇÒ ¼ö ÀÖ¾î, ±× ÀÌ¿ÜÀÇ Á¶ÀÛÀ» ±ÝÁöÇÕ´Ï´Ù. (###cross-ref a section that demonstrates how to use these scripts? ). °¡Ä¡°¡Ä¡ ¹æ½ÄÀº, º¸ÅëÀº ºÒÇÊ¿äÇÕ´Ï´Ù. ¸¸¾à À¯Àú°¡ À߸øÇØ ÅÂ±× µð·ºÅ丮 (À¸)·Î ÀÚ½ÅÀÇ º¯°æÀ» Ä¿¹ÔÇØ ¹ö¸®¸é(ÀÚ), ÀüÀÇ ÀåÀ¸·Î ¼³¸íÇÑ ¹æ¹ýÀ¸·Î ±× º¯°æÀ» Ãë¼ÒÇϸé ÁÁ±â ¶§¹®¿¡. °á±¹, SubversionÀº ¹öÀü °ü¸® ½Ã½ºÅÛÀÎ °ÍÀÔ´Ï´Ù.


1.6.2. º¹ÀâÇÑ Å±×ÀÇ ÀÛ¼º

°¡²û, ÇϳªÀÇ ¸®ºñÀüÀÇ ÇϳªÀÇ µð·ºÅ丮º¸´Ù Á» ´õ º¹ÀâÇÑ snapshot¸¦ °®°í ½ÍÀº ÀÏÀÌ ÀÖ½À´Ï´Ù.

¿¹¸¦ µé¾î, ÇÁ·ÎÁ§Æ®°¡ ¿ì¸®ÀÇcalc º¸´Ù Á» ´õ Å©´Ù°í ÇÕ´Ï´Ù. ¸¹Àº ¼­ºê µð·ºÅ丮¿Í Á» ´õ ¸¹ÀÌ ÀÇ ÆÄÀÏÀÌ ÀÖ´Ù°í ÇÕ´Ï´Ù. ÀÏÀÇ °úÁ¤¿¡¼­, ƯÁ¤ÀÇ ±â´É°ú ¹ö±× ¼öÁ¤À» Æ÷ÇÔÇß´Ù ÀÛ¾÷ Ä«ÇÇ°¡ ÇÊ¿äÇÏ°Ô µÇ¾ú´Ù°í ÆÇ´ÜÇÕ´Ï´Ù. ƯÁ¤ÀÇ ¸®ºñÀüÀÇ ÆÄÀÏ°ú µð·ºÅ丮¸¦ ¼±ÅÃÇØ(svn update -r liberally ¸¦ »ç¿ëÇØ), ÀÌ°ÍÀ» ¸¸µé ¼öµµ ÀÖ°í, ƯÁ¤ÀÇ ºê·£Ä¡(branch)¿¡ ÆÄÀÏ°ú µð·ºÅ丮¸¦ ½ºÀ­Ä¡ ÇÏ´Â °Í¿¡ ÀÇÇصµ ÇÒ ¼ö ÀÖ½À´Ï´Ù. (svn switch¸¦ »ç¿ëÇÑ´Ù) ÀÌ°ÍÀ» Çϸé(ÀÚ), ´ç½Å°ú ÀÛ¾÷ Ä«ÇÇ´Â ´Ù¸¥ ¸®ºñÀüÀ¸·ÎºÎÅÍ µÇ´Â ´Ù¸¥ ÀúÀå¼Ò(repository) À§Ä¡ÀÇ ´ÙÀ½ ¹þ±â°¡ µË´Ï´Ù. ±×·¯³ª Å×½ºÆ® ÈÄ, ÀÚ½ÅÀÌ È®½ÇÈ÷ ÇÊ¿ä¿Í ÇÏ°í ÀÖ´Â Æí¼ºÀÎ °ÍÀ» ¾Ë ¼ö ÀÖ¾ú½À´Ï´Ù.

ÀÚ snapshot¸¦ ÃëÇÕ´Ï´Ù. ÇϳªÀÇ URL¸¦ ÀÛ¾÷ÇÏ°í ÀÖÁö ¾Ê´Â ´Ù¸¥ Àå¼Ò¿¡ Ä«ÇÇÇÕ´Ï´Ù. ÀÌ °æ¿ì, ÇÏ°í ½ÍÀº °ÍÀº ƯÁ¤ÀÇ ÀÛ¾÷ Ä«ÇÇ »óÅ ±×¸®°í, ±×°ÍÀ» ÀúÀå¼Ò(repository)¿¡ °Ý³³ÇÏ°í ½Í½À´Ï´Ù. Çà¿îÀÇ ÀÏ·Î svn copy ´Â ½ÇÁ¦·Î´Â 4 Á¾·ù°¡ ´Ù¸¥ »ç¿ë¹ýÀÌ ÀÖ½À´Ï´Ù. (Chapter 8À» Àоî ÁÖ¼¼¿ä) ±× Áß¿¡´Â ÀÛ¾÷ Ä«ÇÇ Æ®¸® (À»)¸¦ ÀúÀå¼Ò(repository)¿¡ Ä«ÇÇÇÑ´Ù, ¶ó°í ÇÏ´Â °Íµµ ÀÖ½À´Ï´Ù:

$ ls
. /    ../   my-working-copy/

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

Committed revision 352.

ÀÌ°ÍÀ¸·Î ÀúÀå¼Ò(repository)¿¡ »õ·Î¿î µð·ºÅ丮°¡ »ý°å½À´Ï´Ù. /tags/calc/mytagÀÔ´Ï´Ù. ÀÌ°ÍÀº ´ç½ÅÀÇ ÀÛ¾÷ Ä«ÇÇ ÀÇ Á¤È®ÇÑ snapshotÀԴϴ٠ȥÇÕ ¸®ºñÀü, URL ±×¸®°í ¹æ¹ýÀ̶ó°íÀÔ´Ï´Ù.

´Ù¸¥ À¯Àú´Â ÀÌ ±â´ÉÀÇ Àç¹ÌÀÖ´Â »ç¿ë¹ýÀ» ã¾Æ³Â½À´Ï´Ù. °¡²û, ÀÚ½ÅÀÇ ÀÛ¾÷ Ä«ÇÇ¿¡ ·ÎÄÃÀÎ ¼öÁ¤À» Çß´Ù ºê·£Ä¡(branch)°¡ ÀÖÁö¸¸, ±×°ÍÀ» ´Ù¸¥ ¸â¹ö¿¡°Ô º¸¿© ÁÖ°í ½Í´Ù°í ÇÏ´Â °Í °°Àº »óȲÀÔ´Ï´Ù. svn diff ¸¦ »ç¿ëÇØ ÆÐÄ¡ ÆÄÀÏÀ» º¸³»´Â(±×°ÍÀº Æ®¸®ÀÇ º¯°æÀ» ÃëµæÇÒ ¼ö ¾ø½À´Ï´Ù) ´ë½Å¿¡, svn copy¸¦ »ç¿ëÇØ, ÀÛ¾÷ Ä«ÇǸ¦ ÀúÀå¼Ò(repository)ÀÇ »çÀûÀÎ area¿¡"¾÷ ·Îµå"ÇÕ´Ï´Ù. ´Ù¸¥ ¸â¹ö´Â ÀÛ¾÷ Ä«ÇǸ¦ »õ·Ó°Ô üũ¾Æ¿ô ÇÏ´ÂÁö,cvs merge (À»)¸¦ »ç¿ëÇØ º¯°æÁ¡¸¸À» ¹ÞÀ» ¼ö°¡ ÀÖ½À´Ï´Ù.


1.7. ºê·£Ä¡(branch)ÀÇ °ü¸®

¿©±â±îÁö·Î, SubversionÀº ¸Å¿ì À¯¿¬ÇÑ ½Ã½ºÅÛÀÎ °ÍÀÌ ¾Ë¾Æ ¹ÞÀ» ¼ö ÀÖ¾ú´ÂÁö¶ó°í »ý°¢ÇÕ´Ï´Ù. µð·ºÅ丮ÀÇ Ä«ÇǶó°í ÇÏ´Â °°Àº ±âº»ÀûÀÎ ±¸Á¶ À§¿¡ ºê·£Ä¡(branch)µµ ű׵µ ½ÇÀåÇÏ°í ÀÖ¾î, ºê·£Ä¡(branch)µµ ű׵µ º¸Åë ÆÄÀÏ ½Ã½ºÅÛÀÇ °ø°£¾È¿¡ ÀÖÀ¸¹Ç·Î, ¸¹Àº »ç¶÷µéÀº SubversionÀÇ ±¸Á¶¿¡ ³î¶ø´Ï´Ù. ±×°ÍÀº³Ê¹« À¯¿¬ÇÑÁ¤µµ ÀÔ´Ï´Ù. ÀÌ ¸¶µð¿¡¼­´Â ½Ã°£ °æ°ú¿Í ÇÔ²² ¾î¶»°Ô µ¥ÀÌÅ͸¦ ¹èÄ¡ÇØ °ü¸®ÇÏ´Â °ÍÀÌ ÁÁÀº °Íó·³ ºÙ¾î, Á¶±Ý ¼³¸íÇÕ´Ï´Ù.


1.7.1. ÀúÀå¼Ò(repository)ÀÇ ·¹À̾ƿô

ÀúÀå¼Ò(repository)ÀÇ Æí¼º¿¡´Â ¾î´À Á¤µµ, Ç¥ÁØÈ­ µÈ, ÃßõÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ »ç¶÷µéÀºtrunkµð·ºÅ丮 ¿¡ °³¹ßÀÇ"ÁÖ°è", ºê·£Ä¡(branch)ÀÇ Ä«ÇÇ°¡ ÀÖ´Âbranches µð·ºÅ丮, ±×¸®°í ű×ÀÇ Ä«ÇÇ°¡ ÀÖ´Âtagsµð·ºÅ丮 (À»)¸¦ ³Ö½À´Ï´Ù. ÀúÀå¼Ò(repository)°¡ ´Ü ÇϳªÀÇ ÇÁ·ÎÁ§Æ®¸¦ Æ÷ÇÔÇÑ °æ¿ì¿¡´Â ÀÚÁÖ, ÀÌ ¼¼ °³ÀÇ µð·ºÅ丮¸¦ ÀúÀå¼Ò(repository) ÃÖ»óÁ¤µµ¿¡ ¸¸µì´Ï´Ù:

/trunk
/branches
/tags

ÀúÀå¼Ò(repository)°¡ º¹¼ö ÇÁ·ÎÁ§Æ®¸¦ Æ÷ÇÔÇÑ °æ¿ì´Â, ºê·£Ä¡(branch)¿¡ ÀÇÇØ ¹èÄ¡¸¦ À妽ºÈ­ÇÕ´Ï´Ù. :

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

¶Ç ÇÁ·ÎÁ§Æ®¿¡ µû¶ó¼­´Â :

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

¹°·Ð, ÀÌ Ç¥ÁØÀûÀÎ ·¹À̾ƿôÀ» ¹«½ÃÇصµ ±¦Âú½À´Ï´Ù. ´ç½Å°ú ÆÀÀÌ °¡Àå ÀÛ¾÷Çϱ⠽±°Ô, ÀÌ ·¹À̾ƿôÀº ¾î¶»°Ô º¯È­½ÃÄѵµ ±¦Âú½À´Ï´Ù. ¾î¶² °ÍÀ» ¼±ÅÃÇصµ ±×°ÍÀº ¿µ±¸È÷ °íÁ¤µÈ °ÍÀÌ ¾Æ´Õ´Ï´Ù. ¾ðÁ¦¶óµµ ÀúÀå¼Ò(repository)¸¦ ÀçÆí¼º ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ºê·£Ä¡(branch)¿Í ű״ º¸Åë µð·ºÅ丮 ¿¡ Áö³ªÁö ¾Ê±â ¶§¹®¿¡svn moveÄ¿¸àµå¸¦ »ç¿ëÇϸé ÁÁ¾ÆÇÏ´Â ´ë·Î À̵¿, ¸íĪ º¯°æÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾î´À ·¹À̾ƿôÀ¸·ÎºÎÅÍ ´Ù¸¥ ·¹À̾ƿô¿¡ÀÇ º¯È¯Àº ´ÜÁö ¼­¹öÃø¿¡¼­ÀÇ ¸îȸÀΰ¡ÀÇ À̵¿ÀÇ À̾߱Ⱑ µË´Ï´Ù. ¸¸¾à ÀúÀå¼Ò(repository)ÁßÀÇ Æí¼º¿¡ ¹«¾ùÀΰ¡ ¸¶À½¿¡ µéÁö ¾Ê´Â °÷ÀÌ ÀÖ´Ù¸é, µð·ºÅ丮 ¿¡ °ü·ÃÇÑ Àܱâ¼úÀ» »ç¿ëÇØ ÁÖ¼¼¿ä.


1.7.2. µ¥ÀÌÅÍÀÇ ¼ö¸í

Subversion ¸ðµ¨ÀÇ ´Ù¸¥ ÁÁÀº ±â´ÉÀ¸·Î¼­´Â ´Ù¸¥ ¹öÀü °ü¸®µÈ ¾ÆÀÌÅÛ°ú °°ÀÌ, ºê·£Ä¡(branch)¿Í ű״ À¯ÇÑÀÇ ¼ö¸í ¹Û¿¡ °¡ÁöÁö ¾Ê´Â´Ù °°°Ôµµ ÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾îcalcÇÁ·ÎÁ§Æ® ÀÇ °³ÀÎÀûÀÎ ºê·£Ä¡(branch)»ó¿¡¼­ ¸ðµç ÀÛ¾÷ÀÌ ¿Ï·áÇß´Ù°í ÇÕ´Ï´Ù. ¸ðµç º¯°æÀ»,/trunc/calc¿¡ merge ÇÑ ÈÄ¿¡´Â ±× °³ÀÎÀûÀÎ ºê·£Ä¡(branch)ÀÇ µð·ºÅ丮 ¿ÏÀüÈ÷ ¼Ò¿ë ¾ø°Ô µË´Ï´Ù:

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

Committed revision 375.

ÀÌ°ÍÀ¸·Î ºê·£Ä¡(branch)´Â ¾ø¾îÁ® ¹ö·È½À´Ï´Ù. ¹°·Ð Á¤¸»·Î »èÁ¦µÇ¾ú´Ù (¶æ)ÀÌÀ¯°¡ ¾Æ´Õ´Ï´Ù: µð·ºÅ丮´Â ´ÜÁö HEAD ¸®ºñÀüÀ¸·ÎºÎÅÍ ¾ø¾îÁ³´Ù ¸¸À¸·Î, ¾Æ¹«µµ ¹ø°Å·Ó°Ô ÇÒ ¼ö ÀÖ´Â °ÍÀº ¾ø¾îÁ³½À´Ï´Ù. ¸¸¾à ÀÌÀüÀÇ ¸®ºñÀü (À»)¸¦ º¸°í ½ÍÀº °æ¿ì´Â, (svn checkout -r, svn switch -r, ȤÀº svn list -r¸¦ »ç¿ëÇØ) ³°Àº ºê·£Ä¡(branch)¸¦ ¾ðÁ¦¶óµµ º¼ ¼ö°¡ ÀÖ½À´Ï´Ù.

»èÁ¦ÇÑ µð·ºÅ丮¸¦ ¿­¶÷ÇÏ´Â °Í ¸¸À¸·Î´Â ºÒÃæºÐÇÑ °æ¿ì´Â, ¾ðÁ¦¶óµµ µÇµ¹¸± ¼öµµ ÀÖ½À´Ï´Ù. µ¥ÀÌÅÍÀÇ restore´Â Subversion¿¡¼­´Â ¹®Á¦¾ø½À´Ï´Ù. HEAD¿¡ µÇµ¹¸®°í ½ÍÀº »èÁ¦ µð·ºÅ丮(¶Ç´Â ÆÄÀÏ)°¡ ÀÖ´Â °æ¿ì´Â, ´ÜÁö svn copy -r ¸¦ »ç¿ëÇØ ³°Àº ¸®ºñÀüÀ¸·ÎºÎÅÍ Ä«ÇÇÇØ ÁÖ¼¼¿ä:

$ svn copy -r 374 http://svn.example.com/repos/branches/calc/my-calc-branch \
                  http://svn.example.com/repos/branches/calc/my-calc-branch

Committed revision 376.

¿ì¸®ÀÇ ¿¹¿¡¼­´Â °³ÀÎÀûÀÎ ºê·£Ä¡(branch)´Â ºñ±³Àû ªÀº »ýÁ¸ ½Ã°£À» °¡Áý´Ï´Ù. ¹ö±×¸¦ °íÄ¡°Å³ª »õ·Î¿î ±â´ÉÀ» Ãß°¡Çϴµ¥ ÀÌ¿ëÇ߱⠶§¹®¿¡ÀÔ´Ï´Ù. ÀÛ¾÷ÀÌ ³¡³ª¸é, ºê·£Ä¡(branch)ÀÇ ¼ö¸íµµ °Å±â¼­ ¸¶Áö¸·ÀÔ´Ï´Ù. ±×·¯³ª, °³¹ß ³»¿ë¿¡ µû¶ó¼­´Â ¸Å¿ì ±ä ½Ã°£¿¡ °ÉÃļ­ µÎ °³ÀÇ ºê·£Ä¡(branch)°¡ º´ÇàÇØ °è¼Ó »ç´Â Àϵµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¾ÈÁ¤ÆÇÀÇcalcÇÁ·ÎÁ§Æ®¸¦ °ø¿¡ ¸±¸®½º ÇÒ ¶§°¡ ¿Í, ±× ¼ÒÇÁÆ®ÀÇ ¹ö±×¸¦ ÃëÇϴµ¥´Â ¸î°³¿ù°É¸°´Ù°í ÇÕ´Ï´Ù. ¸±¸®½º ¹öÀü¿¡ »õ·Î¿î ±â´ÉÀ» Ãß°¡½ÃÅ°°í ½ÍÁö´Â ¾ø½À´Ï´Ù¸¸, ¸ðµç ¸â¹ö¿¡°Ô °³¹ßÀ» ÁßÁöÇϵµ·Ï(µíÀÌ) ¸»ÇØ ±¸µµ ÀÖ¾î ¼±. °Å±â¼­ ´ë½Å¿¡, ´ç½ÅÀº ±×¸¸Å­ Å« ¼öÁ¤Àº ¹ß»ýÇÏÁö ¾Ê´Â´Ù "¾ÈÁ¤ÆÇ"ÀÇ ºê·£Ä¡(branch)¸¦ ¸¸µì´Ï´Ù:

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

Committed revision 377.

ÀÌ°ÍÀ¸·Î °³¹ßÀÚ´Â ÃÖ÷´ÜÀÇ ±â´É(ȤÀº ½ÇÇèÀûÀÎ ±â´É)À» /trunk/calc¿¡ °è¼Ó Ãß°¡ÇÏ´Â °ÍÀÌ ÇÒ ¼ö ÀÖ¾î ¹ö±× ¼öÁ¤¸¸À»/branches/calc/stable-1. 0 ¿¡ Ä¿¹ÔÇÏ´Â °Í °°Àº Æú¸®½Ã·Î ÁøÇàÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Áï, ¸â¹ö°¡ trunk»ó¿¡¼­ °è¼Ó ÀÛ¾÷ÇÒ ¶§ , ¹ö±× ¼öÁ¤¿¡ ºÙ¾î ¾ÈÁ¤ÆÇ ºê·£Ä¡(branch)»ó¿¡ °¡Áö°í °¥ ¼ö°¡ ÀÖ½À´Ï´Ù. ¾ÈÁ¤ÆÇ ºê·£Ä¡(branch) ÇÏÁö¸¸ Ãâ½ÃµÈ ÈÄ¿¡µµ, ±× ºê·£Ä¡(branch)¸¦ ±ä ½Ã°£ µé¿© °è¼Ó ¸ÞÀÎÆ®³Í½ºÇÑ´Ù ±×·¸ÁöÁï, °í°´¿¡ ´ëÇؼ­ ±× ¸±¸®½º¸¦ °è¼Ó ¼­Æ÷Æ®ÇÑ´Ù ÇÑ.


1.8. Åë°è

ÀÌ Àå¿¡¼­´Â, ¿©·¯°¡Áö ±âº»¿¡ Á¢Çß½À´Ï´Ù. ÅÂ±×¿Í ºê·£Ä¡(branch)ÀÇ °³³äÀ» ³íÀÇÇØ, Subversion°¡svn copy·Î µð·ºÅ丮¸¦ Ä«ÇÇÇÑ´Ù °Í¿¡ ÀÇÇØ ÀÌ·¯ÇÑ °³³äÀ» ½ÇÀåÇÏ°í ÀÖ´Â °ÍÀ» ¼³¸íÇß½À´Ï´Ù. svn mergeÀÎ ºê·£Ä¡(branch)·ÎºÎÅÍ ´Ù¸¥ ºê·£Ä¡(branch)·Î º¯°æÁ¡ (À»)¸¦ Ä«ÇÇÇϰųª À߸øÇÑ º¯°æÀ» µÇµ¹¸®°Å³ª ÇÏ´Â ¹æ¹ýÀ» º¸¿©µå·È½À´Ï´Ù. svn switch¸¦ »ç¿ëÇØ, È¥ÇÕ »óÅÂÀÇ ÀÛ¾÷ Ä«ÇǸ¦ ¸¸µé¾î º¸¿´½À´Ï´Ù. ±×¸®°í, ¾î¶»°Ô ÇØ ÀúÀå¼Ò(repository)³»ÀÇ ºê·£Ä¡(branch)ÀÇ Æí¼º°ú ¼ö¸íÀ» °ü¸®Çұ ÀÓÇؼ­ À̾߱âÇß½À´Ï´Ù.

Subversion¿¡ ´ëÇØ, À̰͸¸Àº ±â¾ïÇØ µÖ ÁÖ¼¼¿ä: ºê·£Ä¡(branch) 󸮴 ¸Å¿ì °¡º±½À´Ï´Ù. ÁÁ¾ÆÇÒ »Ó(¸¸Å­) »ç¿ëÇØ ÁÖ¼¼¿ä!


1.9. Áß°£¿¡ ¾à°£ ¼öÁ¤ÇÑ »ç¶÷ÀÇ À̾߱â:

ÀÌ ±ÛÀº ¾à°£ ½Ç¸Á½º·´´Ù ¸»ÇÑ´Ù Á¤µµ·Î ¸÷½Ã Àбâ Èûµç ¹ø¿ªÀÌ´Ù. ³ª´Â °©Àڱ⠰íÄ¡°í ½Í´Ù´Â »ý°¢ÀÌ °©ÀÛ½º·¹ µé±â ½ÃÀÛÇØ ´ÜÁö ¾à°£ °íÃĺ¸¾ÒÀ» »ÓÀÌ´Ù. "°¡Áö ¿Í º´ÇÕ" ¿¡ ½É°¢ÇÑ ºÎºÐ¸¸ °ñ¶ó³»¾î ¼öÁ¤À» Á¶±Ý °¡Çß´Ù. ½Ã°£ÀÌ ³­´Ù¸é ¸¶Àú °íÄ¡°í ½Í´Ù´Â »ý°¢À»(¸¦) ÇÏ°í ÀÖ´Ù. ÀÌ ¿ì½º²Î½º·¯¿î section Àº ³¶Áß¿¡ Áö¿ì°Ú´Ù.

Notes

[1]

Subversion ´Â ÀúÀå¼Ò(repository)°£ Ä«ÇǸ¦ ¼­Æ÷Æ®ÇÏ°í ÀÖÁö ¾Ê½À´Ï´Ù. svn copy³ªsvn move·Î URL¸¦ ÁöÁ¤ÇÏ´Â °æ¿ì, °°Àº ÀúÀå¼Ò(repository)³»¿¡¼­¸¸ Ä«ÇÇÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

[2]

Àå·¡ÀûÀ¸·Î´Â Subversion ÇÁ·ÎÁ§Æ®´Â Æ®¸®ÀÇ º¯°æÀ» Ç¥ÇöÇÑ´Ù °°Àº È®ÀåÇÑ ÆÐÄ¡ Çü½ÄÀ» »ç¿ëÇÒ(ÀÖ°í´Â °³¹ßÇÒ) °èȹÀÌ ÀÖ½À´Ï´Ù.

[3]

±×·¸Áö¸¸, Subversion ÇÁ·ÎÁ§Æ®´Â ¾ðÁ¦ÀÇ ³¯Àΰ¡ svnadmin obliterateÄ¿¸àµå¸¦ ½ÇÀåÇÒ °èȹÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº Á¤º¸ÀÇ ¿ÏÀüÇÑ ¼Ò°Å¸¦ ½ÇÇàÇÏ´Â Ä¿¸àµå ÀÔ´Ï´Ù.

[4]

±×·¯³ª, ¼­¹ö»óÀÇ URL °¡ º¯°æµÇ¾úÁö¸¸, ±âÁ¸ÀÇ ÀÛ¾÷ Ä«ÇÇ (À»)¸¦ ¹ö¸®°í ½ÍÁö ¾ÊÀº °æ¿ì¿¡´Â,--relocate½ºÀ­Ä¡ µ¹ÃâÇÏ°í svn switch¸¦ »ç¿ëÇÒ ¼öÀÖ½À´Ï´Ù. º¸´Ù ÀÚ¼¼ÇÑ Á¤º¸¿Í ¿¹¿¡ ´ëÇؼ­´Â


ID
Password
Join
Even the boldest zebra fears the hungry lion.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-01-20 23:20:38
Processing time 0.0025 sec