· 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
Show your affection, which will probably meet with pleasant response.


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