1Chapter. °³¹ßÀÚ Á¤º¸
1.1.Subversion ´Â open sourceÀÇ ¼ÒÇÁÆ®¿þ¾î ÇÁ·ÎÁ§Æ®·Î, Apache ½ºÅ¸ÀÏÀÇ ¼ÒÇÁÆ®¿þ¾î ¶óÀ̼¾½º¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ÇÁ·ÎÁ§Æ®´Â Ķ¸®Æ÷´Ï¾Æ¿¡ º»°ÅÁö°¡ ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î °³¹ß ȸ»ç CollabNet, Inc., ÀÇ °æÁ¦ÀûÀÎ Áö¿øÀ» ¹Þ°í ÀÖ½À´Ï´Ù. ÀÌ Ä¿¹Â´ÏƼ´Â SubversionÀÇ °³¹ßÀ» µÑ·¯½Î°í ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù¸¸, ÀÌ ÇÁ·ÎÁ§Æ®¿¡ ½Ã°£À» ÇÒ¾ÖÇØ Áְųª ÁÖÀǸ¦ ÇâÇÏ¿© ¹ÞÀ» ¼ö ÀÖ´Â °Í °°Àº ÇüÅ·Π¹«»ó ¿øÁ¶ÇØ ÁÖ´Â »ç¶÷À» Ç×»ó ȯ¿µÇØ ÀÖ½À´Ï´Ù. ÀÚ¿øºÀ»ç´Â ¾î¶² ÇüÅÂÀÇ ¿øÁ¶µµ ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ±×°ÍÀº, ¹ö±×¸¦ ã¾Æ³»°Å³ª Å×½ºÆ®Çϰųª ¹ú½á ÀÖ´Â Äڵ带 °³·®Çϰųª ¿ÏÀüÈ÷ »õ·Î¿î ±â´ÉÀ» Ãß°¡Çϰųª¶ó°í ÇÑ °ÍÀ» Æ÷ÇÔÇÕ´Ï´Ù. ÀÌ ÀåÀº ¿ø½Ã Äڵ忡 ÀÚ½ÅÀÇ ¼ÕÀ» ½ÇÁ¦·Î ºÓÈ÷´Â °Í¿¡ ÀÇÇØ Subversion ÀÇ Áö±Ý È®½ÇÈ÷ ÀϾ°í ÀÖ´Â Áøȸ¦ ¿øÈ£ÇÏ·Á°í ÇÏ´Â »ç¶÷À» ÇâÇÑ °ÍÀÔ´Ï´Ù. ¼ÒÇÁÆ®¿þ¾îÀÇ °Í Á» ´õ »ó¼¼ÇÏ°Ô Á¢ÇØ Subversion ÀÚ½ÅÀ» °³¹ßÇϴµ¥ ȤÀº, Subversion ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÑ ¿ÏÀüÇÏ°Ô »õ·Î¿î ÅøÀ» ¾²±â À§Çؼ(¶§¹®¿¡) ÇÊ¿äÇÏ°Ô µÇ´Â ±â¼úÀûÀ¸·Î Áß¿äÇÑ Á¡¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. ¸¸¾à, ±×·± ·¹º§ÀÇ À̾߱⿡ Âü°¡ÇÏ°í ½ÍÁö ¾ÊÀº °ÍÀ̸é, ÀÌ ¾ÆÅ°¶ó´Â ÆÄ°ßÇØ ÁÖ¾î »ó´çÈ÷ ÀÔ´Ï´Ù. SubversionÀÇ À¯Àú·Î¼ÀÇ °æÇè¿¡´Â ¿µÇâÀ» ÁÖÁö ¾ÊÀ¸¹Ç·Î. 1.1. °èÃþÈ µÈ ÇÁ·Î±×·¥ ¶óÀ̺귯¸® ¼³°èSubversionÀº ¸ðµâÈµÈ ¼³°è°¡ µÇ¾î ÀÖ¾î, CÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ ¸ðÀÓ°ú ÇØ ½ÇÀåµÇ°í ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ °¢°¢Àº ÀÚÁÖ(Àß) Á¤ÀÇµÈ ¸ñÀû°ú ÀÎÅÍÆäÀ̽º (À»)¸¦ °¡Áö°í ÀÖ¾î, ´ëºÎºÐÀÇ ¸ðµâÀº ¼¼ °³ÀÇ ÁÖ¿äÇÑ ÃþÀÇ ¾î¶² °ÍÀΰ¡¿¡ ¼ÓÇÕ´Ï´Ù. ÀúÀå¼Ò(repository)Ãþ, ÀúÀå¼Ò(repository) ¾×¼¼½ºÃþ(RA), ±×¸®°í Ŭ¶óÀ̾ðÆ®ÃþÀÔ´Ï´Ù. ÀÌ·¯ÇÑ Ãþ¿¡ µµÂøÇØ °£´ÜÇÏ°Ô º¸°í °©´Ï´Ù¸¸, ÃÖÃÊ·Î Table 7-1 ¿¡ ÀÖ´Â Subversion ÇÁ·Î±×·¥ ¶óÀ̺귯¸® À϶÷À» ºÁ ÁÖ¼¼¿ä. ÀÏ°üÇÑ ³íÀÇ¿Í Çϱâ À§ÇÑ(ÇØ), ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â, È®ÀåÀÚ(extension)¸¦ µé¿©´Ù º» Unix ÀÇ ÇÁ·Î±×·¥ ¶óÀ̺귯¸® ¸íĪÀ¸·Î ÂüÁ¶Çϱâ·Î ÇÏ°Ú½À´Ï´Ù (¿¹¸¦ µé¾î: libsvn_fs, libsvn_wc, mod_dav_svn). Table 7-1 ¿¡"´Ù¾çÇÑ"¶ó´Â ¸»ÀÌ Çϳª¸¸ ³ª¿Í ÀÖ´Ù´Â °ÍÀº, ÁÁÀº ¼³°èÀÎ Áõ°ÅÀÔ´Ï´Ù. Subversion °³¹ß ÆÀÀº °¢°¢ÀÇ ±â´ÉÀÌ, ¿Ã¹Ù¸£´Ù Ãþ°ú ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿¡ ÀÖ´Â °ÍÀ» È®ÀÎÇÏ´Â °ÍÀ», Áß¿äÇÑ ÀÏÀ̶ó°í »ý°¢ÇÏ°í ÀÖ½À´Ï´Ù. ¾Æ¸¶, ¸ðµâÈÇÑ ¼³°èÀÇ 1¹ø Å« ÀÌÁ¡Àº °³¹ßÀÚÀÇ °üÁ¡À¸·ÎºÎÅÍ º» º¹ÀâÇÔ (À»)¸¦ ÁÙÀÏ ¼ö°¡ ÀÖ´Â °ÍÀÔ´Ï´Ù. °³¹ßÀڷμ ¾Æ¼±¹ÝÀº °ð¹Ù·Î,"À̾߱âÀÇ °³¿ä"¸¦ ¾Ë ¼ö°¡ ÀÖ¾î °Å±â¿¡ µû¶ó ºñ±³Àû °£´ÜÇÏ°Ô ¾î´À ƯÁ¤ÀÇ ±â´ÉÀÇ Àå¼Ò¸¦ ƯÁ¤ ÇÒ ¼ö°¡ ÀÖ°Ô µË´Ï´Ù. ±×¸®°í, ½ÇÁ¦·Î ´ÜÁö Å« ±×¸²À» ±×¸®´Â °Íº¸´Ùµµ, °³¹ßÀÚ¿¡°Ô"À̾߱âÀÇ °³¿ä"¸¦ ÀüÇÏ´Â µµ¿òÀÌ µÇ´Â °ÍÀº ¹«¾ùÀϱî¿ä? Subversion ÇÁ·Î±×·¥ ¶óÀ̺귯¸®°¡ ¾î¶»°Ô ¼·Î Á¦ÈÞÇÏ°í ÀÖ´ÂÁö¸¦ ÀÌÇØÇÏ´Â µµ¿òÀ¸·Î¼ SubversionÀÇ °èÃþµµ, Figure 7-1 ¸¦ ºÁ ÁÖ¼¼¿ä. ÇÁ·Î±×·¥Àº(À¯Àú¿¡ ÀÇÇØ ±âµ¿µÈ µÚ) ÀÌ ±×¸² À§·ÎºÎÅÍ ½ÃÀ۵Ǿî, ¾Æ·¡·Î ÇâÇØ È帨´Ï´Ù. ¸ðµâÈ¿ÜÀÇ ÀÌÁ¡Àº, ÁÖ¾îÁø ¸ðµâÀ» ÄÚµåÀÇ ´Ù¸¥ ºÎºÐ¿¡ ¿µÇâ ÁÖ´Â °Í ¾øÀÌ , °°Àº API¸¦ ½ÇÀåÇÑ »õ·Î¿î ÇÁ·Î±×·¥ ¶óÀ̺귯¸®·Î ¿Å°Ü³õ´Â °ÍÀÌ ÇÒ ¼ö ÀÖ´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù. ¾î¶² Àǹ̷ΠÀÌ°ÍÀº Subversion ³»ºÎ¿¡¼ ¹ú½á ÀϾ ÀÖ´Â °ÍÀÔ´Ï´Ù. libsvn_ra_dav, libsvn_ra_local, ±×¸®°í libsvn_ra_svn ÀÇ ¸ðµç °ÍÀº, °°Àº ÀÎÅÍÆäÀ̽º¸¦ ½ÇÀåÇÏ°í ÀÖ½À´Ï´Ù. ±×¸®°í, ÀÌ 3°³(»ì) ¸ðµÎ ÇÏÁö¸¸, ÀúÀå¼Ò(repository)Ãþ°ú ±³È¯ÇÕ´Ï´Ù. libsvn_ra_dav ¿Í libsvn_ra_svn ´Â ³×Æ®¿öÅ© ³Ñ¾î·Î ±×·¸°Ô ÇÏ°í, libsvn_ra_local ´Â Á÷Á¢ ÀúÀå¼Ò(repository)¿¡ Á¢¼ÓÇÕ´Ï´Ù. Ŭ¶óÀ̾ðÆ® Àڽŵµ ¶Ç SubversionÀÇ ¼³°è¿¡¼ÀÇ ¸ðµâ¼ºÀ» ºÐ¸íÈ÷ °¡¸®Å°°í ÀÖ½À´Ï´Ù. SubversionÀº ÇöÀç·Î¼´Â Ä¿¸àµå ¶óÀΠŬ¶óÀ̾ðÆ® ÇÁ·Î±×·¥¸¸À» ½ÇÀåÇÏ°í ÀÖ½À´Ï´Ù¸¸, SubversionÀ» À§Çؼ(¶§¹®¿¡) GUI·Î¼ ÇൿÇÑ´Ù °°Àº ¼µå ÆÄƼ¿¡ ÀÇÇØ °³¹ßµÇ°í ÀÖ´Â ¸î°³ÀÇ ÇÁ·Î±×·¥ÀÌ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ GUIµµ, ¹ú½á ½ÇÀåµÇ°í ÀÖ´Â Ä¿¸àµå Ŭ¶óÀ̾ðÆ® (¿Í)°ú °°Àº API¸¦ ÀÌ¿ëÇÕ´Ï´Ù. SubversionÀÇ libsvn_client ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â Subversion Ŭ¶óÀ̾ðÆ®¸¦ ¼³°èÇϴµ¥ ÇÊ¿äÇÑ ´ëºÎºÐÀÇ ±â´ÉÀ» À§Çؼ(¶§¹®¿¡) ÀÌ¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. (>ÂüÁ¶). 1.1.1. ÀúÀå¼Ò(repository)ÃþSubversionÀÇ ÀúÀå¼Ò(repository)ÃþÀ» ÂüÁ¶ÇÒ ¶§, ÀϹÝÀûÀ¸·Î, µÎ °³ÀÇ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿¡ ´ëÇØ ¸»ÇÏ°í ÀÖ½À´Ï´ÙÀúÀå¼Ò(repository) ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿Í ÆÄÀÏ ½Ã½ºÅÛ ÇÁ·Î±×·¥ ¶óÀ̺귯¸® ÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â ¹öÀü °ü¸®µÈ µ¥ÀÌÅÍÀÇ ´Ù¾çÇÑ ¸®ºñÀü (À»)¸¦ À§ÇÑ °Ý³³°ú º¸°íÀÇ ±¸Á¶¸¦ Á¦°øÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ ÃþÀº ÀúÀå¼Ò(repository) ¾×¼¼½ºÃþ (À»)¸¦ °æÀ¯ÇØ Å¬¶óÀ̾ðÆ®Ãþ°ú ¿¬°áµÇ¾î ÀÖ¾î, Subversion ÀÌ¿ëÀڷκÎÅÍ º¸¸é(ÀÚ), "Åë½ÅÀÇ »ó´ëÆí"¿¡ ÀÖ´Â °ÍÀ¸·Î º¸ÀÔ´Ï´Ù. SubversionÀÇ ÆÄÀÏ ½Ã½ºÅÛÀº libsvn_fs API¿¡ ÀÇÇØ ¾×¼¼½º µÇ¾î operating system¿¡ ÀνºÅç µÇ°í ÀÖ´Â Ä¿³Ú ·¹º§ÀÇ Àǹ̿¡¼ÀÇ ÆÄÀÏ ½Ã½ºÅÛ(LinuxÀÇ ext2 ³ª, NTFS¿Í °°ÀÌ)ÀÌ ¾Æ´Ï°í, °¡»óÀûÀÎ ÆÄÀÏ ½Ã½ºÅÛÀÔ´Ï´Ù. "ÆÄÀÏ"°ú"µð·ºÅ丮"¸¦ (ÀÚ½ÅÀÌ ÁÁ¾ÆÇÏ´Â Á¶°¡ºñ¸¦ »ç¿ëÇØ Á¶ÀÛÇÒ ¼ö°¡ ÀÖ´Â °Í °°Àº) Çö½ÇÀÇ ÆÄÀÏ°ú µð·ºÅ丮·Î¼ º¸Á¸ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ¿¬±¸ ÃÖÁ¾ ´Ü°èÀÇ º¸Á¸ÀÇ ±¸Á¶·Î¼ µ¥ÀÌŸº£À̽º ½Ã½ºÅÛÀ» »ç¿ëÇÕ´Ï´Ù. ÇöÀç, ÀÌ¿ëÇÒ ¼ö ÀÖ´Â µ¥ÀÌŸº£À̽º ½Ã½ºÅÛÀº Berkeley DBÀÔ´Ï´Ù. [1] ±×·¯³ª, SubversionÀÇ ÇâÈÄÀÇ ¸±¸®½º Áß(¾È)¿¡¼ °³¹ß Ä¿¹Â´ÏƼ¿¡ ÀÇÇØ Èï¹Ì¸¦ ´ç±â°í ÀÖ´Â, ´Ù¸¥ ¿¬±¸ ÃÖÁ¾ ´Ü°è µ¥ÀÌŸº£À̽º ½Ã½ºÅÛÀÇ ÀÌ¿ë °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¿ÀÇ µ¥ÀÌŸº£À̽º Ä¿³ØƼºñƼ- (ODBC) µîÀÔ´Ï´Ù. libsvn_fs °¡ Á¦°øÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛ API´Â ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛ API ±×·¸Áö¸¸ ±â´ëÇÒ ¼ö ÀÖ´Â °Í °°Àº ±â´ÉÀ» °¡Áö°í ÀÖ´Â: ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ ÀÛ¼ºÀ̳ª »èÁ¦¸¦ ÇÒ ¼ö ÀÖ¾î, Ä«Çdzª, À̵¿À» ÇÒ ¼ö ÀÖ¾î ÆÄÀÏÀÇ ³»¿ëÀ» ¼öÁ¤ÇÒ ¼ö°¡ ÀÖ¾î, µî µîÀÔ´Ï´Ù. ³Ê¹« ÀϹÝÀûÀÌÁö ¾Ê´Â °Í °°Àº ±â´Éµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ÆÄÀÏÀ̳ª µð·ºÅ丮¿¡ ºÎ¼ö Çß´Ù ¸ÞŸµ¥ÀÌŸ("¼Ó¼º")ÀÇ Ãß°¡, º¯°æ, »èÁ¦, µîÀÔ´Ï´Ù. ÇÑÃþ ´õ Subversion ÆÄÀÏ ½Ã½ºÅÛÀº ¹öÀüÈ °¡´ÉÇÑ ÆÄÀÏ ½Ã½ºÅÛÀ¸·Î, ÀÌ°ÍÀº, µð·ºÅ丮 Æ®¸®·Î º¯°æÀ» ´õÇϸé(ÀÚ), SubversionÀº ±× º¯°æ ÀÌÀü¿¡, ±× Æ®¸®°¡ ¾î¶»°Ô º¸Àϱ ±â¾ïÇØ µÐ´Ù°í ÇÏ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ±×¸®°í, ÇÑÃþ ´õ ±× ÀüÀÇ º¯°æÀü, ÇÑÃþ ´õ ±× Àü, µîÀÔ´Ï´Ù. ÀÌ¿Í °°ÀÌ ÇØ, ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¹«¾ùÀΰ¡¸¦ ÃÖÃÊ·Î Ãß°¡Çߴµ¥±îÁöÀÇ ¸ðµç ¹öÀüÀ¸·Î µ¹¾Æ¿Ã ¼ö°¡ ÀÖ½À´Ï´Ù. Æ®¸®¿¡ °¡¼¼ÇÑ ¸ðµç º¯°æÀº SubversionÀÇ Æ®·£Àè¼Ç(transaction) Áß(¾È)¿¡¼ ½ÇÇà µË´Ï´Ù. ÀÌÇÏ´Â, ÆÄÀÏ ½Ã½ºÅÛÀ» ¼öÁ¤Çϱâ À§ÇÑ ´Ü¼øÇÏ°í ÀϹÝÀûÀÎ ¼ö¼ÓÀÔ´Ï´Ù:
Æ®·£Àè¼Ç(transaction)¸¦ Ä¿¹ÔÇϸé(ÀÚ), ÆÄÀÏ ½Ã½ºÅÛÀÇ º¯°æÀº ¿ª»ç»óÀÇ »ç°ÇÀ¸·Î¼ ¿µ±¸È÷ ±â·ÏµË´Ï´Ù. ÀÌ·¯ÇÑ °¢°¢ÀÇ »çÀÌŬÀº Æ®¸®¿¡ »õ·Î¿î ¸®ºñÀüÀ» ¸¸µé¾î, °¢°¢ÀÇ ¸®ºñÀüÀº"ÀÖ´Â °ÍÀÌ ¾î´À °°¾Ò´Â°¡"¶ó°í ÇÏ´Â ¼ø¼öÇÑ snapshot·Î ÇÏ°í ÀÖ°í °³¿¡¼µµ ¾×¼¼½º ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ÆÄÀÏ ½Ã½ºÅÛ ÀÎÅÍÆäÀ̽º¿¡ ÀÇÇØ ÁغñµÇ´Â ±â´ÉÀÇ ´ëºÎºÐÀº ÆÄÀÏ ½Ã½ºÅÛ Æнº¿¡ ´ëÇؼ ÀϾ´Â Á¶ÀÛÀ¸·Î¼ Á¦°øµË´Ï´Ù. Áï, ÆÄÀÏ ½Ã½ºÅÛÀÇ ¿ÜºÎ·ÎºÎÅÍ´Â, ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ °³º°ÀÇ ¸®ºñÀüÀ» ±â¼úÇØ, ¾×¼¼½º ÇÏ´Â, ÁÖ¿ä ¾øÀ½ ½ÖÀº,/foo/bar (¿Í)°ú °°Àº Æнº ij¸¯ÅÍ ¶óÀÎÀ» »ç¿ëÇÏ´Â °ÍÀ» ÅëÇؼ Á¦°øµÇ¾î ±×°ÍÀº Á¤È®È÷, ´ç½ÅÀÌ Á¤µç Á¶°¡ºñ ÇÁ·Î±×·¥À» ÅëÇؼ ÆÄÀÏÀ̳ª µð·ºÅ丮¿¡ ¾×¼¼½º ÇÑ´Ù °°Àº ±âºÐÀÌ µì´Ï´Ù. ÀûÀýÇÑ Æнº ¸íºÐÀ» ¼¼¿ö ÀÖ°í API ÇÔ¼ö¿¡ °Ç³×ÁÖ´Â °Í¿¡ ÀÇÇØ, »õ·Î¿î ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ Ãß°¡ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. °°Àº ±¸Á¶¸¦ »ç¿ëÇØ ±× ÆÄÀÏ µî¿¡ °ü°èÇÑ Á¤º¸¸¦ ¹®ÀÇÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ ÆÄÀÏ ½Ã½ºÅÛ°ú´Â ´Þ¶ó, Æнº¸¸À» ÁöÁ¤ÇÏ´Â °ÍÀº, Subversion ÀÇ ÆÄÀÏÀ̳ª µð·¹Æ®Å©¸®¸¦ ƯÁ¤Çϴµ¥ ÃæºÐÇÑ Á¤º¸°¡ ¾Æ´Õ´Ï´Ù. µð·ºÅ丮 Æ®¸®¸¦ ÀÌÂ÷¿øÀÇ ½Ã½ºÅÛÀ̶ó°í »ý°¢ÇØ ÁÖ¼¼¿ä. ¿©±â¼, ¾î´À ³ëµåÀÇ ÇüÁ¦´Â, ¿ÞÂÊ¿¡¼ ¿À¸¥ÂÊÀ¸·Î À̵¿ÇÏ´Â °ÍÀ» Ç¥ÇöÇÏ°í ÀÖ¾î, »çºêµð·¹Æ®Å©¸®¿¡ ³»·Á °£´Ù ÀÇ´Â, ¾Æ·¡·Î ÇâÇÑ À̵¿ÀÌ´Ù°í »ý°¢ÇØ ÁÖ¼¼¿ä. Figure 7-2 ´Â ÀüÇüÀûÀÎ Æ®¸®ÀÇ Ç¥ÇöÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ¹°·Ð SubversionÀÇ ÆÄÀÏ ½Ã½ºÅÛÀº ¼ûÀº Á¦£³ Â÷¿øÀ» °¡Áö°í ÀÖ½À´Ï´Ù¸¸,
±×°ÍÀº ´ëºÎºÐÀÇ ÆÄÀÏ ½Ã½ºÅÛÀÌ °¡Áö°í ÀÖÁö ¾ÊÀº °ÍÀÔ´Ï´Ù±×°ÍÀº ½Ã°£ÀÇ Â÷¿øÀÔ´Ï´Ù!
[2]
ÆÄÀÏ ½Ã½ºÅÛ ÀÎÅÍÆäÀ̽º·Î, ÀÌÀü ÁöÀûÇÑ °Íó·³, libsvn_fs API ´Â ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛ°ú ¿Ü°üÀº ÀÚÁÖ(Àß)¿¡¼ ÀÖÁö¸¸, ÀÌ ÈǸ¢ÇÑ ¹öÀü °ü¸® ´É·Â¸¸Àº ¿¹¿ÜÀÔ´Ï´Ù. ±×°ÍÀº ¹öÀü ÆÄÀÏ ½Ã½ºÅÛ¿¡ Èï¹Ì°¡ ÀÖ´Â ¸ðµç ÇÁ·Î±×·¡¸Ó¿¡ ÀÇÇØ ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) ¼³°èµÇ¾ú½À´Ï´Ù. ¿ì¿¬ÀÇ ÀÏÄ¡°¡ ¾Æ´Õ´Ï´Ù¸¸, Subversion Àڽŵµ ±× ±â´É¿¡ Èï¹Ì°¡ ÀÖ½À´Ï´Ù. ±×·¯³ª, ÆÄÀÏ ½Ã½ºÅÛ API (Àº)´Â ±âº»ÀûÀÎ ÆÄÀÏ°ú µð·ºÅ丮ÀÇ ¹öÀü °ü¸®¸¦ ¼Æ÷Æ®ÇÏ°í ÀÖ½À´Ï´Ù¸¸ SubversionÀº ÇÑÃþ ´õ ´ëºÎºÐÀ» ¿ä±¸Çմϴٱ׸®°í ±×°ÍÀº libsvn_repos °¡ Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. Subversion ÀúÀå¼Ò(repository) ÇÁ·Î±×·¥ ¶óÀ̺귯¸®(libsvn_repos)´Â ±âº»ÀûÀ¸·Î´Â ÆÄÀÏ ½Ã½ºÅÛ ±â´ÉÀÇ ÁÖÀ§¿¡ ÀÖ´Â ·¡ÆÛ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÔ´Ï´Ù. ÀÌ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â ÀúÀå¼Ò(repository) ·¹À̾ƿôÀÇ ÀÛ¼º, ÆÄÀÏ ½Ã½ºÅÛÀÇ Ãʱâȸ¦ ¿Ã¹Ù¸£°Ô ½ÇÇàÇÏ´Â °Í, µî¿¡ Ã¥ÀÓÀ» °¡Áý´Ï´Ù. Libsvn_repos ´Â ¶Ç ÈÅÀ» ½ÇÀåÇÕ´Ï´ÙƯÁ¤ÀÇ Ã³¸®°¡ ½ÇÇàµÉ ¶§ ÀúÀå¼Ò(repository)ÀÇ Äڵ忡 ÀÇÇØ ½ÇÇàµÇ´Â ½ºÅ©¸³Æ®ÀÔ´Ï´Ù. ÀÌ °°Àº ¶õ ÅëÁö, ÀÎÁõ, ȤÀº ÀúÀå¼Ò(repository) °ü¸®ÀÚ°¡ ¹Ù¶ó´Â °Í °°Àº ´Ù¾çÇÑ ¸ñÀû¿¡ ÀÖ¾î µµ¿òÀÌ µÇ´Â °ÍÀÔ´Ï´Ù. ÀÌ Å¸ÀÔÀÇ ±â´É°ú ÀúÀå¼Ò(repository) ÇÁ·Î±×·¥ ¶óÀ̺귯¸® ¿¡ ÀÇÇØ Á¦°øµÇ´Â °Í ¿ÜÀÇ À¯Æ¿¸®Æ¼´Â ¹öÀüÈ ÆÄÀÏ ½Ã½ºÅÛ ÀÇ ½ÇÀå¿¡ °ÇÏ°Ô °ü·ÃÇÏ°í ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ±×°ÍÀÌ µ¶ÀÚÀûÀÎ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®·Î¼ ½ÇÀåµÈ ÀÌÀ¯ÀÔ´Ï´Ù. libsvn_repos API¸¦ »ç¿ëÇÏ·Á°í ÇÏ´Â °³¹ßÀÚ¿¡°Ô´Â, ±×°ÍÀÌ ÆÄÀÏ ½Ã½ºÅÛ ÀÎÅÍÆäÀ̽º ¿¡ ´ëÇÑ ¿ÏÀüÇÑ ·¡ÆÛ°¡ ¾Æ´Ñ °ÍÀ» ¾Ë°ÚÁö¿ä. Áï, ÆÄÀÏ ½Ã½ºÅÛ Á¶ÀÛÀÇ ÀϹÝÀûÀÎ »çÀÌŬ¿¡ ÀÖ´Â ÁÖ¿äÇÑ À̺¥Æ®¿¡ ºÙ¾î¸¸ ÀúÀå¼Ò(repository) ÀÎÅÍÆäÀ̽º¿¡ ÀÇÇØ ·¦ µË´Ï´Ù. ±× ¾ÈÀÇ ¸î°³Àΰ¡´Â, Subversion Æ®·£Àè¼Ç(transaction)ÀÇ »ý¼ºÀ̳ª Ä¿¹Ô, ¸®ºñÀü ¼Ó¼ºÀÇ ¼öÁ¤ µîÀÔ´Ï´Ù. ÀÌ·¯ÇÑ Æ¯Á¤ÀÇ À̺¥Æ®´Â °Å±â¿¡ °ü·ÃÇÑ ÈÅÀÌ ÀÖ±â (À§ÇØ)¶§¹®¿¡, ÀúÀå¼Ò(repository)Ãþ¿¡ ÀÇÇØ ·¦ µË´Ï´Ù. Àå·¡ÀûÀ¸·Î´Â ´Ù¸¥ À̺¥Æ®µµ ÀúÀå¼Ò(repository) API¿¡ ÀÇÇØ ·¦ µÉÁöµµ ¾Ë·ÁÁöÁö ¾Ê½À´Ï´Ù. ±×·¯³ª, ³ª¸ÓÁöÀÇ ÆÄÀÏ ½Ã½ºÅÛÀÇ ÀÛ¿ëÀÇ ¸ðµç °ÍÀº libsvn_fs API (¿Í)°ú ÇÔ²² Á÷Á¢ ½ÇÇàµË´Ï´Ù. ¿¹¸¦ µé¾î, µð·ºÅ丮°¡ Ãß°¡µÇ´Â ÆÄÀÏ ½Ã½ºÅÛÀÇ »õ·Ó´Ù
¸®ºñÀüÀ» ¸¸µé±â À§ÇÑ, ÀúÀå¼Ò(repository)¿Í ÆÄÀÏ ½Ã½ºÅÛ ÀÎÅÍÆäÀ̽º
¿¡ ºÙ¾î, »ç¿ë¹ýÀ» ¼³¸íÇÑ Äڵ尡 ÀÖ½À´Ï´Ù.
ÀÌ ¿¹·Î(±×¸®°í, ÀÌ º»Àüü¸¦ ÅëÇؼ ¸ðµç ´Ù¸¥ ¿¹¿¡¼µµ),
Example 1-1. ÀúÀå¼Ò(repository)ÃþÀÇ ÀÌ¿ë
ÀÌ ÄÚµå·Î, ÀúÀå¼Ò(repository)¿Í ÆÄÀÏ ½Ã½ºÅÛ ÀÎÅÍÆäÀ̽ºÀÇ ¾çÂÊ ¸ðµÎ¿¡
´ëÇϴ ȣÃâÀÌ ÀÖ½À´Ï´Ù. ÈÅÀÇ ±¸Á¶´Â, ³ª¸ÓÁöÀÇ ÆÄÀÏ ½Ã½ºÅÛ ÄÚµå·ÎºÎÅÍ µ¶¸³ÇÑ ÀúÀå¼Ò(repository) ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ Ãß»óÈ°¡ ÇϳªÀÇ ÀÌÀ¯ÀÔ´Ï´Ù. libsvn_repos API ´Â ±× ¹Û¿¡µµ ¸î°³ÀÇ Áß¿äÇÑ À¯Æ¿¸®Æ¼¸¦ Subversion¿¡ Á¦°øÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ°Í¿¡´Â ÀÌÇÏ¿Í °°Àº °ÍÀÌ ÀÖ½À´Ï´Ù:
Subversion°¡ °è¼Ó ÁøÈÇÏ´Â °Í¿¡ µû¶ó, ÀúÀå¼Ò(repository) ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â °è¼Ó Áõ°¡ÇÏ´Â ±â´É°ú ¼³Á¤ °¡´ÉÇÑ ¿É¼ÇÀ» ¼Æ÷Æ®¸¦ Á¦°øÇÑ´Ù À§ÇØ(¶§¹®¿¡), ÆÄÀÏ ½Ã½ºÅÛ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿Í ÇÔ²² °è¼Ó °ú ÇÔ²² Ä¿Áø´Ù ±×·¸Áö. 1.1.2. ÀúÀå¼Ò(repository) ¾×¼¼½ºÃþ¸¸¾à Subverson ÀúÀå¼Ò(repository)ÃþÀÌ,"Åë½Å·ÎÀÇ ÀÌÁ¦(¹ú½á) ÇÑÆíÀÇ ´Ü Á¡" ÀÌ´Ù¸é, ÀúÀå¼Ò(repository) ¾×¼¼½ºÃþÀº, ±× Åë½Å·Î±× ÀÚüÀÇ °ÍÀÔ´Ï´Ù. Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿Í ÀúÀå¼Ò(repository) ÀÇ »çÀÌ¿¡ µ¥ÀÌÅ͸¦ »óÈ£ º¯È¯ÇÏ´Â °ÍÀ» ºÎ°úµÈ ÀÌ ÃþÀº libsva_ra¸ðµâ ·Î´õ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®, ±× RA¸ðµâ ÀÚ½Å(ÇöÀç·Î¼´Â, libsvn_ra_dav, libsvn_ra_local, ±×¸®°í libsvn_ra_svn¸¦ Æ÷ÇÔÇÕ´Ï´Ù), ±×¸®°í Çϳª ÀÌ»óÀÇ RA ¸ðµâ¿¡ ÇÊ¿äÇÑ Ãß°¡ ÀÇ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®, ¿¹¸¦ µé¾î, libsvn_ra_dav °¡ Åë½ÅÇϱâ À§ÇÑ , mod_dav_svn Apache ¸ðµâÀ» Æ÷ÇÔÇÕ´Ï´Ù. mod_dva_svn ¸ðµâÀ» ÀÌ¿ëÇÏÁö ¾ÊÀ» ¶§¿¡´Â, libsvn_ra_svn ÀÇ ¼¹öÀÎsvnserve°¡ Åë½ÅÇÕ´Ï´Ù. SubversionÀº, ÀúÀå¼Ò(repository) ¸®¼Ò½º¸¦ ƯÁ¤Çϴµ¥ URL¸¦ ÀÌ¿ëÇϹǷÎ, URL schemaÀÇ ÇÁ·ÎÅäÄݺÎ(º¸ÅëÀº,file:, http:, https:, ȤÀº svn:)´Â ¾î´À RA ¸ðµâÀÌ Åë½ÅÀ» ó¸®ÇÒ±î (À»)¸¦ °áÁ¤Çϱâ À§Çؼ(¶§¹®¿¡) »ç¿ëµË´Ï´Ù. °¢°¢ÀÇ ¸ðµâÀº, ÇÁ·ÎÅäÄÝÀÇ ¸®½ºÆ® (À»)¸¦ µî·ÏÇÕ´Ï´Ù¸¸, ±×°ÍÀº ¾î¶»°Ô À̾߱âÇϸé ÁÁÀº°¡¸¦ ¾Ë°í ÀÖÀ¸¹Ç·Î, RA ·Î´õ°¡ ½ÇÇà½Ã¿¡ ¾î´À RA¸ðµâÀ» ±× 󸮸¦ À§Çؼ(¶§¹®¿¡) ÀÌ¿ëÇұ °áÁ¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¾î´À RA¸ðµâÀÌ Subversion Ä¿¸àµå ¶óÀΠŬ¶óÀ̾ðÆ®¿¡ ÀÌ¿ë °¡´ÉÇÑ°¡¸¦ °áÁ¤ÇÒ ¼ö°¡ ÀÖ¾îsvn --version (À»)¸¦ ½ÇÇàÇÏ´Â °ÍÀ¸·Î, ¾î´À ÇÁ·ÎÅäÄÝÀº ¼Æ÷Æ®ÇÏ°í ÀÖÁö ¾Ê´Ù°í ¸»ÇØ ¿Ã±î (À»)¸¦ ¾Ë ¼ö°¡ ÀÖ½À´Ï´Ù. :
1.1.2.1. RA-DAV (HTTP/DAV¸¦ »ç¿ëÇÑ ÀúÀå¼Ò(repository) ¾×¼¼½º)libsvn_ra_dav ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â, ¼¹ö¿Í´Â ´Ù¸¥ ¸Ó½Å»ó¿¡¼ ½ÇÇàµÇ°í Àִ Ŭ¶óÀ̾ðÆ®¿¡ ÀÇÇØ ÀÌ¿ëµÇµµ·Ï(µíÀÌ) ¼³°èµÇ°í ÀÖ½À´Ï´Ù. Ŭ¶óÀ̾ðÆ®´Â URL¸¦ »ç¿ëÇØ µµ´ÞÇÒ ¼ö°¡ Àִ ƯÁ¤ÀÇ ¸Ó½ÅÀÌ´Ù ±× ¼¹ö¿Í Åë½ÅÇÕ´Ï´Ù. ¿©±â¼ ¸»ÇÏ´Â URL´Â,http: ¶Ç´Â https: ÀÇ ÇÁ·ÎÅäÄÝ ºÎºÐÀ» Æ÷ÇÔÇÏ°í ÀÖ´Â °Í °°Àº °ÍÀÔ´Ï´Ù. ¾î¶»°Ô ÀÌ ¸ðµâÀÌ µ¿ÀÛÇÏ´ÂÁö¸¦ ÀÌÇØÇϱâ À§Çؼ, ÃÖÃÊ·Î ÀúÀå¼Ò(repository) ¾×¼¼½ºÃþÀÇ Æ¯Á¤ÀÇ ¼³Á¤Áß¿¡ ÀÖ´Â °Í ¿ÜÀÇ ¸î°³ÀÇ Å° ÄÄÆÛ³ÍÆ®¿¡ Á¢ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù±×°ÍÀº °·ÂÇÑ Apache HTTP ¼¹ö¿Í Neon HTTP/WebDAV Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÔ´Ï´Ù. SubversionÀÇ ÁÖµÈ ³×Æ®¿öÅ© ¼¹ö´Â Apache HTTP ¼¹öÀÔ´Ï´Ù. Apache ´Â ÃæºÐÈ÷ Å×½ºÆ®µÇ¾î È®Àå °¡´ÉÇÑ open sourceÀÇ ¼¹ö ÇÁ·Î¼¼½º·Î, ±×°ÍÀº ¼º½ÇÇÑ ¿ëµµ¿¡ ÀÌ¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ±×°ÍÀº ³×Æ®¿öÅ©ÀÇ °íºÎÇÏ¿¡ À¯ÁöÇÒ ¼ö°¡ ÀÖ¾î ¸¹Àº Ç÷§Æû»ó¿¡¼ µ¿ÀÛÇÕ´Ï´Ù. Apache ¼¹ö´Â ¸¹Àº ´Ù¸¥ Ç¥ÁØ ÀÎÁõ ÇÁ·ÎÅäÄÝÀ» ¼Æ÷Æ®ÇØ, ¸¹Àº »ç¶÷µé¿¡ ÀÇÇØ ¼Æ÷Æ®µÈ ¸ðµâÀ» ÀÌ¿ëÇÏ´Â °ÍÀ¸·Î È®ÀåÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ±×°ÍÀº ¶Ç ³×Æ®¿öÅ© ÆÄÀÌÇÁ¶óÀÎÀ̳ª ij½Ì (¿Í)°ú °°Àº ÃÖÀûȸ¦ ¼Æ÷Æ®ÇÏ°í ÀÖ½À´Ï´Ù. ¼¹ö·Î¼ Apache ¸¦ ÀÌ¿ëÇÏ´Â °Í¿¡ µû¶ó¼, SubversionÀº ÀÌ·¯ÇÑ ¸ðµç ±â´ÉÀ» ÀÚÀ¯·Ó°Ô ¼Õ¿¡ ³Ö´Â °ÍÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í, (Á¤µµ)¸¸Å ¾î´À ÆÄÀÌ¾î ¿ù(fire wall)´Â HTTPÀÇ Åë½ÅÀ» ÅëÇϵµ·Ï(µíÀÌ) ¼³Á¤µÇ¾î ÀÖÀ¸¹Ç·Î, ½Ã½ºÅÛ °ü¸® Ã¥ÀÓÀÚ´Â, º¸ÅëÀº ÆÄÀÌ¾î ¿ù(fire wall) ¼³Á¤ (À»)¸¦ º¯°æÇÒ ÇÊ¿äÁ¶Â÷ ¾ø°Ô SubversionÀ» µ¿ÀÛ½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù. SubversionÀº HTTP¿Í WebDAV(DeltaV µ¹ÃâÇÏ°í)¸¦ »ç¿ëÇØ, Apache ¼¹ö¿Í Åë½ÅÇÕ´Ï´Ù. ÀÌ°Í¿¡ ´ëÇؼ´Â, ÀÌ ÀåÀÇ WebDAVÀÇ ¸¶µð¸¦ ºÒ·¯ ÁÖ¼¼¿ä. ±×·¯³ª, °£´ÜÇÏ°Ô ¸»Çϸé, WebDAV¿Í DeltaV ´Â Ç¥ÁØÀûÀÎ HTTP1. 1 ÇÁ·ÎÅäÄÝ ÀÇ È®ÀåÀ¸·Î, ±×°ÍÀº web»ó¿¡¼ ÆÄÀÏÀÇ °øÀ¯¿Í ¹öÀüȸ¦ °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù. Apache 2.0 Àº mod_dav °¡ ÁغñµÇ¾î ÀÖ¾î, ÀÌ°ÍÀº HTTP ÀÇ DAV È®ÀåÀ» ÀÌÇØÇÏ´Â ¸ðµâÀÔ´Ï´Ù. Subversion ÀÚ½ÅÀº mod_dav_svn ¸¦ ¼Æ÷Æ®ÇØ ÀÖ½À´Ï´Ù¸¸, ÀÌ°ÍÀº ´Ù¸¥ Apache ¸ðµâ·Î, mod_dav ¿Í ÇùÁ¶ÇØ µ¿ÀÛÇØ, (½ÇÁ¦·Î´Â ±× ¿¬±¸ ÃÖÁ¾ ´Ü°è·Î¼) Subversion»ó¿¡¼ÀÇ ±¸Ã¼ÀûÀÎ WebDAV¿Í DeltaVÀÇ ½ÇÀåÀÌ µÇ°í ÀÖ½À´Ï´Ù. HTTP ³Ñ¾î·Î ÀúÀå¼Ò(repository)¿Í Åë½ÅÇÒ ¶§, RA·Î´õ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â libsvn_ra_dav ¸¦
¼¹ö ÇÁ·Î¼¼½º ¸ðµâ·Î¼ ¼±ÅÃÇÕ´Ï´Ù. Subversion Ŭ¶óÀ̾ðÆ®´Â
ÀϹÝÀûÀÎ RA ÀÎÅÍÆäÀ̽º¸¦ È£ÃâÇØ, libsvn_ra_dav ´Â ÀÌ·¯ÇÑ
È£ÃâÀ»(±×°ÍÀº ¾ÆÁ÷ ´ë·«ÀûÀÎ SubversionÀÇ µ¿ÀÛÀ» ±¸Ã¼ÈÇÕ´Ï´Ù)À»,
HTTP/WebDAV ¿ä±¸·Î º¯È¯ÇÕ´Ï´Ù. Neon ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¸¦ »ç¿ëÇØ, libsvn_ra_dav
(Àº)´Â ÀÌ·¯ÇÑ ¿ä±¸¸¦ Apache ¼¹ö¿¡ ¼Û½ÅÇÕ´Ï´Ù. Aapche ´Â ÀÌ·¯ÇÑ ¿ä±¸
(À»)¸¦ ¹Þ¾Æ(Web ºê¶ó¿ìÀú°¡ ÇÏ´Â °Í°ú ¿ÏÀüÈ÷ °°Àº ÀϹÝÀûÀÎ HTTP ¿ä±¸ÀÔ´Ï´Ù¸¸),
DAV °ü¸®ÀÇ À§Ä¡·Î¼ ¼³Á¤µÈ URL¿¡ µ¹¸®°í(
httpd.confÆÄÀÏÁßÀÇ
ÀÌ°ÍÀÌ ½ÇÁ¦·Î ÀϾ´Â ±³È¯ÀÇ °£·«ÈÇÑ ¼³¸íÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, Subversion ÀúÀå¼Ò(repository)´Â ApacheÀÇ ÀÎÁõ ÀνºÆ®·°¼Ç¿¡ ÀÇÇØ º¸È£µÇ°í ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. ÀÌ°Í¿¡ ÀÇÇØ, ÀúÀå¼Ò(repository)¿Í ÃÖÃÊ·Î Åë½ÅÇÏ·Á°í ÇÏ´Â ½Ãµµ°¡, ÀÎÁõ ºÙ¾î ÀÖ´Â Apache¿¡ µû¶ó¼ ½ÇÆп¡ ³¡³¯Áöµµ ¸ð¸¨´Ï´Ù. ÀÌ ½ÃÁ¡¿¡¼, libsvn_ra_dav´Â ¾ÆÆÄÄ¡·ÎºÎÅÍ, ºÒÃæºÐÇÑ ÀÎÁõ ¹Û¿¡ ¾òÀ» ¼ö ¾ø¾ú±â ¶§¹®¿¡ Ŭ¶óÀ̾ðÆ®Ãþ¿¡ °»½ÅµÈ ÀÎÁõ µ¥ÀÌÅ͸¦ ÃëµæÇϱâ À§Çؼ Äݹé Çß´Ù, ¶ó°í ÇÏ´Â ÅëÁö¸¦ ¹Þ½À´Ï´Ù. ¸¸¾à ÀÌ µ¥ÀÌÅÍ°¡ ¿Ã¹Ù¸£°Ô ÃëµæÇÒ ¼ö ÀÖÀ¸¸é, À¯Àú´Â, Çã°¡µÈ ÃÖÃÊÀÇ Á¶ÀÛ (À»)¸¦ ½ÇÇàÇÏ´Â, libsvn_ra_davÀÇ ´ÙÀ½ÀÇ ¾ÆÅä¹ÍÀÎ ¿ä±¸¸¦ ã¾Æ, ¸ðµÎ ÇÏÁö¸¸ Àߵ˴ϴÙ. ¸¸¾à ÃæºÐÇÑ ÀÎÁõ Á¤º¸°¡ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é ¿ä±¸´Â ÃÖÁ¾ÀûÀ¸·Î ½ÇÆÐÇØ, Ŭ¶óÀ̾ðÆ®´Â À¯Àú¿¡°Ô ±× ÃëÁö¸¦ º¸°íÇÕ´Ï´Ù. Neon¿Í Apache¸¦ »ç¿ëÇØ, SubversionÀº ´Ù¸¥ ¿©·¯°¡Áö º¹ÀâÇÑ area¿¡ÀÇ ÀÚÀ¯·Î¿î ±â´ÉÀ» ¾òÀ» ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¸¸¾à Neon°¡ OpenSSL ÇÁ·Î±×·¥ ¶óÀ̺귯¸® (À»)¸¦ ã¾Æ³ÂÀ» °æ¿ì, ±×°ÍÀº Subversion Ŭ¶óÀ̾ðÆ®¿¡ SSL·Î ¾ÏȣȵǾú´Ù Åë½ÅÀ», Apache ¼¹ö·Î ÇÏ´Â °ÍÀ» ÀÎÁ¤ÇÕ´Ï´Ù. (±× °íÀ¯ÀÇ mod_ssl ´Â"±× ¾ð¾î¸¦ À̾߱âÇÕ´Ï´Ù"). ¶Ç, Neon ÀڽŰú ApacheÀÇ mod_deflate´Â"deflate"¾Ë°í¸®ÁòÀ» ÀÌÇØÇÒ ¼ö ÀÖÀ¸¹Ç·Î( PKZIP¿Í gzip ÇÁ·Î±×·¥À¸·Î ÀÌ¿ëµÇ°í ÀÖ´Â °Í°ú °°Àº °ÍÀÔ´Ï´Ù¸¸), ¿ä±¸´Â º¸´Ù ÀÛÀº ¾ÐÃàµÈ µ¢¾î¸®·Î¼ Åë½Å·Î¸¦ È帨´Ï´Ù. Subversiont°¡ ÇâÈÄ ¼Æ÷Æ®ÇÏ°í ½Í´Ù°í »ý°¢ÇÏ°í ÀÖ´Â °Í ¿ÜÀÇ º¹ÀâÇÑ ±â´É (À¸)·Î¼´Â, ÀÚµ¿ÀûÀ¸·Î ¼¹öÃøÀÇ ¸®µð·ºÆ®¸¦ ó¸®ÇÏ´Â °Í(¿¹¸¦ µé¾î, ÀúÀå¼Ò(repository)°¡ ´Ù¸¥ »õ·Î¿î URL·Î À̵¿ÇÑ °Í °°Àº °æ¿ì)³ª, HTTP ÆÄÀÌÇÁ¶óÀÎ ÀÇ ÇýÅÃÀ» ¹Þ´Â °Í, µîÀÔ´Ï´Ù. 1.1.2.2. RA-SVN (°íÀ¯ÀÇ ÇÁ·ÎÅäÄÝ¿¡ ÀÇÇÑ ÀúÀå¼Ò(repository) ¾×¼¼½º)Ç¥ÁØÀûÀÎ HTTP/WebDAV ÇÁ·ÎÅäÄÝ¿¡ °¡¼¼ÇØ, SubversionÀº °íÀ¯ÀÇ ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ´Â RAÀÇ ½ÇÀåµµ ÁغñÇØ ÀÖ½À´Ï´Ù. libsvn_ra_svn ¸ðµâÀº °íÀ¯ÀÇ ³×Æ®¿öÅ© ¼ÒÄÏ Á¢¼ÓÀ» ½ÇÀåÇØ, ÀúÀå¼Ò(repository)°¡ ÀÖ´Â ½ºÅĵå¾ó·Ð ¼¹ö (¿Í)°ú Åë½ÅÇÏ´Â svnserveÀԴϴ٠Ŭ¶óÀ̾ðÆ®´Âsvn:// schema·Î ÀúÀå¼Ò(repository)¿¡ ¾×¼¼½º·Î ¿É´Ï´Ù. ÀÌ RA ½ÇÀåÀº, ÀüÀÇ ¸¶µð·Î Á¢ÇÑ ApacheÀÇ ÀÌÁ¡ÀÇ ´ëºÎºÐÀÌ ºÎÁ·ÇÏ°í ÀÖ½À´Ï´Ù. ±×·¯³ª, ±×°ÍÀº ¾î¶² Á¾·ùÀÇ ½Ã½ºÅÛ °ü¸® Ã¥ÀÓÀÚ¸¦ ²ø¾î´ç±æÁöµµ ¸ð¸¨´Ï´Ù. ±×°ÍÀº ¸Å¿ì °£´ÜÇÏ°Ô ¼³Á¤ÇØ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. svnserve ÇÁ·Î¼¼½ºÀÇ ¼³Á¤Àº, °ÅÀÇ ¼ø°£ÀûÀ¸·Î ³¡³³´Ï´Ù. ¶Ç ±×°ÍÀº Apacheº¸´Ù (ÄÚµåÇà¼ö¶ó°í ÇÏ´Â Àǹ̷Î) ÈξÀ ÀÛ°í, ½ÃÅ¥·¯Æ¼³ª ´Ù¸¥ »çÁ¤¿¡ ÀÇÇѴ٠üũµµ ÈξÀ ¿ëÀÌÇÕ´Ï´Ù. ÇÑÃþ ´õ ¸î°³ÀÇ ½Ã½ºÅÛ °ü¸® Ã¥ÀÓÀÚ´Â ¹ú½á SSH ÀÇ ½ÃÅ¥·¯Æ¼ ÀÎÇÁ¶ó¸¦ °¡Áö°í ÀÖ¾î, Subversion¿¡µµ ±×°ÍÀ» »ç¿ëÇÏ°Ô ÇÏ°í ½Í´Ù (ÀÌ)¶ó°í »ý°¢ÇÏ°í ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù. ra_svn ¸¦ »ç¿ëÇϴ Ŭ¶óÀ̾ðÆ®´Â SSH ¸¦ °³ÀÔ½ÃÄÑ ÇÁ·ÎÅäÄÝÀ» °£´ÜÇÏ°Ô ÅͳΠÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. 1.1.2.3. RA-Local (ÀúÀå¼Ò(repository)¿¡ÀÇ Á÷Á¢ÀûÀÎ ¾×¼¼½º)Subversion ÀúÀå¼Ò(repository)¿ÍÀÇ ¸ðµç Åë½ÅÀÌ Å« ¼¹ö ÇÁ·Î¼¼½º¿Í ³×Æ®¿öÅ©Ãþ (À»)¸¦ ÇÊ¿ä·Î ÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ·ÎÄà µð½ºÅ© ¿ì¿¡³ë ÀúÀå¼Ò(repository)¿¡ ¾×¼¼½º ÇÏ°í ½ÍÀº °Í»ÓÀÇ À¯Àú¿¡°Ô À־Â,file: ¸¦ »ç¿ëÇÒ ¼ö°¡ ÀÖ¾î libsvn_ra_local°¡ Á¦°øÇÏ´Â ±â´ÉÀ» »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ RA ¸ðµâÀº Á÷Á¢ ÀúÀå¼Ò(repository)¿Í ÆÄÀÏ ½Ã½ºÅÛ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿Í °áÇյǹǷÎ, ³×Æ®¿öÅ© Åë½ÅÀº ÀüÇô ÇÊ¿ä ¾ø½À´Ï´Ù. SubversionÀºfile: URLÀÇ ÀϺημ localhost Àΰ¡, ÇÏ´ÃÀ» ÀÎ ¼¹ö ¸íĪÀ» Æ÷ÇÔÇÏ´Â °ÍÀ» ¿ä±¸ÇØ, Æ÷Åä ÁöÁ¤Àº ¾ø½À´Ï´Ù. ¸»Åõ¸¦ ¹Ù²Ù¸é(ÀÚ), URL´Â ¹«¾ùÀΰ¡, file://localhost/path/to/repos Àΰ¡ file:///path/to/repos (¿Í)°ú °°Àº ÇüÅÂÀÇ °ÍÀÌ µË´Ï´Ù. °Ô´Ù°¡ SubversionÀÇfile:URL´Â º¸Åë web ºê¶ó¿ìÀú°¡ file:URL°¡ ÇÏ´Â ¹æ¹ý¿¡¼´Â ÀÌ¿ëÇÒ ¼ö ¾ø´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. Åë»óÀÇ web ºê¶ó¿ìÀú·Î file:URL¸¦ ¿¶÷ÇÏ·Á°í ¸»ÇÒ ¶§, ÆÄÀÏ ½Ã½ºÅÛÀ» Á÷Á¢ Á¶»çÇÏ´Â °ÍÀ¸·Î ±× ÀÚ¸®¼Ò¿¡ ÀÖ´Â ÆÄÀÏÀÇ ³»¿ëÀ» Àоîµé¿© Ç¥½ÃÇÕ´Ï´Ù. ±×·¯³ª, SubversionÀÇ ¸®¼Ò½º´Â °¡»ó ÆÄÀÏ ½Ã½ºÅÛÁß¿¡ ÀÖ¾î, (>ÂüÁ¶) ´ç½ÅÀÇ ºê¶ó¿ìÀú´Â ±× ÆÄÀÏ ½Ã½ºÅÛÀ» ¾î¶»°Ô ÀÐÀ¸¸é ÁÁÀº°¡ ÀÌÇØÇÒ ¼ö ¾øÀ» °ÍÀÔ´Ï´Ù. 1.1.2.4. Your RA Library HereÇÑÃþ ´õ ´Ù¸¥ ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇØ SubversionÀÇ ÀúÀå¼Ò(repository)¿¡ ¾×¼¼½º ÇÏ°í ½ÍÀ¸¸é ¸»ÇÏ´Â »ç¶÷¿¡°Ô ÀÖ¾î¾ß¸¸, ¾î°¼ ÀúÀå¼Ò(repository) ¾×¼¼½ºÃþÀÌ ¸ðµâȵǰí ÀÖ´Ù ÀϱîÇÏ°í ¸»ÇÏ´Â ÀÌÀ¯°¡ µË´Ï´Ù. °³¹ßÀÚ´Â ´Ù¸¥ ÇÑÂÊÀ¸·Î RA ÀÎÅÍÆäÀ̽º¸¦ ½ÇÀåÇÑ´Ù »õ·Î¿î ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¸¦ °£´ÜÇÏ°Ô ¾µ ¼ö°¡ ÀÖ¾î ÀÌÁ¦(¹ú½á) ÇÑÆíÀ¸·Î ±× ÀúÀå¼Ò(repository)¿Í Åë½ÅÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. »õ·Î¿î ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â ÀÌ¹Ì Á¸ÀçÇÏ°í ÀÖ´Â ³×Æ®¿öÅ© ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇÒ ¼öµµ ÀÖ°í, ½º½º·Î °³¹ßÇÑ °ÍÀÌ¶óµµ ÁÁ½À´Ï´Ù. ÇÁ·Î¼¼½º°£ Åë½Å(IPC) È£ÃâÀ» »ç¿ëÇÒÁöµµ ¸ð¸£Áö¾Ê°íÁ¶±Ý ¹Ùº¸ ÀÏÁöµµ ¾Ë·ÁÁöÁö ¾Ê½À´Ï´Ù¸¸e-mail º£À̽ºÀÇ ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ´Â °Íµµ ÇÒ ¼ö ÀÖ½À´Ï´Ù. SubversionÀº API¸¦ Á¦°øÇØ, ´ç½ÅÀº ÀÚ½ÅÀÇ »ó»ó¼ºÀ» Á¦°øÇÑ´Ù, ¶ó°í. 1.1.3. Ŭ¶óÀ̾ðÆ®ÃþŬ¶óÀ̾ðÆ®Ãø¿¡¼ º¸¸é(ÀÚ), SubversionÀÇ ÀÛ¾÷ Ä«ÇÇ´Â ¸ðµç 󸮰¡ ÀϾ´Â Àå¼ÒÀÔ´Ï´Ù. Ŭ¶óÀ̾ðÆ®Ãø ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿¡ ÀÇÇØ ½ÇÀåµÇ´Â ±â´ÉÀº, ÀÛ¾÷ Ä«ÇÇÀÇ °ü¸®¶ó°í ÇÏ´Â ´Ù¸¸ ÇϳªÀÇ ¸ñÀûÀ¸·Î À§ÇØ(¶§¹®¿¡) Á¸ÀçÇÕ´Ï´Ù·ÎÄÃÀÎ Àå¼Ò¿¡ ÇϵîÀÇ ÇüÅ·ΠÁ¦°øµÈ´Ù ÆÄÀÏ°ú ´Ù¸¥ ¼ºê µð·ºÅ丮°¡ ÀÖ´Â µð·ºÅ丮°¡, Çϳª ÀÌ»óÀÇ ÀúÀå¼Ò(repository) À§Ä¡¸¦ ¹Ý¿µÇÑ °ÍÀ¸·Î ÇØ, ÀúÀå¼Ò(repository) ¾×¼¼½ºÃþ°úÀÇ »çÀÌÀÇ º¯°æÀ» ÀüÇϰųª ÇÕ´Ï´Ù. SubversionÀÇ ÀÛ¾÷ Ä«ÇÇ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®, libsvn_wc ´Â ÀÛ¾÷ Ä«ÇÇÁßÀÇ µ¥ÀÌÅÍÀÇ °ü¸®¿¡ Á÷Á¢ÀûÀΠåÀÓÀ» Áý´Ï´Ù. ÀÌ°ÍÀ» Çϱâ À§Çؼ(¶§¹®¿¡), ÀÌ ÇÁ·Î±×·¥ ¶óÀ̺귯¸® (Àº)´Â Ưº°ÇÑ ¼ºê µð·ºÅ丮¾È¿¡ °¢°¢ÀÇ ÀÛ¾÷ Ä«ÇÇ¿¡ ´ëÇÑ °ü¸® Á¤º¸ (À»)¸¦ °Ý³³ÇÕ´Ï´Ù. ÀÌ ¼ºê µð ·ºÅä´Â. svn ¶ó°í ÇÑ´Ù À̸§ÀÔ´Ï´Ù¸¸, ¾î´À ÀÛ¾÷ Ä«ÇÇÁß¿¡µµ Á¸ÀçÇØ, °ü¸®¿¡ °ü°èÇÑ µ¿ÀÛÀ» Çϱâ À§ÇÑ »óŸ¦ ±â·ÏÇØ, ÀÛ¾÷ ½ºÆäÀ̽º¸¦ È®º¸Çϱâ À§ÇÑ ´Ù¾çÇÑ ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ Æ÷ÇÔÇÏ°í ÀÖ½À´Ï´Ù. CVS¿¡ Ä£¼÷ÇÔÀÌ ÀÖ´Â »ç¶÷À̶ó¸é, ÀÌ. svn ¼ºê µð·ºÅ丮´Â, ±× ¸ñÀûÀ¸·Î ÇØ CVSÀÇ ÀÛ¾÷ Ä«ÇÇ¿¡ ÀÖ´Â °ü¸® µð·ºÅ丮CVS ¿¡ Àß ºñ½ÁÇÑ °ÍÀ» ¾Ë ¼ö ÀÖ´Ù°í »ý°¢ÇÕ´Ï´Ù. . svn °ü¸® area¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ °ÍÀº, ÀÌ ÀåÀÇ >(À»)¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä Subversion Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ ¶óÀ̺귯¸® libsvn_client ´Â ±¤¹üÀ§ÀÇ ¿ªÇÒÀ»
Áý´Ï´Ù. ±× ÀÏÀº, ÀÛ¾÷ Ä«ÇÇ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ ±â´É°ú ÀúÀå¼Ò(repository) ¾×¼¼½ºÃþ
ÀÇ ±â´ÉÀ» ¹´Â °ÍÀ¸·Î, ÀϹÝÀûÀÎ ¸®ºñÀü Á¦¾î¸¦ ½ÇÇàÇÏ°í ½Í´Ù°í »ý°¢ÇÑ´Ù
¸ðµç ¾îÇø®ÄÉÀ̼ǿ¡ ÃÖ»óÁ¤µµÀÇ API¸¦ Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î
Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ ¶óÀ̺귯¸®´Â ¾î¶°ÇÑ ¾îÇø®ÄÉÀ̼ÇÀ¸·ÎºÎÅ͵µ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù °°°Ô ¼³°èµÇ°í ÀÖ½À´Ï´Ù. SubversionÀÇ ¿ø½Ã ÄÚµå´Â Ç¥ÁØÀûÀÎ Ä¿¸àµå ¶óÀΠŬ¶óÀ̾ðÆ®¸¦ Æ÷ÇÔÇÏ°í ÀÖÀ¸¹Ç·Î, ±× Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ À§¿¡ ÁÁ¾ÆÇÒ »Ó(¸¸Å) GUI Ŭ¶óÀ̾ðÆ®¸¦ ¾µ ¼ö°¡ ÀÖ½À´Ï´Ù. SubversionÀÇ »õ·Î¿î GUI(ȤÀº ½ÇÁ¦·Î´Â »õ·Î¿î Ŭ¶óÀ̾ðÆ®)´Â, Ä¿¸àµå ¶óÀΠŬ¶óÀ̾ðÆ®¸¦ Æ÷ÇÔÇÑ ÃÌƼ ÀÖ°í ·¡ÆÛÀÏ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ±×°ÍÀº, libsvn_client API ¸¦ ÅëÇؼ Ä¿¸àµå ¶óÀΠŬ¶óÀ̾ðÆ® ÇÏÁö¸¸ »ç¿ëÇÏ°í ÀÖ´Â °Í°ú °°Àº ±â´É, µ¥ÀÌÅÍ, ÄݹéÀÇ ±¸Á¶¿¡ ¿ÏÀüÇÏ°Ô ¾×¼¼½º ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. 1.2. APIÀÇ ÀÌ¿ëSubversion ÇÁ·Î±×·¥ ¶óÀ̺귯¸® API¸¦ »ç¿ëÇÑ ¾îÇø®ÄÉÀ̼ÇÀÇ °³¹ßÀº ºñ±³Àû ¼øÁøÇÑ ÇüÅ·ΠÁøÇàµË´Ï´Ù. ¸ðµç ÇØ´õ ÆÄÀÏÀº ¼Ò½º Æ®¸®ÀÇ subversion/include ¿¡ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ÇØ´õ´Â ¿ø½Ã ÄÚµå·ÎºÎÅÍ SubversionÀ» ¸¸µé¾î ÀνºÅç Çϸé(ÀÚ), ±× ¸Ó½ÅÀÇ ½Ã½ºÅÛ ÇØ´õÀÇ µÎ´Â °÷¼Ò¿¡ Ä«Çǵ˴ϴÙ. ÀÌ·¯ÇÑ ÇØ´õ¿¡´Â Subversion ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ À¯Àú¿¡ ÀÇÇØ ¾×¼¼½º ÇÒ ¼ö ÀÖ´Â °Í °°Àº ±â´É°ú ÇüÅÂÀÇ ¸ðµÎ°¡ ÀÖ½À´Ï´Ù. ÃÖÃÊ·Î Á¶½ÉÇÏÁö ¾ÊÀ¸¸é ¾È µÇ´Â °ÍÀº SubversionÀÇ µ¥ÀÌÅÍÇü°ú ÇÔ¼ö´Â °íÀ¯ÀÇ À̸§ °ø°£¿¡ ÀÇÇØ ºÐ¸®µÇ¾î ÀÖ´Â °ÍÀÔ´Ï´Ù. ¸ðµç °ø°øÀûÀÎ Subversion ½Éº¼¸íÀº"svn_"·Î ½ÃÀ۵Ǿî, ±× ½Éº¼ÀÌ Á¤Àǵǰí ÀÖ´Â ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ ÂªÀº Äڵ尡 °è¼ÓµÇ¾î, ("wc"¶óµçÁö, "client"¶óµçÁö,"fs"µî), ¾ð´õ ½ºÄھư¡ Çϳª ¿Í, ("_") , ¸¶Áö¸·¿¡ ½Éº¼¸íÀÇ ³ª¸ÓÁöÀÇ ºÎºÐÀÌ ¿É´Ï´Ù. ÇÑÁ¤ÀûÀ¸·Î °ø°øÀûÀÎ ÇÔ¼ö(ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÁßÀÇ ¿ø½Ã ÆÄÀÏ »çÀÌ¿¡¼´Â ÀÌ¿ëµÇÁö¸¸, ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ ¹Û¿¡¼´Â ÀÌ¿ëµÇÁö ¾Ê°í, ÇÁ·Î±×·¥ ¶óÀ̺귯¸® µð·ºÅ丮 ÀÚ½ÅÀÇ ³»ºÎ¿¡¼¸¸ ÂüÁ¶ °¡´ÉÇÑ °Í)Àº ÀÌ ¸í¸í ±Ô¾à°ú´Â Â÷ÀÌ, ÇÁ·Î±×·¥ ¶óÀ̺귯¸® ÄÚµå ÀÇ ÈÄ¿¡ ¾ð´õ ½ºÄھư¡ Çϳª ¿À´Â ´ë½Å¿¡, µÑ ¿É´Ï´Ù ("__"). ¾î´À ¿ø½Ã ÆÄÀÏ·Î »çÀûÀÎ ÇÔ¼ö´Â Ư¼öÇÑ Á¢µÎ»ç¸¦ °¡ÁöÁö ¾Ê°í,static¼±¾ðµË´Ï´Ù. ¹°·Ð ÄÄÆÄÀÏ·¯´Â ÀÌ·¯ÇÑ ¸í¸í ±Ô¾àÀ» Çؼ®ÇÕ´Ï´Ù¸¸, ¾î´À ÇÔ¼öÀÇ ½ºÄÚÇÁ³ª µ¥ÀÌÅÍÇüÀ» ºÐ¸íÈ÷ Çϴµ¥ Å« µµ¿òÀÌ µË´Ï´Ù. 1.2.1. Apache Portable Runtime ÇÁ·Î±×·¥ ¶óÀ̺귯¸®Subversion ÀÚ½ÅÀÇ µ¥ÀÌÅÍÇü°ú ÇÔ²²,"apr_"·Î ½ÃÀ۵Ǵ µ¥ÀÌÅÍÇü¿¡ÀÇ ÂüÁ¶¸¦ ¸¹ÀÌ º¸ÀÌ´Â ÀÏÀÌ ÀÖ´Â ÀÌ°ÍÀº Apache ÀÇ Portable Runtime (APR) ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÔ´Ï´Ù. APR ´Â Apache ÀÇ °¡¹ÝÀÎ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÔ´Ï´Ù¸¸, ¿ø·¡ ApacheÀÇ ¼¹ö ÄÚµåÀÇ OSÀÇÁ¸ÀÇ ºÎºÐÀ» OSºñÀÇÁ¸ÀÇ ºÎºÐÀ¸·ÎºÎÅÍ ºÐ¸®Çϱâ À§Çؼ ¸¸µé¾îÁ³½À´Ï´Ù. °á°ú´Â, OS ¸¶´Ù, Á¶±Ý, ȤÀº Å©°Ô ´Ù¸¥ Á¶ÀÛÀ» ½ÇÇàÇÑ´Ù À¯ÀÍÀÇ Ãß»óÀûÀÎ API¸¦ Á¦°øÇÏ°Ô µÇ¾ú½À´Ï´Ù. Apache HTTP ¼¹ö´Â ºÐ¸íÇÏ°Ô APR ÇÁ·Î±×·¥ ¶óÀ̺귯¸®ÀÇ ÃÖÃÊÀÇ ÀÌ¿ëÀÚ¿´Áö¸¸, Subversion °³¹ßÀÚ´Â °ð¹Ù·Î APR¸¦ »ç¿ëÇÏ´Â °ÍÀÇ Á߿伺À» ´«Ä¡Ã«½À´Ï´Ù. ÀÌ°ÍÀº ½ÇÁ¦·Î Subversion ÀÚ½ÅÁß¿¡ ÀüÇô OS¿¡ ÀÇÁ¸ÇÏ°í ÀÖÁö ¾Ê´Â ÄÚµåÀÇ ºÎºÐÀÌ ÀÖ´Â °ÍÀ» ÀÇ¹Ì ÇÕ´Ï´Ù. °Ô´Ù°¡ Subversion Ŭ¶óÀ̾ðÆ®´Â ¼¹ö°¡ ÄÄÆÄÀÏ ÇØ ½ÇÇà ÇÏ´Â Àå¼ÒÀÌ¸é ¾îµð¿¡¼¶óµµ ½ÇÇàÇÒ ¼ö ÀÖ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. Çö½ÃÁ¡¿¡¼´Â ÀÌ·¯ÇÑ OS¿¡´Â, Unix ÁÁ¾ÆÇÏ´Â ¸ðµÎ, Win32, BeOS, OS/2 ±×¸®°í Mac OS X ÇÏÁö¸¸ Æ÷ÇԵ˴ϴÙ. operating system°£¿¡ ´Ù¸¥ ½Ã½ºÅÛ ÄÝÀÇ ÀÏ°üÇß´Ù
½ÇÀåÀ» Á¦°øÇÏ´Â °Í¿¡ ÀÔ¿¡ ¹°¾î,
[3]
APR ´Â Subversion°¡ ¸¹Àº µ¶ÀÚÀûÀÎ µ¥ÀÌÅÍÇü¿¡ Á÷Á¢ ¾×¼¼½º ÇÏ´Â °ÍÀ»
°¡´ÉÇÏ°Ô ÇÕ´Ï´Ù¸¸, °Å±â¿¡´Â, µ¿ÀûÀÎ ¹è¿À̳ª Çؽà Å×À̺íÀÌ ÀÖ½À´Ï´Ù.
Subversion ´Â ¿ø½Ã ÄÚµåÁß¿¡¼ ÀÌ·¯ÇÑ ÇüŸ¦ È®ÀåÇØ ÀÌ¿ëÇÕ´Ï´Ù.
±×·¯³ª, ¾Æ¸¶ °¡Àå ±¤¹üÀ§ÇÏ°Ô ÀÌ¿ëµÇ°í ÀÖ´Â APR µ¥ÀÌÅÍÇüÀº, ´ëºÎºÐ
¸ðµç Subversion API prototype¿¡ ³ªÅ¸³³´Ï´Ù¸¸, apr_pool_tÀÔ´Ï´Ù
APRÀÇ ¸Þ¸ð¸®ÇÁ¸£ÀÔ´Ï´Ù. Subversion ´Â Ç®À» ³»ºÎÀûÀ¸·Î ¸ðµç ¸Þ¸ð¸® È®º¸
ÇÏÁö¸¸ ÇÊ¿äÇÑ °æ¿ì¿¡ ÀÌ¿ëÇÕ´Ï´Ù. (´Ù¸¸, ¿ÜºÎ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®°¡ ±× API¸¦ ÅëÇؼ
ÁÖ°í ¹Þ´Â µ¥ÀÌÅÍÀÇ ¸Þ¸ð¸® ¸Þ´ÏÁö¸ÕÆ®¿¡ ÀÌ°Í°ú ´Ù¸¥ Çü½ÄÀ» ¿ä±¸ÇÏÁö ¾Ê´Â ÇÑ¿¡ µÎ¾î,
ÀÔ´Ï´Ù. )
[4]
±×¸®°í, Subversion API ¿¡ ´ëÇÑ ÄÚµùÀº °°Àº °ÍÀÌ ¿ä±¸µÈ´Ù
(¶æ)ÀÌÀ¯°¡ ¾Æ´Õ´Ï´Ù¸¸, ÇÊ¿äÇÑ Àå¼Ò¿¡¼´Â API ÇÔ¼ö¸¦ À§Çؼ(¶§¹®¿¡) pool ¸¦ ÁغñÇÑ´Ù
(ÀÏ)°ÍÀº ¿ä±¸µË´Ï´Ù. ÀÌ°ÍÀº APR µµ ¸µÅ© ÇÒ ÇÊ¿ä°¡ ÀÖ´Â Subversion API ÀÇ
À¯Àú´Â 1.2.2. URL ¿Í Path ÀÇ ¿ä±¸Subversion ÀüüÀÇ ¹®Á¦·Î¼ÀÇ ¸®¸ðÆ® ¹öÀü °ü¸® Á¶ÀÛ¿¡¼´Â, ±¹Á¦È(i18n) ÀÇ ¼Æ÷Æ®¸¦ µû¶ó°¡´ÂµéÀΰ¡ ÁÖÀÇÇØ µÑ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. °á±¹,"¸®¸ðÆ®"°¡,"¿ÀÇǽº ÀÌ¿ÜÀÇ Àå¼Ò"¸¦ ÀǹÌÇÑ´Ù¸é, ±×°ÍÀº "Àü¼¼°è·ÎºÎÅÍ"¶ó°í ÇÏ´Â ÀǹÌÀ̱⵵ ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ »óȲ¿¡ ´ëÀÀÇϱâ À§Çؼ SubversionÀÇ Æнº Àμö¸¦ ÃëÇÏ´Â, ¸ðµç ÆÛºí¸¯ ÀÎÅÍÆäÀ̽º´Â Æнº°¡ Á¤±ÔȵǾî UTF-8À¸·Î encode µÇ°í ÀÖ´Â °ÍÀ¸·Î ÇÕ´Ï´Ù. ÀÌ°ÍÀº ¿¹¸¦ µé¾î, libsvn_client ÀÎÅÍÆäÀ̽º¸¦ È£ÃâÇÏ´Â, »õ·Î¿î Ŭ¶óÀ̾ðÆ® ¹ÙÀ̳ʸ®´Â ¸ðµÎ, Subversion ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿¡ Æнº¸¦ °Ç³×ÁØ´Ù Àü¿¡, ¿ì¼± Æнº¸¦ ·ÎÄà ÄÚµùÀ¸·ÎºÎÅÍ UTF-8À¸·Î º¯È¯ÇÏÁö ¾ÊÀ¸¸é ¾ÈµÇ¾î, Subversion ·ÎºÎÅÍÀÇ °á°ú Æнº¸¦, Subversion ÀÌ¿ÜÀÇ ¸ñÀûÀ¸·Î ÀÌ¿ëÇϱâ Àü¿¡´Â ·ÎÄà ÄÚµù¿¡ À纯ȯÇÏÁö ¾ÊÀ¸¸é ¾È µÈ´Ù°í ÇÏ´Â °ÍÀÔ´Ï´Ù. Çà¿îÀÇ ÀÏ·Î, SubversionÀº ÀÌ·¯ÇÑ º¯È¯ÀÌ ÇÊ¿äÇÑ ÀÓÀÇÀÇ ÇÁ·Î±×·¥ÀÌ ÀÌ¿ëÇÒ ¼ö ÀÖ´Â °Í °°Àº ÇÔ¼ö¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù (subversion/include/svn_utf.h¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä). ¶Ç, Subversion API ´Â ¸ðµç URL Àμö°¡ ¿Ã¹Ù¸£°í URI encode µÇ°í ÀÖ´Ù
°ÍÀ» ¿ä±¸ÇÕ´Ï´Ù. ±×·¡¼
My File.txt¶ó´Â À̸§ÀÇ ÆÄÀÏ URL¸¦,
file:///home/username/My File.txt
(¿Í)°ú °Ç³×ÁÖ´Â ´ë½Å¿¡,
file:///home/username/My%20File.txt
(¿Í)°ú °Ç³×ÁÖÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
¿ª½Ã SubversionÀº ¾îÇø®ÄÉÀ̼ÇÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Â ÇïÆÛ ÇÔ¼ö¸¦ ÁغñÇØ
ÀÖ½À´Ï´Ù
1.2.3. C ¿Í C++ÀÌ¿ÜÀÇ ¾ð¾îÀÇ ÀÌ¿ëC¾ð¾î ÀÌ¿ÜÀÇ °Í°ú Á¶ÇÕÇØ Subversion ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¸¦ »ç¿ëÇϴµ¥ Èï¹Ì°¡ Àִٸ鿹¸¦ µé¾î PythonÀÇ ½ºÅ©¸³Æ®³ª Java ¾îÇø®ÄÉÀÌ¼Ç SubversionÀº Simplified Wrapper and Interface Generator (SWIG)¶ó°í ÇÏ´Â ÇüÅ ±×¸®°í Á¶±Ý ¼Æ÷Æ®ÇÏ°í ÀÖ½À´Ï´Ù. Subversion¿ëÀÇ SWIG´Â, subversion/bindings/swig¿¡ ÀÖ¾î, õõÈ÷ ÀÌ¿ë °¡´ÉÇÑ »óÅ·ΠÀÚ¶ó°í ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» »ç¿ëÇϸé, ½ºÅ©¸³Æ® ¾ð¾î °íÀ¯ÀÇ µ¥ÀÌÅÍÇüÀ», SubversionÀÇ CÇÁ·Î±×·¥ ¶óÀ̺귯¸®·Î ÇÊ¿äÇÑ µ¥ÀÌÅÍÇüÀ¸·Î º¯È¯ÇÏ´Â ³ªÆÈÀ» »ç¿ëÇØ Subversion API ¸¦ °£Á¢ÀûÀ¸·Î È£ÃâÇÒ ¼ö°¡ ÀÖ°Ô µË´Ï´Ù. ¾ð¾î Á¦ÈÞ¸¦ ÅëÇؼ SubversionAPI ¿¡ ¾×¼¼½º ÇÏ´Â °ÍÀº ºÐ¸íÇÏ°Ô ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù ´Ü¼øÇÔ, ÀÔ´Ï´Ù. ÀϹÝÀûÀ¸·Î, Python ³ª Perl ¶ó°í ÇÏ´Â ¾ð¾î´Â C ³ª C++ (À»)¸¦ »ç¿ëÇÏ´Â °Íº¸´Ùµµ ÈξÀ À¯¿¬ÇÏ°í ½¬¿î °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ ¾ð¾î°¡ ÁغñÇØ ÀÖ´Ù °í·¹º§ µ¥ÀÌÅÍÇü°ú ¹®¸Æ ÀÇÁ¸ÀÇ µ¥ÀÌÅÍÇüÀÇ Ã¼Å©¿Í °°Àº °ÍÀº, Á» ´õ Àß À¯Àú·ÎºÎÅÍÀÇ Á¤º¸¸¦ ó¸®ÇÕ´Ï´Ù. ¹ú½á ¾Æ½Ã´Â ¹Ù¿Í °°ÀÌ, Àΰ£¸¸ÀÌ ÇÁ·Î±×·¥ÀÇ ÀÔ·ÂÀ» À߸øÇØ ½ºÅ©¸³Æ®°èÀÇ ¾ð¾î´Â ´ÜÁö ±× »çÀÌ Â÷À̸¦ Á» ´õ Àß Ã³¸®ÇÒ »ÓÀÔ´Ï´Ù. ¹°·Ð, ÀÚÁÖ ÀÌ À¯¿¬¼ºÀº ÆÛÆ÷¸Õ½º¸¦ Èñ»ý¿¡ ¼¶. ÀÌ°ÍÀÌ, ¿Ö °íµµ·Î ÃÖÀûÈµÈ Cº£À̽ºÀÇ ÀÎÅÍÆäÀ̽º¿Í ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¸¦, °·ÂÇÏ°í À¯¿¬ÇÑ ¾ð¾î¿Í Á¶ÇÕÇØ ÀÌ¿ëÇÏ´Â °Í¿¡ »ç¶÷ÀÌ ²ø¾î ´ç±â°í Àΰ¡ÀÇ ÀÌÀ¯ÀÔ´Ï´Ù. SubversionÀÇ Python¿ë SWIG Á¦ÈÞÀÇ ¿¹¸¦ º¾½Ã´Ù. ÀÌ ¿¹´Â ÀüÀÇ ¿¹¿Í °°Àº °ÍÀ» ÇÕ´Ï´Ù. À̹ø ÇÔ¼öÀÇ »çÀÌÁî¿Í º¹ÀâÇÔÀÇ Á¤µµ¿¡ ÁÖÀÇÀÔ´Ï´Ù. Example 1-2. Python¸¦ »ç¿ëÇÑ ÀúÀå¼Ò(repository)Ãþ
ÀüÀÇ ¿¹¿¡¼ÀÇ C ¿¡ ÀÇÇÑ ½ÇÀåÀº Á» ´õ ÈξÀ ±ä °ÍÀ̾ú½À´Ï´Ù. C ÀÇ °°Àº routine (Àº)´Â ¸Þ¸ð¸®ÀÇ ÀÌ¿ëÀÇ ¹æ¹ý¿¡ ½Å°æÀ» »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖ¾î, ¿£Æ®¸®ÀÇ ÇØ½Ã¿Í ÆнºÀÇ ¸®½ºÆ®¸¦ Ç¥ÇöÇÏ´Â µ¶ÀÚÀûÀÎ µ¥ÀÌÅÍÇüÀÌ ÇÊ¿äÇß½À´Ï´Ù. Python ´Â ÇØ½Ã¿Í ¸®½ºÆ®(°¢°¢"dictionaries"¿Í"sequences"¶ó°í ÇÏ´Â ¸»Åõ¸¦ ÇÕ´Ï´Ù¸¸)¸¦ ÆíÀÔ µ¥ÀÌÅÍÇüÀ̶ó°í Çصµ´Â ÀÖ¾î, ÀÌ·¯ÇÑ ÇüÅ¿¡ ´ëÇÑ ÈǸ¢ÇÑ Á¶ÀÛ ¹æ¹ý ÇÏÁö¸¸ ÁغñµÇ¾î ÀÖ½À´Ï´Ù. ±×¸®°í, Python ´Â ÂüÁ¶ Ä«¿îÆ®¿Í ¾²·¹±â ÄÝ·º¼Ç (À»)¸¦ »ç¿ëÇϹǷÎ, ÀÌ ¾ð¾îÀÇ À¯Àú´Â ¸Þ¸ð¸®ÀÇ È®º¸¿Í °³¹æ¿¡ ´ëÇØ °í¹ÎÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù. ÀÌ ÀåÀÇ ÀüÀÇ ¸¶µð·Î,libsvn_client ÀÎÅÍÆäÀ̽º ¿¡ Á¢ÇØ Subversion Ŭ¶óÀ̾ðÆ®¸¦ ¾²±â À§ÇÑ ³ë·ÂÀ» °æ°¨ÇÑ´Ù°í ÇÏ´Â À¯ÀÏÇÑ ¸ñÀûÀ» À§Çؼ(¶§¹®¿¡) ÀÖ´Ù°í Çß½À´Ï´Ù. ÀÌÇÏ´Â ÀÌ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®¿¡, ¾î¶»°Ô ÇØ SWIG Á¦ÈÞ¸¦ À̶ó°í ´·¯ ¾×¼¼½º ÇÒ ¼ö°¡ ÀÖÀ»±îÀÇ °£´ÜÇÑ ¿¹ÀÔ´Ï´Ù. Python ÀÇ ¸î ÁÙ±âÀÇ ÄÚµå·Î, ¿ÏÀüÇÏ°Ô ±â´ÉÇÏ´Â SubversionÀÇ ÀÛ¾÷ Ä«ÇǸ¦ üũ ¾Æ¿ô ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Example 1-3. ÀÛ¾÷ Ä«ÇǸ¦ üũ¾Æ¿ô ÇÏ´Â ´Ü¼øÇÑ ½ºÅ©¸³Æ®
Çö½ÃÁ¡¿¡¼, ÀÌ°ÍÀÌ SubversionÀÇ Python Á¦ÈÞÀ̸ç, ±×°ÍÀº °ÅÀÇ ¿Ï¼º µÈ °ÍÀÔ´Ï´Ù. Java Á¦ÈÞ¿¡ ´ëÇؼµµ Á¶±Ý Á¢ÇØ µÓ´Ï´Ù. SWIG ÀÎÅÍÆäÀ̽º ÆÄÀÏÀÌ ¿Ã¹Ù¸£°Ô ¼³Á¤µÇ¸é, ¸ðµç SWIG ´ëÀÀ ¾ð¾î(ÇöÀç·Î¼´Â, Tcl, Python, Perl, Java, Ruby, Mzscheme, Guile, ±×¸®°í PHPÀÔ´Ï´Ù¸¸)ÀÇ Æ¯Á¤ÀÇ ³ªÆÈÀ» »ý¼ºÇÏ´Â °ÍÀº ÀÌ·ÐÀûÀ¸·Î´Â °£´ÜÇÑ ÀÏÀÔ´Ï´Ù. ±×·¯³ª, SWIG°¡ ÀϹÝÈÇÏ´Â µµ¿òÀÌ ÇÊ¿äÇÑ º¹ÀâÇÑ API ¿¡ ´ëÇؼ´Â, Á» ´õ Ãß°¡ÀÇ ÄÚµù ÇÏÁö¸¸ ÇÊ¿äÇÕ´Ï´Ù. SWIG ÀÚ½ÅÀÇ °Íº¸´Ù ÀÚ¼¼ÇÑ Á¤º¸´Âhttp://www.swig.org¿¡ ÀÖ´Â ÇÁ·ÎÁ§Æ® ÀÇ À¥ »çÀÌÆ®¸¦ ºÁ ÁÖ¼¼¿ä. 1.3. ÀÛ¾÷ Ä«ÇÇ °ü¸® areaÀÇ ³»ºÎÀÌÀü ÁöÀûÇÑ °Íó·³, Subversion ÀÛ¾÷ Ä«ÇÇÀÇ µð·ºÅ丮ÀÇ °¢°¢Àº . svn ¶ó´Â À̸§ÀÇ Æ¯º°ÇÑ ¼ºê µð·ºÅ丮¸¦ °®°í, °Å±â¿¡ ÀÛ¾÷ Ä«ÇÇ µð·ºÅ丮¿¡ °üÇÑ °ü¸® Á¤º¸¸¦ °Ý³³ÇÕ´Ï´Ù. Subversion ´Â. svn ÁßÀÇ Á¤º¸¸¦ ÀÌÇÏ¿Í °°Àº ÀÏÀ» ±â·ÏÇϴµ¥ ÀÌ¿ëÇÕ´Ï´Ù:
. svn µð·ºÅ丮¿¡ °Ý³³µÈ µ¥ÀÌÅÍ¿¡´Â ±× ¹Û¿¡µµ ¿©·¯ °¡Áö ÀÖ½À´Ï´Ù¸¸, °¡Àå Áß¿äÇÑ ¾ÆÀÌÅÛÀÇ ¸î°³Àΰ¡ÀÎ ¸¸Å ´ëÇØ ¼³¸íÇÕ´Ï´Ù. 1.3.1. Entries ÆÄÀÏ. svn µð·ºÅ丮¿¡ ÀÖ´Â Á¦ÀÏ Áß¿äÇÑ ÆÄÀÏÀºentries ÆÄÀÏÀÔ´Ï´Ù. ÀÌ ÆÄÀÏÀº XML ¹®¼·Î ±× ³»¿ëÀº ÀÛ¾÷ Ä«ÇÇ µð·ºÅ丮¾ÈÀÇ ¹öÀü °ü¸®ÇÏ¿¡ ÀÖ´Â ¸®¼Ò½º¿¡ ´ëÇÑ °ü¸® Á¤º¸ÀÇ ¸ðÀÓÀÔ´Ï´Ù. ÀúÀå¼Ò(repository) URL, ¼öÁ¤¿ø¸®ºñÀü, ÆÄÀÏÀÇ Ã¼Å© ¼¶, ¼öÁ¤¿ø ÅؽºÆ®¿Í ¼Ó¼ºÀÇ Å¸ÀÓ ½ºÅÆÇÁ, ¿¹°í¿Í Ãæµ¹ »óÅ¿¡ °üÇÑ Á¤º¸, ¸¶Áö¸·¿¡ Ä¿¹ÔÇß´ø °Í¿¡ °üÇÑ Á¤º¸(½ÇÇàÀÚ, ¸®ºñÀü, ŸÀÓ ½ºÅÆÇÁ), ·ÎÄà īÇÇ È÷½ºÅ丮Subversion Ŭ¶óÀ̾ðÆ®°¡ °ü¸®ÇÏ°í ÀÖ´Â ¸®¼Ò½º ¿¡ ºÙ¾î Èï¹Ì°¡ ÀÖ´Â Á¤º¸´Â ¸ðµÎ ¿©±â¿¡ ±â·ÏµÇ°í ÀÖ½À´Ï´Ù. ÀÌÇÏ´Â, ½ÇÁ¦ÀÇ entries ÆÄÀÏÀÇ ¿¹ÀÔ´Ï´Ù: Example 1-4. ÀüÇüÀûÀÎ. svn/entries ÆÄÀÏ
¾Ëµµ·Ï(µíÀÌ), entries ÆÄÀÏÀº º»ÁúÀûÀ¸·Î´Â ¿£Æ®¸®ÀÇ ¸®½ºÆ®ÀÔ´Ï´Ù.
°³¹ßÀÚ´Â, Subversion °¡entries ÆÄÀÏÀ»
ÀÐ°í ¾²±âÇÒ °æ¿ì¿¡ »ç¿ëÇϴ Ưº°ÇÑ ±ÔÄ¢¿¡ ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù.
¸ðµç ¿£Æ®¸®´Â ÀÚ½ÅÀÇ ¸®ºñÀü°ú ÀÌ¾î ºÙ¾î ÀÖ´Â URL¸¦
°¡Áö°í ÀÖ½À´Ï´Ù¸¸, »ùÇà ÆÄÀÏÁßÀÇ ¸ðµç 1.3.2. ¼öÁ¤¿øÄ«ÇÇ¿Í ¼Ó¼º ÆÄÀϾÕÀ¸·Î ÁÖÀÇÇÑ °Íó·³,. svnµð·ºÅ丮´Â ¶Ç ¼öÁ¤¿øÀÇ"text-base"¹öÀüÀÇ ÆÄÀÏÀ» º¸Á¸ÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº. svn/text-base¿¡ ÀÖ½À´Ï´Ù. ¼öÁ¤¿ø Ä«ÇÇÀÇ ÀÌÁ¡Àº, ¸î°³Àΰ¡ ÀÖ½À´Ï´Ù. ³×Æ®¿öÅ©ÀÇ Åë½Å¾øÀÌ ·ÎÄà ¼öÁ¤À» üũÇØ Â÷ºÐÀ» º¸°íÇϰųª ³×Æ®¿öÅ© Åë½Å¾øÀÌ ¼öÁ¤Çϰųª »èÁ¦ÇÑ ÆÄÀÏÀ» ¹ÙÅÁÀ¸·Î µÇµ¹¸®°Å³ª ¼¹ö¿¡ÀÇ º¯°æÁ¡ÀÇ ¼Û½Å »çÀÌÁ ÁÙÀ̰ųª ÇÒ ¼ö ÀÖ½À´Ï´Ù±×·¯³ª, Àû¾îµµ °¢°¢ÀÇ ¹öÀü °ü¸®µÈ ÆÄÀÏÀ» µÑµð½ºÅ©»ó¿¡ º¸Á¸ÇÏ´Â ÄÚ½ºÆ®°¡ ¹ß»ýÇÕ´Ï´Ù. ÃÖ±Ù¿¡´Â, ÀÌ°ÍÀº(Á¤µµ)¸¸Å ¾î´À ÆÄÀÏ¿¡ ´ëÇØ ¹«½ÃÇÒ ¼ö ÀÖ´Â Á¤µµÀÇ ¹°°ÇÀÔ´Ï´Ù. ±×·¯³ª, ¹öÀü °ü¸®µÈ ÆÄÀÏÀÌ Ä¿Áö´Â °Í¿¡ µû¶ó´Â ÀÌ »óȲÀº ½ÉÇÑ °Í¿¡ µÇ¾î °©´Ï´Ù. "text-base" ÀǸ¦ ¸¸µå´ÂÁö ¾î¶²Áö¸¦ ¿É¼ÇÀ¸·Î¼´Â, À̶ó°í ÇÏ´Â ÀÇ°ßµµ ÀÖ½À´Ï´Ù. ±×·¯³ª Áþ±Ä°Ôµµ, ¹öÀü °ü¸®ÇÏ´Â ÆÄÀÏÀÇ »çÀÌÁî°¡ Ä¿Áö´Â¿¡ µû¶ó,"ÅؽºÆ® º£À̽º"ÀÇ Á¸Àçµµ, ±× ¸¸Å Áß¿äÇÏ°Ô µÇ¾î °¡´Â ÆÄÀÏ·Î ÇÑ ¾ÆÁÖ Á¶±ÝÀÇ º¯°æÀ» Ä¿¹ÔÇÏ°í ½ÍÀº °Í»ÓÀε¥, ¾öû³ª°Ô Å©´Ù ÆÄÀÏÀ» ³×Æ®¿öÅ© ³Ñ¾î·Î º¸³»ÀÚ´Â, ´©°¡ »ý°¢ÇÒ±î¿ä? "text-base"ÆÄÀÏ°ú °°Àº ¸ñÀûÀ¸·Î, ¼Ó¼º ÆÄÀÏ°ú ±× ¼öÁ¤¿ø "prop-base"Ä«ÇÇ°¡ ÀÖ½À´Ï´Ù. °¢°¢,. svn/props (¿Í)°ú. svn/prop-base ¿¡ ÀÖ½À´Ï´Ù. µð·ºÅ丮µµ ¼Ó¼ºÀ» °¡Áú ¼ö°¡ ÀÖÀ¸¹Ç·Î, . svn/dir-props ¿Í . svn/dir-prop-base ÆÄÀÏÀÌ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¼Ó¼º ÆÄÀÏÀÇ °¢°¢("ÀÛ¾÷Áß"°ú"¿ø·¡ÀÇ"¹öÀü)Àº ¼Ó¼º¸í°ú ¼Ó¼ºÄ¡¸¦ °Ý³³Çϴµ¥, ´Ü¼øÇÑ"µð½ºÅ©»ó ÇؽÃ"ÆÄÀÏ Çü½Ä (À»)¸¦ »ç¿ëÇÕ´Ï´Ù. 1.4. WebDAVWebDAV ("Web º£À̽ºÀÇ ºÐ»ê ÆíÁý°ú ¹öÀüÈ")´Â Ç¥ÁØÀûÀÎ HTTP ÇÁ·ÎÅäÄÝÀÇ È®ÀåÀ¸·Î, ±âº»ÀûÀ¸·Î´Â Àоîµé¿© Àü¿ëÀÇ ¸ÅüÀÎ web¸¦, ÀÐ°í ¾²±â °¡´ÉÇÑ ¸Åü¿Í Çϱâ À§Çؼ ¼³°èµÇ¾ú½À´Ï´Ù. »ý°¢À¸·Î¼´Â, µð·ºÅ丮¿Í ÆÄÀÏÀº ÀÐ°í ¾²±â °¡´ÉÇÑ ¿ÀºêÁ§Æ®·Î¼Web»ó¿¡¼ °øÀ¯ÇÒ ¼ö ÀÖ´Ù°í ÇÑ´Ù ¹°°ÇÀÔ´Ï´Ù. RFCs 2518 À¸·Î 3253 Àº, HTTP ÀÇ WebDAV/DeltaV È®Àå¿¡ ´ëÇØ ±â¼ú µÇ°í ÀÖ¾î, (´Ù¸¥ À¯¿ëÇÑ Á¤º¸¿Í ÇÔ²²)http://www.webdav.org/·Î ÀÔ¼ö °¡´ÉÇÕ´Ï´Ù. ¸î°³ÀÇ operating systemÀÇ ÆÄÀÏ ºê¶ó¿ìÀú´Â ¹ú½á WebDAV¸¦ »ç¿ëÇÑ ³×Æ®¿öÅ© µð·ºÅ丮¸¦ mount ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Win32¿¡¼´Â, Windows Explorer ´Â "Web Æú´õ"(±×°ÍÀº È®½ÇÈ÷, WebDAV ÇÏÁö¸¸ ÁغñÇÑ ³×Æ®¿öÅ©ÀÇ Àå¼ÒÀÔ´Ï´Ù¸¸)À̶ó°í ºÎ¸£°í ÀÖ´Â °ÍÀ», ¸¶Ä¡ ±×°ÍÀÌ º¸Åë °øÀ¯ Æú´õÀÎ°Í °°ÀÌ ÂüÁ¶ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Mac OS X µµ ÀÌ ´É·ÂÀÌ ÀÖ¾î, Nautilus ³ª Konqueror ºê¶ó¿ìÀúµµ ±×·¸½À´Ï´Ù. (À̰͵éÀº, GNOME ¿Í KDE »ó¿¡¼ °¢°¢ ¿òÁ÷ÀÔ´Ï´Ù). ÀÌ°Íµé ¸ðµç °ÍÀº ¾î¶»°Ô ÇØ Subversion ¿¡ Àû¿ëµÇ°í ÀÖ´Â °ÍÀϱî¿ä? mod_dav_svn Apache ¸ðµâÀº ±× ÁÖ¿äÇÑ ³×Æ®¿öÅ© ÇÁ·ÎÅäÄݷμ WebDAV¿Í DeltaV·Î È®ÀåµÈ HTTP¸¦ »ç¿ëÇÏ°í ÀÖ½À´Ï´Ù. »õ·Î¿î Ưº°ÇÑ ÇÁ·ÎÅäÄÝÀ» ½ÇÀåÇÏ´Â °Íº¸´Ùµµ, ÃʱâÀÇ SubversionÀÇ ¼³°èÀÚ´Â, ´ÜÁö Subversion·Î »ç¿ëÇÑ´Ù ¹öÀü°ú ó¸®ÀÇ °³³äÀ» RFC 2518 À¸·Î 3253 ÀÌ ¿ä±¸ÇÏ´Â °³³ä¿¡ ¸ÂÃß¾ú½À´Ï´Ù. [6] WebDAVÀÇ °Í Á» ´õ öÀúÇÑ ³íÀÇ, ¾î¶»°Ô µ¿ÀÛÇØ, SubversionÀº ±×°ÍÀ» ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö, ¿¡ ´ëÇؼ´Â,>À» ºÁ ÁÖ¼¼¿ä. ´Ù¸¥ ÈÁ¦¿Í ÇÔ²², Subversion °¡ ¾î´À Á¤µµ ÀϹÝÀûÀÎ WebDAV ÀÇ »ç¾çÀ» °è½ÂÇÏ°í ÀÖ¾î ÀϹÝÀûÀÎ WebDAV Ŭ¶óÀ̾ðÆ® (¿Í)°úÀÇ »óÈ£ ¿î¿ë¼º¿¡ ¾î¶² ¿µÇâÀ» Áٱ ´ëÇÑ ³íÀÇ°¡ ÀÖ½À´Ï´Ù. 1.5. ¸Þ¸ð¸®ÇÁ¸£¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¡¹ÖC ¾ð¾î¸¦ »ç¿ëÇÑ °ÍÀÌ ÀÖ´Â °ÅÀÇ ¸ðµç °³¹ßÀÚ´Â, ¾î¶² ½ÃÁ¡¿¡
¸Þ¸ð¸® °ü¸®·Î ÁøÀý¸Ó¸® ³ª°í ÀÖ¾ú´ø ° ÇѼû µ¹¸®´Â ÀÏÀÌ ÀÖ°ÚÁö¿ä.
ÀÌ¿ëÇϱâ À§Çؼ ÇÊ¿äÇÑ ÃæºÐÇÑ ¸Þ¸ð¸®¸¦ È®º¸ÇØ, ±× ÀÌ¿ë »óȲÀ» ±â·ÏÇØ,
ÇÊ¿ä¾ø°Ô µÇ¸é(ÀÚ) ¸Þ¸ð¸®¸¦ ÇعæÇϴ±׷¯ÇÑ Ã³¸®´Â ¸Å¿ì
º¹ÀâÇÕ´Ï´Ù. ±×¸®°í ¹°·Ð, °Å±â¿¡ ½ÇÆÐÇϸé(ÀÚ), ÇÁ·Î±×·¥ÀÌ ¸Á°¡Á®
³¡³», ½ÉÇÒ ¶§¿¡´Â ÄÄÇ»ÅÍ°¡ °íÀ峪 ¹ö¸³´Ï´Ù.
Çà¿î¿¡µµ, Subversion°¡ °¡¹Ý¼ºÀ» À§Çؼ(¶§¹®¿¡) ÀÌ¿ëÇÏ°í ÀÖ´Â APR ÇÁ·Î±×·¥ ¶óÀ̺귯¸®
(Àº)´Â ¸Þ¸ð¸®ÇÁ¸£´Â ÇÁ·Î±×·¥¿¡ ÀÇÇØ ÀÌ¿ëÇϱâ À§Çؼ È®º¸µÈ ¸Þ¸ð¸®
ºí·ÏÀÇ Ãß»óÀûÀΠǥÇöÀÔ´Ï´Ù. Ç¥ÁØÀûÀÎ ÀÌ°ÍÀ¸·Î Ç®ÀÇ À̾߱Ⱑ ¸¶Áö¸·À̶ó¸é, Ưº°ÇÑ ÁÖÀ§¸¦ ±â¿ïÀÏ ÇÊ¿äµµ ¾ø½À´Ï´Ù¸¸.
Çà¿î¿¡µµ, ±×·¸Áö´Â ¾Ê½À´Ï´Ù. Ç®Àº ¸¸µé¾îÁö´Â °Í ¸¸À¸·Î´Â ¾Æ´Õ´Ï´Ù: ±×°ÍÀº
¶Ç Ŭ¸®¾î Çϰųª »èÁ¦ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ°Í¿¡´Â
¸ÕÀú ÁøÇàÇϱâ Àü¿¡, °³¹ßÀÚ´Â Subversion ¿ø½Ã ÄÚµåÁß¿¡, Áö±Ý ¸»ÇÑ °Í °°Àº
APR Ç® ÇÔ¼öÀÇ È£ÃâÀÌ, ±×¸¸Å ¸¹Áö ¾ÊÀº °Í¿¡ ´«Ä¡Ã¤°ÚÁö¿ä.
APR Ç®Àº, ¸î°³ÀÇ È®Àå ¸ÞÄ«´ÏÁòÀ» °®°í ÀÖ¾î, ±×°ÍÀº Ç®¿¡
±¹À¯ÀÇ À¯Àú µ¥ÀÌÅ͸¦ Á¢¼ÓÇÏ´Â ´É·ÂÀ̳ª, Ç®ÀÌ »èÁ¦µÉ ¶§
ºÒ·Á °¡´Â Ŭ¸° ¾÷ ÇÔ¼ö¸¦ µî·ÏÇÏ´Â ±¸Á¶µîÀÌ ÀÖ½À´Ï´Ù.
SubversionÀº ÀÌ·¯ÇÑ È®Àå ±â´ÉÀ», ±×¸¸Å ÀÚ¸íÇÏÁö ¾Ê´Â ¹æ¹ýÀ¸·Î ÀÌ¿ëÇÕ´Ï´Ù.
±×·¡¼ Subversion ´Â(±×¸®°í ±× Äڵ带 »ç¿ëÇÏ´Â »ç¶÷ÀÇ ´ëºÎºÐÀº) ³ªÆÈ ÇÔ¼ö
ÀÌ´Ù
Ç®Àº ±âº»ÀûÀÎ ¸Þ¸ð¸® ¸Þ´ÏÁö¸ÕÆ®¿¡µµ µµ¿òÀÌ µË´Ï´Ù¸¸, ·çÇÁ³ª Àç±ÍÀûÀÎ »óȲÀ¸·Î ÀÇ Ç®ÀÇ ±¸ÃàÀº Á¤¸»·Î ÈǸ¢ÇÑ °ÍÀÔ´Ï´Ù. ·çÇÁ´Â ÀÚÁÖ ±× ¹Ýº¹ ȸ¼ö°¡ ºÎÁ¤À̸ç, Àç±ÍÀûÀº ±× ±íÀÌ°¡ ºÎÁ¤ ±×·¡¼, ÀÌ·¯ÇÑ area¿¡¼ÀÇ ÄÚµåÀÇ ¸Þ¸ð¸® ¼Òºñ·®Àº ¿¹ÃøÀÏ ¼±. Çà¿î¿¡µµ, ³×½ºÆ® ÇÑ ¸Þ¸ð¸®ÇÁ¸£¸¦ »ç¿ëÇϸé(ÀÚ), ÀÌ·¯ÇÑ ÀáÀçÀûÀÎ ¹«¼¿î »óȲÀ» °£´ÜÇÏ°Ô °ü¸®ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏÀÇ ¿¹´Â, ÀÚÁÖ ÀÖ´Â ¸Å¿ì º¹ÀâÇÑ Á¤º¸¿¡¼ÀÇ ³×½ºÆ® ÇÑ Ç®ÀÇ ±âº»ÀûÀÎ »ç¿ë¹ýÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ÀÌ »óȲÀ̶õ, µð·ºÅ丮 Æ®¸®¸¦ Àç±ÍÀûÀ¸·Î ´õµëÀ¸¸é¼, Æ®¸®ÀÇ ¸ðµç Àå¼ÒÀΠ󸮸¦ ½ÇÇàÇÑ´Ù, ¶ó°í ÇÑ °ÍÀÔ´Ï´Ù. Example 1-5. È¿À²ÀûÀÎ Ç®ÀÇ ÀÌ¿ë
ÀÌ ¿¹´Â ·çÇÁ¿Í Àç±ÍÀûÀÎ »óȲÀǾçÂÊ ¸ðµÎ¿¡¼ÀÇ È¿À²ÀûÀÎ
Ç®ÀÇ ÀÌ¿ë¹ýÀ» ¼³¸íÇÏ´Â °ÍÀÔ´Ï´Ù. °¢°¢ÀÇ Àç±Í´Â ÇÔ¼ö¿¡ °Ç³×ÁÖ´Â Ç®
ÀÇ ¼ºê Ç®À» ¸¸µå´Â °ÍÀ¸·Î ½ÃÀ۵˴ϴÙ. ÀÌ Ç®Àº ·çÇÁÀÇ area·Î ÀÌ¿ë
µÇ¾î °¢°¢ÀÇ ¹Ýº¹À¸·Î Ŭ¸®¾î µË´Ï´Ù. ÀÌ °á°ú, ¸Þ¸ð¸®ÀÇ ÀÌ¿ëÀº,
´ë·«ÀûÀ¸·Î ¸»ÇØ Àç±ÍÀÇ ±íÀÌ¿¡¸¸ ºñ·ÊÇØ, ÃÖ»óÁ¤µµ µð·ºÅ丮ÀÇ ¾ÆÀ̷μÀÇ
ÆÄÀÏ°ú µð·ºÅ丮ÀÇ ÇÕ°è¼ö¿¡´Â ºñ·ÊÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ Àç±Í ÇÔ¼öÀÇ ÃÖÃÊÀÇ
È£ÃâÀÌ Á¾·áÇÑ ½ÃÁ¡¿¡¼, °Ç³×ÁØ Ç®¿¡ º¸Á¸µÈ µ¥ÀÌÅÍ´Â ½ÇÁ¦·Î´Â
¸Å¿ì ÀÛÀº °ÍÀÌ µË´Ï´Ù. ÀÌ ÇÔ¼ö°¡, Ç®Àº ¸ðµç ¾îÇø®ÄÉÀ̼ǿ¡ ÀÌ»óÀûÀÎ °ÍÀº ¾Æ´ÒÁöµµ ¸ð¸¨´Ï´Ù¸¸ Subversion¿¡¼´Â ¸Å¿ì Å¿ì´Â¿¡ ²÷½À´Ï´Ù. Subversion °³¹ßÀڷμ Ç®ÀÇ ÀÌ¿ë ¿¡ Ä£ÇØÁ®, ¾î¶»°Ô ±×°ÍÀ» ¿Ã¹Ù¸£°Ô »ç¿ëÇұ Á¤ÅëÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ¸Þ¸ð¸® ÀÌ¿ë¿¡ °ü°èÇÑ ¹ö±×¿Í ¸Þ¸ð¸® ¸®Å©´Â APIÀÇ Á¾·ù¿¡ ÀÇÇÏÁö ¾Ê°í, Áø´ÜÇØ, ¼öÁ¤ÇÏ´Â °ÍÀº ¾î·Á¿î °ÍÀÔ´Ï´Ù¸¸, APR ¿¡ ÀÇÇØ ÁغñµÈ Ç® ÀÇ ÀÛ¼ºÀº, ¸Å¿ì Æí¸®ÇØ, ½Ã°£ÀÇ Àý¾àÀ¸·Î ¿¬°áµÇ´Â ±â´ÉÀ» °¡Áö°í ÀÖ½À´Ï´Ù. 1.6. Subversion¿¡ÀÇ °øÇåSubversion ÇÁ·ÎÁ§Æ®¿¡ ´ëÇÑ Á¤º¸ÀÇ °ø½ÄÀûÀÎ ¹®¼´Â ¹°·Ð, ÇÁ·ÎÁ§Æ® À¥ »çÀÌÆ®ÀÇhttp://subversion.tigris.orgÀÔ´Ï´Ù. °Å±â¿¡ ¿ø½Ã Äڵ忡 ¾×¼¼½º ÇÏ´Â ¹æ¹ýÀ̳ª, ¸ÞÀϸµ¸®½ºÆ®¿¡ Âü°¡ÇÑ´Ù ¹æ¹ý¿¡ ´ëÇÑ Á¤º¸°¡ ÀÖ½À´Ï´Ù. Subversion Ä¿¹Â´ÏƼ´Â ¾ðÁ¦¶óµµ »õ·Î¿î Âü°¡ÀÚ¸¦ ȯ¿µÇÏ°í ÀÖ½À´Ï´Ù. ¸¸¾à ¿ø½Ã Äڵ带 º¯°æÇÑ´Ù°í ÇÏ´Â ÇüÅÂÀÇ °øÇå¿¡ ÀÇÇØ ÀÌ Ä¿¹Â´ÏƼ¿¡ Âü°¡ÇÏ´Â °Í¿¡ Èï¹Ì°¡ ÀÖ´Ù¸é, ¾î¶² ´À³¦¿¡ ½ÃÀÛÇϸé(ÀÚ) ÁÁÀº°¡ÀÇ ÈùÆ®¸¦ µì´Ï´Ù. 1.6.1. Ä¿¹Â´ÏƼ¿¡ÀÇ Âü°¡Ä¿¹Â´ÏƼ¿¡ Âü°¡ÇÏ´Â ÃÖÃÊÀÇ ½ºÅÜÀº ÃÖ½ÅÀÇ Á¤º¸¸¦ ¾ðÁ¦¶óµµ ÀÔ¼öÇÒ ¼ö ÀÖ´Ù
¹æ¹ýÀ» ã¾Æ³»´Â °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀ» Á¦ÀÏ È¿À²ÀûÀ¸·Î ÇÏ·Á¸é , °³¹ßÀÚÀÇ ³íÀǸ¦ À§ÇÑ
¸ÞÀϸµ¸®½ºÆ®¿¡ Âü°¡ÇØ( ±×·¯³ª, ¹«¾ùÀÌ ÇÊ¿äÇÑ°¡¶ó´Â °ÍÀ» ¾î¶»°Ô ¾Ë¸é ÁÁÀº °ÍÀϱî¿ä? ÇÁ·Î±×·¡¸Ó¿¡ ÀÖ¾î, °³¹ßÀ» µ½ÀÚ°í ÇÏ´Â Å« Àǵµ¸¦ °¡Á® ÀÖÁö¸¸, ÁÁÀ¸¸é ´ã´çÀÚ¸¦ ÀâÀ» ¼ö ¾ø´Â °ÍÀº ÀÚÁÖ ÀÖ´Â °ÍÀÔ´Ï´Ù. °á±¹, ±Ü°í ½Í´Ù°í »ý°¢ÇÒ±î ÇØ Àå¼Ò°¡ ¾îµò°¡¸¦ ¹ú½á ¾Ë°í ÀÖ¾î Ä¿¹Â´ÏƼ¿¡ Âü°¡ÇÏ´Â »ç¶÷Àº ±×¸¸Å ¸¹Áö´Â ¾Ê½À´Ï´Ù. ±×·¯³ª, °³¹ßÀÚÀÇ ³íÀǸ¦ µÚÂÑ´Â °Í¿¡ ÀÇÇØ, ¹ú½á Á¸ÀçÇÏ°í ÀÖ´Â ¹ö±×³ª, ³¹«ÇÏ´Â ±â´É ¿ä±¸ ¿¡ ÁÖÀǸ¦ ÇâÇÒ ¼ö°¡ ÀÖ¾î, ±× ¾î¶² °ÍÀΰ¡°¡ ´ç½ÅÀÇ Èï¹Ì¸¦ ´ç±æÁöµµ Áö ¼±. ¶Ç, ¹ÌÇØ°áÀÇ, ÇÒ´çÀÌ Á¤ÇØÁ® ÀÖÁö ¾ÊÀº ÀÛ¾÷À» ã´Â ÁÁÀº Àå¼Ò¿Í ÇØ, Subversion À¥ »çÀÌÆ®»óÀÇ Issue Tracking µ¥ÀÌŸº£À̽º°¡ ÀÖ½À´Ï´Ù. °Å±â¼ Çö½ÃÁ¡¿¡¼ ¹ú½á ¾Ë·ÁÁ® ÀÖ´Â ¹ö±×¿Í ±â´É ¿ä±¸ÀÇ À϶÷À» º¸´Â °ÍÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ¹«¾ùÀΰ¡ ÀÛÀº ÀϷκÎÅÍ ½ÃÀÛÇÏ°í ½Í´Ù¸é,"bite-sized" ±×·¸´Ù°í Çϴ ǥ°¡ ºÙÀº ¹®Á¦¸¦ ºÁ ÁÖ¼¼¿ä. 1.6.2. ¿ø½Ã ÄÚµåÀÇ ÃëµæÄڵ带 ÆíÁýÇÏ·Á¸é , ¿ì¼±Àº Äڵ带 ¼Õ¿¡ ³ÖÀ» ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº °ø°³ÀÇ Subversion ¼Ò½º ÀúÀå¼Ò(repository)·ÎºÎÅÍ ÀÛ¾÷ Ä«ÇǸ¦ üũ¾Æ¿ô ÇÏÁö ¾ÊÀ¸¸é ¾È µÇ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. °£´ÜÇÏ°Ô µé¸³´Ï´Ù¸¸, ¾à°£ ±â±³ÀûÀÎ ÀÛ¾÷¿¡ µË´Ï´Ù. SubversionÀÇ ¿ø½Ã ÄÚµå´Â, Subversion Àڽſ¡ ÀÇÇØ ¹öÀü °ü¸® µÇ°í ÀÖÀ¸¹Ç·Î, ¹«¾ùÀΰ¡ ´Ù¸¥ ¹æ¹ýÀ¸·Î ¹ú½á µ¿ÀÛÇÏ´Â SubversionÀ» ÃëµæÇÏ´Â °Í¿¡ ÀÇÇØ "ÃÖÃÊÀÇ ´Ü¼¸¦ ¾òÀ»"ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. Á¦ÀÏ º¸Åë ¹æ¹ýÀº, ÃÖ½ÅÀÇ ¹ÙÀ̳ʸ® ÆÐÅ°Áö¸¦ ´Ù¿î·ÎµåÇÑ´Ù(´ç½ÅÀÇ ¸Ó½ÅÀ¸·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ ÀÖ´Â °æ¿ìÀÔ´Ï´Ù¸¸), Àΰ¡, ÃÖ½ÅÀÇ ¿ø½Ã ÄÚµåÀÇ tarball (À»)¸¦ ´Ù¿ì ·ÎµåÇØ, ÀÚ½ÅÀÇ Subversion Ŭ¶óÀ̾ðÆ®¸¦ ¸¸µé±îÀÔ´Ï´Ù. ¸¸¾à ¼Ò½º·ÎºÎÅÍ »ý¼ºÇÏ´Â °ÍÀÏ ¼ö ÀÖ´ÂÀº, ¼ø¼¿¡ ´ëÇؼ´Â ¼Ò½º Æ®¸®ÀÇ ÃÖ»óÁ¤µµ¿¡ ÀÖ´Â INSTALL ÆÄÀÏ¿¡ ¹Ýµå½Ã ´ëÃæ ÈȾîºÁ ÁÖ¼¼¿ä. µ¿ÀÛÇÏ´Â Subversion Ŭ¶óÀ̾ðÆ®¸¦ ¼Õ¿¡ ³ÖÀ¸¸é,http://svn.collab.net/repos/svn/trunk ¿¡ ÀÖ´Â SubversionÀÇ ¼Ò½º ÀúÀå¼Ò(repository)ÀÇ ÀÛ¾÷ Ä«ÇǸ¦ üũ¾Æ¿ô ÇÒ Áغñ ÇÏÁö¸¸ µÇ¾î ÀÖ½À´Ï´Ù: [7]
À§ÀÇ Ä¿¸àµå´Â, ÃÖ÷´ÜÀÇ, ÃֽŠ¹öÀüÀÇ SubversionÀÇ ¿ø½Ã ÄÚµå (À»)¸¦, ÇöÀçÀÇ ÀÛ¾÷ µð·ºÅ丮¿¡subversion ¶ó°í ÇÑ´Ù À̸§ÀÇ ¼ºê µð·ºÅ丮¸¦ ¸¸µé¾î üũ¾Æ¿ô ÇÕ´Ï´Ù. ºÐ¸íÇÏ°Ô, ¸¶Áö¸· Àμö´Â, °³º°ÀÇ È¯°æ¿¡ ÀÀÇØ Á¶Á¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. »õ·Î¿î ÀÛ¾÷ Ä«ÇÇ µð·ºÅ丮¸¦ ¾î´À °Ô ºÎ¸£·Á°í, ÀÌ Á¶ÀÛÀÌ ¿Ï·áÇϸé SubversionÀÇ ¿ø½Ã Äڵ带 Ãëµæ µÇ¾î ÀÖ½À´Ï´Ù. ¹°·Ð, ±× ¹Û¿¡µµ ¸î°³ÀÇ º¸Á¶ÀûÀÎ ÇÁ·Î±×·¥ ¶óÀ̺귯¸®°¡ ÇÊ¿äÇÏ°Ô µË´Ï´Ù(apr, apr-util, µî µî) ÀÚ¼¼ÇÑ °ÍÀº ÀÛ¾÷ Ä«ÇÇÀÇ ÃÖ»óÁ¤µµ¿¡ ÀÖ´Â INSTALL ÆÄÀÏÀ» ºÁ ÁÖ¼¼¿ä. 1.6.3. Ä¿¹Â´ÏƼÀÇ ¹æ½Ä¿¡ Á¤ÅëÇÏ´Â °ÍÀÌ°ÍÀ¸·Î Subversion ¿ø½Ã ÄÚµåÀÇ ÃÖ½ÅÆÇÀÌ ÀÖ´Â ÀÛ¾÷ Ä«ÇǸ¦ ¼Õ¿¡ ³Ö¾ú´Ù ÀÇ·Î, ¾Æ¸¶ ÀÛ¾÷ Ä«ÇÇÀÇ ÃÖ»óÁ¤µµ µð·ºÅ丮¿¡ ÀÖ´Â HACKING ÆÄÀÏÀ» º¸¸é¼ µð·ºÅ丮¾ÈÀ» ÀÌ°ÍÀú°Í Á¶»çÇÏ°í ½Í´Ù°í »ý°¢ÇÏ°ÚÁö¿ä. HACKING ÆÄÀÏÀº Subversion¿¡ °øÇåÇϱâ À§ÇÑ ÀϹÝÀûÀÎ ¼ö¼ÓÀÌ Æ÷ÇԵǾî ÀÖ¾î, °Å±â¿¡´Â ¾î¶»°Ô ÇØ, ³ª¸ÓÁöÀÇ ÄÚµå¿Í ¸ð¼øµÇÁö ¾Ê´Â ÇüÅ·Π´ç½ÅÀÇ ¿ø½Ã Äڵ带 ¿Ã¹Ù¸£°Ô ¾²´ÂÁö¶óµç°¡, Á¦¾ÈÇÏ°í ½ÍÀº º¯°æÁ¡¿¡ ¾î¶°ÇÑ È¿À²ÀûÀÎ º¯°æ ·Î±× ¸Þ¼¼Áö¸¦ Àû´ÂÁö, ¾î¶»°Ô º¯°æÁ¡À» Å×½ºÆ®Çϸé ÁÁÀºÁö, µîÀÌ Æ÷ÇԵ˴ϴÙ. SubversionÀÇ ¼Ò½º ÀúÀå¼Ò(repository) ¿¡ ´ëÇÑ Ä¿¹Ô ±ÇÇÑÀº ȹµæÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù½Ç·Â º»À§ÀÇ Á¤ºÎ¿¡ ÀÇÇØ. [8] HACKING ÆÄÀÏÀº ÀÚ½ÅÀÌ Á¦¾ÈÇÏ·Á ÇÏ°í ÀÖ´Â º¯°æÀÌ ±â¼úÀûÀ¸·Î °ÅºÎµÇ´Â °Í ¾ø°Ô ĪÂù¿¡ ÀûÇÕÇÑÁö ¾î¶²Áö¸¦ È®ÀÎÇϱâ À§Çؼ´Â ÀÌ ÀÌ»ó ¾ø°í ±ÍÁßÇÑ ÀÚ·áÀÔ´Ï´Ù. 1.6.4. ÄÚµåÀÇ º¯°æ°ú Å×½ºÆ®ÄÚµå¿Í Ä¿¹Â´ÏƼÀÇ Æú¸®½Ã¸¦ ÀÌÇØÇϸé, º¯°æ¿¡ Âø¼öÇÏ´Â °ÍÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù. Å« ¹®Á¦¿¡ ÀÓÇÏ°í ÀÖ´Â °æ¿ì¿¡¼µµ, °Å´ëÇÑ, ÀüºÎ ±âÁ¸ÀÇ °Í°ú ¹Ù²Ù¾î ¹ö¸®´Â °Í °°Àº ¼öÁ¤À» ÇÏ´Â ´ë½Å¿¡, ÀÛÀº, ±×·¯³ª °ü·ÃÀÇ ¾î´À º¯°æÀÇ ¸ðÀÓÀ» ¸¸µé·Á°í ÇÏ´Â °ÍÀÌ ÃÖ¼±ÀÇ ¹æ¹ýÀÔ´Ï´Ù. ÇÏ·Á ÇÏ°í ÀÖ´Â °Í¿¡ ÇÊ¿äÇÑ ÄÚµåÀÇ ¼öÁ¤À» ÇÒ ¼ö ÀÖ´Â ÇÑ ÀûÀ¸¸é, Á¦¾ÈÇÏÀÚ (À¸)·Î ÇÏ°í ÀÖ´Â º¯°æÀº ±× ¸¸Å °£´ÜÇÏ°Ô ÀÌÇصǰÚÁö¿ä(±×¸®°í, °ËÅäÇÏ´Â °Íµµ ÆíÇØ Áû¾îÁø´Ù). ¼öÁ¤¼¼Æ®ÀÇ °¢°¢À» º£Ç¬ ÈÄ¿¡´Â, ´ç½ÅÀÇ Subversion Æ®¸®´Â ÄÄÆÄÀÏ·¯°¡ °æ°í¸¦ Çϳªµµ ³»Áö ¾Ê´Â »óÅ°¡ µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. Subversion ¿¡´Â ²Ï öÀúÈ÷ Çß´Ù [9] µ¥±×·¹ÀÌÆ®¸¦ üũÇϱâ À§ÇÑ Å×½ºÆ® ½ºÀ§Æ®°¡ ÀÖ¾î, Á¦¾ÈÇÏ·Á ÇÏ°í ÀÖ´Â º¯°æÀº, ¾î¶°ÇÑ Å×½ºÆ®¿¡¼µµ ½ÇÆÐÇÏÁö ¾Ê°Ô µÇ¾î ÀÖ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÕ´Ï´Ù. ¼Ò½º Æ®¸®ÀÇ ÃÖ»óÁ¤µµ·Îmake check (À»)¸¦ ½ÇÇàÇÏ´Â(UnixÀÇ °æ¿ì) ÀÏ·Î, ÀÚ½ÅÀÇ º¯°æÀÇ Ã¼Å©¸¦ ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ´ç½ÅÀÇ °øÇåÀÌ °ÅÀýµÇ´Â Á¦ÀÏ ºü¸¥ ¹æ¹ýÀº(ÀûÀýÇÑ ·Î±× ¸Þ¼¼Áö¸¦ ÀûÁö ¾Ê¾Ò´Ù °æ¿ì ÀÌ¿Ü´Â), Å×½ºÆ®°¡ Åë°úÇÏÁö ¾Ê´Â º¯°æÀ» º¸³»´Â °ÍÀÔ´Ï´Ù. Á¦ÀÏ ÁÁÀº ½Ã³ª¸®¿À´Â, ½ÇÁ¦·Î ÀûÀýÇÑ Å×½ºÆ®¸¦, Å×½ºÆ® ½ºÀ§Æ®ÇÏ°Ô Ãß°¡ÇØ, ±×·¡¼ ´ç½ÅÀÇ º¯°æÁ¡ÀÌ ½ÇÁ¦·Î ±â´ëÇÑ °Íó·³ µ¿ÀÛÇÏ´Â °ÍÀÔ´Ï´Ù. ½ÇÁ¦Á¶»ç ÀÖ°í, °¡²û »ç¶÷ÀÌ °øÇåÇÒ ¼ö ÀÖ´Â ÃÖ¼±´Â »õ·Î¿î Å×½ºÆ®¸¦ ´ÜÁö Ãß°¡ ÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¡·¯ÀÇ °è±â°¡ µÇ´Â °Í °°Àº ÇâÈÄÀÇ ¼öÁ¤À¸·ÎºÎÅÍ ÁöÅ°´Â °Í °°Àº Àǹ̸¦ ´ã¾Æ, ÇöÀçÀÇ Subversion·Î µ¿ÀÛÇÏ°í ÀÖ´Â ±â´ÉÀ» À§Çؼ(¶§¹®¿¡) µ¥±×·¹À̵åÀÇ Å×½ºÆ®¸¦ ¾µ ¼ö°¡ ÀÖ½À´Ï´Ù. ¶Ç, ¹ú½á ¾Ë·ÁÁ® ÀÖ´Â ½ÇÆи¦ º¸À̱â À§ÇÑ »õ·Î¿î Å×½ºÆ®¸¦ ¾²´Â Àϵµ·Î ¿É´Ï´Ù. ÀÌ ¸ñÀûÀ» À§Çؼ(¶§¹®¿¡)´Â Subversion Å×½ºÆ® ½ºÀ§Æ®´Â, ¾î´À Å×½ºÆ®´Â ½ÇÆÐ ÇÏ´Â °ÍÀÌ ±â´ëµÇ°í ÀÖ´Â °ÍÀ̶ó°í ÁöÁ¤ÇÏ´Â °ÍÀ» ÀÎÁ¤ÇÕ´Ï´Ù. (XFAIL¶ó°í ÇÕ´Ï´Ù), ±×¸®°í Subversion°¡ ±â´ëÇÏ´Â ÇüÅ·Π½ÇÆÐÇÏ´Â ÇÑ, ±× Å×½ºÆ®ÀÇ °á°úÀÎ XFAIL ÀÚü´Â, ¼º°øÇß´Ù°í º¸ÀÔ´Ï´Ù. ¸¶Áö¸·À¸·Î, ÁÁÀº Å×½ºÆ® ½ºÀ§Æ®¸¦ ÁغñÇϸé ÇÒ »Ó(¸¸Å), ÀÌÇØÇϱ⠾î·Á¿î µ¥±×·¹ÀÌÆ®ÀÇ ¹ö±× (À»)¸¦ Áø´ÜÇϱâ À§Çؼ ³¶ºñµÇ´Â ½Ã°£À» ÁÙÀÏ ¼ö°¡ ÀÖ½À´Ï´Ù. 1.6.5. º¯°æÁ¡ÀÇ Á¦°ø¿ø½Ã Äڵ忡 ´ëÇÑ ¼öÁ¤À» ÇÑ ÈÄ, ¸í·áÇØ °áÁ¤µÈ ·Î±× ¸Þ¼¼Áö¸¦ ¸¸µé¾î, ±×·¯ÇÑ º¯°æÀ» ¼³¸íÇØ, ±× ÀÌÀ¯¸¦ ½á ÁÖ¼¼¿ä. ±×¸®°í email¸¦ °³¹ßÀÚ¿ë ¸ÞÀϸµ¸®½ºÆ®¿¡ º¸³», °Å±â¿¡´Â ·Î±× ¸Þ¼¼Áö¿Í svn diffÀÇ Ãâ·Â(ÀÌ°ÍÀº SubversionÀÇ ÃÖ»óÁ¤µµ ÀÛ¾÷ Ä«ÇÇ ±×¸®°í ½ÇÇàÇØ ÁÖ¼¼¿ä)¸¦ Æ÷ÇÔÇØ ÁÖ¼¼¿ä. Ä¿¹Â´ÏƼÀÇ ¸â¹ö°¡ ´ç½ÅÀÇ º¯°æÀÌ ¹Þ¾Æµé¿©Áø´Ù°í ÆÇ´ÜÇßÀ» °æ¿ì, Ä¿¹Ô ±ÇÇÑÀ» °¡Á³´Ù ´©±º°¡(SubversionÀÇ ¼Ò½º ÀúÀå¼Ò(repository)¿¡ »õ·Î¿î ¸®ºñÀüÀ» ¸¸µå´Â Çã°¡¸¦ °¡Áö°í ÀÖ´Â »ç¶÷)ÀÌ, ´ç½ÅÀÇ º¯°æÀÌ °ø°³µÈ ¿ø½Ã ÄÚµå Æ®¸®¿¡ Ãß°¡ÇÕ´Ï´Ù. ÀúÀå¼Ò(repository)¿¡ ´ëÇؼ º¯°æÀ» Á÷Á¢ Ä¿¹ÔÇÏ´Â ±ÇÇÑÀº, ÀÌÁ¡ÀÌ ÀÖ´Â °æ¿ì¿¡¸¸ ÀÎÁ¤µË´Ï´Ù¸¸¾à SubversionÀÇ ÀÌÇسª, ÇÁ·Î±×·¡¹ÖÀÇ ´É·ÂÀ̳ª,"ÆÀ ½ºÇǸ®Æ®"¸¦ ³ªÅ¸³»¸é, ´ç½ÅÀº ¹Ýµå½Ã ±× ±ÇÇÑÀ» ¾òÀ» ¼ö ÀÖ°ÚÁö¿ä. Notes
|
You have an unusual equpment for success. Be sure to use if properly. |