#keywords subversion,svn,¹öÀü °ü¸® '''Subversion »ç¿ë HOWTO''' ÀÌÀçÈ« http://www.pyrasis.com ~2005.7.31 ¹öÀü 1.2.1 CVSÀÇ ´ÜÁ¡µéÀ» °³¼±ÇÑ ¹öÀü °ü¸® ½Ã½ºÅÛÀÎ SubversionÀ» ÀÌ¿ëÇÏ¿© ÇÁ·Î±×·¥ÀÇ ¼Ò½º Äڵ带 °ü¸®ÇÏ´Â ¹æ¹ý°ú À¯´Ð½º, ¸®´ª½º ¹× Windows¿¡¼­ SubversionÀ» ¼³Ä¡Çغ¸°í »ç¿ëÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù. [[TableOfContents]] == ¼ÒÇÁÆ®¿þ¾î ¹öÀü °ü¸®ÀÇ ÀÌÇØ == SubversionÀº ¼ÒÇÁÆ®¿þ¾î ¹öÀü °ü¸® ½Ã½ºÅÛÀÔ´Ï´Ù. ÀÌÀü¿¡ CVS°°Àº ¿ª»ç°¡ ±íÀº ¼ÒÇÁÆ®¿þ¾î ¹öÀü °ü¸® ½Ã½ºÅÛÀ» »ç¿ëÇØ º» °æÇèÀÌ ÀÖ´Ù¸é ½±°Ô ÁøÇà ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ Àå¿¡¼­´Â ¼ÒÇÁÆ®¿þ¾î ¹öÀü °ü¸® ½Ã½ºÅÛÀ» óÀ½ Á¢ÇÏ´Â ºÐµéÀ» À§ÇØ ÀÚÁÖ ³ª¿À´Â ¿ë¾îµé°ú °³³äÀ» Á¤¸® ÇÏ¿´½À´Ï´Ù. === ¹öÀü °ü¸® ½Ã½ºÅÛÀÇ Çʿ伺 === °ú¿¬ ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µå´Âµ¥ ¹öÀü°ü¸®°¡ ¿Ö ÇÊ¿äÇÒ±î¿ä? ¹öÀü °ü¸®°¡ ÇÊ¿äÇÏ°Ô µÈ ÀÌÀ¯´Â °øµ¿ ÀÛ¾÷ ¶§¹®ÀÔ´Ï´Ù. ÇÑ»ç¶÷ÀÌ Å« ÇÁ·ÎÁ§Æ®¸¦ ÁøÇà ÇÏ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡ ¹öÀü °ü¸® ½Ã½ºÅÛÀÌ ÇÊ¿ä ÇÏ°Ô µÇ¾ú½À´Ï´Ù. ¹öÀü °ü¸® ÇÁ·Î±×·¥À» »ç¿ëÇÏ°Ô µÇ¸é ´ÙÀ½°ú °°Àº ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù. * °³¹ß ¹öÀü°ú ¸±¸®Áî ¹öÀüÀ» ¼¯ÀÌÁö ¾Ê°í ½±°Ô °ü¸® ÇÒ ¼ö ÀÖ½À´Ï´Ù. * ¼Ò½º¸¦ Àß ¸ø ¼öÁ¤ Çß´õ¶óµµ ±â·ÏÀÌ ³²°í µÇµ¹¸®±â°¡ ½±½À´Ï´Ù.(¸¹Àº ÆÄÀÏÀÇ °æ¿ì À¯¿ë) * ¼öÁ¤, Ãß°¡, »èÁ¦ µîÀÇ ±â·ÏÀÌ ¸ðµÎ ³²°í º¯°æ »çÇ×À» ÃßÀûÇϱ⠽±½À´Ï´Ù. * °³¹ßÀÚµéÀÌ µû·Î µû·Î ¹é¾÷À» ÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. °¡Àå À¯¿ëÇÑ ÀåÁ¡Àº ¾Æ¹«·¡µµ À߸ø ¼öÁ¤ÇÑ ¼Ò½º¸¦ ½±°Ô µÇµ¹¸± ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ÇÁ·ÎÁ§Æ®°¡ Ä¿Áö´Ùº¸¸é ¼Ò½º°¡ ²¿ÀÌ°Ô µÇ°í °ñÄ¡ ¾ÆÇ »óȲÀÌ ÇѵΠ¹ø ¹ß»ýÇÏ´Â °ÍÀÌ ¾Æ´ÏÁÒ. ±×¸®°í º¯°æ »çÇ×ÀÌ ¸ðµÎ ±â·ÏµÇ°í ¹«¾ùÀ» º¯°æ Çß´ÂÁö ½±°Ô º¼ ¼ö ÀÖ½À´Ï´Ù. ¿· »ç¶÷ÀÌ ¼öÁ¤ÇÑ °ÍÀ» ½±°Ô º¼ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í °¡Àå Å« ¹®Á¦¸¦ ÀÏÀ¸Å°´Â ¹é¾÷À» ÇÏÁö ¾Ê¾Æ ¼Ò½º¸¦ ºÐ½ÇÇÏ´Â ÃÖ¾ÇÀÇ »óȲµµ ½±°Ô ÇØ°á µË´Ï´Ù. ÀåÁ¡À» ³ª¿­ÇÏÀÚ¸é ´õ ¸¹½À´Ï´Ù¸¸ ´ÜÁ¡À» À̾߱â ÇÏÀÚ¸é ¾Æ¹«·¡µµ ÇÁ·Î±×·¥ °³¹ßÀÚµéÀÌ ¼ÒÇÁÆ®¿þ¾î ¹öÀü °ü¸® ½Ã½ºÅÛÀÇ °³³äÀ» Á¦´ë·Î ÀÌÇØÇÏ°í ±â´ÉµéÀ» Àß »ç¿ëÇÏ¿© È¿À²ÀûÀÎ ¹öÀü °ü¸®°¡ µÇ·Á¸é ¶Ç´Ù½Ã »õ·Î¿î °ÍÀ» ¹è¿ö¾ß ÇÑ´Ù´Â °Í ¶§¹®¿¡ ½±°Ô Á¢±ÙÇÏÁö ¾ÊÀ¸·Á´Â °æÇâÀÌ ÀÖ½À´Ï´Ù. ƯÈ÷³ª ¿ì¸®³ª¶ó ÇÁ·Î±×·¥ °³¹ßÀÚµéÀÇ °æ¿ì À©µµ¿ì °øÀ¯ Æú´õ¸¦ ÀÌ¿ëÇØ¼­ °³¹ßÀ» ÇÏ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù. ÀÌ·¸°Ô µÇ¸é ´©°¡ ¹«¾ùÀ» ¼öÁ¤Çß´ÂÁö ¾Ë ¼öµµ ¾ø°í ³²ÀÌ ÇØ ³õÀº ¼Ò½º À§¿¡ À߸øµÈ ¼Ò½º¸¦ µ¤¾î¾²´Â °æ¿ìµµ ¸¹ÀÌ ¹ß»ýÇϰí ÀÖ½À´Ï´Ù. ÇÑ»ç¶÷ÀÌ °³ÀÎÀûÀ¸·Î ÁøÇà ÇÏ´Â ÇÁ·ÎÁ§Æ®°¡ ÀÖ´õ¶óµµ ¹öÀü °ü¸® ÇÁ·Î±×·¥À» »ç¿ëÇÏ´Â °ÍÀÌ ¸Å¿ì Æí¸®ÇÕ´Ï´Ù. ¾Õ¼­ ¸»ÇÑ ÀåÁ¡µéÀº ¿©·¯ ¸íÀÌ °³¹ß ÇÏ´Â °Í°ú ÇÑ»ç¶÷ÀÌ °³¹ß ÇÏ´Â °Í¿¡ ¸ðµÎ ÇØ´çµÇ´Â °ÍµéÀÔ´Ï´Ù. ¼ÒÇÁÆ®¿þ¾î ¹öÀü °ü¸® ½Ã½ºÅÛÀ» ÀÌ¿ëÇÏ´Â ÇÁ·ÎÁ§Æ®µéÀº ¾ÆÁÖ ¸¹½À´Ï´Ù. ´ëºÎºÐ Open Source·Î µÈ ÇÁ·ÎÁ§Æ®µéÀº CVS¸¦ ÀÌ¿ëÇÏ¿© ¹öÀü °ü¸®¸¦ ÇÕ´Ï´Ù. ´ëÇ¥ÀûÀ¸·Î *BSD, OpenOffice, Mozilla, XFree86, Apache¿Í SourceForge.netÀÇ ¸ðµç ÇÁ·ÎÁ§Æ®µé ÀÔ´Ï´Ù. ºñ´Ü Open Source »Ó¸¸ÀÌ ¾Æ´Ñ »ó¾÷ ÇÁ·Î±×·¥À» ¸¸µå´Â ȸ»çµé¿¡¼­µµ ¼ÒÇÁÆ®¿þ¾î ¹öÀü °ü¸® ½Ã½ºÅÛÀº ÇʼöÀûÀÔ´Ï´Ù. === ¹öÀü °ü¸® ½Ã½ºÅÛÀÇ Á¾·ù === ÇöÀç ³ª¿Í ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î ¹öÀü °ü¸® ½Ã½ºÅÛÀº ¿©·¯ Á¾·ù°¡ ÀÖ½À´Ï´Ù. °¢°¢ Àå´ÜÁ¡ÀÌ ÀÖ½À´Ï´Ù. * CVS (Concurrent Version System) : °¡Àå ³Î¸® »ç¿ëµÇ¸ç ¿ª»ç°¡ ±íÀº ¹öÀü °ü¸® ½Ã½ºÅÛÀÔ´Ï´Ù. [^http://www.cvshome.org] * Subversion : CVSÀÇ ´ÜÁ¡À» °³¼±Çϰí CVS¸¦ ´ëüÇÒ ¸ñÀûÀ¸·Î °³¹ß µÇ¾ú½À´Ï´Ù. ÀÌ ¹®¼­¿¡¼­ ¼³¸íÇÒ ¹öÀü °ü¸® ½Ã½ºÅÛÀÔ´Ï´Ù. [^http://subversion.tigris.org] * Visual Sourcesafe : Microsoft¿¡¼­ ¸¸µç ¹öÀü °ü¸® ½Ã½ºÅÛÀÔ´Ï´Ù. CVS¿Í´Â ¹öÀü °ü¸® °üÁ¡¿¡¼­ Á¶±ÝÀÇ Â÷ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù. À©µµ¿ì ±â¹Ý ¼ÒÇÁÆ®¿þ¾îÀÇ ¹öÀü °ü¸®¸¦ ÇÒ ¶§ ÀÚÁÖ »ç¿ëµË´Ï´Ù. [^http://msdn.microsoft.com/ssafe/] * Clear Case : RationalÀ̶ó´Â ȸ»ç¿¡¼­ ¸¸µç ¹öÀü °ü¸® ½Ã½ºÅÛÀÔ´Ï´Ù. Áö±ÝÀº IBM¿¡ ÇÕº´µÇ¾ú½À´Ï´Ù. »ó¿ë ¼ÒÇÁÆ®¿þ¾îÀÔ´Ï´Ù. [^http://www-306.ibm.com/software/rational] * BitKeeper : ¸®´ª½º Ä¿³ÎÀÌ BitKeeper¸¦ ÀÌ¿ëÇØ¼­ °³¹ß Çϰí ÀÖ½À´Ï´Ù. »ó¿ë ¼ÒÇÁÆ®¿þ¾îÀÔ´Ï´Ù. [^http://www.bitkeeper.com] === ¹öÀü °ü¸® ½Ã½ºÅÛÀÇ ¿ë¾îµé === ¼ÒÇÁÆ®¿þ¾î ¹öÀü °ü¸® ½Ã½ºÅÛ¿¡¼­ »ç¿ëµÇ´Â ¿ë¾îµéÀ» ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù. ÀúÀå¼Ò : ¸®Æ÷ÁöÅ丮(Repository)¶ó°íµµ ÇÏ¸ç ¸ðµç ÇÁ·ÎÁ§Æ®ÀÇ ÇÁ·Î±×·¥ ¼Ò½ºµéÀº ÀÌ ÀúÀå¼Ò ¾È¿¡ ÀúÀåÀÌ µË´Ï´Ù. ±×¸®°í ¼Ò½º»Ó¸¸ÀÌ ¾Æ´Ï¶ó ¼Ò½ºÀÇ º¯°æ »çÇ×µµ ¸ðµÎ ÀúÀåµË´Ï´Ù. ³×Æ®¿öÅ©¸¦ ÅëÇØ¼­ ¿©·¯ »ç¶÷ÀÌ Á¢±Ù ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹öÀü °ü¸® ½Ã½ºÅÛ ¸¶´Ù °¢°¢ ´Ù¸¥ ÆÄÀÏ ½Ã½ºÅÛÀ» °¡Áö°í ÀÖÀ¸¸ç SubversionÀº Berkeley DB¸¦ »ç¿ëÇÕ´Ï´Ù. ÇÑ ÇÁ·ÎÁ§Æ® ¸¶´Ù ÇϳªÀÇ ÀúÀå¼Ò°¡ ÇÊ¿äÇÕ´Ï´Ù. üũ¾Æ¿ô : ÀúÀå¼Ò¿¡¼­ ¼Ò½º¸¦ ¹Þ¾Æ¿À´Â °ÍÀÔ´Ï´Ù. üũ¾Æ¿ôÀ» ÇÑ ¼Ò½º¸¦ º¸¸é ÇÁ·Î±×·¥ ¼Ò½º°¡ ¾Æ´Ñ ´Ù¸¥ µð·ºÅ丮¿Í ÆÄÀϵéÀÌ ¼¯¿© ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù. ÀÌ µð·ºÅ丮¿Í ÆÄÀϵéÀº ¹öÀü °ü¸®¸¦ À§ÇÑ ÆÄÀϵéÀÔ´Ï´Ù. ÀÓÀÇ·Î Áö¿ì°Å³ª º¯°æÇϸé ÀúÀå¼Ò¿Í ¿¬°áÀÌ µÇÁö ¾Ê½À´Ï´Ù. üũ¾Æ¿ô¿¡µµ ±ÇÇÑÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. ¿ÀÇ ¼Ò½º ÇÁ·ÎÁ§Æ®µé¿¡¼­´Â ´ëºÎºÐ À͸í üũ¾Æ¿ôÀ» Çã¿ëÇϰí ÀÖ½À´Ï´Ù. Ä¿¹Ô(Commit) : üũ¾Æ¿ô ÇÑ ¼Ò½º¸¦ ¼öÁ¤, ÆÄÀÏ Ãß°¡, »èÁ¦ µîÀ» ÇÑ µÚ ÀúÀå¼Ò¿¡ ÀúÀåÇÏ¿© °»½Å ÇÏ´Â °ÍÀÔ´Ï´Ù. Ä¿¹ÔÀ» Çϸé CVSÀÇ °æ¿ì ¼öÁ¤ÇÑ ÆÄÀÏÀÇ ¸®ºñÀüÀÌ Áõ°¡Çϰí SubversionÀÇ °æ¿ì Àüü ¸®ºñÀüÀÌ 1 Áõ°¡ÇÏ°Ô µË´Ï´Ù. ¾÷µ¥ÀÌÆ®(Update) : üũ¾Æ¿ôÀ» ÇØ¼­ ¼Ò½º¸¦ °¡Á® ¿Ô´õ¶óµµ ´Ù¸¥ »ç¶÷ÀÌ Ä¿¹ÔÀ» ÇÏ¿© ¼Ò½º°¡ ´Þ¶óÁ³À» °ÍÀÔ´Ï´Ù. ÀÌ·² °æ¿ì ¾÷µ¥ÀÌÆ®¸¦ ÇÏ¿© ÀúÀå¼Ò¿¡ ÀÖ´Â ÃֽйöÀüÀÇ ¼Ò½º¸¦ °¡Á®¿É´Ï´Ù. ¹°·Ð ¹Ù²ï ºÎºÐ¸¸ °¡Á®¿É´Ï´Ù. ¸®ºñÀü(Revision) : ¼Ò½º ÆÄÀϵîÀ» ¼öÁ¤ÇÏ¿© Ä¿¹ÔÇÏ°Ô µÇ¸é ÀÏÁ¤ÇÑ ±ÔÄ¢¿¡ ÀÇÇØ ¼ýÀÚ°¡ Áõ°¡ ÇÕ´Ï´Ù. ÀúÀå¼Ò¿¡ ÀúÀåµÈ °¢°¢ÀÇ ÆÄÀÏ ¹öÀüÀ̶ó ÇÒ ¼ö ÀÖ½À´Ï´Ù. SubversionÀÇ °æ¿ì ÆÄÀϺ°·Î ¸®ºñÀüÀÌ ¸Å°ÜÁöÁö ¾Ê°í Çѹø Ä¿¹Ô ÇÑ °ÍÀ¸·Î Àüü ¸®ºñÀüÀÌ ¸Å°Ü Áý´Ï´Ù. ¸®ºñÀüÀ» º¸°í ÇÁ·ÎÁ§Æ® ÁøÇà »óȲÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ÀÓÆ÷Æ®(Import) : ¾Æ¹«°Íµµ µé¾îÀÖÁö ¾ÊÀº ÀúÀå¼Ò¿¡ ¸Ç óÀ½ ¼Ò½º¸¦ ³Ö´Â ÀÛ¾÷ÀÔ´Ï´Ù. ÀͽºÆ÷Æ®(Export) : üũ¾Æ¿ô°ú´Â ´Þ¸® ¹öÀü °ü¸® ÆÄÀϵéÀ» »« ¼ø¼öÇÑ ¼Ò½º ÆÄÀÏÀ» ¹Þ¾Æ¿Ã ¼ö ÀÖ½À´Ï´Ù. ¼Ò½º¸¦ ¾ÐÃàÇÏ¿© ¸±¸®Áî ÇÒ ¶§ »ç¿ëÇÕ´Ï´Ù. === ÀúÀå¼ÒÀÇ µð·ºÅ丮 ¹èÄ¡ === ÀúÀå¼Ò¿¡ ¹Ù·Î ¼Ò½º¸¦ ³Ö¾î ÇÁ·ÎÁ§Æ®¸¦ ÁøÇà ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸ ¹öÀü °ü¸® ½Ã½ºÅÛ¿¡¼­ ±ÇÀåÇÏ´Â µð·ºÅ丮 ¹èÄ¡ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. {{{#!vim nosyntax -- http://svn.samplerepository.org/svn/sample +--+---+- branches | +--+- dav-mirror | | |--- src | | |--- doc | | +--- Makefile | | | +--- svn-push | +--- svnserve-thread-pools | +---+- tags | +--- 0.10 | +--+- 0.10.1 | | |--- src | | |--- doc | | +--- Makefile | | | +--- 0.20 | +--- 0.30 | +--- 0.50 | +--- 1.01 | +---+- trunk |--- src |--- doc +--- Makefile }}} À§¿¡ º¸ÀÌ´Â ±¸Á¶´Â º¸Åë ÀÚÁÖ »ç¿ëµÇ´Â µð·ºÅ丮 ±¸Á¶ÀÔ´Ï´Ù. ÀúÀå¼Ò µð·ºÅ丮 ¾Æ·¡ branches, tags, trunk ¶ó´Â 3°³ÀÇ µð·ºÅ丮°¡ ÀÖ½À´Ï´Ù. ÀÌ µð·ºÅ丮µéÀº °¢°¢ÀÇ ¿ëµµ°¡ ÀÖ½À´Ï´Ù. CVS´Â branch¿Í tag¸¦ À§ÇÑ ¸í·ÉÀÌ µû·Î Á¸Àç ÇÏÁö¸¸. SubversionÀÇ °æ¿ì ¸í·ÉÀÌ ÀÖ±ä ÇÏÁö¸¸ ´Ü¼øÇÑ µð·ºÅ丮 º¹»ç¿Í °°Àº È¿°ú¸¦ ³À´Ï´Ù. trunk : ´Ü¾î ÀÚüÀÇ ¶æÀº º»Ã¼ ºÎºÐ, ³ª¹«ÁÙ±â, ¸öÅë µî ÀÔ´Ï´Ù. ÇÁ·ÎÁ§Æ®¿¡¼­ °¡Àå Áß½ÉÀÌ µÇ´Â µð·ºÅ丮ÀÔ´Ï´Ù. ¸ðµç ÇÁ·Î±×·¥ °³¹ß ÀÛ¾÷Àº trunk µð·ºÅ丮¿¡¼­ ÀÌ·ç¾îÁý´Ï´Ù. ±×·¡¼­ À§ÀÇ ±¸Á¶¿¡¼­ trunk µð·ºÅ丮 ¾Æ·¡¿¡´Â ¹Ù·Î ¼Ò½ºµéÀÇ ÆÄÀϰú µð·ºÅ丮°¡ µé¾î°¡°Ô µË´Ï´Ù. branches : ³ª¹«ÁÙ±â(trunk)¿¡¼­ »¸¾îÁ® ³ª¿Â ³ª¹« °¡Áö¸¦ ¶æÇÕ´Ï´Ù. trunk µð·ºÅ丮¿¡¼­ ÇÁ·Î±×·¥À» °³¹ßÇÏ´Ù º¸¸é Å« ÇÁ·ÎÁ§Æ®¿¡¼­ ¶Ç ´Ù¸¥ ÀÛÀº ºÐ·ù·Î »©¼­ µû·Î °³¹ßÇØ¾ß ÇÒ °æ¿ì°¡ »ý±é´Ï´Ù. ÇÁ·ÎÁ§Æ®¾ÈÀÇ ÀÛÀº ÇÁ·ÎÁ§Æ®¶ó°í »ý°¢ÇÏ¸é µË´Ï´Ù. branches µð·ºÅ丮 ¾È¿¡ ¶Ç ´Ù¸¥ µð·ºÅ丮¸¦ µÎ¾î ±× ¾È¿¡¼­ °³¹ßÇÏ°Ô µË´Ï´Ù. tags : tag´Â ²¿¸®Ç¥¶ó´Â ¶æÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ÀÌ µð·ºÅ丮´Â ÇÁ·Î±×·¥À» °³¹ßÇϸ鼭 Á¤±âÀûÀ¸·Î ¸±¸®Á ÇÒ ¶§ 0.1, 0.2, 1.0 ÇÏ´Â ½ÄÀ¸·Î ¹öÀüÀ» ºÙ¿© ¹ßÇ¥ÇÏ°Ô µÇ´Âµ¥ ±×¶§±×¶§ ¹ßÇ¥ÇÑ ¼Ò½º¸¦ µû·Î ÀúÀåÇÏ´Â °ø°£ÀÔ´Ï´Ù. À§¿¡¼­ º¸¸é tags µð·ºÅ丮 ¾Æ·¡¿¡´Â ¹öÀü¸íÀ¸·Î µð·ºÅ丮°¡ ¸¸µé¾îÁ® ÀÖ½À´Ï´Ù. == Subversion == SubversionÀº CVS¸¦ ´ëüÇϱâ À§ÇØ °³¹ßµÇ°í ÀÖ½À´Ï´Ù. SubversionÀº ¼Ò½º ÄÚµå´Â ¹°·Ð ¹ÙÀ̳ʸ® ÆÄÀÏ µîÀÇ ¿©·¯°¡Áö Çü½ÄÀÇ ÆÄÀÏÀ» °ü¸® ÇÒ ¼ö ÀÖ½À´Ï´Ù. === CVS¿Í ºñ±³ÇÑ SubversionÀÇ ÀåÁ¡µé === * Ä¿¹Ô ´ÜÀ§°¡ ÆÄÀÏÀÌ ¾Æ´Ï¶ó üÀÎÁö¼ÂÀ̶ó´Â Á¡ÀÔ´Ï´Ù. CVS¿¡¼­¶ó¸é ¿©·¯ °³ÀÇ ÆÄÀÏÀ» ÇѲ¨¹ø¿¡ Ä¿¹ÔÇÏ´õ¶óµµ °¢°¢ÀÇ ÆÄÀϸ¶´Ù. ¸®ºñÀüÀÌ µû·Î ºÙ½À´Ï´Ù. ¹Ý¸é Subversion¿¡¼­´Â ÆÄÀϺ° ¸®ºñÀüÀÌ ¾ø°í Çѹø Ä¿¹ÔÇÒ ¶§¸¶´Ù º¯°æ »çÇ׺°·Î ¸®ºñÀüÀÌ Çϳª¾¿ Áõ°¡ÇÕ´Ï´Ù. * CVS¿¡ ºñÇØ ¾öû³ª°Ô ºü¸¥ ¾÷µ¥ÀÌÆ®/ºê·£Äª/ÅÂ±ë ½Ã°£. * CVS¿Í °ÅÀÇ µ¿ÀÏÇÑ »ç¿ë¹ý. CVS »ç¿ëÀÚ¶ó¸é ´©±¸³ª ¾î·Á¿ò ¾øÀÌ ±Ý¹æ ¹è¿ï ¼ö ÀÖ½À´Ï´Ù. * ÆÄÀÏ À̸§º¯°æ, À̵¿, µð·ºÅ丮 ¹öÀü °ü¸®µµ Áö¿ø. * ¿øÀÚÀû(atomic) Ä¿¹Ô. CVS¿¡¼­´Â ¿©·¯ ÆÄÀÏÀ» Ä¿¹ÔÇÏ´Ù°¡ ¾î´À ÇÑ ÆÄÀÏ¿¡¼­ Ä¿¹ÔÀÌ ½ÇÆÐÇßÀ» °æ¿ì ¾ÕÀÇ ÆÄÀϸ¸ Ä¿¹ÔÀÌ Àû¿ëµÇ°í µÚÀÇ ÆÄÀϵéÀº ±×´ë·Î ³²¾ÆÀÖ°Ô µË´Ï´Ù. SubversionÀº ¿©·¯°³ÀÇ ÆÄÀÏÀ» Ä¿¹ÔÇÏ´õ¶óµµ Ä¿¹ÔÀÌ ½ÇÆÐÇÏ¸é ¸ðµÎ ÀÌÀü »óÅ·ΠµÇµ¹¾Æ °©´Ï´Ù. * ¾ç¹æÇâ µ¥ÀÌÅÍ Àü¼ÛÀ¸·Î ³×Æ®¿öÅ© ¼ÒÅë·®(Æ®·¡ÇÈ) ÃÖ¼ÒÈ­. * Æ®¸®º°, ÆÄÀϺ° Á¢±Ù Á¦¾î ¸®½ºÆ®. ÀúÀå¼Ò ¾²±â Á¢±ÙÀ» °¡Áø °³¹ßÀÚ¶óµµ ¾Æ¹« ¼Ò½º³ª ¼öÁ¤ÇÏÁö ¸øÇÏ°Ô Á¶ÀýÇÒ ¼ö ÀÖ½À´Ï´Ù. * ÀúÀå¼Ò/ÇÁ·ÎÁ§Æ®º° ȯ°æ ¼³Á¤ °¡´É * È®À强À» ¿°µÎ¿¡ µÐ ±¸Á¶, ±ò²ûÇÑ ¼Ò½º === ¼³Ä¡ Áغñ ÀÛ¾÷ === ÀÌ Àå¿¡¼­´Â ¸®´ª½º, À¯´Ð½º µîÀÇ POSIX ȣȯ ¿î¿µÃ¼Á¦¿¡¼­ ¼Ò½º¸¦ ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â ¹æ¹ýÀ» ´Ù·ç°í ÀÖ½À´Ï´Ù. Microsoft Windows¿¡¼­ÀÇ »ç¿ëÀº [http://wiki.kldp.org/wiki.php/Subversion-HOWTO#s-6 Microsoft Windows¿¡¼­ »ç¿ëÇϱâ] ÀåÀ» ÂüÁ¶ÇϽʽÿÀ. °¢°¢ ¸®´ª½º ¹èÆ÷ÆÇ ¹× FreeBSD, NetBSD µîÀÇ Àü¿ë ÆÐŰÁö¿¡ ´ëÇØ¼­´Â ¿î¿µÃ¼Á¦º° Àü¿ë ÆÐŰÁö ÀåÀ» ÂüÁ¶ÇϽʽÿÀ. ¼³Ä¡¸¦ À§ÇØ ÁغñÇØ¾ß ÇÒ ÀÏ. === »ç¿ë ÇÒ °¢°¢ÀÇ ÆÄÀÏµé ±¸Çϱâ === * Subversion ¼Ò½ºÆÄÀÏ [^http://subversion.tigris.org] subversion-1.2.X.tar.gz SubversionÀº ÃֽйöÀüÀ» ¹Þ½À´Ï´Ù. * Apache2 [^http://httpd.apache.org] httpd-2.0.XX.tar.gz Apache 2 µµ ÃֽйöÀüÀ» ¹Þ½À´Ï´Ù. 1.3¹öÀüÀº ¿¬µ¿ÀÌ ºÒ°¡´É ÇÕ´Ï´Ù. * Berkeley DB [^http://www.sleepycat.com/download/index.shtml] db-4.3.28.NC.tar.gz Berkeley DB´Â ¹öÀüÀ» ²À 4.3.28À» »ç¿ëÇÏ¿©¾ß ÇÕ´Ï´Ù. ('''''Subversion ¹öÀü 1.1 ºÎÅÍ´Â ±»ÀÌ ¹öŬ¸® DB¸¦ »ç¿ëÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. ÆÄÀÏ ½Ã½ºÅÛÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.''''') * OpenSSL [^http://www.openssl.org/source] openssl-0.9.7c.tar.gz OpenSSLÀº [LASTEST]¶ó°í µÈ °ÍÀ» ¹Þ½À´Ï´Ù. À§ÀÇ ÆÄÀϵéÀ» /root¿¡ ¹Þ½À´Ï´Ù. == ¼³Ä¡Çϱâ == Subversion°ú ¿¬°üµÈ ÇÁ·Î±×·¥µéÀ» ÄÄÆÄÀÏ ÇÏ°í ¼³Ä¡ÇϰڽÀ´Ï´Ù. === OpenSSL ÄÄÆÄÀϰú ¼³Ä¡ ==={{{#!vim nosyntax # tar vxzf openssl-0.9.7c.tar.gz # cd openssl-0.97c openssl-0.97c# ./config openssl-0.97c# make openssl-0.97c# make install }}} === Berkeley DB ÄÄÆÄÀϰú ¼³Ä¡ ==={{{#!vim nosyntax # tar vxzf db-4.3.28.NC.tar.gz # cd db-4.3.28.NC db-4.3.28.NC# cd build_unix db-4.3.28.NC/build_unix# ../dist/configure db-4.3.28.NC/build_unix# make db-4.3.28.NC/build_unix# make install db-4.3.28.NC/build_unix# echo "/usr/local/BerkeleyDB.4.3/lib" >> /etc/ld.so.conf db-4.3.28.NC/build_unix# ldconfig }}} === Apache ÄÄÆÄÀϰú ¼³Ä¡ === Apache´Â ¼³Ä¡Çصµ µÇ°í ¾È ÇØµµ µË´Ï´Ù. À¥À¸·Î ÀúÀå¼Ò¸¦ °ø°³ÇѴٰųª. http:// ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇØ¼­ subversionÀ» ÀÌ¿ëÇÏ°í ½Í´Ù¸é ¼³Ä¡Çϵµ·Ï ÇÕ´Ï´Ù.{{{#!vim nosyntax # tar vxzf httpd-2.0.54.tar.gz httpd-2.0.54# ./configure --prefix=/usr/local/apache2 --enable-suexec \ --enable-so --with-suexec-caller=bin \ --enable-ssl --with-ssl=/usr/local/ssl --enable-cache \ --enable-ext-filter --with-z=/usr/include --enable-dav \ --with-dbm=db4 --with-berkeley-db=/usr/local/BerkeleyDB.4.2 httpd-2.0.54# make httpd-2.0.54# make install }}} === Subversion ÄÄÆÄÀϰú ¼³Ä¡ === µ¥ºñ¾ÈÀÇ °æ¿ì zlib1g-dev, libxml2-dev, libexpat1-devÀÇ ÆÐŰÁö°¡ ÇÊ¿äÇÕ´Ï´Ù. ´Ù¸¥ ¹èÆ÷ÆÇÀÇ °æ¿ìµµ °ÅÀÇ °°Àº À̸§À¸·ÎµÈ ÆÐŰÁö°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ ÆÐŰÁöµéÀº ¶óÀ̺귯¸®¿Í Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇϰí ÀÖ´Â °ÍµéÀÔ´Ï´Ù. ¾Õ¿¡¼­ Apache¸¦ ¼³Ä¡ÇßÀ» °æ¿ì{{{#!vim nosyntax # tar vxzf subversion-1.2.1.tar.gz # cd subversion-1.2.1 subversion-1.2.1# ./configure --with-zlib --with-ssl=/usr/local/ssl \ --with-apr=/usr/local/apache2 \ --with-apr-util=/usr/local/apache2 \ --with-apxs=/usr/local/apache2/bin/apxs \ --with-dbm=db4 --with-berkeley-db=/usr/local/BerkeleyDB.4.3 subversion-1.2.1# make subversion-1.2.1# make install }}} Apache¸¦ ¼³Ä¡ÇÏÁö ¾Ê¾ÒÀ» °æ¿ì{{{#!vim nosyntax # tar vxzf subversion-1.2.1.tar.gz # cd subversion-1.2.1 subversion-1.2.1# ./configure --with-zlib --with-ssl=/usr/local/ssl \ --with-dbm=db4 --with-berkeley-db=/usr/local/BerkeleyDB.4.3 subversion-1.2.1# make subversion-1.2.1# make install }}} == ¼¼ºÎ ¼³Á¤ == === ÀúÀå¼Ò ¸¸µé±â === ¼Ò½º¸¦ ÀúÀåÇÒ °ø°£À» ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ÀúÀå¼Ò(Repository)´Â ÇÁ·ÎÁ§Æ® ¸¶´Ù Çϳª¾¿ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀúÀå¼Ò ¾È¿¡ ÇÁ·ÎÁ§Æ®ÀÇ ¼Ò½º°¡ ´Ù µé¾î°¡°Ô µÇ¸ç ´Ù¸¥ ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇÑ´Ù¸é ±× ÇÁ·ÎÁ§Æ®¸¦ À§ÇÑ ÀúÀå¼Ò¸¦ Çϳª ´õ ¸¸µé¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù. /home/svn¾È¿¡ ÀúÀå¼Ò¸¦ ¸¸µéµµ·Ï ÇϰڽÀ´Ï´Ù. ¾ÕÀ¸·Î ÀúÀå¼Ò¸¦ Ãß°¡ ÇÒ ¶§¿¡´Â /home/svn ¾Æ·¡¿¡ Ãß°¡ÇÏ¸é µË´Ï´Ù. ²À /home/svn¿¡ ÇÏÁö ¾Ê¾Æµµ µÇ¸ç ´Ù¸¥ °÷¿¡ ÇØµµ µË´Ï´Ù. ¹öŬ¸®DB¸¦ ÀÌ¿ëÇÑ ÀúÀå¼Ò ¸¸µé±â{{{#!vim nosyntax # mkdir /home/svn # cd /home/svn/ /home/svn# svnadmin create --fs-type bdb sample }}} ÆÄÀϽýºÅÛÀ» ÀÌ¿ëÇÑ ÀúÀå¼Ò ¸¸µé±â{{{#!vim nosyntax # mkdir /home/svn # cd /home/svn/ /home/svn# svnadmin create --fs-type fsfs sample }}} svnadminÀ¸·Î sampleÀ̶ó´Â ÀúÀå¼Ò¸¦ ¸¸µé¸é /home/svn ¾Æ·¡ sampleÀ̶ó´Â µð·ºÅ丮°¡ »ý±é´Ï´Ù. ÀÌ µð·ºÅ丮 ¾È¿¡´Â SubversionÀÌ Á¦¾îÇÏ´Â ÆÄÀϵéÀÌ µé¾îÀÖ½À´Ï´Ù. ÀÌ µð·ºÅ丮 ¾ÈÀÇ ÆÄÀϵéÀº Berkeley DB Çü½ÄÀ¸·Î µÇ¾î ÀÖ½À´Ï´Ù. DB ÆÄÀϵéÀº ¼öÁ¤ÇÏ´Â ÀÏÀÌ ¾øµµ·Ï ÇÕ´Ï´Ù. sample ÀúÀå¼ÒÀÇ Àüü °æ·Î´Â /home/svn/sampleÀÌ µË´Ï´Ù. ÀÌÁ¦ºÎÅÍ sample ÀúÀå¼Ò¸¦ °è¼Ó »ç¿ëÇÏ¿© ¼³¸íÀ» ÇϰڽÀ´Ï´Ù. ==== °øµ¿ ÀÛ¾÷À» À§ÇÑ ÀúÀå¼Ò ±×·ì ¼³Á¤ ==== svn+ssh://·Î ÀÛ¾÷À» ÇÏ·Á¸é ½Ã½ºÅÛ °èÁ¤À» ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ´ëºÎºÐ °èÁ¤À» ¸¸µé°í ±×·ìÀ» Çϳª·Î ¹­´Âµ¥. ÀÌ·² °æ¿ì ±×·ì¿¡ ¼Ò¼ÓµÈ »ç¿ëÀڵ鿡°Ôµµ ÀúÀå¼Ò ¾²±â ±ÇÇÑÀ» ÁÖ¾î¾ß ÇÕ´Ï´Ù. ±×·¡¼­ ÀúÀå¼ÒÀÇ ±×·ì ±ÇÇÑÀ» Á¶Á¤ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ±×·ì ¾²±â ±ÇÇÑÀ» ÁÖÁö ¾ÊÀ¸¸é ÀúÀå¼Ò¸¦ ¸¸µç °èÁ¤¸¸ ÀúÀå¼Ò¿¡ Á¢±ÙÀÌ °¡´ÉÇϰí. ±×·ì¿¡ ¼ÓÇØ ÀÖ´õ¶óµµ ´Ù¸¥ »ç¿ëÀÚ´Â ÀúÀå¼Ò¿¡ Á¢±Ù ÇÒ ¼ö ¾ø°Ô µË´Ï´Ù. {{{#!vim nosyntax # chmod -R g+w sample }}} === Apache ¼³Á¤ === Apache¸¦ ¼³Ä¡Çß´Ù¸é Apache ¼³Á¤À» ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. Apache°¡ ÀúÀå¼Ò¿¡ Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ¼ÒÀ¯ÀÚ¿Í ±ÇÇÑÀ» ¹Ù²ß´Ï´Ù. Apache´Â ±âº»ÀûÀ¸·Î ¼³Ä¡Çϸé nobody¿Í nogroup·Î ½ÇÇàµË´Ï´Ù.{{{#!vim nosyntax # cd /home/svn /home/svn# chown -R nobody.nogroup sample }}} Apache¸¦ /usr/local/apache2¿¡ ¼³Ä¡ÇßÀ¸¹Ç·Î ¼³Á¤ÆÄÀÏÀº /usr/local/apach2/conf/httpd.conf ÀÔ´Ï´Ù. dav, dav_svn ¸ðµâÀÌ ¼³Á¤µÇ¾î ÀÖ´ÂÁö È®ÀÎ ÇÕ´Ï´Ù. ÁÖ¼®Ã³¸® µÇ¾î ÀÖÀ¸¸é ÁÖ¼®À» ¾ø¾Ö°í ¾ø´Ù¸é ¾Æ·¡ µÎÁÙÀ» Ãß°¡ÇÕ´Ï´Ù.{{{#!vim apache LoadModule dav_module modules/mod_dav.so LoadModule dav_svn_module modules/mod_dav_svn.so }}} httpd.conf ÆÄÀÏ ¸Ç µÞºÎºÐ¿¡ ¾Æ·¡¿Í °°ÀÌ Ãß°¡ ÇÕ´Ï´Ù. ¼³Á¤À» ÀúÀåÇÑ µÚ¿¡ Apache¸¦ Àç½ÃÀÛ ÇÕ´Ï´Ù.{{{#!vim apache DAV svn SVNPath /home/svn/sample }}} ÀÌ·¸°Ô ¼³Á¤À» Çϰí À¥ ºê¶ó¿ìÀú¿¡¼­ {{{http://(Subversion°ú Apache¸¦ ¼³Ä¡ÇÑ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample}}} ·Î Á¢¼ÓÀ» ÇÕ´Ï´Ù. À¥ ºê¶ó¿ìÀú¿¡ ¾Æ·¡¿Í °°Àº È­¸éÀÌ º¸À̸é Subversion ÀúÀå¼Ò¿Í ¾ÆÆÄÄ¡°¡ Àß µ¿ÀÛÇϰí ÀÖ´Â °ÍÀÔ´Ï´Ù. ¾Æ·¡¿Í °°ÀÌ ³ª¿ÀÁö ¾Ê´Â´Ù¸é ¾ÆÆÄÄ¡ ¼³Á¤°ú ÀúÀå¼ÒÀÇ ¼ÒÀ¯ÀÚ¿Í ±×·ìÀ» ´Ù½Ã ÇÑ ¹ø »ìÆìº¸½Ã±â ¹Ù¶ø´Ï´Ù.{{{#!vim nosyntax Revision 0: / -------------------------------------------------------------------------------- Powered by Subversion version 1.0.0. }}} À§¿Í °°ÀÌ ¼³Á¤ÇÏ¸é ´©±¸µçÁö(Anonymous) À¥ ºê¶ó¿ìÀú·Î ÀúÀå¼Ò¸¦ º¼ ¼ö ÀÖ°í Subversion Ŭ¶óÀÌ¾ðÆ®¸¦ ÀÌ¿ëÇØ¼­ ¼Ò½º¸¦ üũ¾Æ¿ô, ÀͽºÆ÷Æ®, Ä¿¹ÔÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ½ÇÇà ½ÃÄ×À¸¸é "# svn checkout {{{http://(Subversion¼­¹ö IP¶Ç´Â µµ¸ÞÀÎ)/svn/sample sample}}}"À» ÀÔ·ÂÇÕ´Ï´Ù. "Checked out revision 0."ÀÌ ³ª¿À¸é Á¦´ë·Î ¼³Á¤ÀÌ µÈ °ÍÀÔ´Ï´Ù. ¾Æ¹«³ª(Anonymous) ÀúÀå¼Ò¿¡ Á¢±ÙÇØ¼­ üũ¾Æ¿ô, Ä¿¹Ô µîÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ==== Apache¿¡¼­ ID·Î »ç¿ëÀÚ ÀÎÁõ ==== ÀÌÁ¦ ID¸¦ ÅëÇØ ÀÎÁõµÈ »ç¿ëÀÚ¸¸ ¼Ò½º¸¦ üũ¾Æ¿ôÇϰí Ä¿¹Ô ÇÒ ¼ö ÀÖµµ·Ï ¼³Á¤ ÇϰڽÀ´Ï´Ù. ¾ÆÆÄÄ¡¿¡ »ç¿ëÇÒ ÆÐ½º¿öµå ÆÄÀÏÀ» ¸¸µì´Ï´Ù. "# htpasswd -c ÆÐ½º¿öµåÆÄÀÏ¸í »ç¿ëÀÚID"{{{#!vim nosyntax # cd /usr/local/apache/conf /usr/local/apache/conf# ../bin/htpasswd -c passwd sampleuser New password: Re-type new password: }}} "# htpasswd -c"´Â ÆÐ½º¿öµå ÆÄÀÏÀ» óÀ½ ¸¸µé ¶§ÀÇ ¿É¼ÇÀÌ°í »ç¿ëÀÚ¸¦ Ãß°¡ÇÏ°í ½ÍÀ» ¶§¿¡´Â "# htpasswd ÆÐ½º¿öµåÆÄÀÏ¸í »ç¿ëÀÚID" ·Î ÇØÁÖ¸é µË´Ï´Ù. ¹æ±Ý ¼öÁ¤Çß´ø /usr/local/apache2/conf/httpd.conf ÆÄÀÏÀÇ ¸Ç ¸¶Áö¸· ºÎºÐ¿¡ Ãß°¡ÇÑ ºÎºÐÀ» ´Ù½Ã ¼³Á¤ ÇÕ´Ï´Ù.{{{#!vim apache DAV svn SVNPath /home/svn/sample AuthType Basic AuthName "pyrasis's Repository" AuthUserFile /usr/local/apache2/conf/passwd Require valid-user }}} 4ÁÙÀÌ Ãß°¡ µÇ¾ú½À´Ï´Ù. AuthType BasicÀº Apache ±âº» ÆÐ½º¿öµå ÀÎÁõÀÔ´Ï´Ù. AuthNameÀº ÆÐ½º¿öµå°¡ °É¸° À¥ÆäÀÌÁö¿¡ ¶ß´Â ·Î±×ÀÎâ¿¡ ³ª¿Ã ¹®ÀåÀÔ´Ï´Ù. AuthUserFileÀº ¹æ±Ý Àü ¸¸µé¾ú´ø ¾ÆÆÄÄ¡ ÆÐ½º¿öµå ÆÄÀÏÀÔ´Ï´Ù. Àý´ë°æ·Î·Î Àû¾îÁÖ¾î¾ß ÇÕ´Ï´Ù. Require valid-user´Â ÀÎÁõµÈ »ç¿ëÀÚ¸¸ º¼ ¼ö ÀÖ°Ô ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌÁ¦ À¥ ºê¶ó¿ìÀú·Î ´Ù½Ã sampleÀúÀå¼Ò·Î Á¢¼ÓÇØ º¸¸é ID¿Í ÆÐ½º¿öµå¸¦ ¹¯´Â âÀÌ ³ª¿Ã °ÍÀÔ´Ï´Ù. ¸¸µç ID¿Í ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇϸé ÀúÀå¼Ò¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô µÇ¸é üũ¾Æ¿ô, Ä¿¹ÔµîÀ» ÇÒ ¶§ ID¿Í ¾ÏÈ£¸¦ ¹°¾îº¸°Ô µË´Ï´Ù. À¥ ºê¶ó¿ìÀú·Î ÀúÀå¼Ò¸¦ º¸´Â °Í°ú üũ¾Æ¿ôÀº ¾Æ¹«¿¡°Ô³ª(Anonymous) ÇÒ ¼ö ÀÖ°Ô Çϰí Ä¿¹ÔÀº ÁöÁ¤µÈ »ç¿ëÀÚ¸¸ ÇÒ ¼ö ÀÖµµ·Ï ÇÏ·Á¸é httpd.conf¿¡¼­ ¼³Á¤ÇÑ ºÎºÐÀ» ¾Æ·¡¿Í °°ÀÌ ¹Ù²Ù¾î ÁÖ¸é µË´Ï´Ù.{{{#!vim apache DAV svn SVNPath /home/svn/sample AuthType Basic AuthName "pyrasis's Repository" AuthUserFile /usr/local/apache2/conf/passwd Require valid-user }}} ÀÌ·¸°Ô Çϸé ÀúÀå¼Ò¸¦ º¸°Å³ª üũ¾Æ¿ôÀ» ÇÒ ¶§´Â ID¿Í ÆÐ½º¿öµå¸¦ ¹¯Áö ¾Ê°í Ä¿¹ÔÀ̳ª µð·ºÅ丮. ÆÄÀϺ¹»ç µîÀÇ ÀúÀå¼Ò¸¦ º¯°æÇÏ´Â ÀÛ¾÷À» ÇÒ ¶§¿¡´Â ID¿Í ÆÐ½º¿öµå¸¦ ¹°¾îº¸°Ô µË´Ï´Ù. "# svn {{{checkout http://(Subversion¼­¹ö IP¶Ç´Â µµ¸ÞÀÎ)/svn/sample}}} sample" À» ÀÔ·ÂÇϸé ID¿Í ÆÐ½º¿öµå¸¦ ¹°¾î¿É´Ï´Ù. ID¿Í ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇÏ°í ³ª¼­ "Checked out revision 0." ÀÌ Ãâ·ÂµÇ¸é Á¦´ë·Î ¼³Á¤ µÈ °ÍÀÔ´Ï´Ù. === svnserve¸¦ »ç¿ëÇÑ ¼­¹ö === SubversionÀÇ °íÀ¯ ÇÁ·ÎÅäÄÝÀÎ svn://À» ÀÌ¿ëÇÒ ¼ö ÀÖ´Â svnserve¸¦ »ç¿ëÇØ¼­ ¼­¹ö ¼³Á¤À» ÇØº¸°Ú½À´Ï´Ù. À̰ÍÀ» »ç¿ëÇϸé Apache¸¦ »ç¿ëÇÑ °Íº¸´Ù üũ¾Æ¿ô, Ä¿¹Ô ¼Óµµ°¡ ´õ ºü¸¨´Ï´Ù. svnserve·Î ¼­¹ö¸¦ ½ÇÇà ½Ã۸é 3690¹øÀÇ Æ÷Æ®°¡ ¿­¸³´Ï´Ù. sample ÀúÀå¼Ò°¡ /home/svn ¾Æ·¡¿¡ ÀÖÀ» °æ¿ì{{{#!vim nosyntax # svnserve -d -r /home/svn/ }}} ÀÌ·¸°Ô ½ÇÇà ½ÃÄ×À¸¸é "# svn checkout {{{svn://(Subversion¼­¹ö IP¶Ç´Â µµ¸ÞÀÎ)/sample}}} sample"À» ÀÔ·ÂÇÕ´Ï´Ù. "Checked out revision 0."ÀÌ ³ª¿À¸é Á¦´ë·Î ¼³Á¤ÀÌ µÈ °ÍÀÔ´Ï´Ù. ÀÌ°Í ¶ÇÇÑ ¾Æ¹«³ª(Anonymous) ÀúÀå¼Ò¿¡ Á¢±ÙÇØ¼­ üũ¾Æ¿ô, Ä¿¹Ô µîÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ==== svnserve¿¡¼­ ID·Î »ç¿ëÀÚ ÀÎÁõ ==== Subversion 0.33.0¹öÀü ÀÌÈĺÎÅÍ svnserve·Î ID·Î »ç¿ëÀÚ ÀÎÁõÀÌ °¡´ÉÇÏ°Ô µÇ¾ú½À´Ï´Ù. ±× ÀÌÀü ¹öÀü¿¡¼­ svnadminÀ¸·Î ÀúÀå¼Ò¸¦ ¸¸µé¸é ÀúÀå¼Ò µð·ºÅ丮 ¾Æ·¡¿¡ conf µð·ºÅ丮°¡ »ý±âÁö ¾ÊÁö¸¸ 0.33.0 ¹öÀüÀÌÈÄ¿¡ svnadminÀ¸·Î ÀúÀå¼Ò¸¦ ¸¸µé¾ú´Ù¸é ÀúÀå¼Ò µð·ºÅ丮 ¾Æ·¡¿¡ conf µð·ºÅ丮°¡ ÀÚµ¿À¸·Î »ý¼ºµË´Ï´Ù. ÀÌÀü ¹öÀü¿¡¼­ ¸ÕÀú ÀúÀå¼Ò¸¦ ¸¸µé¾î µÎ¾ú´Ù¸é ÀúÀå¼Ò µð·ºÅ丮 /home/svn/sample ¾Æ·¡ conf µð·ºÅ丮¸¦ ¸¸µé¾î ÁÝ´Ï´Ù. (/home/svn/sample/conf) ÀÌÁ¦ °¢ ÀúÀå¼Ò µð·ºÅ丮 ¾Æ·¡ conf µð·ºÅ丮°¡ ÀÖ½À´Ï´Ù. /home/svn/sample/conf/svnserve.conf ÆÄÀÏÀÌ svnserveÀÇ ¼³Á¤ ÆÄÀÏÀÔ´Ï´Ù. 0.33.0 ¹öÀü ÀÌÀü ¸¸µç ÀúÀå¼Ò¿¡´Â conf µð·ºÅ丮 ¹× svnserve.conf ÆÄÀÏÀÌ ¾ø½À´Ï´Ù. ±×·² °æ¿ì¿¡´Â conf µð·ºÅ丮¿Í svnserve.conf ÆÄÀÏÀ» ¸¸µé¾î ÁÖ¸é µË´Ï´Ù. svnserve.conf ÆÄÀÏÀ» ¾Æ·¡¿Í °°ÀÌ ¼³Á¤ ÇÕ´Ï´Ù.{{{#!vim conf ### This file controls the configuration of the svnserve daemon, if you ### use it to allow access to this repository. (If you only allow ### access through http: and/or file: URLs, then this file is ### irrelevant.) ### Visit http://subversion.tigris.org/ for more information. [general] ### These options control access to the repository for unauthenticated ### and authenticated users. Valid values are "write", "read", ### and "none". The sample settings below are the defaults. anon-access = none auth-access = write ### The password-db option controls the location of the password ### database file. Unless you specify a path starting with a /, ### the file's location is relative to the conf directory. ### The format of the password database is similar to this file. ### It contains one section labelled [users]. The name and ### password for each user follow, one account per line. The ### format is ### USERNAME = PASSWORD ### Please note that both the user name and password are case ### sensitive. There is no default for the password file. password-db = passwd ### This option specifies the authentication realm of the repository. ### If two repositories have the same authentication realm, they should ### have the same password database, and vice versa. The default realm ### is repository's uuid. realm = pyrasis's Repository }}} anon-access = noneÀ¸·Î ¾Æ¹«¿¡°Ô³ª(Anonymous) ÀúÀå¼Ò¿¡ Á¢±ÙÇÏ´Â °ÍÀ» ¸·¾Ò½À´Ï´Ù. read·Î Çϸé Àб⸸ °¡´ÉÇϸç write·Î ÇØÁÖ¸é ÀÐ°í ¾²±â°¡ °¡´ÉÇØÁý´Ï´Ù. auth-access = write´Â ID·Î ÀÎÁõµÈ »ç¿ëÀÚ¿¡°Ô ¾²±â ±ÇÇÑÀ» ÁÖ´Â °ÍÀÔ´Ï´Ù. password-db = passwd ÀÌ ¼³Á¤Àº svnserveÀÇ ÆÐ½º¿öµå ÆÄÀÏÀÔ´Ï´Ù ÀÌÀüÀÇ Apache ÆÐ½º¿öµå ÆÄÀϰú´Â º°°³ÀÔ´Ï´Ù. ¾Æ·¡ ³»¿ëÀ¸·Î /home/svn/sample/conf ¾Æ·¡ passwd ¶ó´Â À̸§À¸·Î ¸¸µì´Ï´Ù. ID = ÆÐ½º¿öµå Çü½Ä ÀÔ´Ï´Ù. ¾ÆÁ÷ ¾ÏȣȭµÈ ÆÐ½º¿öµå´Â Áö¿øÇÏÁö ¾Ê´Â °Í °°½À´Ï´Ù. ¹öÀü ¾÷À» ÅëÇØ °³¼± µÉ °Í °°½À´Ï´Ù. passwd{{{#!vim conf [users] sampleuser = 02030104 }}} ÀÌÁ¦ "# svn checkout svn://(Subversion ¼­¹öÀÇ IP¶Ç´Â µµ¸ÞÀÎ)/sample sample" À» ÇØº¸¸é ID¿Í ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇ϶ó°í ³ª¿É´Ï´Ù. À§¿¡¼­ ¼³Á¤Çß´ø ID¿Í ÆÐ½º¿öµå¸¦ ÀÔ·ÂÇϸé üũ¾Æ¿ôÀÌ µÇ¸ç "Checked out revision 0." ÀÌ ³ª¿À¸é ¼³Á¤ÀÌ Á¦´ë·Î µÈ °ÍÀÔ´Ï´Ù. === SSH + svnserve ¼­¹ö === SSH2 µ¥¸óÀ¸·Î svnserveÀ» Åͳθµ ÇÏ¿© ÀÛµ¿½Ãŵ´Ï´Ù. ÀÌ·¸°Ô µÇ¸é svn+ssh:// ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ°Ô µÇ¸ç »ç¿ëÀÚ ÀÎÁõÀº ½Ã½ºÅÛ °èÁ¤À¸·Î ÀÎÁõÀ» ÇÕ´Ï´Ù. ±¸µ¿½ÃŰ´Â ¹æ¹ýÀº µû·Î ÀÖÁö ¾ÊÀ¸¸ç SSHµ¥¸ó¸¸ ¶° ÀÖÀ¸¸é µË´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®¿¡¼­ svn+ssh:// ¸¦ »ç¿ëÇϱâ Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹ö·Î Á¢¼ÓÇÒ ID¼³Á¤, °¢ »ç¿ëÀÚ °èÁ¤ÀÇ µð·ºÅ丮¿¡ .subversionÀ̶ó´Â µð·ºÅ丮°¡ ÀÖ½À´Ï´Ù. ¿©±â¿¡ º¸¸é config ¶ó´Â ÆÄÀÏÀÇ ¸Ç ¸¶Áö¸·¿¡ ¾Æ·¡¿Í °°ÀÌ Ãß°¡ÇÕ´Ï´Ù. ssh -l ¼­¹ö¿¡ Á¢¼ÓÇÒ ID ~/.subversion/config{{{#!vim conf [tunnels] ssh = ssh -l sampleuser }}} ÁÖÀÇÇÒ Á¡Àº IPÁÖ¼Ò³ª µµ¸ÞÀÎ µÚ¿¡ ÀúÀå¼ÒÀÇ Àý´ë °æ·Î¸¦ Àû¾îÁÖ¾î¾ß ÇÕ´Ï´Ù. svnserve¸¦ ¶ç¿ö¼­ /home/svn/°ú °°ÀÌ ÁöÁ¤ÇØ ÁÖÁö ¾Ê¾Ò±â ¶§¹®¿¡ °¢ ÀúÀå¼ÒÀÇ Àý´ë°æ·ÎÀÎ /home/svn/sample·Î ÇÕ´Ï´Ù.{{{#!vim nosyntax # svn checkout svn+ssh://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/home/svn/sample sample }}} == ½ÇÁ¦·Î »ç¿ëÇϱâ == °£´ÜÇÑ ¿¹Á¦ ÇÁ·Î±×·¥À» ÅëÇØ¼­ SubversionÀÇ »ç¿ë¹ýÀ» ¾Ë¾Æº¸µµ·Ï ÇϰڽÀ´Ï´Ù. Ä¿¸Çµå ¶óÀΠŬ¶óÀ̾ðÆ®À» ÅëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù. X À©µµ¿ì, MS À©µµ¿ì¿ë GUI Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥¿¡ ´ëÇØ¼­´Â µÚ¿¡ ¼³¸íÇϵµ·Ï ÇϰڽÀ´Ï´Ù. === ¿¡µðÅÍ ¼³Á¤ === Subversion¿¡¼­ »ç¿ëÇÒ ±âº»ÀûÀÎ ¿¡µðÅ͸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. À̰ÍÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é Ä¿¹Ô µîÀ» ÇÒ ¼ö ¾ø°Ô µË´Ï´Ù. °¢ »ç¿ëÀÚ °èÁ¤ÀÇ µð·ºÅ丮¿¡´Â .profileÀ̳ª .bash_profile µîÀÇ È¯°æ º¯¼ö µîÀ» ÁöÁ¤ÇÏ´Â ÆÄÀÏÀÌ ÀÖ½À´Ï´Ù. ¿©±â¿¡ ¾Æ·¡¿Í °°ÀÌ Ãß°¡ ÇÕ´Ï´Ù. ¿©±â¿¡¼­´Â ¿¡µðÅ͸¦ vimÀ¸·Î ¼³Á¤ ÇϰڽÀ´Ï´Ù. vimÀÇ °æ·Î´Â »ç¿ëÀÚ¸¶´Ù ´Ù¸¦ ¼ö ÀÖÀ¸¹Ç·Î »ç¿ëÇϰíÀÚ ÇÏ´Â ½Ã½ºÅÛ¿¡ ¸Â°Ô Àû¾îÁֽʽÿÀ.{{{#!vim sh SVN_EDITOR=/usr/bin/vim export SVN_EDITOR }}} === ±âº» µð·ºÅ丮 ¸¸µé±â === ¾Õ¼­ ¼³¸í Çß´ø trunk, branches, tags µð·ºÅ丮¸¦ ¸¸µé¾î º¸°Ú½À´Ï´Ù. trunk µð·ºÅ丮ÀÇ »ý¼º, ¾Õ¿¡¼­ Apache¸¦ ÅëÇØ ¼³Á¤ Çß´Ù¸é {{{http://}}}¸¦ svnserve·Î ¼³Á¤Çß´Ù¸é {{{svn://}}}·Î SSH¸¦ »ç¿ëÇÑ´Ù¸é {{{svn+ssh://}}}·Î ÇÏ¿© ¼­¹ö ¼³Á¤¿¡ ¸Â°Ô ÁÖ¼Ò¸¦ Àû¾î ÁֽʽÿÀ. apache¸¦ ¿¬µ¿ÇÑ °æ¿ì{{{#!vim nosyntax # svn mkdir http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/trunk }}} svnserve¸¸ ½ÇÇàÇÑ °æ¿ì{{{#!vim nosyntax # svn mkdir svn://(Subversion¼­¹ö IP¶Ç´Â µµ¸ÞÀÎ)/sample/trunk }}} À§Ã³·³ ÀÔ·ÂÀ» Çϸé vimÀÌ ½ÇÇàµÇ¸é¼­ ¾Æ·¡¿Í °°ÀÌ ³ª¿Ã °ÍÀÔ´Ï´Ù. :q!·Î ºüÁ® ³ª°©´Ï´Ù.{{{#!vim nosyntax --This line, and those below, will be ignored-- A http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/trunk }}} vimÀ» ºüÁ® ³ª¿Ô´Ù¸é ¾Æ·¡¿Í °°ÀÌ ³ª¿À´Âµ¥(Ä¿¹Ô ·Î±×¸¦ ÀÔ·ÂÇÏÁö ¾ÊÀ¸¸é ¾Æ·¡¿Í ÀÌ ³ª¿À°ÔµË´Ï´Ù.) c¸¦ ´©¸£°í ¿£Å͸¦ Ä¡¸é µð·ºÅ丮°¡ ¸¸µé¾î Áö°Ô µË´Ï´Ù.{{{#!vim nosyntax Log message unchanged or not specified a)bort, c)ontinue, e)dit }}} c¸¦ ÀÔ·ÂÇÑµÚ ¾Æ·¡¿Í °°ÀÌ ³ª¿À¸é µð·ºÅ丮 »ý¼ºÀº ¼º°øÇÑ °ÍÀÔ´Ï´Ù. ÀÌ ¹æ¹ý´ë·Î branches, tags µð·ºÅ丮µµ ¸¸µì´Ï´Ù.{{{#!vim nosyntax Committed revision 1. }}} ¸¸¾à read-only¿¡·¯°¡ ³ª¿Ã °æ¿ì conf/svnserve.conf¿¡¼­ °èÁ¤À» ¸¸µéÁö ¾Ê¾Æ¼­ ±×·¸½À´Ï´Ù. anonymous·Î »ç¿ëÇÒ °æ¿ì #[general], #anon-access = read °¡ ÁÖ¼® ó¸® µÇ¾î Àִµ¥ ÁÖ¼®À» ¾ø¾Ö°í anon-access = write·Î ¹Ù²Ù½Ã¸é µË´Ï´Ù. Á¦´ë·Î ¸¸µé¾î Á³´ÂÁö È®ÀÎÀ» ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÀÔ·Â ÇÕ´Ï´Ù. list´Â ÀúÀå¼Ò ¾ÈÀÇ µð·ºÅ丮¿Í ÆÄÀϵéÀ» Ç¥½ÃÇØ ÁÝ´Ï´Ù.{{{#!vim nosyntax # svn list http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample branches/ tags/ trunk/ }}} ¾ÕÀ¸·Î µð·ºÅ丮 »ý¼º, »èÁ¦, À̸§º¯°æ, ÆÄÀÏ, Ãß°¡, »èÁ¦, º¹»ç, À̵¿°ú Ä¿¹Ô, µîÀ» ÇÒ ¶§ vimÀÌ ½ÇÇàµÇ¸é¼­ ¾î¶² °ÍµéÀÌ ¹Ù²î´ÂÁö Ç¥½Ã°¡ µË´Ï´Ù. Ä¿¹Ô ·Î±×¸¦ ÀÔ·ÂÇÑµÚ vimÀ» Á¾·áÇϸé Ä¿¹ÔÀÌ ¿Ï·á µË´Ï´Ù. Ä¿¹Ô ·Î±×¸¦ ÀÔ·ÂÇÏÁö ¾Ê¾ÒÀ» °æ¿ì {{{a)bort, c)ontinue, e)dit}}}°¡ ³ª¿À°Ô µÇ´Âµ¥ {{{c)ontinue)}}}·Î °è¼Ó ÇÏ¸é µË´Ï´Ù. ÇÏÁö¸¸! Ä¿¹Ô ·Î±× ÀÔ·ÂÀº ÇʼöÀÔ´Ï´Ù. ¼ÒÇÁÆ®¿þ¾î ¹öÀü °ü¸®¿¡¼­ °¡Àå Áß¿äÇÑ °ÍÀº Ä¿¹Ô ·Î±×ÀÔ´Ï´Ù. ¾î¶² Äڵ带 ¾î¶»°Ô ¼öÁ¤Çß°í µð·ºÅ丮, ÆÄÀÏÀ» ¸¸µé°í »èÁ¦ Çß´ÂÁö¸¦ ²Ä²ÄÈ÷ ±â·ÏÇØ¾ßÇÕ´Ï´Ù. ³ªÁß¿¡ ¼Ò½ºÄڵ尡 ¹Ù²î´Â È帧À» µû¶ó°¡°íÀÚ ÇÒ¶§³ª ¹®Á¦Á¡(¹ö±×)À» ÃßÀûÇÒ¶§ Ä¿¹Ô ·Î±×°¡ ¾ÆÁÖ À¯¿ëÇÏ°Ô ÀÌ¿ëµÉ °ÍÀÔ´Ï´Ù. === Import === ¸Ç óÀ½ ÇÁ·ÎÁ§Æ®¸¦ ½ÃÀÛÇÒ ¶§ ÀúÀå¼Ò¿¡ ¼Ò½ºµéÀ» ³Ö¾î¾ß ÇÕ´Ï´Ù. ÀÌ·² ¶§ ÇÏ´Â °ÍÀÌ import ÀÛ¾÷ÀÔ´Ï´Ù. sampledir À̶ó´Â µð·ºÅ丮¸¦ ¸¸µç µÚ¿¡ ±× ¾Æ·¡ ´ÙÀ½°ú °°Àº °£´ÜÇÑ ¼Ò½º¸¦ ÀÛ¼ºÇØ º¸½Ê½Ã¿À.{{{#!vim nosyntax # mkdir sampledir # cd sampledir sampledir# vim sample.c }}} {{{#!vim c #include int main() { printf("Sample Program Version 0.1\n"); return 0; } }}} ÀÌ ¼Ò½º¸¦ ÀúÀå¼ÒÀÇ trunk µð·ºÅ丮¿¡ import ÇϰڽÀ´Ï´Ù. ¾Æ·¡ sampledirÀº µð·ºÅ丮ÀÔ´Ï´Ù. ÆÄÀÏÀ» ÀûÀ¸¸é importµÇÁö ¾Ê½À´Ï´Ù. ²À µð·ºÅ丮¸¦ ¸¸µé°í ±× µð·ºÅ丮¸¦ Àû¾î ÁֽʽÿÀ. ÀúÀå¼ÒÀÇ trunk µð·ºÅ丮¿¡´Â sampledir µð·ºÅ丮¾ÈÀÇ sample.c ÆÄÀϸ¸ ¿Ã¶ó°¡°Ô µÇ°í sampledirÀº ¿Ã¶ó°¡Áö ¾Ê½À´Ï´Ù. sampledir ¾Æ·¡ µð·ºÅ丮¸¦ ¸¸µé¾ú´Ù¸é ±× µð·ºÅ丮´Â ÀúÀå¼ÒÀÇ trunk µð·ºÅ丮 ¾Æ·¡¿¡ ¿Ã¶ó°¡°Ô µË´Ï´Ù.{{{#!vim nosyntax sampledir# cd .. # svn import sampledir http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/trunk }}} importµµ À§¿¡¼­ µð·ºÅ丮¸¦ ¸¸µé¾úÀ» ¶§ ó·³ vimÀÌ ½ÇÇàµÇ°Ô µË´Ï´Ù. importµÇ´Â ÆÄÀϵéÀÌ Ç¥½ÃµË´Ï´Ù. :q!·Î ´Ý°í c¸¦ ÀÔ·ÂÇϸé import µÇ°Ô µË´Ï´Ù. import°¡ Á¦´ë·Î µÇ¾ú´ÂÁö È®ÀÎÇØ º¾½Ã´Ù. list ¸í·ÉÀ» ÀÌ¿ëÇØ trunk µð·ºÅ丮¿¡ ¹«¾ùÀÌ ÀÖ³ª º¸°Ú½À´Ï´Ù.{{{#!vim nosyntax # svn list http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/trunk sample.c }}} === Checkout === ÀÌÁ¦ ºÎÅÍ SubversionÀ» ÀÌ¿ëÇØ¼­ ÇÁ·Î±×·¥ ¼Ò½º¸¦ °ü¸® ÇÒ ¼ö ÀÖ½À´Ï´Ù. checkoutÀ» ÇØ¼­ ¾îµð¼­µç ¼Ò½º¸¦ ¹Þ¾Æ º¼ ¼ö ÀÖ½À´Ï´Ù. ¹æ±Ý import¸¦ ÇϱâÀ§ÇØ ¸¸µé¾ú´ø sampledirÀº Áö¿öµµ µË´Ï´Ù. svn checkoutÀº svn co·Î ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù. "svn checkout ÀúÀå¼ÒÁÖ¼Ò ·ÎÄõð·ºÅ丮" ÀÇ Çü½Ä ÀÔ´Ï´Ù.{{{#!vim nosyntax # svn checkout http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/trunk sample A sample/sample.c Checked out revision 4. }}} checkoutÀ» ÇÑ µð·ºÅ丮 ¾È¿¡´Â .svn À̶ó´Â µð·ºÅ丮°¡ ÀÖ½À´Ï´Ù. ÀÌ µð·ºÅ丮´Â Subversion ÀúÀå¼Ò Á¤º¸°¡ µé¾î Àֱ⠶§¹®¿¡ Áö¿ì¸é ¾È µË´Ï´Ù. === Update === üũ¾Æ¿ô ÇØ¼­ ¹ÞÀº ¼Ò½º¸¦ ÀúÀå¼ÒÀÇ ÃÖ±Ù ³»¿ëÀ¸·Î ¾÷µ¥ÀÌÆ® ÇÏ´Â ¸í·ÉÀÔ´Ï´Ù. üũ¾Æ¿ô ÇØ¼­ ¹ÞÀº ¼Ò½ºÀÇ revisionº¸´Ù ÀúÀå¼ÒÀÇ revisionÀÌ ³ôÀ¸¸é ¾÷µ¥ÀÌÆ® ÇÏ°Ô µË´Ï´Ù. ¾÷µ¥ÀÌÆ®¸¦ ÇÏ°Ô µÇ¸é ÀüºÎ ´Ù ¹Þ¾Æ¿À´Â °ÍÀÌ ¾Æ´Ï¶ó º¯°æ µÈ °Íµé¸¸ ¹Þ¾Æ¿É´Ï´Ù. ¼Ò½º¸¦ ¼öÁ¤Çϱâ Àü¿¡ ¾ðÁ¦³ª update ¸í·ÉÀ¸·Î ¼Ò½º¸¦ °¡Àå ÃֽŠrevisionÀ¸·Î ¸ÂÃß°í ÀÛ¾÷À» ÇØ¾ß ÇÕ´Ï´Ù. svn update´Â svn up·Î ÁÙ¿© »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.{{{#!vim nosyntax sample# svn update }}} === Commit === checkout ÇØ¼­ ¹ÞÀº ¼Ò½º¸¦ ¼öÁ¤Çϰí ÀúÀå¼Ò¿¡ ¼öÁ¤µÈ ¼Ò½º¸¦ Àû¿ëÇØ º¸°Ú½À´Ï´Ù. ÀÌ ÀÛ¾÷À» Ä¿¹Ô(Commit)À̶ó°í ÇÕ´Ï´Ù. üũ¾Æ¿ô ¹ÞÀº sample.c ¼Ò½º¸¦ ¾Æ·¡Ã³·³ ¼öÁ¤ÇÕ´Ï´Ù.{{{#!vim c #include int main() { printf("Sample Program Version 0.2\n"); printf("Hello Subversion\n"); return 0; } }}} ÀÌÁ¦ Ä¿¹ÔÀ» ÇØ º¾½Ã´Ù Ä¿¹Ô ¸í·ÉÀº üũ¾Æ¿ô ÇØ¼­ ¼Ò½º¸¦ ¹ÞÀº µð·ºÅ丮¿¡¼­ ÇØ¾ß µË´Ï´Ù. svn commitÀº svn ci·Î ÁÙ¿© ¾µ ¼ö ÀÖ½À´Ï´Ù. Ä¿¹Ô ¸í·ÉÀ» ³»¸®¸é Ä¿¹Ô ·Î±×¸¦ ÀÛ¼ºÇÏ´Â ¿¡µðÅͰ¡ ½ÇÇà µË´Ï´Ù. Ä¿¹Ô ·Î±×¸¦ ÀÔ·ÂÇÑÈÄ ÀúÀåÀ» Çϸé Ä¿¹ÔÀÌ µË´Ï´Ù.{{{#!vim nosyntax sample# svn commit Sending sample.c Transmitting file data . Committed revision 5. }}} === Log === ÀÌÁ¦ ÀúÀå¼Ò¿¡ ¾î¶°ÇÑ °ÍµéÀÌ º¯°æ µÇ¾ú´ÂÁö È®ÀÎ ÇÒ ¼ö ÀÖ´Â log ¸í·É¿¡ ´ëÇØ ¾Ë¾Æº¸°Ú½À´Ï´Ù. log ¸í·ÉÀº üũ¾Æ¿ô ¹ÞÀº µð·ºÅ丮 ¾È¿¡¼­ ÇØ¾ß ÇÕ´Ï´Ù. revision°ú ³¯Â¥, ´©°¡ Ä¿¹ÔÀ» Çß´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¿©±â¼­´Â (no author)·Î ³ª¿É´Ï´Ù. À̰ÍÀº ¼­¹ö ¼³Á¤¿¡¼­ ¾Æ¹«³ª Ä¿¹Ô ÇÒ ¼ö ÀÖ°Ô ÇÏ¿©¼­ ÀÌ·¸°Ô ³ª¿À´Â °ÍÀ̰í ID¸¦ ÅëÇØ ÀÎÁõÀ» Çϵµ·Ï ¼³Á¤À» ÇßÀ¸¸é ID°¡ Ç¥½Ã µË´Ï´Ù.{{{#!vim nosyntax sample# svn log ------------------------------------------------------------------------ r4 | (no author) | 2003-11-23 14:40:05 +0900 (Sun, 23 Nov 2003) | 1 line ------------------------------------------------------------------------ r1 | (no author) | 2003-11-23 14:39:00 +0900 (Sun, 23 Nov 2003) | 1 line ----------------------------------------------------------------------- }}} --revision°ú -rÀº °°½À´Ï´Ù.{{{#!vim nosyntax sample# svn log --revision 5:19 # revision 5ºÎÅÍ 9±îÁöÀÇ ·Î±×¸¦ Ãâ·ÂÇÕ´Ï´Ù. sample# svn log -r 19:5 # revision 19ºÎÅÍ 5±îÁö ¿ªÀ¸·Î Ãâ·ÂÇÕ´Ï´Ù. sample# svn log -r 8 # revision 8ÀÇ ·Î±×¸¦ Ãâ·ÂÇÕ´Ï´Ù. }}} ÇϳªÀÇ ÆÄÀÏÀ̳ª µð·ºÅ丮 ·Î±×¸¦ º¼ ¼öµµ ÀÖ½À´Ï´Ù.{{{#!vim nosyntax sample# svn log sample.c sample# svn log http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/trunk/sample.c }}} -v ¿É¼ÇÀº ´õ ÀÚ¼¼ÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ MÀº Modify(¼öÁ¤)ÀÇ Ç¥½Ã ÀÔ´Ï´Ù. ¼Ò½º ÆÄÀÏÀ» ¼öÁ¤Çϰí Ä¿¹Ô Ç߱⠶§¹®ÀÔ´Ï´Ù.{{{#!vim nosyntax sample# svn log -r 5 -v ------------------------------------------------------------------------ r5 | (no author) | 2003-11-23 14:42:34 +0900 (Sun, 23 Nov 2003) | 1 line Changed paths: M /trunk/sample.c ------------------------------------------------------------------------ }}} A ´Â Add(Ãß°¡) Ç¥½Ã ÀÔ´Ï´Ù. trunk¶ó´Â µð·ºÅ丮¸¦ ¸¸µé¾ú°í sample.c ÆÄÀÏÀ» import Ç߱⠶§¹®¿¡ A(Ãß°¡) Ç¥½Ã°¡ ³ª¿À°Ô µÇ´Â °ÍÀÔ´Ï´Ù.{{{#!vim nosyntax sample# svn log -v ------------------------------------------------------------------------ r4 | (no author) | 2003-11-23 14:40:05 +0900 (Sun, 23 Nov 2003) | 1 line Changed paths: A /trunk/sample.c ------------------------------------------------------------------------ r1 | (no author) | 2003-11-23 14:39:00 +0900 (Sun, 23 Nov 2003) | 1 line Changed paths: A /trunk ------------------------------------------------------------------------ }}} === Diff === diff ¸í·ÉÀ» »ç¿ëÇÏ¸é ¿¹Àü ¼Ò½º ÆÄÀϰú Áö±ÝÀÇ ¼Ò½º ÆÄÀÏÀ» ºñ±³ÇØ º¼ ¼ö ÀÖ½À´Ï´Ù. À§¿¡¼­ ³ª¿Â ·Î±×¿Í °°ÀÌ ¿ì¸®´Â revision 4(r4)¿¡¼­ sample.c¸¦ import Çß½À´Ï´Ù. ±×¸®°í revision 5¿¡¼­ ¼Ò½º¸¦ ¼öÁ¤Çϰí Ä¿¹Ô Çß½À´Ï´Ù. ÃÖÃÊ¿¡ import Çß´ø ¼Ò½º sample.cÀÇ revision 4¿Í ¼öÁ¤Çؼ­ Ä¿¹ÔÇÑ revision 5ÀÇ Â÷ÀÌÁ¡À» diff ¸í·ÉÀ¸·Î Ãâ·ÂÇØ º¸°Ú½À´Ï´Ù. --revision 4¸¸ ÀûÀ¸¸é ÇöÀç revision 5¿Í ºñ±³ÇÏ°Ô µË´Ï´Ù.{{{#!vim nosyntax sample# svn diff --revision 4 sample.c Index: sample.c =================================================================== --- sample.c (revision 4) +++ sample.c (working copy) @@ -2,7 +2,8 @@ int main() { - printf("Sample Program Version 0.1\n"); + printf("Sample Program Version 0.2\n"); + printf("Hello Subversion\n"); return 0; } }}} revision 4¿Í 5¸¦ ºñ±³ ÇÏ°í ½ÍÀ¸¸é --revision 4:5 (-r 4:5)·Î ÇÏ¸é µË´Ï´Ù. --revision 8:10 µµ °¡´ÉÇÕ´Ï´Ù.{{{#!vim nosyntax sample# svn diff --revision 4:5 sample.c Index: sample.c =================================================================== --- sample.c (revision 4) +++ sample.c (revision 5) @@ -2,7 +2,8 @@ int main() { - printf("Sample Program Version 0.1\n"); + printf("Sample Program Version 0.2\n"); + printf("Hello Subversion\n"); return 0; } }}} ¿©±â¼­ ÁÖÀÇÇÒ Á¡Àº CVS´Â revisionÀ» ÆÄÀÏ ÇϳªÇϳª¿¡ ´Ù ¸Å±âÁö¸¸ SubversionÀº ÆÄÀÏ¿¡ revisionÀ» ¸Å±âÁö ¾Ê°í ¼Ò½º ¼öÁ¤, ÆÄÀÏ º¹»ç, À̵¿, »èÁ¦ µîÀ» ÇÏ°í ±×¶§ ÇÑ Ä¿¹ÔÀ¸·Î revisionÀ» ¸Å±é´Ï´Ù. ±×·¡¼­ ´Ù¸¥ ÆÄÀϵéÀÌ¶óµµ °°Àº revision ¹øÈ£¸¦ °¡Áö°Ô µË´Ï´Ù. === Blame === BlameÀº ÇÑ ¼Ò½ºÆÄÀÏÀ» ´ë»óÀ¸·Î °¢ ¸®ºñÀü ´ëÇØ¼­ ¾î¶² ÇàÀ» ´©°¡ ¼öÁ¤Çß´ÂÁö ¾Ë¾Æº¸±â À§ÇÑ ¸í·ÉÀÔ´Ï´Ù. ¸®ºñÀü, Ä¿¹ÔÇÑ »ç¿ëÀÚÀÇ ID, ¼Ò½º ¼ø¼­ÀÔ´Ï´Ù.{{{#!vim nosyntax sample# svn blame sample.c 4 sampleuser #include 4 sampleuser 4 sampleuser int main() 4 sampleuser { 5 sampleuser printf("Sample Program Version 0.2\n"); 5 sampleuser printf("Hello Subversion\n"); 4 sampleuser 4 sampleuser return 0; 4 sampleuser } 4 sampleuser }}} ¿©±â¼­´Â Ä¿¹ÔÇÑ »ç¿ëÀÚ°¡ ÇÑ¸í ¹Û¿¡ ¾øÀ¸¹Ç·Î ÀüºÎ ¶È°°ÀÌ ³ª¿É´Ï´Ù. ÇÑ ¿¹·Î ¿©·¯»ç¶÷ÀÌ Ä¿¹ÔÇßÀ» °æ¿ì ¾Æ·¡Ã³·³ ³ª¿É´Ï´Ù.{{{#!vim nosyntax 4 sampleuser #include 4 sampleuser 4 sampleuser int main() 4 sampleuser { 7 epifanes printf("Sample Program Version 0.3\n"); 6 pyrasis printf("Hello Subversion\n"); 4 sampleuser 4 sampleuser return 0; 4 sampleuser } 4 sampleuser }}} ƯÁ¤ ¸®ºñÀü¸¸ ÁöÁ¤Çؼ­ º¼ ¼öµµ ÀÖ½À´Ï´Ù. ¸®ºñÀüÀ» ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é ÇöÀç ¸®ºñÀüÀ» ´ë»óÀ¸·Î ÇÕ´Ï´Ù.{{{#!vim nosyntax sample# svn blame -r 4 sample.c }}} === lock === svn lock ¸í·ÉÀ¸·Î ÆÄÀÏÀ» Àá±Û ¼ö ÀÖ½À´Ï´Ù.{{{#!vim nosyntax sample# svn lock hello.c }}} svn lock ¸í·ÉÀ¸·Î ÆÄÀÏÀ» Àá±×¾úÀ» °æ¿ì ¿Ö Àá±×¾ú´ÂÁö ·Î±×¸¦ ±â·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆÄÀÏÀ» Àá±×¾úÀ» °æ¿ì ÆÄÀÏÀ» Àá±Ù »ç¿ëÀÚ¸¸ ¼öÁ¤À» ÇØ¼­ Ä¿¹ÔÀ» ÇÒ ¼ö ÀÖ°í ´Ù¸¥ »ç¿ëÀÚ´Â ¼öÁ¤À» ÇÒ ¼ö ¾ø½À´Ï´Ù. ÆÄÀÏÀÇ Àá±ÝÀ» ÇØÁ¦ÇÒ °æ¿ì¿¡´Â svn unlock ¸í·ÉÀ» »ç¿ëÇÏ¸é µË´Ï´Ù. ÆÄÀÏ Àá±Ý±â´ÉÀº ¿©·¯¸íÀÌ °³¹ßÀ» Çϰí ÀÖÀ» °æ¿ì ÇÑ ÆÄÀÏ¿¡¼­ ÀÛ¾÷ÀÌ ³Ê¹« ¸¹¾Æ ¸ðµÎ ³¡³»Áö ¸øÇϰí Áß°£ Áß°£¿¡ Ä¿¹Ô¸¸ ÇØ³õ¾ÒÀ» °æ¿ì ´Ù¸¥ »ç¶÷ÀÌ ±× ÆÄÀÏÀ» ¼öÁ¤Çعö¸®¸é ÇÏ´ø ÀÛ¾÷ÀÌ ¾û¸ÁÀÌ µÇ¾î ¹ö¸³´Ï´Ù. ±×·¡¼­ ÆÄÀÏÀ» Àá±×¾î ÀÛ¾÷ÀÌ ³¡³¯¶§ ±îÁö ÇÑ »ç¶÷¸¸ Ä¿¹ÔÀ» ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÛ¾÷ÀÌ ³¡³ª¸é ÆÄÀÏ Àá±ÝÀ» ÇØÁ¦ ÇÏ¸é µË´Ï´Ù. === Add === svn add ¸í·ÉÀ¸·Î »õ ÆÄÀÏÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.{{{#!vim nosyntax sample# svn add hello.c A hello.c }}} svn add·Î ÆÄÀÏÀ» Ãß°¡ÇÑ µÚ¿¡´Â svn commitÀ¸·Î Ä¿¹ÔÀ» ÇØÁÖ¾î¾ß ¿ÏÀüÈ÷ ÆÄÀÏÀÌ ÀúÀå¼Ò¿¡ Ãß°¡µË´Ï´Ù.{{{#!vim nosyntax sample# svn commit }}} ¹°·Ð Ä¿¹Ô ·Î±×µµ ÀÔ·ÂÇØ¾ß µË´Ï´Ù. === Export === üũ¾Æ¿ôÀº SubversionÀÌ ¹öÀü°ü¸®¸¦ ÇÒ ¼ö ÀÖµµ·Ï °¢Á¾ ÆÄÀÏÀÌ ¼Ò½º Æú´õ ¾È¿¡ ÇÔ²² »ý±é´Ï´Ù. À̰Ͱú´Â ´Þ¸® Export´Â ¼ø¼öÇÏ°Ô ÇÁ·Î±×·¥ÀÇ ¼Ò½º¸¸ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù. ¸¸µé¾îÁø ¼Ò½º¸¦ ¾ÐÃàÇÏ¿© ¸±¸®Áî ÇÒ ¶§ »ç¿ëÇÕ´Ï´Ù.{{{#!vim nosyntax sample# svn export http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample2/trunk sample }}} --revision (-r)À¸·Î revisionÀ» ÁöÁ¤Çϸé ÁöÁ¤ÇÑ revisionÀÇ ¼Ò½º¸¦ ¹Þ¾Æ¿É´Ï´Ù. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é °¡Àå ÃÖ±ÙÀÇ revisionÀÇ °ÍÀ» °¡Á®¿É´Ï´Ù. === Branch¿Í Tag === CVS¿¡¼­ÀÇ Branch¿Í Tag´Â Branch¿Í Tag¸¦ À§ÇÑ ¸í·ÉÀÌ ÀÖ½À´Ï´Ù. CVS¿¡¼­ Branch¿Í Tag¸¦ ÇÏ°Ô µÇ¸é ÀúÀå¼ÒÀÇ ÆÄÀÏ¿¡´Â Branch ¶Ç´Â Tag µÇ¾ú´Ù´Â Ç¥½Ã°¡ ÇÔ²² ºÙ°Ô µË´Ï´Ù. üũ¾Æ¿ô ÇÒ ¶§¿¡µµ Branch¿Í TagÀÇ ¼Ò½º¸¦ ¹Þ¾Æ¿À·Á¸é Branch, Tag¸¦ ÁöÁ¤ÇÏ´Â ¿É¼ÇÀ» ÁÖ¾î¾ß Çß½À´Ï´Ù. CVS¿Í´Â ´Þ¸® SubversionÀº Branch¿Í Tag°¡ Ưº°ÇÑ ¸í·ÉÀÌ ÀÖ´Â °Íµµ ¾Æ´Ï°í ÀÌ·± °ÍµéÀ» ÇÑ´Ù°í ÇØµµ ÀúÀå¼Ò¿¡ Ưº°È÷ Branch, Tag¶ó°í ±â·ÏÀÌ ³²´Â °Íµµ ¾Æ´Õ´Ï´Ù. Subversion¿¡¼­ Branch¿Í Tag´Â ´Ü¼øÇÑ µð·ºÅ丮 º¹»ç ¸í·ÉÀ¸·Î ÇÒ ¼ö ÀÖ°í Branch, Tag¸¦ Çß´õ¶óµµ µð·ºÅ丮 º¹»ç¿Í °°½À´Ï´Ù. ==== Branch ==== Branch¸¦ ÇØ¾ß ÇÒ °æ¿ì´Â ¾Õ¼­ ¼³¸í ÇßµíÀÌ ÇÁ·ÎÁ§Æ®Áß ÀÛÀº ºÐ·ù·Î ³ª´©¾î °³¹ß Çϰųª ¼Ò½º¸¦ µû·Î ºÐ¸®ÇÏ¿© ½ÇÇèÀûÀÎ ÄÚµå ¸¦ ÀÛ¼ºÇÒ °æ¿ì µî ÀÔ´Ï´Ù. Subversion¿¡¼­´Â Branch¸¦ copy ¸í·ÉÀ¸·Î ¼öÇà ÇÕ´Ï´Ù. trunkÀÇ ³»¿ëÀ» Branches¾È¿¡ »õ·Î¿î À̸§À¸·Î º¹»ç ÇÏ´Â °ÍÀÔ´Ï´Ù. üũ¾Æ¿ô ¹ÞÀº ¼Ò½º¿¡¼­ ¹Ù·Î copy¸¦ ÇÒ ¼öµµ ÀÖ°í ¿ø°Ý¿¡¼­ URL·Î º¹»ç¸¦ ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¾Æ·¡ üũ¾Æ¿ô ¹ÞÀº °ÍÀº trunk¸¸ ¹ÞÀº °ÍÀÌ ¾Æ´Ï°í sample µð·ºÅ丮 ¾Æ·¡¸¦ ÀüºÎ ¹Þ´Â °ÍÀÔ´Ï´Ù.{{{#!vim nosyntax svn checkout http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample sample sample# svn copy trunk branches/sample-branch sample# svn commit }}} ¿ø°Ý¿¡¼­ URL·Î copy¸¦ Çϸé commitµµ °°ÀÌ ÀÌ·ç¾îÁý´Ï´Ù. üũ¾Æ¿ô ¹ÞÀº ¼Ò½º¿¡¼­´Â update¸¦ ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù.{{{#!vim nosyntax # svn copy http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/trunk \ http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/branches/sample-branch }}} BranchµÈ ¼Ò½º¸¦ ¹Þ±â À§Çؼ­´Â branches/sample-branch¸¦ üũ¾Æ¿ô ÇÏ¸é µË´Ï´Ù. trunk¿Í branche´Â µû·Î revisionÀ» °¡ÁöÁö ¾Ê½À´Ï´Ù. SubversionÀÇ revisionÀº ÀúÀå¼Ò ÀüüÀÇ revisionÀÔ´Ï´Ù.{{{#!vim nosyntax # svn checkout \ http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/branches/sample-branch \ sample-branch }}} ===== Merge ===== À§¿Í °°ÀÌ ¿ì¸®´Â trunk¸¦ sample-branch·Î Branch Çß½À´Ï´Ù. sample-branch¸¦ ¼öÁ¤ÇÏ´Ù°¡ trunk¿¡µµ ¹Ý¿µÇÏ°í ½Í´Ù¸é. merge ¸í·ÉÀ» »ç¿ëÇÏ¸é µË´Ï´Ù. ÇϳªÇϳª ¼Ò½º Äڵ带 ¿Å°Ü¼­ ÀÔ·ÂÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù. ´Ù¸¸ merge ÇÑ µÚ¿¡´Â ²À »ç¶÷ÀÌ È®ÀÎÀ» ÇØ ºÁ¾ß°ÚÁÒ. sample-branch¸¦ üũ¾Æ¿ô ÇÕ´Ï´Ù.{{{#!vim nosyntax # svn checkout \ http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/branches/sample-branch \ sample-branch }}} sample-branchÀÇ sample.c¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ ÇÕ´Ï´Ù. printf("Hello World\n");¸¦ Ãß°¡ Çß½À´Ï´Ù. ±×¸®°í commitÀ» ÇÕ´Ï´Ù. Áö±Ý ¼öÁ¤µÈ °ÍÀº revision 7ÀÔ´Ï´Ù.{{{#!vim c #include int main() { printf("Sample Program Version 0.2\n"); printf("Hello Subversion\n"); printf("Hello World\n"); return 0; } }}} ÀÌÁ¦ sampleÀÇ trunk¸¦ üũ¾Æ¿ô ÇÕ´Ï´Ù.{{{#!vim nosyntax # svn checkout http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/trunk sample }}} trunkÀÇ sample.c´Â ¾Æ·¡¿Í °°½À´Ï´Ù.{{{#!vim c #include int main() { printf("Sample Program Version 0.2\n"); printf("Hello Subversion\n"); return 0; } }}} ÀÌÁ¦ sample-branchÀÇ ¼öÁ¤µÈ °ÍÀ» trunk¿¡ merge ÇØ º¸°Ú½À´Ï´Ù. "svn merge -r N:N ÀúÀå¼ÒÁÖ¼Ò Ã¼Å©¾Æ¿ôµÈµð·ºÅ丮" Çü½Ä ÀÔ´Ï´Ù. ¾Æ·¡´Â ÀúÀå¼Ò ÁÖ¼Ò Çϳª¸¸ ÀԷµǾî ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô µÇ¸é Áö±Ý üũ¾Æ¿ôÇÑ ¼Ò½º¿Í merge¸¦ ÇÏ°Ô µË´Ï´Ù. mergeÇÒ revision ¹øÈ£¸¦ ÁÖÀÇÇØ ÁֽʽÿÀ. 6:7Àº r 6°ú r 7ÀÇ Â÷ÀÌÁ¡À» ¶æÇÕ´Ï´Ù. sample-branchÀÇ r 6°ú r 7ÀÇ Â÷ÀÌÁ¡À» Áö±ÝÀÇ Ã¼Å©¾Æ¿ôµÈ trunk¿¡ Àû¿ëÇ϶ó´Â °Í ÀÔ´Ï´Ù.{{{#!vim nosyntax sample# svn merge -r 6:7 \ http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/branches/sample-branch U sample.c sample# svn commit sample# svn update }}} ÀÌÁ¦ sample.c¸¦ ¿­¾îº¸¸é ¾Æ·¡¿Í °°ÀÌ sample-branch¿¡¼­ ¼öÁ¤ÇÑ °ÍÀÌ merge°¡ µÇ¾î ÀÖ½À´Ï´Ù.{{{#!vim c #include int main() { printf("Sample Program Version 0.2\n"); printf("Hello Subversion\n"); printf("Hello World\n"); return 0; } }}} ÆÄÀÏ Çϳª¸¸ merge¸¦ ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.{{{#!vim nosyntax # svn merge -r 6:7 sample.c }}} ÀúÀå¼Ò ÁÖ¼Ò³¢¸® merge¸¦ ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.{{{#!vim nosyntax # svn merge http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample2/trunk \ http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample2/branches/sample-branch }}} ==== Tag ==== Tag´Â ¸¸µç ÇÁ·Î±×·¥À» À¥ »çÀÌÆ® µî¿¡ °ø°³ÇÒ ¶§ »ç¿ëÇÕ´Ï´Ù. Tagµµ Subversion¿¡¼­´Â Branch¿Í ¸¶Âù°¡Áö·Î µð·ºÅ丮 º¹»ç(copy)¿Í °°½À´Ï´Ù. tags µð·ºÅ丮 ¾È¿¡´Â ÀϹÝÀûÀ¸·Î ¸±¸®Áî(¹ßÇ¥)ÇÏ´Â ¹öÀüº° µð·ºÅ丮¸¦ ¸¸µé¾î »ç¿ëÇÕ´Ï´Ù. 0.1 ¹öÀüÀ» ¹ßÇ¥ÇÒ ¶§ 0.1 ¹öÀüÀÇ ¼ø°£À» tags µð·ºÅ丮¿¡ º¹»çÇÏ´Â °ÍÀÔ´Ï´Ù. 0.2°¡ µÇ¾úÀ» ¶§ tags¾Æ·¡ 0.2 µð·ºÅ丮·Î º¹»çÇÕ´Ï´Ù. ÀÌ·¸°Ô µÇ¸é °¢°¢ÀÇ ¹öÀüº°·Î ¼Ò½º¸¦ °ü¸® ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀúÀå¼Ò¿¡¼­´Â ½ÇÁ¦·Î º¹»ç°¡ µÇ´Â °ÍÀº ¾Æ´Ï°í º¯°æµÈ Á¡¸¸ º¹»çÇϱ⠶§¹®¿¡ ÀúÀå¼ÒÀÇ ¿ë·®ÀÌ ¼Ò½ºÄÚµåÀÇ Å©±â¸¸Å­ ¹è·Î ´Ã¾î³ªÁö´Â ¾Ê½À´Ï´Ù. trunkÀÇ ¼Ò½º¸¦ 0.1 ¹öÀüÀ¸·Î Tag, Branch¿Í ¸¶Âù°¡Áö·Î üũ¾Æ¿ô ¹ÞÀº ¼Ò½º¿¡¼­µµ ÇÒ ¼ö ÀÖ°í ¿ø°Ý¿¡¼­ URL·Îµµ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ üũ¾Æ¿ô ¹ÞÀº °ÍÀº trunk¸¸ ¹ÞÀº °ÍÀÌ ¾Æ´Ï°í sample µð·ºÅ丮 ¾Æ·¡¸¦ ÀüºÎ ¹Þ´Â °ÍÀÔ´Ï´Ù.{{{#!vim nosyntax # svn checkout http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample sample sample# svn copy trunk tags/0.1 sample# svn commit }}} ¿ø°Ý¿¡¼­ URL·Î º¹»çÇÕ´Ï´Ù. ÀÌ °æ¿ì commitµµ °°ÀÌ ÀÌ·ç¾îÁý´Ï´Ù. üũ¾Æ¿ô ¹ÞÀº ¼Ò½º´Â update¸¦ ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù.{{{#!vim nosyntax # svn copy http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/trunk \ http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/tags/0.1 }}} ÀÌÁ¦ 0.1·Î TagÇÑ ¼Ò½º¸¦ Export·Î ¹Þ¾Æ¼­ ¾ÐÃàÇÑ µÚ¿¡ ¸±¸®Áî(°ø°³)¸¦ ÇÏ¸é µË´Ï´Ù.{{{#!vim nosyntax # svn export http://(Subversion ¼­¹öÀÇ IPÁÖ¼Ò ¶Ç´Â µµ¸ÞÀÎ)/svn/sample/tags/0.1 sample-0.1 }}} === Revert === ¼Ò½º¸¦ ¼öÁ¤Çϸ鼭 merge¸¦ ÇÏ´Ù º¸¸é ºÐ¸íÈ÷ À߸ø ÇßÀ» °æ¿ì°¡ »ý±é´Ï´Ù. ÀÌ·² ¶§ ÇÏ´Â °ÍÀÌ revertÀÔ´Ï´Ù. revert´Â ´Ü¾î ¶æ ±×´ë·Î µÇµ¹¸®´Â ¸í·ÉÀÔ´Ï´Ù. Ä¿¹ÔÀ» Çϱâ Àü¿¡¸¸ µÇµ¹¸± ¼ö ÀÖ½À´Ï´Ù. Ä¿¹Ô ÇϱâÀüÀÇ Ã¼Å©¾Æ¿ô ¹ÞÀº ¼Ò½º¸¦ µÇµ¹¸®´Â ¸í·ÉÀÔ´Ï´Ù. ¿ø°Ý ÀúÀå¼ÒÀÇ °ÍÀº µÇµ¹¸± ¼ö ¾ø½À´Ï´Ù.{{{#!vim nosyntax sample# svn revert sample.c }}} === ¹é¾÷ ¹× º¹±¸ === ÀúÀå¼Ò´Â °¡Àå Áß¿äÇÑ °ø°£À̱⠶§¹®¿¡ ¹é¾÷Àº ÇʼöÀÔ´Ï´Ù. ÀúÀå¼Ò µð·ºÅ丮¸¦ ±×´ë·Î º¸°üÇÒ ¼öµµ ÀÖÁö¸¸ ¹é¾÷°ú º¹±¸ ¸í·ÉÀ» »ç¿ëÇϴ°ÍÀÌ Æí¸®ÇÕ´Ï´Ù. Windows, ¸®´ª½º, BSD µî ¿î¿µÃ¼Á¦¿¡ °ü°è¾øÀÌ ¹é¾÷ ¹× º¹±¸°¡ °¡´ÉÇÕ´Ï´Ù. Windows¿¡¼­ ¹é¾÷ÇѰÍÀ» ¸®´ª½º¿¡¼­ »ç¿ëÇÒ ¼öµµ ÀÖ°í BSD¿¡¼­ ¹é¾÷ÇÑ °ÍÀ» Windows¿¡¼­ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀúÀå¼ÒÀÇ ¼­¹ö¸¦ ¿Å±æ¶§¿¡´Â ÀúÀå¼Ò µð·ºÅ丮¸¦ ¿Å±â´Â °ÍÀÌ ¾Æ´Ï¶ó ÀúÀå¼Ò ¹é¾÷À» ÇÑµÚ ±× ¹é¾÷ÆÄÀÏÀ» ÀÌ¿ëÇÏ¿© »õ ¼­¹ö¿¡¼­ º¹±¸¸¦ ÇÏ´Â ¹æ½ÄÀ¸·Î ¿Å°Ü¾ßÇÕ´Ï´Ù. ==== Dump ==== sample ÀúÀå¼Ò¸¦ ¹é¾÷ÇÕ´Ï´Ù. Ç¥ÁØ ÀÔÃâ·ÂÀ» ÅëÇØ¼­ ÀúÀå¼ÒÀÇ ³»¿ëÀ» ÆÄÀÏ·Î »ý¼ºÇÕ´Ï´Ù. svnadmin dump ¸í·ÉÀ» »ç¿ëÇϸç ÀÌ ¸í·ÉÀº ÀúÀå¼Ò µð·ºÅ丮 ¹Ù±ù¿¡¼­ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.{{{#!vim nosyntax repos# ls sample repos# svnadmin dump sample > sample.dump }}} ==== Load ==== ÀúÀå¼Ò ¹é¾÷ ÆÄÀÏÀ» ÀÌ¿ëÇØ¼­ ÀúÀå¼Ò¸¦ º¹±¸ÇÕ´Ï´Ù. svnadmin load ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. ºó ÀúÀå¼Ò¸¦ »ý¼ºÇÑ µÚ ¹é¾÷ ÆÄÀÏÀ» ÀÌ¿ëÇØ¼­ º¹±¸¸¦ ÇÕ´Ï´Ù.{{{#!vim nosyntax repos# svnadmin create sample repos# ls sample sample.dump repos# svnadmin load sample < sample.dump }}} == Microsoft Windows¿¡¼­ »ç¿ëÇϱâ == Microsoft Windows¿¡¼­µµ SubversionÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼Ò½º¸¦ ÄÄÆÄÀÏÇÏÁö ¾Ê°í ¼³Ä¡ ÆÄÀÏÀ» ÅëÇØ °£´ÜÇÏ°Ô ¼³Ä¡Çؼ­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Windows¿¡¼­µµ ¸®´ª½º, À¯´Ð½º¿Í ¶È°°Àº ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. === ¼³Ä¡ ÆÄÀÏ ±¸Çϱâ === Subversion Windows ¼³Ä¡ÆÄÀÏ Subversion Windows [^http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91] Windows ¿ë ¼³Ä¡ ÆÄÀÏÀ» ¹Þ½À´Ï´Ù. ZIPÀ¸·Î ¾ÐÃàµÈ ¹ÙÀ̳ʸ®¸¦ »ç¿ëÇØµµ »ó°ü¾ø½À´Ï´Ù. svn-1.0.0-setup.exe === ¼³Ä¡ === ¼³Ä¡ ÆÄÀÏÀ» ¹Þ¾Ò´Ù¸é ÀϹÝÀûÀÎ Windows ÇÁ·Î±×·¥À» ¼³Ä¡ÇϵíÀÌ ¼³Ä¡ÇÏ¸é µË´Ï´Ù. ZIPÀ¸·Î ¾ÐÃàµÈ °ÍÀº Àû´çÇÑ µð·ºÅ丮¿¡ ¾ÐÃàÀ» ÇØÁ¦ÇÑµÚ »ç¿ëÇÏ¸é µË´Ï´Ù. === »ç¿ëÇϱâ === Áö±Ý ¼³Ä¡ÇѰ͵éÀº Subversion Ä¿¸Çµå ¶óÀΠŬ¶óÀÌ¾ðÆ®¿Í ÀúÀå¼Ò¸¦ ³×Æ®¿öÅ©¿¡¼­µµ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â ¼­¹ö ÇÁ·Î±×·¥ µéÀÔ´Ï´Ù. Ä¿¸Çµå¶óÀÎ »ç¿ë¹ýÀº ¸®´ª½º, À¯´Ð½º¿Í ¶È°°½À´Ï´Ù. ´Ù¸¸ Windows¿¡¼­´Â ¸í·É ÇÁ·ÒÇÁÆ®(cmd.exe)¿¡¼­ »ç¿ëÇÕ´Ï´Ù. ZIPÀ¸·Î µÈ ¹ÙÀ̳ʸ®¸¦ »ç¿ëÇÏ·Á ÇÑ´Ù¸é ¸í·É ÇÁ·ÒÇÁÆ®¿¡¼­ SubversionÀÇ ¸í·ÉÀ» ½ÇÇàÇϱâ À§ÇØ È¯°æ º¯¼öÀÇ ½Ã½ºÅÛ º¯¼ö PATH¿¡ Subversion ¾ÐÃàÀ» ÇØÁ¦ÇÑ µð·ºÅ丮¸¦ Ãß°¡ÇÕ´Ï´Ù. ¼³Ä¡ ÆÄÀÏ·Î ¼³Ä¡Çß´Ù¸é ÀÚµ¿À¸·Î ȯ°æ º¯¼ö¿¡ Ãß°¡µË´Ï´Ù. Ä¿¹Ô ·Î±×¸¦ ÀÔ·ÂÇÒ ¼ö ÀÖµµ·Ï ȯ°æ º¯¼öÀÇ Administrator¿¡ ´ëÇÑ »ç¿ëÀÚ º¯¼ö¿¡ º¯¼öÀ̸§ SVN_EDITOR, °ª notepad¸¦ ¼³Á¤ÇÕ´Ï´Ù. notepad°¡ ¾Æ´Ñ ´Ù¸¥ ÆíÁý±â¸¦ ÀÌ¿ëÇÏ·Á¸é ÆíÁý±âÀÇ ½ÇÇàÆÄÀÏÀÇ °æ·Î¸¦ ÁöÁ¤ÇØ ÁÖ¸é µË´Ï´Ù. ÀúÀå¼Ò ¸¸µé±â. C:\¿¡ repos¶ó´Â Æú´õ¸¦ ¸¸µé¾ú½À´Ï´Ù. ¸í·É ÇÁ·ÒÇÁÆ®¸¦ ½ÇÇàÇÕ´Ï´Ù.{{{#!vim nosyntax C:\Documents and Settings\Administrator>cd c:\repos }}} ¹öŬ¸® DB¸¦ ÀÌ¿ëÇÑ ÀúÀå¼Ò{{{#!vim nosyntax C:\repos>svnadmin create --fs-type bdb sample }}} ÆÄÀϽýºÅÛÀ» ÀÌ¿ëÇÑ ÀúÀå¼Ò{{{#!vim nosyntax C:\repos>svnadmin create --fs-type fsfs sample }}} üũ¾Æ¿ô. {{{svn://}}}, {{{http://}}}¸¦ ÀÌ¿ëÇÑ Ã¼Å©¾Æ¿ô ¹æ½ÄÀº À§¿¡¼­ ¼³¸íÇÑ ¹æ¹ý°ú ¶È°°½À´Ï´Ù. À©µµ¿ì ÆÄƼ¼Ç¿¡ ÀÖ´Â ÀúÀå¼Ò¿¡ Á÷Á¢ Á¢±ÙÇÏ´Â ¹æ¹ý.{{{#!vim nosyntax C:\temp>svn checkout file:///C:/repos/sample }}} svnserve¸¦ »ç¿ëÇÑ ¼­¹ö{{{#!vim nosyntax C:\>svnserve -d -r C:\repos }}} ¸í·ÉÇà¿¡¼­ ÀÏÀÏÀÌ ½ÇÇàÇÏ´Â ºÒÆíÇÔÀ» ´ú¾îÁÖ´Â [wiki:SVNSERVEManager SVNSERVE Manager]°°Àº ÇÁ·Î±×·¥À» ÀÌ¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. svnserveÀÇ µ¿ÀÛ/Á¤Áö »óŸ¦ Æ®·¹ÀÌ ¾ÆÀÌÄÜÀ¸·Î Ç¥½ÃÇØ ÁÖ¸ç ½Ã½ºÅÛ ½ÃÀ۽à svnserve¸¦ ÀÚµ¿À¸·Î ½ÇÇà ÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. Windows¿ë Subversion ¸í·Éµµ ¸®´ª½º, À¯´Ð½º¿¡¼­ÀÇ ¸í·É°ú ¶È°°½À´Ï´Ù. ÇÏÁö¸¸ Windows¿¡¼­´Â ±×·¡ÇÈ Å¬¶óÀÌ¾ðÆ®°¡ Àֱ⠶§¹®¿¡ ¸í·É ÇÁ·ÒÇÁÆ®¸¦ »ç¿ëÇÏ´Â ÀÏÀº ¸¹Áö ¾Ê½À´Ï´Ù. TortoiseSVNÀ» »ç¿ëÇÏ¸é ÆË¾÷ ¸Þ´º¸¦ ÀÌ¿ëÇØ¼­ ÀúÀå¼Ò ¸¸µé±â, üũ¾Æ¿ô, Ä¿¹Ô µî ¸Å¿ì Æí¸®ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. == ¿î¿µÃ¼Á¦º° Àü¿ë ÆÐŰÁö == ¸®´ª½º ¹èÆ÷ÆÇº°(Redhat, Debian, SuSE) Àü¿ë ¹ÙÀ̳ʸ® ÆÐŰÁö, FreeBSD Æ÷Æ® Ä÷º¼Ç, NetBSD pkgsrc, Mac OS X ÆÐŰÁö µî Æí¸®ÇÏ°Ô ¼³Ä¡ÇÒ ¼ö ÀÖµµ·Ï ¿î¿µÃ¼Á¦º° Àü¿ë ÆÐŰÁö°¡ Á¦°øµÇ°í ÀÖ½À´Ï´Ù. À̰͵éÀ» »ç¿ëÇÏ¸é ¼Ò½º¸¦ ÄÄÆÄÀÏ ÇÏÁö ¾Ê°í ¹Ù·Î ¼³Ä¡Çؼ­ »ç¿ëÇÒ ¼ö ÀÖ´Â ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù. ¿î¿µÃ¼Á¦º° ÆÐŰÁö´Â ¾Æ·¡ ¸µÅ©¿¡¼­ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. [^http://subversion.tigris.org/project_packages.html] == GUI Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ == Subversion¿¡¼­ ±âº»ÀûÀ¸·Î Áö¿øÇÏ´Â Ä¿¸Çµå ¶óÀÎ ¸í·É svnÀº »ç¿ëÇϱ⿡ ºÒÆíÇÑ Á¡ÀÌ ¸¹½À´Ï´Ù. ¾ÕÀ¸·Î ¼Ò°³ÇÒ °ÍµéÀº MS Windows, X Window µî¿¡¼­ »ç¿ë °¡´ÉÇÑ Subversion Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ ÀÔ´Ï´Ù. === TortoiseSVN === MS Windows¿ë GUI Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÔ´Ï´Ù. CVS GUI Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À¸·Î À¯¸íÇÑ TortoiseCVS¿Í °ÅÀÇ °°Àº ÀÎÅÍÆäÀ̽º¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. [^http://tortoisesvn.tigris.org] === Ankhsvn === Visual Studio .NET ¾ÖµåÀÎ Çü½ÄÀÇ Subversion Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÔ´Ï´Ù. VS.NET°ú ÅëÇÕ¼ºÀÌ ¸Å¿ì ³ô½À´Ï´Ù. VS.NETÀÇ ¼Ö·ç¼Ç ºä¿¡¼­ Ä¿¹Ô, ¾÷µ¥ÀÌÆ® µîÀÇ ÀÛ¾÷ÀÌ °¡´ÉÇÏ¸ç ¼Ö·ù¼Ç ºäÀÇ °¢ ÆÄÀÏ¿¡ ¼öÁ¤µÇ¾ú°Å³ª ¼öÁ¤µÇÁö ¾ÊÀº ÆÄÀÏÀÇ »óŸ¦ Ç¥½ÃÇØÁÝ´Ï´Ù. [^http://ankhsvn.tigris.org] === RapidSVN === Å©·Î½º Ç÷§Æû Subversion Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ÀÔ´Ï´Ù. Windows, ¸®´ª½º, BSDÀÇ X Window¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. [^http://rapidsvn.tigris.org] == À¥ ÀÎÅÍÆäÀ̽º == ÀúÀå¼Ò¸¦ À¥ºê¶ó¿ìÀú·Î ÆíÇÏ°Ô º¼ ¼ö ÀÖ´Â ÀÎÅÍÆäÀ̽ºµéÀÔ´Ï´Ù. === ViewCVS === CVS À¥ ÀÎÅÍÆäÀ̽º·Î À¯¸íÇÕ´Ï´Ù. ¾ÆÆÄÄ¡¿Í mod_python ±â¹ÝÀ¸·Î µ¿ÀÛÇϸç Subversion ÆÄÀ̽㠹ÙÀεùÀ¸·Î ¸¸µé¾îÁ® ÀÖ½À´Ï´Ù. ÃֽŹöÀüÀº Subversionµµ Áö¿øÇϰí ÀÖ½À´Ï´Ù. À¯´Ð½º, ¸®´ª½º, Windows ¸ðµÎ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. [^http://sourceforge.net/projects/viewcvs] [wiki:SubversionWithViewCVSForWindows À©µµ¿ì¿¡¼­ Subversion°ú ViewCVS »ç¿ëÇϱâ] === WebSVN === Subversion Àü¿ë À¥ ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. Subversion svnlook°ú ¿¬µ¿ÇÏ¿© À¥À¸·Î Ç¥½ÃÇÕ´Ï´Ù. ¾ÆÆÄÄ¡¿Í php°¡ ÇÊ¿äÇÕ´Ï´Ù. [^http://websvn.tigris.org] == ¾²´Ù°¡ ¹ß»ýÇÏ´Â »ç¼ÒÇÑ ¹®Á¦ == === svn: Entry 'file name' has unexpectedly changed special status === ³ªÀÇ °æ¿ì symbolic lynkÆÄÀÏÀ» svn addÇÏ¿´´Ù°¡ ±×³É Áö¿ì°í »õ·Î¿î ÆÄÀÏÀ» ¸¸µé¾î svn ciÇÏÀÚ À§¿Í °°Àº ¹®Á¦°¡ ¹ß»ýÇß´Ù. À̰æ¿ì ´ÙÀ½°ú °°ÀÌ Ã³¸®ÇÑ´Ù. 1. ¿ì¼± ¿ø·¡ÀÇ symbolic lynk¸¦ ´Ù½Ã º¹±¸ ÇÑ´Ù. 1. ±×´ÙÀ½ svn ciÀ» ÇÑ´Ù 1. ±× ´ÙÀ½ svn rm symbolic linkÇÑ´Ù 1. ±× ´ÙÀ½ ´Ù½Ã ³»°¡ ¹Ù²Ù°íÀÚ ÇÏ´Â ÆÄÀÏÀ» ¸¸µç´Ù 1. svn add, svn ciÇÑ´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°´Ù. {{{#!vim nosyntax $ ln -s /some/dir/file ./file1 $ svn add file1 $ rm file1 $ cat > file1 my new version $ svn ci svn: Entry 'file1' has unexpectedly changed special status $ rm file1 $ ln -s /some/dir/file ./file1 $ svn ci $ svn rm file1 $ cat > file1 my new version $ svn add file1 $ svn ci }}}