#!jade ÇÔ²² µÑ·¯º¸±â ÀÌÁ¦ SubversionÀ» »ç¿ëÇÏ´Â ¹ýÀ» ÀÚ¼¼È÷ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ÀÌ ÀåÀÌ ³¡³¯ ÁîÀ½À̸é ÀÏ»óÀûÀÎ ÀÛ¾÷¿¡ SubversionÀ» »ç¿ëÇϱâ À§ÇØ ÇÊ¿äÇÑ °ÅÀÇ ¸ðµç ÀϵéÀ» ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ´ç½ÅÀÇ Äڵ带 óÀ½ üũ¾Æ¿ôÇÏ´Â °ÍÀ¸·Î ½ÃÀÛÇÏ¿© Äڵ带 ¼öÁ¤ÇÏ°í ¼öÁ¤ÇÑ ³»¿ëÀ» °Ë»çÇÕ´Ï´Ù. ¶Ç ´Ù¸¥ »ç¶÷ÀÌ ¼öÁ¤ÇÑ ³»¿ëÀ» ÀÚ½ÅÀÇ ÀÛ¾÷º»¿¡ ¹Ý¿µÇÏ°í °Ë»çÇϸç Ãæµ¹ÀÌ ¹ß»ýÇÒ °æ¿ì ÇØ°áÇÏ°Ô µË´Ï´Ù. ÀÌ Àå¿¡¼­ SubversionÀÇ ¸í·É¾î ÀüºÎ¸¦ ¿­°ÅÇÏÁö´Â ¾Ê½À´Ï´Ù. ±×º¸´Ù´Â »ç¿ëÀÚ°¡ SubversionÀ» »ç¿ëÇÏ¿© °¡Àå º¸ÆíÀûÀ¸·Î ÇÏ°Ô µÉ ÀÛ¾÷µé¿¡ ´ëÇØ ¼Ò°³¸¦ ÇÕ´Ï´Ù. ÀÌ ÀåÀº ´ç½ÅÀÌ 2ÀåÀ» Àаí ÀÌÇØÇßÀ¸¸ç SubversionÀÌ »ç¿ëÇÏ´Â ÀϹÝÀûÀÎ ¸ðµ¨À» ¾Ë°í ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù. ¸í·É¾îÀÇ Àüü ·¹ÆÛ·±½º´Â 8Àå À» º¸½Ê½Ã¿À. µµ¿ò¸» °è¼Ó ÁøÇàÇϱâ Àü¿¡ °¡Àå Áß¿äÇÑ Subversion ¸í·É¾îÀÎ svn help ¿¡ ´ëÇØ ¾Ë¾Æ º¸°Ú½À´Ï´Ù. Subversion Ä¿¸àµå ¶óÀΠŬ¶óÀ̾ðÆ®´Â ½º½º·Î ¹®¼­¸¦ »ý¼ºÇÏ¿© Ãâ·ÂÇÕ´Ï´Ù. ¾ðÁ¦¶óµµ svn help <¼­ºê Ä¿¸àµå > ¶ó°í Ä¡¸é ¼­ºê Ä¿¸àµåÀÇ ¹®¹ý, ¿É¼Ç ½ºÀ§Ä¡, µ¿ÀÛÀ» ¾Ë·Á ÁÝ´Ï´Ù. ÀÓÆ÷Æ® svn import ¸í·ÉÀ¸·Î SubversionÀÇ ÀúÀå¼Ò(repository)¿¡ »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ÀÓÆ÷Æ® ÇÒ ¼ö ÀÖ½À´Ï´Ù. Subversion ¼­¹ö¸¦ ¼³Á¤ÇÒ ¶§ ÃÖÃÊ·Î ½ÇÇàÇÏ°Ô µÉ Ä¿¸àµåÀÌÁö¸¸ ¸Å¿ì ºó¹øÇÏ°Ô »ç¿ëµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. import ÀÇ »ó¼¼ÇÑ ±â´É¿¡ ´ëÇÏ¿©´Â ÀÌ ÀåÀÇ µÚ ÂÊ¿¡ ÀÖ´Â "svn import" ¼½¼Ç À» º¸½Ê½Ã¿À. ¸®ºñÀü: ¹øÈ£, Å°¿öµå, ³¯Â¥ ÁøÇàÇϱâ Àü¿¡ ÀúÀå¼Ò ³»¿¡ ƯÁ¤ÇÑ ¸®ºñÀüÀ» ÁöĪÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æ µÑ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ¿¡¼­ º» °Íó·³ ¸®ºñÀüÀº ƯÁ¤ÇÑ ¼ø°£ ÀúÀå¼Ò(repository)ÀÇ ¼ø°£Æ÷Âø »çÁø(snapshot)ÀÔ´Ï´Ù. Ä¿¹ÔÀ» ¹Ýº¹ÇÏ¿© ÀúÀå¼Ò°¡ Ä¿Áü¿¡ µû¶ó ÀÌ ½º³À¼¦µéÀ» ±¸ºÐÇÒ ¹æ¹ýÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù. () ¿É¼Ç µÚ¿¡ ¿øÇÏ´Â ¸®ºñÀü ¹øÈ£¸¦ Àû¾î (svn --revision REV) ¸®ºñÀüÀ» ¸í½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç´Â µÎ ¸®ºñÀüÀ» ÄÝ·ÐÀ¸·Î ±¸ºÐÇÏ¿© (svn --revision REV1:REV2). ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¸®ºñÀüÀº ¹øÈ£, Å°¿öµå, ³¯Â¥ ¼¼°¡Áö ¹æ¹ýÀ¸·Î ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸®ºñÀü ¹øÈ£ »õ·Î¿î Subversion ÀúÀå¼Ò¸¦ ¸¸µé¸é ¸®ºñÀü 0ºÎÅÍ ½ÃÀÛÇÏ°Ô µË´Ï´Ù. ÀÌÈÄ Ä¿¹ÔÀ» ½ÇÇàÇÒ ¶§¸¶´Ù ¸®ºñÀü ¹øÈ£´Â 1¾¿ Áõ°¡ÇÕ´Ï´Ù. Ä¿¹ÔÀÌ ¿Ï·áµÉ ¶§¸¶´Ù Subversion Ŭ¶óÀ̾ðÆ®´Â ¾Æ·¡¿Í °°ÀÌ »õ·Î¿î ¸®ºñÀü ¹øÈ£¸¦ ¾Ë·ÁÁÝ´Ï´Ù. $ svn commit --message "Corrected number of cheese slices. " Sending sandwich.txt Transmitting file data . Committed revision 3. ³ªÁß¿¡ ÀÌ ¸®ºñÀüÀ» ÂüÁ¶ÇÏ°í ½ÍÀ» ¶§ (ÀÌ ÀåÀÇ µÚ¿¡¼­ ¾î¶² °æ¿ì¿¡ ±×·± ÀÏÀÌ ÇÊ¿äÇÑ°¡¸¦ ¼³¸íÇÕ´Ï´Ù) 3À¸·Î ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸®ºñÀü Å°¿öµå Subversion Ŭ¶óÀ̾ðÆ®´Â ´Ù¾çÇÑ ¸®ºñÀü Å°¿öµå¸¦ ÀÌÇØÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Å°¿öµå´Â ¿É¼Ç µÚ¿¡ ¼ýÀÚ°ª ´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç Subversion¿¡ ÀÇÇØ Æ¯Á¤ÀÇ ¸®ºñÀü ¹øÈ£·Î º¯È¯µË´Ï´Ù: ÀÛ¾÷º»ÀÇ ¸ðµç µð·ºÅ丮¿¡´Â .svnÀ̶ó´Â À̸§ÀÇ °ü¸® ¿µ¿ªÀÌ ÀÖ½À´Ï´Ù. SubversionÀº µð·ºÅ丮 ¾ÈÀÇ °¢ ÆÄÀÏÀÇ »çº»À» ÀÌ °ü¸® ¿µ¿ª¿¡ º¸°üÇÕ´Ï´Ù. ÀÌ »çº»Àº »ç¿ëÀÚ°¡ ÀÚ½ÅÀÇ ÀÛ¾÷º»À» °»½Å(update)ÇÑ °¡Àå ÃÖ±ÙÀÇ ¸®ºñÀü (ÀÌ°ÍÀ»BASE¸®ºñÀüÀ̶ó°í ÇÕ´Ï´Ù)¿¡ ÀÖ´ø ÆÄÀÏÀ» ¼öÁ¤ ¾øÀÌ (Å°¿öµå È®Àå, end-of-lineº¯È¯À» ºñ·ÔÇÏ¿© ¾î¶°ÇÑ Àϵµ ¼öÇàÇÏÁö ¾Ê°í) º¸°üÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ ÆÄÀÏÀ» ¿ø·¡ÀÇ ÀÛ¾÷º¹»ç (pristine copy)¶ó°í ¸»ÇÕ´Ï´Ù. HEAD ÀúÀå¼Ò(repository)¿¡ ÀÖ´Â ÃֽŠ¸®ºñÀüÀÔ´Ï´Ù. BASE ÀÛ¾÷ º¹»ç¿¡ ÀÖ´Â ÆÄÀÏ µð·ºÅ丮ÀÇ ¿ø·¡ÀÇ ÀÛ¾÷º¹»ç¸®ºñÀüÀÔ´Ï´Ù. COMMITTED BASE ÀÌÀü ¶Ç´Â BASE ¿¡¼­ º¯°æµÈ ¾ÆÀÌÅÛÀÌ ÀÖ´Â ¸¶Áö¸· ¸®ºñÀüÀÔ´Ï´Ù. PREV º¯°æÀÌ ÀÖ´ø ¸¶Áö¸· ¸®ºñÀü Á÷ÀüÀÇ ¸®ºñÀüÀÔ´Ï´Ù. (Áï COMITTED - 1 ÀÌ µË´Ï´Ù) Ä¿¸Çµå ½ÇÇà½ÃÀÇ ¸®ºñÀü Å°¿öµåÀÇ ¿¹ÀÔ´Ï´Ù (¾ÆÁ÷ Ä¿¸ÇµåÀÇ Àǹ̸¦ ¸ô¶óµµ ±¦Âú½À´Ï´Ù. ÀÌ ÀåÀ» ÁøÇàÇϸ鼭 ¼³¸íÇÕ´Ï´Ù): $ svn diff --revision PREV:COMITTED foo.c # foo.c ¿¡ Ä¿¹ÔÇÑ ¸¶Áö¸· º¯°æÀ» Ç¥½Ã $ svn log --revision HEAD # ÀúÀå¼Ò¿¡ ¸¶Áö¸·À¸·Î Ä¿¹ÔÇÒ ¶§ÀÇ ·Î±× ¸Þ½ÃÁö¸¦ Ç¥½Ã $ svn diff --revision HEAD # ÀÛ¾÷ Ä«Çdz» ÆÄÀÏ(·ÎÄÿ¡¼­ ¼öÁ¤µÇ¾úÀ» ¼ö ÀÖÀ½)À» ÀúÀå¼ÒÀÇ # ÃֽŠ¹öÀü°ú ºñ±³ $ svn diff --revision BASE:HEAD foo.c # ÀÛ¾÷ Ä«ÇÇÀǼöÁ¤¿ø foo.c(·ÎÄÿ¡¼­ ¼öÁ¤ÇÑ °ÍÀÌ ¹Ý¿µµÇÁö ¾ÊÀ½)¸¦ # ÀúÀå¼ÒÀÇ ÃֽŠ¹öÀü°ú ºñ±³ $ svn log --revision BASE:HEAD # ¸¶Áö¸·À¸·Î ¾÷µ¥ÀÌÆ®ÇÑ ÀÌÈÄÀÇ Ä¿¹ÔµÈ ·Î±×¸¦ ¸ðµÎ Ç¥½Ã $ svn update --revision PREV foo.c # foo.c ÀÇ ¸¶Áö¸· º¯°æÀ» µÇµ¹¸°´Ù # (foo.c ÀÇ ÀÛ¾÷ ¸®ºñÀüÀÌ °¨¼ÒÇÔ) ÀÌ·¯ÇÑ Å°¿öµå¸¦ ÀÌ¿ëÇϸé ÀÛ¾÷º»À̳ª ƯÁ¤ ¸®ºñÀüÀ» Çò°¥¸®´Â ¹øÈ£°¡ ¾Æ´Ñ Å°¿öµå·Î ÁöÁ¤ÇÏ¿© ÀÚÁÖ¾²´Â ¿©·¯ À¯¿ëÇÑ ¸í·ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸®ºñÀü ÀÏÀÚ ¸®ºñÀü ¹øÈ£³ª ¸®ºñÀü Å°¿öµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °æ¿ì¶ó¸é ¾ðÁ¦³ª ³¯Â¥¿Í ½Ã°¢µµ Áß°ýÈ£ {} ¾È¿¡ ³Ö¾î ¸®ºñÀüÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ³¯Â¥¿Í ¸®ºñÀü ¹øÈ£¸¦ µ¿½Ã¿¡ »ç¿ëÇØ ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. SubversionÀº ¸Å¿ì ¸¹Àº ÀÏÀÚ Çü½ÄÀ» ¹Þ¾ÆµéÀÏ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÏÀÚ Çü½ÄÀÌ °ø¹éÀ» Æ÷ÇÔÇÑ °æ¿ì¿¡´Â ¹Ýµå½Ã ÀοëºÎÈ£·Î ¹­¾î ÁÖ¾î¾ß ÇÕ´Ï´Ù. ¿©±â¿¡¼­´Â SubversionÀÌ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Â Çü½Ä Áß ¸î °¡Áö ¿¹¸¦ º¸¿©ÁÝ´Ï´Ù. $ svn checkout --revision {2002-02-17} $ svn checkout --revision {2/17/02} $ svn checkout --revision {"17 Feb"} $ svn checkout --revision {"17 Feb 2002"} $ svn checkout --revision {"17 Feb 2002 15:30"} $ svn checkout --revision {"17 Feb 2002 15:30:12 GMT"} $ svn checkout --revision {"10 days ago"} $ svn checkout --revision {"last week"} $ svn checkout --revision {"yesterday"} … ¸®ºñÀü¿¡ ³¯Â¥¸¦ ÁöÁ¤ÇÑ °æ¿ì SubversionÀº ±× ³¯Â¥ ÀÌÀüÀÇ °¡Àå ÃֽŠ¸®ºñÀüÀ» ã¾Æ³»·Á°í ÇÕ´Ï´Ù. $ svn log --revision {11/28/2002} ------------------------------------------------------------------------ r12 | ira | 2002-11-27 12:31:51 -0600 (Wed, 27 Nov 2002) | 6 lines … SubversionÀº ÇÏ·ç°¡ »¡¶ó¿ä? ¸®ºñÀüÀ¸·Î ½Ã°¢À» ÁöÁ¤ÇÏÁö ¾Ê°í ³¯Â¥¸¸ ÁöÁ¤Çß´Ù¸é (¿¹¸¦ µé¾î 11/27/02) »ç¿ëÀÚ´Â 11¿ù 27ÀÏ¿¡ Ãß°¡µÈ ¸®ºñÀü Áß ¸¶Áö¸· ¸®ºñÀüÀ» ´Ù·ç¾î¾ß ÇÑ´Ù°í »ý°¢ÇÒÁöµµ ¸ð¸¨´Ï´Ù. ±×·¯³ª ½ÇÁ¦·Î´Â 26ÀÏ ¶Ç´Â ±× ÀÌÀüÀÇ ¸®ºñÀüÀ» ¾ò°Ô µË´Ï´Ù. SubversionÀº ÁöÁ¤µÈ ÀϽà ÀÌÀüÀÇ ÀúÀå¼Ò Áß ÃÖ½ÅÀÇ ¸®ºñÀü À» ã¾Æ³»·Á°í ÇÑ´Ù´Â °Í¿¡ À¯ÀÇÇϽʽÿÀ. 11/27/02¿Í °°ÀÌ ½Ã°¢ ¾øÀÌ ³¯Â¥¸¸À» ÁöÁ¤Çϸé SubversionÀº ½Ã°¢ 00:00:00°¡ ÁöÁ¤µÇ¾ú´Ù°í °¡Á¤ÇÏ°í °á°úÀûÀ¸·Î 27Àϳ¯ Ä¿¹ÔµÈ °ÍÀº °í·ÁÇÏÁö ¾Ê½À´Ï´Ù. 27ÀÏ ºÐÀ» °°ÀÌ °Ë»öÇÏ°í ½Í´Ù¸é ½Ã°¢À» °°ÀÌ ÁöÁ¤Çϰųª ("27 Nov 2002 23:59") ¾Æ´Ï¸é °£´ÜÈ÷ ´ÙÀ½³¯À» ÁöÁ¤ÇÏ¸é µË´Ï´Ù. ("28 Nov 2002") ³¯Â¥ ¹üÀ§¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. SubversionÀº ¹üÀ§ ¾È¿¡ ÀÖ´Â ¸ðµç ¸®ºñÀüÀ» ´ë»óÀ¸·Î °Ë»öÇÕ´Ï´Ù. ÁöÁ¤µÈ µÎ ³¯Â¥´Â °Ë»ö¿¡ Æ÷ÇԵ˴ϴÙ. $ svn log --revision {2002-11-20}:{2002-11-29} … ¾Õ¼­ ÁöÀûÇÑ °Íó·³ ³¯Â¥¿Í ¸®ºñÀü ¹øÈ£¸¦ °°ÀÌ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. $ svn log -r {11/20/02}:4040 ÃÖÃÊÀÇ Ã¼Å©¾Æ¿ô ´ëºÎºÐÀÇ °æ¿ì ÀúÀå¼Ò·ÎºÎÅÍ ÇÁ·ÎÁ§Æ®¸¦ üũ¾Æ¿ô(checkout) ÇÏ´Â °ÍÀ¸·Î SubversionÀ» ½ÃÀÛÇÕ´Ï´Ù. ÀúÀå¼Ò¸¦ üũ¾Æ¿ôÇÏ¸é »ç¿ëÀÚÀÇ ·ÎÄà ¸Ó½Å¿¡´Â ÀúÀå¼ÒÀÇ »çº»ÀÌ »ý¼ºµË´Ï´Ù. ÀÌ »çº»¿¡´Â Ä¿¸àµå ¶óÀο¡¼­ ÁöÁ¤ÇÑ Subversion ÀúÀå¼ÒÀÇ HEAD(ÃֽŠ¸®ºñÀü)°¡ ÀúÀåµË´Ï´Ù. $ svn checkout http://svn.collab.net/repos/svn/trunk A trunk/subversion.dsw A trunk/svn_check.dsp A trunk/COMITTERS A trunk/configure.in A trunk/IDEAS … Checked out revision 2499. ÀúÀå¼ÒÀÇ ·¹À̾ƿô À§ÀÇ URL ¿¡¼­ trunk°¡ ¹«¾ùÀÎÁö ±Ã±ÝÇÒ °ÍÀÔ´Ï´Ù. ±×°ÍÀº »ç¿ëÀÚ°¡ Subversion ÀúÀå¼Ò¸¦ ¹èÄ¡ÇÒ ¶§ ±ÇÀåµÇ´Â ¹æ¹ýÀ¸·Î 4Àå "Branching and Merging"()¿¡¼­ ÀÚ¼¼È÷ ´Ù·ì´Ï´Ù. À§ÀÇ ¿¹´Â trunk µð·ºÅ丮ÀÇ Ã¼Å©¾Æ¿ôÀ̾úÁö¸¸ üũ¾Æ¿ô URL¿¡ ¼­ºê µð·ºÅ丮¸¦ ÁöÁ¤ÇÏ¸é ´õ ±íÀº °èÃþ¿¡ ÀÖ´Â ÇÏÀ§ µð·ºÅ丮µµ °£´ÜÇÏ°Ô Ã¼Å©¾Æ¿ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. $ svn checkout http://svn.collab.net/repos/svn/trunk/doc/book/tools A tools/readme-dblite.html A tools/fo-stylesheet.xsl A tools/svnbook.el A tools/dtd A tools/dtd/dblite.dtd … Checked out revision 3678. SubversionÀº Àá±Ý¡¤¼öÁ¤¡¤Àá±Ý ÇØÁ¦ ¸ðµ¨ÀÌ ¾Æ´Ï¶ó º¹»ç¡¤¼öÁ¤¡¤ÇÕħ(Merge) ¸ðµ¨À» »ç¿ëÇϹǷΠ() üũ¾Æ¿ôÇÏ¸é ¹Ù·Î °¡Á®¿Â ÆÄÀÏ°ú µð·ºÅ丮¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. (ÀÌ·¸°Ô °¡Á®¿Â ÆÄÀÏ°ú µð·ºÅ丮ÀÇ ¸ðÀÓÀ» ÀÛ¾÷ º¹»ç¶ó°í ÇÕ´Ï´Ù). ¹Ù²Ù¾î ¸»ÇÏ¸é ¿©·¯ºÐÀÇÀÛ¾÷ º¹»ç´Â ½Ã½ºÅÛ ¿¡ ÀÖ´Â ´Ù¸¥ ÆÄÀÏÀ̳ª µð·ºÅ丮¿Í ´Ù¸¦ °ÍÀÌ ¾ø½À´Ï´Ù. ÀÛ¾÷º»¿¡ ÀÖ´Â µð·ºÅ丮´Â ¸ðµÎ .svnÀ̶ó´Â ÇÏÀ§ µð·ºÅ丮¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù´Â »ç½ÇÀº Á¦¿ÜÇÏ°í ¸»ÀÔ´Ï´Ù. ³ªÁß¿¡ Á» ´õ À̾߱â ÇÏÁö¿ä. ÆíÁýÇϰųª º¯°æÇϰųª À̵¿Çϰųª ÀÛ¾÷ Ä«ÇÇ Àüü¸¦ Åë°·Î »èÁ¦Çعö¸± ¼öµµ ÀÖ½À´Ï´Ù. ÀÛ¾÷º»Àº ½Ã½ºÅÛ¿¡ ÀÖ´Â ´Ù¸¥ ÆÄÀÏÀ̳ª µð·ºÅ丮µé°ú ¾Æ¹«·± Â÷ÀÌÁ¡Àº ¾ø½À´Ï´Ù¸¸ ÀÛ¾÷ Ä«ÇÇ¿¡ ¼ÓÇÏ´Â ÆÄÀÏ À̳ª µð·ºÅ丮ÀÇ À§Ä¡³ª À̸§À» ´Ù½Ã Æí¼ºÇßÀ» °æ¿ì¿¡´Â Ç×»ó Subversion¿¡ ±×°ÍÀ» ¾Ë·ÁÁÖ¾î¾ß ÇÕ´Ï´Ù. ¸¸¾à ÀÛ¾÷ º¹»ç¿¡ ¼ÓÇÏ´Â ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ º¹»çÇϰųª À̵¿ÇÏ°í ½ÍÀº °æ¿ì¿¡´Â ¿î¿µÃ¼Á¦¿¡¼­ Á¦°øÇÏ´Â º¹»ç³ª À̵¿ ¸í·É¾î ´ë½Å¿¡svn copy¿Ísvn move ¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä. ÀÌ ÀåÀÇ µÚÂÊ¿¡¼­ Á» ´õ ÀÚ¼¼ÇÏ°Ô ¼³¸íÇÕ´Ï´Ù. ÆÄÀÏÀ» °íÃưųª, ¶Ç´Â »õ·Î¿î ÆÄÀÏÀ» ¸¸µé°Å³ª, µð·ºÅ丮¸¦ ¿Å±â´Â µîÀÇ º¯°æ»çÇ×Àº ´ÙÀ½ Ä¿¹ÔÇÒ ¶§±îÁö Subversion ¼­¹ö¿¡ µû·Î ¾Ë¸± ÇÊ¿ä°¡ ÀüÇô ¾ø½À´Ï´Ù. <filename>. svn</filename> µð·ºÅ丮´Â ¹«¾ùÀԴϱî? ÀÛ¾÷ Ä«ÇÇ¿¡ ¼ÓÇÏ´Â ¸ðµç µð·ºÅ丮¿¡´Â . svn À̶ó´Â °ü¸® ¿µ¿ªÀÌ ÀÖ½À´Ï´Ù. º¸Åë ÆÄÀÏ ¸ñ·ÏÀ» Ç¥½ÃÇÏ´Â ¸í·É(ls, dir)Àº ÀÌ µð·ºÅ丮¸¦ Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸ ÀÌ µð·ºÅ丮´Â ¸Å¿ì Áß¿äÇÕ´Ï´Ù. ¹«½¼ ÀÏÀ» ÇÏ´õ¶óµµ °ü¸® ¿µ¿ªÀ» Áö¿ì°Å³ª º¯°æÇÏÁö ¸¶½Ê½Ã¿À! SubversionÀº ÀÛ¾÷ º¹»ç¸¦ °ü¸®Çϴµ¥ ÀÌ µð·ºÅ丮¸¦ »ç¿ëÇÕ´Ï´Ù. ÀúÀå¼Ò(repository)ÀÇ URL¸¸ Àμö·Î Á༭ ÀÛ¾÷ Ä«ÇǸ¦ üũ¾Æ¿ôÇصµ µÇÁö¸¸ ÀúÀå¼Ò(repository)ÀÇ URL µÚ¿¡ µð·ºÅ丮¸¦ µû·Î ÁöÁ¤ÇÏ¿© üũ¾Æ¿ôÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ÁöÁ¤ÇÑ µð·ºÅ丮¾È¿¡ ÀÛ¾÷ Ä«ÇÇ°¡ ¸¸µé¾îÁý´Ï´Ù. ¿¹¸¦ µé¾î: $ svn checkout http://svn.collab.net/repos/svn/trunk subv A subv/subversion.dsw A subv/svn_check.dsp A subv/COMITTERS A subv/configure.in A subv/IDEAS … Checked out revision 2499. ÀÌ·¸°Ô ÇÏ¸é ¿ì¸®°¡ ¾Õ¿¡¼­ Çß´ø °Íó·³ trunk ¶ó´Â À̸§ÀÇ µð·ºÅ丮 ´ë½Å¿¡ subv À̶ó´Â µð·ºÅ丮¿¡ ÀÛ¾÷ Ä«ÇÇ°¡ ¸¸µé¾î Áý´Ï´Ù. ±âº»ÀûÀÎ ÀÛ¾÷ »çÀÌŬ Subversion¿¡´Â ¸¹Àº ±â´ÉÀÌ ÀÖÁö¸¸ ÀÚÁÖ »ç¿ëÇÏ´Â ±â´ÉÀº ¸î °¡Áö »ÓÀÔ´Ï´Ù. ÀÌ Àå¿¡¼­´Â Á¦ÀÏ ÀÚÁÖ ¾²ÀÌ´Â °ÍµéÀ» ¼³¸íÇÕ´Ï´Ù. ÀüÇüÀûÀÎ ÀÛ¾÷ »çÀÌŬÀº ´ÙÀ½°ú °°½À´Ï´Ù. ÀÛ¾÷ º¹»çÀÇ ¾÷µ¥ÀÌÆ® svn update º¯°æ svn add svn delete svn move svn copy ÀÚ½ÅÀÇ º¯°æÁ¡ È®ÀÎ svn status svn diff svn revert ´Ù¸¥ »ç¶÷ÀÇ º¯°æ°ú Merge svn merge svn resolved ÀÚ½ÅÀÇ º¯°æÁ¡À» Ä¿¹Ô svn commit ÀÛ¾÷ º¹»çÀÇ °»½Å ÆÀÀ» ¸¸µé¾î ÀÛ¾÷ÇÏ°í ÀÖ´Â ÇÁ·ÎÁ§Æ®¿¡¼­´Â ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇÏ°í ½ÍÀ»¶§°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. Áï ´Ù¸¥ ¸â¹öÀÇ º¯°æÁ¡À» ¸ðµÎ ¹Þ´Â °ÍÀÌÁö¿ä. ÀÌ °æ¿ì svn update·Î ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç¸¦ ÀúÀå¼Ò(repository)ÀÇ ÃֽŠ¹öÀü¿¡ ¸ÂÃä´Ï´Ù. $ svn update U . /foo.c U . /bar.c Updated to revision 2. ÀÌ °æ¿ì ´ç½ÅÀÌ ¸¶Áö¸·À¸·Î ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇÏ°í ³ª¼­ ´Ù¸¥ »ç¶÷ÀÌ foo.c ¿Í bar.c ¿¡ °¡ÇÑ º¯°æÀ» Ä¿¹ÔÇß°í SubversionÀº ÀÌ º¯°æÀ» ´ç½ÅÀÇ ÀÛ¾÷ º¹»ç¿¡ Æ÷ÇÔ½ÃÅ°±â À§Çؼ­ µÎ ÆÄÀÏÀ» °»½ÅÇß½À´Ï´Ù. svn update ÀÇ Ãâ·ÂÀ» Á» ´õ ÀÚ¼¼ÇÏ°Ô º¾½Ã´Ù. ¼­¹ö°¡ º¯°æÁ¡À» ÀÛ¾÷ º¹»ç¿¡ º¸³¾ ¶§ ¹®ÀÚ Äڵ尡 °¢°¢ÀÇ ÆÄÀÏ ÀÇ ¿·¿¡ Ç¥½ÃµÇ¾î ´ç½ÅÀÇ ÀÛ¾÷ Ä«ÇǸ¦ ÃÖ½ÅÀ¸·Î Çϱâ À§Çؼ­ ¾î¶°ÇÑ µ¿ÀÛÀ» Çß´ÂÁö¸¦ ¾Ë¸³´Ï´Ù: U foo ÆÄÀÏ foo ´Â °»½ÅµÇ¾ú½À´Ï´Ù(¼­¹ö·ÎºÎÅÍ º¯°æÀ» ¹Þ¾Æµé¿´½À´Ï´Ù). A foo ÆÄÀÏÀ̳ª µð·ºÅ丮 foo ´Â ´ç½ÅÀÇ ÀÛ¾÷ º¹»ç¿¡ Ãß°¡µÇ¾ú½À´Ï´Ù. D foo ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÎ foo ´Â ´ç½ÅÀÇ ÀÛ¾÷ º¹»ç·ÎºÎÅÍ »èÁ¦µÇ¾ú½À´Ï´Ù. R foo ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÎ foo ´Â ġȯµÇ¾ú½À´Ï´Ù. Áï foo ´Â »èÁ¦µÇ¾î °°Àº À̸§ÀÇ »õ·Î¿î ÆÄÀÏ ¶Ç´Â µð·ºÅ丮°¡ Ãß°¡µÇ¾ú½À´Ï´Ù. ¾çÂÊ ¸ðµÎ´Â °°Àº À̸§ÀÌÁö¸¸ ÀúÀå¼Ò(repository)´Â ±×°ÍµéÀ» ´Ù¸¥ È÷½ºÅ丮¸¦ °¡Áø ´Ù¸¥ °³Ã¼(object)·Î °£ÁÖÇÕ´Ï´Ù. G foo ÆÄÀÏ foo ´Â »õ·Î¿î º¯°æÁ¡À» ÀúÀå¼Ò(repository)·ÎºÎÅÍ ¹Þ¾Ò½À´Ï´Ù¸¸ ±× ÆÄÀÏÀº ·ÎÄà īÇÇ¿¡¼­µµ ¼öÁ¤ÀÌ ÀÖ¾ú½À´Ï´Ù. ±×·¯³ª ¾çÂÊÀÇ ¼öÁ¤Àº °ãÄ¡Áö ¾Ê±â ¶§¹®¿¡ Subversion ÀÌ ÀúÀå¼Ò¿¡¼­ ¿Â º¯°æÁ¡À» ·ÎÄà īÇÇ¿¡ ¹®Á¦¾øÀÌ ÇÕÃƽÀ´Ï´Ù(merge). C foo ÆÄÀÏ foo´Â ¼­¹ö·ÎºÎÅÍ Ãæµ¹ÀÌ ÀÖ´Â º¯°æÀ» ¹Þ¾Ò½À´Ï´Ù. ¼­¹ö·ÎºÎÅÍÀÇ º¯°æÀº ´ç½Å ÀÚ½ÅÀÇ º¯°æ°ú Á÷Á¢ °ãÄ¡°í ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸ °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ÀÌ Ãæµ¹Àº »ç¶÷(Áï ´ç½Å)ÀÌ ÇؼÒÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÀÌ ÀåÀÇ ´ÙÀ½¿¡ ÀÌ »óȲ¿¡ ´ëÇØ ³íÀÇÇÕ´Ï´Ù. ÀÛ¾÷ º¹»ç¸¦ º¯°æÇϱâ ÀÌÁ¦ ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç·Î º¯°æÀ» ´õÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿Í °°Àº ºñ±³Àû Ư¼öÇÑ º¯°æÀ» ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. »õ·Î¿î ±â´É À» Ãß°¡Çϰųª ¹ö±×¸¦ °íÄ¡°Å³ª µîÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡ »ç¿ëÇÏ´Â Subversion Ä¿¸àµå´Â svn add, svn delete, svn copy, svn moveµîÀÔ´Ï´Ù. ±×·¯³ª ÀÌ¹Ì SubversionÀÇ °ü¸®ÇÏ¿¡ ÀÖ´Â ÆÄÀÏÀ» ´ÜÁö ÆíÁýÇÒ »ÓÀ̶ó¸é Ä¿¹ÔÇϱâ±îÁö´Â ±×·¯ÇÑ Ä¿¸àµå¸¦ »ç¿ëÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¿©·¯ºÐÀÌ ÀÛ¾÷ º¹»ç¿¡ °¡ÇÒ ¼ö ÀÖ´Â º¯°æÀº µÎ °¡Áö°¡ ÀÖ½À´Ï´Ù. ÆÄÀÏÀÇ º¯°æ ÀÌ°ÍÀº Á¦ÀÏ ´Ü¼øÇÑ Á¾·ùÀÇ º¯°æÀÔ´Ï´Ù. ÆÄÀÏÀ» º¯°æÇÏ´Â °Í¿¡ ´ëÇÏ¿© Subversion¿¡ º¸°íÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ¾î´À ÆÄÀÏÀÌ º¯°æµÇ¾ú´ÂÁö´Â SubversionÀÌ ÀÚµ¿ÀûÀ¸·Î °ËÃâÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Æ®¸®ÀÇ º¯°æ Subversion¿¡ ´ëÇØ, »èÁ¦, Ãß°¡, Ä«ÇÇ, À̵¿ÀÌ ¿¹¾àµÇ¾î ÀÖ´Ù°í ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦Ç¥½ÃÇϵµ·Ï ÀÇ·ÚÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ º¯°æÀº ÀÛ¾÷ Ä«Çǻ󿡼­´Â Áï½Ã ÀϾ´Ï´Ù¸¸ ´ÙÀ½¿¡ ´ç½ÅÀÌ Ä¿¹ÔÇÒ ¶§±îÁö ÀúÀå¼Ò(repository) »ó¿¡¼­´Â Ãß°¡ ȤÀº »èÁ¦´Â ÀϾÁö ¾Ê½À´Ï´Ù. ÆÄÀÏÀ» º¯°æÇÏ·Á¸é ÅؽºÆ® ¹®ÀÚ ÆíÁý±â, ¿öµå ÇÁ·Î¼¼¼­, ±×·¡ÇÈ ÇÁ·Î±×·¥ µî ¾î¶² µµ±¸¶óµµ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Subversion´Â ¹ÙÀ̳ʸ® ÆÄÀϵµ ÅؽºÆ® ÆÄÀÏÀ» Ãë±ÞÇÏ´Â °Í°ú °°ÀÌ ½±°Ô ¶Ç ÃæºÐÈ÷ È¿À²ÀûÀ¸·Î ´Ù·ê ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡¼­´Â Æ®¸®ÀÇ º¯°æÇϱâ À§ÇØ Á¦ÀÏ ÀÚÁÖ ÀÌ¿ëµÇ´Â ³× °³ÀÇ Subversion ¼­ºêÄ¿¸àµå¸¦ °³°üÇØ µÓ´Ï´Ù (svn import ¿Í svn mkdir ´Â ³ªÁß¿¡ ´Ù·ê °ÍÀÔ´Ï´Ù). svn add foo foo ¸¦ ÀúÀå¼Ò(repository)¿¡ Ãß°¡Çϵµ·Ï ¿¹¾àÇØ µÓ´Ï´Ù. ´ÙÀ½ ¹ø Ä¿¹ÔÇÒ ¶§ foo ´Â ºÎ¸ð µð·ºÅ丮ÀÇ ÀÚ½ÄÀÌ µË´Ï´Ù. foo°¡ µð·ºÅ丮ÀÎ °æ¿ì foo ¾Æ·¡¿¡ ÀÖ´Â ¸ðµç ÆÄÀÏ ¿ª½Ã Ãß°¡ ¿¹°íÀÇ ´ë»óÀÌ µË´Ï´Ù. foo ¸¸À» Ãß°¡ÇÏ°í ½ÍÀº °æ¿ì´Â () ¿É¼ÇÀ» ÁöÁ¤ÇØ ÁÖ¼¼¿ä. svn delete foo foo ¸¦ ÀúÀå¼Ò(repository)·ÎºÎÅÍ »èÁ¦µµ·Ï ¿¹¾à ÇÕ´Ï´Ù. foo °¡ ÆÄÀÏÀ̸é ÀÛ¾÷ º¹»ç·ÎºÎÅÍ Áï½Ã »èÁ¦µË´Ï´Ù. foo°¡ µð·ºÅ丮ÀÌ¸é ¹Ù·Î »èÁ¦µÇÁö ¾Ê°í »èÁ¦ ¿¹¾à »óÅ·Π¼³Á¤µË´Ï´Ù. º¯°æÀ» Ä¿¹ÔÇϸé foo ´Â ÀÛ¾÷ º¹»ç¿Í ÀúÀå¼Ò(repository)·ÎºÎÅÍ »èÁ¦µË´Ï´Ù. ¹°·Ð ÀúÀå¼Ò(repository)·ÎºÎÅÍ ¿ÏÀüÇÏ°Ô »èÁ¦µÇ¾î ¹ö¸®´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ´ÜÁö ÀúÀå¼Ò(repository)ÀÇ HEAD·ÎºÎÅÍ »èÁ¦µÉ »ÓÀÔ´Ï´Ù. »èÁ¦ÇÑ ¸®ºñÀüº¸´Ù ÀüÀÇ ¸®ºñÀüÀ» ÁöÁ¤ÇØ Ã¼Å©¾Æ¿ô Çϸé(ȤÀº ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇϸé) »èÁ¦Àü »óÅ·Πµ¹¾Æ¿Ã ¼ö°¡ ÀÖ½À´Ï´Ù. svn copy foo bar foo¸¦ º¹»çÇؼ­ »õ·Î¿î ¾ÆÀÌÅÛ bar¸¦ ¸¸µì´Ï´Ù. bar´Â ÀÚµ¿ÀûÀ¸·Î Ãß°¡ ¿¹°íµË´Ï´Ù. bar°¡ ´ÙÀ½ÀÇ Ä¿¹ÔÀ¸·Î ÀúÀå¼Ò(repository) ¿¡ Ãß°¡µÉ ¶§ º¹»çÀÇ È÷½ºÅ丮°¡ ±â·ÏµË´Ï´Ù(foo ÀÇ º¹»çº»À̶ó´Â È÷½ºÅ丮). svn move foo bar ÀÌ ¸í·ÉÀº svn copy foo bar; svn delete foo ¸¦ ½ÇÇàÇÏ´Â °Í°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù. Áï bar ´ÂfooÀÇ º¹»çº»À¸·Î¼­ Ãß°¡ ¿¹¾àµÇ°í foo ´Â »èÁ¦ ¿¹¾àµË´Ï´Ù. ÀÛ¾÷ º¹»ç¾øÀÌ ÀúÀå¼Ò(repository)¸¦ º¯°æÇÏ´Â °Í ÀÌ Àå(chapter)ÀÇ Ã³À½¿¡ º¯°æ »çÇ×À» ÀúÀå¼Ò(repository)¿¡ ¹Ý¿µ½ÃÅ°·Á¸é Ä¿¹ÔÇÒ ÇÊ¿ä°¡ ÀÖ´Ù°í Çß½À´Ï´Ù. ±×°ÍÀÌ ¿Ïº®ÇÏ°Ô »ç½ÇÀ̶ó°í ÇÒ ¼ö´Â ¾ø½À´Ï´Ù. ÀúÀå¼Ò(repository)¿¡ ´ëÇؼ­ Æ®¸®ÀÇ º¯°æÀ» Á÷Á¢ Ä¿¹ÔÇÏ´Â °Í °°Àº ¸î°³ÀÇ Ä¿¸àµåµµÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ¼­ºêÄ¿¸àµå°¡ ÀÛ¾÷ º¹»ç Æнº°¡ ¾Æ´Ï°í Á÷Á¢ URLÀ» Á¶ÀÛÇÏ´Â °æ¿ì¿¡¸¸ ÀϾ´Ï´Ù. ƯÈ÷ svn mkdir, svn copy, svn move, svn deleteÀÇ Æ¯¼öÇÑ ÀÌ¿ëÀº URLÀ» Á÷Á¢ Á¶ÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. URLÀÇ Á¶ÀÛÀÌ ±×·¯ÇÑ ¹æ¹ýÀ¸·Î ÇൿÇÏ´Â °ÍÀº ÀÛ¾÷ Ä«ÇÇ¿¡ ´ëÇÑ Á¶ÀÛ Ä¿¸àµå°¡ ÀúÀå¼Ò(repository)¿¡ Ä¿¹ÔÇÏ·Á´Â º¯°æÁ¡À» ¼¼Æ®ÇØ µÎ´Â ¾î¶² Á¾·ùÀÇ Áغñ ¿µ¿ªÀ¸·Î¼­ ÀÛ¾÷ º¹»ç¸¦ »ç¿ëÇϱ⠶§¹®ÀÔ´Ï´Ù. URLÀ» Á¶ÀÛÇÏ´Â Ä¿¸àµå´Â ±×·± ¿©À¯°¡ ¾ø±â ¶§¹®¿¡ Á÷Á¢ URLÀ» Á¶ÀÛÇϸé À§¿¡¼­ ¸»ÇÑ ÀÛ¾÷µéÀº ¸ðµÎ Áï½Ã Ä¿¹ÔÇÏ´Â È¿°ú¸¦ ³À´Ï´Ù. ÀÚ½ÅÀÇ º¯°æÁ¡À» Á¶»ç º¯°æÀÌ ¿Ï·áÇϸé ÀúÀå¼Ò(repository)¿¡ Ä¿¹ÔÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ º¸Åë Ä¿¹ÔÇϱâ Àü¿¡ ÀÚ½ÅÀÌ ¹«¾ùÀ» º¯°æÇß´ÂÁö Á¤È®ÇÏ°Ô ºÁ µÎ´Â °Ô ÁÁ½À´Ï´Ù. Ä¿¹Ô Àü¿¡ º¯°æÁ¡À» È®ÀÎÇÔÀ¸·Î½á º¸´Ù Á¤È®ÇÑ ·Î±× ¸Þ¼¼Áö¸¦ ºÙÀÌ´Â °ÍÀÌ °¡´ÉÇÒ »Ó¸¸ ¾Æ´Ï¶ó ºÒÃæºÐÇÏ°Ô ¼öÁ¤µÈ °ÍÀ» ¹ß°ßÇÒ ¼öµµ ÀÖ°í Ä¿¹ÔÇϱâ Àü¿¡ ±× º¯°æÀ» ÆıâÇϰųª ÇÒ ±âȸ°¡ ÁÖ¾îÁý´Ï´Ù. °Ô´Ù°¡ °ø°³Çϱâ Àü¿¡ º¯°æÁ¡À» Àç°ËÅäÇϰųª ÀÚ¼¼ÇÏ°Ô Á¶»çÇÒ ÁÁÀº ±âȸÀ̱⵵ ÇÕ´Ï´Ù. svn status, svn diff, svn revert ¸¦ »ç¿ëÇØ ¿©·¯ºÐÀÌ ¾î¶² º¯°æÀ» Çß´ÂÁö¸¦ Á¤È®ÇÏ°Ô º¼ ¼ö ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀº º¸Åë ¾ÕÂÊ µÎ Ä¿¸àµå·Î ÀÛ¾÷ Ä«ÇÇÁßÀÇ ¾î´À ÆÄÀÏ À» º¯°æÇß´ÂÁö¸¦ Á¶»çÇÏ°í ¼¼¹ø° Ä¿¸àµå·Î ±× ÁßÀÇ ¸î¸î(ȤÀº ÀüºÎ)ÀÇ º¯°æÀ» Ãë¼ÒÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù. SubversionÀº ÀÌ ÀÛ¾÷À» Çϱâ À§Çؼ­ ÃÖÀûÈ­µÇ¾î ¿Ô°í ÀúÀå¼Ò¿Í Åë½ÅÇÏÁö ¾Ê°íµµ ¸¹Àº ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ÀÛ¾÷ º¹»ç¿¡´Â . svn ¶ó°í ÇÏ´Â ¼ûÀº µð·ºÅ丮°¡ ÀÖ¾î ¿©±â¿¡ ÀÛ¾÷ º¹»çÀÇ ¿øº» ¸®ºñÀü(prestine)ÀÇ Ä«ÇÇ°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» Àß »ç¿ëÇØ SubversionÀº ´ç½ÅÀÇ ÀÛ¾÷ ÆÄÀÏÀÇ ¾î¶² °ÍÀÌ º¯°æµÇ¾ú´ÂÁö¸¦ Àçºü¸£°Ô ¾Ë ¼ö°¡ ÀÖ°í ÀúÀå¼Ò(repository)¿Í Åë½ÅÇÏÁö ¾Ê°íµµ º¯°æÇÑ °ÍÀ» µÇµ¹¸± ¼ö ÀÖ½À´Ï´Ù. <command>svn status</command> ¾Æ¸¶ ¾î´À Subversion Ä¿¸àµåº¸´Ùsvn status Ä¿¸àµå¸¦ ÀÚÁÖ ÀÌ¿ëÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù. CVS »ç¿ëÀÚ¿¡°Ô: Update¸¦ ¸ØÃß¼¼¿ä! ÀÛ¾÷ º¹»ç¿¡ ¾î¶°ÇÑ º¯°æÀ» ÇàÇß´ÂÁö¸¦ È®ÀÎÇϱâ À§Çؼ­ ¾Æ¸¶ ¿©·¯ºÐÀº cvs update¸¦ »ç¿ëÇÏ°í ÀÖ°ÚÁö¿ä. svn status´Â ÀÛ¾÷ º¹»ç¿¡ ÇàÇØÁø º¯°æ¿¡ ´ëÇØ ¸ðµç ÇÊ¿äÇÑ Á¤º¸¸¦ Á¦°øÇØ ÁÝ´Ï´Ù. °Ô´Ù°¡ ÀúÀå¼Ò(repository)¿¡ ¾×¼¼½º ÇÏÁöµµ ¾Ê°í ´Ù¸¥ »ç¶÷ÀÌ ÇàÇÑ º¯°æÀÌ ¹Þ¾Æµé¿©Áú °¡´É¼ºµµ ¾ø½À´Ï´Ù. Subversion¿¡¼­ update´Â ¸¶Áö¸· °»½Å ÈÄ¿¡ ÀúÀå¼Ò(repository)¿¡ Ä¿¹ÔµÈ ¸ðµç º¯°æÀ» ÀÛ¾÷ Ä«ÇÇ¿¡ ¹Ý¿µÇÒ »ÓÀÔ´Ï´Ù. ·ÎÄà īÇÇ¿¡ ´ëÇؼ­ ÇàÇÑ º¯°æÀ» È®ÀÎÇϱâ À§Çؼ­ update ¸¦ »ç¿ëÇÏ´Â ¹ö¸©À» °íÃÄ¾ß ÇÕ´Ï´Ù. ÀÚ½ÅÀÇ ÀÛ¾÷ Ä«ÇÇ ÃÖ»óÀ§¿¡¼­ Àμö¾øÀÌ svn status ¸¦ ½ÇÇàÇÏ¸é ¸ðµç ÆÄÀÏ°ú Æ®¸®¿¡ ´ëÇÑ ¸ðµç ¼öÁ¤ »çÇ×À» °ËÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿¹´Â svn status °¡ µ¹·ÁÁÙ ¼ö ÀÖ´Â ¸ðµç ´Ù¸¥ »óÅ Äڵ带 º¼ ¼ö°¡ ÀÖµµ·Ï ¸¸µç °ÍÀÔ´Ï´Ù. #ÀÇ µÚ¿¡ ½á ÀÖ´Â ÅؽºÆ®´Â svn status°¡ Ãâ·ÂÇÑ °ÍÀÌ ¾Æ´Õ´Ï´Ù. $ svn status L . /abc.c # abc.c¿¡ ´ëÇÑ lockÀ» .svn µð·ºÅ丮¿¡ °®°í ÀÖ½À´Ï´Ù. M . /bar.c # bar.c´Â ¼öÁ¤µÇ¾ú½À´Ï´Ù. M . /baz.c # baz.c has property but no content modifications ? . /foo.o # svn(Subversion)Àº foo.o¸¦ °ü¸®ÇÏÁö ¾Ê½À´Ï´Ù. ! . /some_dir # svnÀÌ °ü¸®Çϱâ´Â ÇÏÁö¸¸ ¾ø¾îÁ³°Å³ª ºÒ¿ÏÀüÇÕ´Ï´Ù. ~ . /qux # µð·ºÅ丮¶ó°í ±â·ÏµÇ¾îÀÖÁö¸¸ ÆÄÀÏÀ̰ųª ¹Ý´ëÀÇ °æ¿ìÀÔ´Ï´Ù. A + . /moved_dir # ¾îµð¿¡¼­ ¿Â ÆÄÀÏÀÎÁö¿¡ ´ëÇÑ ±â·Ï°ú ÇÔ²² Ãß°¡µÇ¾ú½À´Ï´Ù. M + . /moved_dir/README # ±â·Ï°ú ÇÔ²² Ãß°¡µÇ¾ú°í ·ÎÄÿ¡¼­ ¼öÁ¤µÇ¾ú½À´Ï´Ù. D . /stuff/fish.c # »èÁ¦µÇ±â·Î ¿¹¾àµÇ¾ú½À´Ï´Ù. A . /stuff/loot/bloo.h # Ãß°¡µÇ±â·Î ¿¹¾àµÇ¾ú½À´Ï´Ù. C . /stuff/loot/lump.c # Ãæµ¹ÀÌ ÀÖ½À´Ï´Ù. S . /stuff/squawk # ÀÌ ÆÄÀÏÀ̳ª µð·ºÅ丮´Â ºê·£Ä¡(branch)·Î ÀüȯµÇ¾ú½À´Ï´Ù. ÀÌ Ãâ·Â Çü½Ä¿¡¼­ svn status´Â ´Ù¼¸ °³ÀÇ ¹®ÀÚ¸¦ Ç¥½ÃÇÏ°í ±× ÈÄ¿¡ ¸î°³ÀÇ °ø¹éÀÌ Ç¥½ÃµÇ¸ç ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 À̸§ÀÌ ±× ÈÄ¿¡ Ç¥½ÃµÇ°í ÀÖ½À´Ï´Ù. ù¹ø° ¹®ÀÚ´Â ÆÄÀÏ ¶Ç´Â µð·ºÅ丮¿Í ±× ³»¿ë¿¡ ´ëÇÑ »óŸ¦ ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ¿©±â¼­ Ç¥½ÃµÇ´Â ÄÚµå´Â ´ÙÀ½°ú °°½À´Ï´Ù. A file_or_dir ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 file_or_dir Àº ÀúÀå¼Ò(repository)¿¡ Ãß°¡ ¿¹¾àµÇ¾ú½À´Ï´Ù. M file fileÀÇ ³»¿ëÀº º¯°æµÇ¾ú½À´Ï´Ù. D file_or_dir ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 file_or_dirÀº ÀúÀå¼Ò(repository)·Î¿¡¼­ »èÁ¦ ¿¹¾àµÇ¾ú½À´Ï´Ù. X dir µð·ºÅ丮 dirÀº ¹öÀüÈ­ µÇÁö ¾Ê¾ÒÁö¸¸ SubversionÀÇ ¿ÜºÎ Á¤ÀÇ¿¡ °ü·ÃµÇ¾î ÀÖ½À´Ï´Ù. ¿ÜºÎ Á¤ÀÇ¿¡ ´ëÇØ ÀÚ¼¼ÇÑ ³»¿ëÀº¸¦ º¸¼¼¿ä. ? file_or_dir ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 file_or_dirÀº ¹öÀü °ü¸®ÇÏ¿¡´Â ¾ø½À´Ï´Ù. (¶Ç´Â ) ¿É¼ÇÀ» svn status ¿¡ °Ç³×Áְųª ºÎ¸ð µð·ºÅ丮¿¡ svn:ignore ¼Ó¼ºÀ» ¼³Á¤ÇÏ¸é ¹°À½Ç¥¸¦ Ç¥½ÃÇÏÁö ¾Ê½À´Ï´Ù. ¹«½ÃµÇ´Â ÆÄÀÏ¿¡ ´ëÇØ ÀÚ¼¼ÇÑ Á¤º¸´Â ¸¦ º¸¼¼¿ä. ! file_or_dir ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 file_or_dirÀº ¹öÀü °ü¸®ÇÏ¿¡ ÀÖÁö¸¸ ¾ø¾îÁ³°Å³ª ºÒ¿ÏÀüÇÑ »óÅ¿¡ ÀÖ½À´Ï´Ù. Subversion ÀÌ¿ÜÀÇ Ä¿¸Çµå¸¦ »ç¿ëÇؼ­ »èÁ¦ÇßÀ» °æ¿ì ¿¡ ±× ¾ÆÀÌÅÛÀº ¾ø¾îÁú ¼ö ÀÖ½À´Ï´Ù. µð·ºÅ丮ÀÇ °æ¿ì¿¡ üũ¾Æ¿ôÀ̳ª °»½ÅÀÌ µµÁß¿¡ ÁߴܵǾú´Ù¸é ºÒ¿ÏÀüÇÑ »óÅ°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. svn update¸¦ »ç¿ëÇÏ¸é °ð¹Ù·Î ÀúÀå¼Ò(repository)·ÎºÎÅÍ ÆÄÀÏ ¶Ç´Â µð·ºÅ丮¸¦ Çѹø ´õ ²¨³¾ ¼ö°¡ ÀÖ½À´Ï´Ù. svn revert file¸¦ »ç¿ëÇÏ¸é ¾ø¾îÁø ÆÄÀÏÀ» º¹¿øÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ~ file_or_dir ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 file_or_dirÀº ÀÛ¾÷ º¹»ç¿Í ÀúÀå¼Ò¿¡ ¼­·Î ´Ù¸¥ ŸÀÔÀÇ °³Ã¼(object)·Î Á¸ÀçÇÏ°í ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÀúÀå¼Ò(repository)¿¡ ÀÖ´Â °ÍÀº ÆÄÀÏÀÌÁö¸¸ svn delete ³ª svn add¸¦ »ç¿ëÇÏÁö ¾Ê°í ÀÛ¾÷ º¹»ç¿¡¼­ ´ëÀÀÇÏ´Â ÆÄÀÏÀ» »èÁ¦ÇÑ ÈÄ °°Àº À̸§ÀÇ µð·ºÅ丮¸¦ ¸¸µç °æ¿ìÀÔ´Ï´Ù. C file file_or_dir´Â Ãæµ¹ »óÅ¿¡ ÀÖ½À´Ï´Ù. Áï °»½Å ó¸®Áß¿¡ ¼­¹ö·ÎºÎÅÍ ¹ÞÀº º¯°æÀº ÀÛ¾÷ º¹»ç¿¡ ´ç½ÅÀÌ ÇÑ º¯°æ ºÎºÐ°ú °ãÄ¡°í ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ÀúÀå¼Ò(repository)·Î º¯°æÀ» Ä¿¹ÔÇϱâ Àü¿¡ Ãæµ¹ ¹®Á¦¸¦ ÇØ°áÇØ¾ß ÇÕ´Ï´Ù. µÎ¹ø° ¹®ÀÚ´Â ÆÄÀÏ ¶Ç´Â µð·ºÅ丮ÀÇ ¼Ó¼ºÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù (ÀÚ¼¼ÇÏ°Ô´Â ÂüÁ¶Çϼ¼¿ä). ¸¸¾à MÀÌ Ç¥½ÃµÇ¾úÀ¸¸é ¼Ó¼ºÀÌ ¼öÁ¤µÈ °ÍÀ» ³ªÅ¸³»°í ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é °ø¹éÀÌ Ç¥½ÃµË´Ï´Ù. ¼¼¹ø°ÀÇ ¹®ÀÚ´Â ºóÄ­°ú L µÑ Áß Çϳª°¡ Ç¥½ÃµÇ¸ç L.svn Áß¿¡ Àá±×°í ÀÖ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. svn commit°¡ ½ÇÇàµÇ°í ÀÖ´Â µµÁß¿¡ svn status¸¦ ½ÇÇàÇϸé LÀÌ Ç¥½ÃµË´Ï´Ù. ¾Æ¸¶ ´ç½ÅÀº ·Î±× ¸Þ¼¼Áö¸¦ º¯°æÇÏ°í ÀÖÀ» °ÍÀÔ´Ï´Ù. SubversionÀÌ ½ÇÇàÁßÀÌÁö ¾Ê´Ù¸é ¾Æ¸¶ SubversionÀÌ ½ÇÇàÁß¿¡ ÁߴܵǾ Àá±ÝÀ» ÇØÁ¦ÇÏÁö ¸øÇßÀ» °ÍÀÔ´Ï´Ù. svn cleanupÀ» ½ÇÇàÇÏ¿© Àá±ÝÀ» ÇØÁ¦ÇØ¾ß ÇÕ´Ï´Ù(ÀÌ ÀåÀÇ µÞºÎºÐ¿¡¼­ Á» ´õ ´Ù·ì´Ï´Ù). ³×¹ø°ÀÇ ¹®ÀÚ´Â °ø¹éÀ̳ª +°¡ Ç¥½ÃµÇ¸ç Ãß°¡ ¶Ç´Â ¼öÁ¤µÇ¾î ±×°ÍÀÌ È÷½ºÅ丮¿¡ Ãß°¡ ¿¹¾àµÇ¾î ÀÖ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ÀÌ°ÍÀº ÆÄÀÏÀ̳ª µð·ºÅ丮¿¡ ´ëÇØ svn move³ª svn copy¸¦ ÇßÀ» ¶§¿¡ Àß ÀϾ´Ï´Ù. A  +ÀÇ Ç¥½Ã°¡ ÀÖ´Â °æ¿ì ±× ¾ÆÀÌÅÛÀº È÷½ºÅ丮 Æ÷ÇÔÀÇ Ãß°¡ ¿¹¾àµÇ¾î ÀÖ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ±×°ÍÀº ÆÄÀÏÀ̰ųª º¹»çµÈ µð·ºÅ丮ÀÇ ·çÆ®ÀÔ´Ï´Ù. +´Â ±× ¾ÆÀÌÅÛÀÌ È÷½ºÅ丮¿¡ Ãß°¡ ¿¹¾àµÈ ¼­ºê Æ®¸®ÀÇ ÀϺÎÀÎ °ÍÀ» ÀǹÌÇÕ´Ï´Ù. Áï ±× ¾ÆÀÌÅÛÀÇ ºÎ¸ð°¡ Ä«ÇǵǾî Ä¿¹ÔÀ» ±â´Ù¸®°í ÀÖ½À´Ï´Ù. M  + ´Â ¾ÆÀÌÅÛÀÌ È÷½ºÅ丮 ¿¡ Ãß°¡ ¿¹°íµÈ ¼­ºê Æ®¸®ÀÇ ÀϺÎÀ̸ç ÇÑÆí ·ÎÄÿ¡¼­ º¯°æµÈ ÀûÀÌ ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. Ä¿¹ÔÇÒ ¶§ °¡Àå óÀ½À¸·Î ºÎ¸ð°¡ È÷½ºÅ丮¿Í ÇÔ²² Ãß°¡µË´Ï´Ù(º¹»çµË´Ï´Ù). ±× Àǹ̴ ÀÌ ÆÄÀÏÀº Ä«ÇÇ¿¡ ÀÚµ¿ÀûÀ¸·Î Á¸ÀçÇÑ´Ù°í ÇÏ´Â °Í ÀÔ´Ï´Ù. ±× ´ÙÀ½¿¡ ·ÎÄÃÀÇ º¯°æÁ¡Àº Ä«ÇÇ¿¡ ¾÷·ÎµåµË´Ï´Ù. ´Ù¼¸¹ø° ¹®ÀÚ´Â °ø¹éÀ̳ª S°¡ Ç¥½ÃµË´Ï´Ù. ÆÄÀÏÀ̳ª µð·ºÅ丮´Â ÀÛ¾÷ º¹»çÀÇ ³ª¸ÓÁö °æ·Î(path)·ÎºÎÅÍ (svn switch ¸í·É¿¡ ÀÇÇØ) ºê·£Ä¡·Î ¹Ù²ï °ÍÀ» ÀǹÌÇÕ´Ï´Ù. svn status¿¡ °æ·Î(path)¸¦ ÁöÁ¤ÇÏ¸é ±× °æ·Î¿¡ ´ëÇÑ Á¤º¸¸¸À» Ç¥½ÃÇÕ´Ï´Ù. $ svn status stuff/fish.c D stuff/fish.c svn statusµµ () ¿É¼ÇÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. ±× °æ¿ì ÀÛ¾÷ º¹»çÀÇ (º¯°æµÇÁö ¾ÊÀº ÆÄÀϵµ Æ÷ÇÔÇÏ¿©) ¸ðµç ¾ÆÀÌÅÛÀÇ »óŸ¦ Ç¥½ÃÇÕ´Ï´Ù. $ svn status --verbose M 44 23 sally . /README 44 30 sally . /INSTALL M 44 20 harry . /bar.c 44 18 ira . /stuff 44 35 harry . /stuff/trout.c D 44 19 ira . /stuff/fish.c 44 21 sally . /stuff/things A 0 ? ? . /stuff/things/bloo.h 44 36 harry . /stuff/things/gloo.c ÀÌ°ÍÀº svn statusÀÇ ±ä Ç¥½Ã Çü½Ä Ãâ·ÂÀÔ´Ï´Ù. ù¹ø° ¿­(column)Àº °°½À´Ï´Ù¸¸ µÎ¹ø° ¿­Àº ¾ÆÀÌÅÛÀÇ ÀÛ¾÷ ¸®ºñÀü ÀÔ´Ï´Ù. ¼¼¹ø°¿Í ³×¹ø°´Â °¢°¢ ¾ÆÀÌÅÛÀÌ ¸¶Áö¸·¿¡ º¯°æµÈ ¸®ºñÀü°ú ´©°¡ º¯°æÇß´ÂÁö Ç¥½ÃÇÕ´Ï´Ù. Áö±Ý±îÁö ³ª¿Â svn statusÀÇ ½ÇÇàÀº ¸ðµÎ ÀúÀå¼Ò(repository)¿Í Åë½ÅÀ» ÇÏÁö ¾Ê½À´Ï´Ù. ±×°ÍÀº ´ÜÁö ÀÛ¾÷ º¹»ç¾È¿¡¼­ .svn µð·ºÅ丮ÀÇ ¸ÞŸµ¥ÀÌŸ¸¦ ºñ±³ÇÔÀ¸·Î½á ·ÎÄà ¸Ó½Å»ó¿¡¼­¸¸ µ¿ÀÛÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î () ¿É¼ÇÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ÀúÀå¼Ò(repository)¿Í Åë½ÅÇؼ­ Ãֽź¸´Ù ³°Àº(out of date) »óÅ¿¡ °ü°èÇÑ Á¤º¸¸¦ Ãß°¡ Ç¥½ÃÇÕ´Ï´Ù. $ svn status --show-updates --verbose M * 44 23 sally . /README M 44 20 harry . /bar.c * 44 35 harry . /stuff/trout.c D 44 19 ira . /stuff/fish.c A 0 ? ? . /stuff/things/bloo.h µÎ º°Ç¥¿¡ ÁÖÀÇÇϼ¼¿ä. ÀÌ »óÅ·Πsvn update¸¦ ½ÇÇàÇϸé README¿Í trout.c ÀÇ º¯°æÁ¡À» ¹Þ°Ô µË´Ï´Ù. ÀÌ°ÍÀº ¸Å¿ì µµ¿òÀÌ µÇ´Â Á¤º¸ÀÔ´Ï´Ù. ´ç½ÅÀº Ä¿¹ÔÇϱâ Àü¿¡ README¿¡ °üÇÑ ¼­¹ö»óÀÇ º¯°æÁ¡À» ¹Þ¾Æ¿Í¼­ °»½ÅÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÃÖ½ÅÀÌ ¾Æ´Ï¶ó´Â ÀÌÀ¯·Î Ä¿¹ÔÀº ½ÇÆÐÇÏ°ÚÁö¿ä(ÀÚ¼¼ÇÏ°Ô´Â ´ÙÀ½¿¡ ¸»ÇÕ´Ï´Ù). <command>svn diff</command> ÀÚ½ÅÀÇ º¯°æÁ¡À» Á¶»çÇÏ´Â ´Ù¸¥ ¹æ¹ýÀº svn diff ¸í·ÉÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. svn diff¸¦ Àμö ¾øÀÌ ½ÇÇàÇϸé ÀÚ½ÅÀÌ ¾î¶² º¯°æÀ» Çß´ÂÁö Á¤È®ÇÏ°Ô ¾Ë ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ ¶§ÀÇ Ãâ·Â Çü½ÄÀº unified diff Çü½ÄÀÔ´Ï´Ù: SubversionÀº ³»ºÎ diff ¿£ÁøÀ» ÀÌ¿ëÇؼ­ unified diff Çü½ÄÀ» »ý¼ºÇÕ´Ï´Ù. ¸¸¾à ´Ù¸¥ Çü½ÄÀÇ diff Ãâ·ÂÀ» °®°í ½ÍÀº °æ¿ì¿¡´Â ·Î ¿ÜºÎ diff ÇÁ·Î±×·¥À» ÁöÁ¤ÇÏ°í ¿É¼ÇÀ» »ç¿ëÇØ Ç÷¡±×¸¦ °Ç³×ÁÖ¼¼¿ä. ¿¹¸¦ µé¾î ÆÄÀÏ foo.cÀÇ ·ÎÄà º¯°æÁ¡À» context Ãâ·Â Çü½Ä¿¡¼­ º¸°í ½ÍÁö¸¸ °ø¹éÀÇ º¯°æÀº ¹«½ÃÇÏ°í ½ÍÀº °æ¿ì snv diff --diff-cmd /usr/bin/diff --extensions '-bc' foo.c ¿Í °°ÀÌ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. $ svn diff Index: . /bar.c =================================================================== --- . /bar.c +++ . /bar.c Mon Jul 15 17:58:18 2002 @@ -1, 7 +1, 12 @@ +#include <sys/types.h> +#include <sys/stat.h> +#include <unistd.h> + +#include <stdio.h> int main(void) { - printf("Sixty-four slices of American Cheese...\n"); + printf("Sixty-five slices of American Cheese...\n"); return 0; } Index: . /README =================================================================== --- . /README +++ . /README Mon Jul 15 17:58:18 2002 @@ -193, 3 +193, 4 @@ +Note to self: pick up laundry. Index: . /stuff/fish.c =================================================================== --- . /stuff/fish.c +++ . /stuff/fish.c Mon Jul 15 17:58:18 2002 -Welcome to the file known as 'fish'. -Information on fish will be here soon. Index: . /stuff/things/bloo.h =================================================================== --- . /stuff/things/bloo.h +++ . /stuff/things/bloo.h Mon Jul 15 17:58:18 2002 +Here is a new file to describe +things about bloo. svn diff ¸í·ÉÀº .svn ¿¡ ÀÖ´Â ¼öÁ¤¿ø ¸®ºñÀü(pristine)°ú ÀÛ¾÷ º¹»ç ¾ÈÀÇ ÆÄÀÏÀ» ºñ±³ÇÑ °á°ú¸¦ Ãâ·ÂÇÕ´Ï´Ù. Ãß°¡ ¿¹¾àµÈ ÆÄÀÏÀº ¸ðµÎ Ãß°¡µÈ ÅؽºÆ®·Î¼­ Ç¥½ÃµÇ°í »èÁ¦ ¿¹°íµÇ°í ÀÖ´Â ÆÄÀÏÀº ¸ðµÎ »èÁ¦µÈ ÅؽºÆ®·Î Ç¥½ÃµË´Ï´Ù. Ãâ·ÂÀº unified diff Çü½ÄÀ¸·Î Ç¥½ÃµË´Ï´Ù. Áï »èÁ¦µÈ ÁÙÀº ¾Õ¿¡ -°¡ Ç¥½ÃµÇ°í Ãß°¡µÈ ÁÙÀº ¾Õ¿¡ +°¡ Ç¥½ÃµË´Ï´Ù. svn diff´Â patch ÇÁ·Î±×·¥¿¡ À¯¿ëÇÏ´Ù·Ï ÆÄÀÏ À̸§°ú ¿ÀÇÁ¼Â(offset) Á¤º¸¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ diffÀÇ Ãâ·ÂÀ» ÆÄÀÏ¿¡ ¾²´Â °ÍÀ¸·Î ÆÐÄ¡¸¦ »ý¼ºÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù: $ svn diff > patchfile ¿¹¸¦ µé¾î ÆÐÄ¡ ÆÄÀÏÀ» ´Ù¸¥ °³¹ßÀÚ¿¡°Ô º¸³» Ä¿¹ÔÀü¿¡ Àç°ËÅ䳪 Å×½ºÆ®¸¦ ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. <command>svn revert</command> À§ÀÇ diff Ãâ·ÂÀ» º¸°í READMEÀ» À߸ø ¼öÁ¤ÇÑ °ÍÀ» ¾Ë¾Ò´Ù°í ÇսôÙ. ÀÌ°ÍÀº svn revert¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ¸Å¿ì ÁÁÀº ±âȸÀÔ´Ï´Ù. $ svn revert README Reverted . /README SubversionÀº ±× ÆÄÀÏÀ».svn¿¡ ÀÖ´Â ¼öÁ¤¿ø ¸®ºñÀü¿¡ ÀÖ´Â °ÍÀ¸·Î µ¤¾î½á¼­ ¼öÁ¤Çϱâ ÀüÀ¸·Î µÇµ¹¸³´Ï´Ù. ±×·¯³ª svn revert°¡ ¾î¶°ÇÑ ¿¹¾à Á¶ÀÛµµ Ãë¼ÒÇÒ ¼ö°¡ Àִµ¥ ÁÖÀÇÇϼ¼¿ä. ¿¹¸¦ µé¾î ÃÖÁ¾ÀûÀ¸·Î »õ·Î¿î ÆÄÀÏÀ» Ãß°¡ÇÏ´Â °ÍÀ» ±×¸¸µÑ ¼ö°¡ ÀÖ½À´Ï´Ù. $ svn status foo ? foo $ svn add foo A foo $ svn revert foo Reverted foo $ svn status foo ? foo svn revert ITEMÀº ÀÛ¾÷ Ä«ÇǷκÎÅÍ ITEMÀ» »èÁ¦ÇÏ°í svn update ITEMÀ» ½ÇÇàÇÑ °Í°ú ¿ÏÀüÈ÷ °°Àº È¿°ú°¡ ÀÖ½À´Ï´Ù. ±×·¯³ª ¸¸¾à ÆÄÀÏÀ» ±âÃÊ·Î µÇµ¹¸°´Ù¸é svn revert¿¡´Â ÇÑ °¡Áö Áß¿äÇÑ Â÷ÀÌ°¡ Àִµ¥ ±×°ÍÀº ÆÄÀÏÀ» ¹ÙÅÁÀ¸·Î µÇµ¹¸®±â À§Çؼ­ ÀúÀå¼Ò¿Í Åë½ÅÇÒ ÇÊ¿ä°¡ ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. ȤÀº ½Ç¼ö·Î ¹öÀü °ü¸®·ÎºÎÅÍ ÆÄÀÏÀ» Áö¿ö¹ö·ÈÀ»Áöµµ ¸ð¸¨´Ï´Ù. $ svn status README README $ svn delete README D README $ svn revert README Reverted README $ svn status README README ¾ö¸¶ ³×Æ®¿öÅ©°¡ ¾ø¾îµµ µÅ! Áö±Ý±îÁö ºÁ ¿Â ¼¼ °³ÀÇ ¸í·É(svn status, svn diff, svn revert) ´Â ³×Æ®¿öÅ©¿¡ ´ëÇÑ ¾×¼¼½º¾øÀÌ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ¸·Î ºñÇà±â ¿©ÇàÁß¿¡³ª Åë±Ù ÀüöÀ» Ÿ°í ÀÖÀ» ¶§ Çعø¿¡¼­ ÄÄÇ»Å͸¦ ¾µ ¶§Ã³·³ ³×Æ®¿öÅ©¿¡ Á¢¼ÓµÇ¾î ÀÖÁö ¾ÊÀº Àå¼Ò¿¡¼­µµ ¼öÁ¤ ÀÛ¾÷À» °è¼Ó °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº SubversionÀÌ .svn °ü¸® ¿µ¿ª¿¡ ¼öÁ¤¿ø ¸®ºñÀü ÆÄÀÏÀÇ Ä³½¬¸¦ º¸Á¸ÇÔÀ¸·Î½á °¡´ÉÇÕ´Ï´Ù. ÀÌ°ÍÀ¸·Î Subversion´Â ³×Æ®¿öÅ©¿¡ Á¢¼ÓÇÏÁö ¾Ê°í ÆÄÀÏ¿¡ °üÇÑ º¸°í³ª ¼öÁ¤»çÇ×ÀÇ Ãë¼Ò¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç ÀÌ Ä³½¬("text-base"·Î ºÒ¸³´Ï´Ù)´Â ·ÎÄà ¼öÁ¤À» ¼­¹ö¿¡ Ä¿¹ÔÇÒ ¶§¿¡ ¼öÁ¤¿ø ¹öÀü°úÀÇ Â÷ÀÌÁ¡¸¸À» ¾ÐÃàÇؼ­ º¸³¾ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ÀÌ Ä³½¬¸¦ °¡Áö°í ÀÖ´Â °ÍÀº ¸Å¿ì Å« ÀÌÀÍÀÌ µË´Ï´Ù. ºü¸¥ ³×Æ®¿öÅ© ȯ°æÀ̶ó°íÇصµ ÆÄÀÏ Àüü¸¦ Àü¼Û ÇÏ´Â °Íº¸´Ù Â÷ÀÌÁ¡¸¸À» º¸³»´Â ÆíÀÌ ÈξÀ ºü¸¦ °ÍÀÔ´Ï´Ù. óÀ½¿¡´Â ±×·¸°Ô Áß¿äÇÑ ÀÏó·³ »ý°¢µÇÁö ¾ÊÀ»Áöµµ ¸ð¸¨´Ï´Ù¸¸ ¸¸¾à ÆÄÀÏÀ» ÀüºÎ Àü¼ÛÇØ¾ß ÇÑ´Ù¸é 400 MBÀÇ ÆÄÀÏÀ» ÇÑ ÁÙ¸¸ ¹Ù²å´Âµ¥µµ Ä¿¹ÔÇÒ ¶§ ÆÄÀÏ Àüü¸¦ ¼­¹ö¿¡ Àü¼ÛÇØ¾ß ÇÑ´Ù°í »ý°¢Çغ¸¼¼¿ä! Ãæµ¹ÀÇ ÇؼÒ(´Ù¸¥ »ç¶÷ÀÇ º¯°æÁ¡°ú Merge) ÀÌÁ¦ svn status -u°¡ ¾î¶»°Ô Ãæµ¹À» ¿¹°íÇÒ ¼ö ÀÖ´ÂÁö¸¦ ¾Ë°í ÀÖ½À´Ï´Ù. svn update ¸¦ ½ÇÇàÇß´õ´Ï Àç¹ÌÀÖ´Â ÀÏÀÌ ÀϾ´Ù°í ÇսôÙ. $ svn update U . /INSTALL G . /README C . /bar.c U¿Í G·Î Ç¥½ÃµÈ ÆÄÀÏÀº Ưº°È÷ »ý°¢ÇÒ °ÍÀÌ ¾ø½À´Ï´Ù. ÀÌ µÑÀº ÀúÀå¼Ò(repository)·ÎºÎÅÍÀÇ º¯°æÀ» Àß ¹Þ¾Æµé¿´½À´Ï´Ù. U·Î Ç¥½ÃµÈ ÆÄÀÏÀº ·ÎÄÿ¡¼­´Â ¾î¶² º¯°æµµ ¾ø¾ú½À´Ï´Ù. µû¶ó¼­ ÀúÀå¼Ò·ÎºÎÅÍÀÇ º¯°æ »çÇ×À» ¹Þ¾Æ¼­ °»½Å(Updated)µÇ¾ú½À´Ï´Ù. G´Â ÇÕÃÄÁ³À½( merGed)À» ÀǹÌÇÕ´Ï´Ù. Áï ÆÄÀÏÀÌ ·ÎÄÿ¡¼­ º¯°æµÇ¾úÁö¸¸ ÀúÀå¼Ò¿¡¼­ÀÇ º¯°æ ºÎºÐ°ú´Â ÀüÇô °ãÄ¡Áö ¾Ê¾Ò½À´Ï´Ù. ±×·¯³ª C´Â Ãæµ¹À» ³ªÅ¸³À´Ï´Ù. ÀÌ°ÍÀº ¼­¹ö·ÎºÎÅÍÀÇ º¯°æ »çÇ×ÀÌ ´ç½ÅÀÇ º¯°æ»çÇ×°ú °ãÄ¡´Â °ÍÀ» ÀǹÌÇÏ¸ç ´ç½ÅÀº ¾î´À ÂÊÀÎÁö¸¦ Á÷Á¢ ¼±ÅÃÇØ¾ß ÇÕ´Ï´Ù. ¸¸¾à Ãæµ¹ÀÌ ÀϾ´Ù¸é Subversion Ŭ¶óÀ̾ðÆ®´Â ´ÙÀ½ÀÇ ¼¼ °¡Áö ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù: SubversionÀº °»½Å(update) ó¸®Áß¿¡ C¸¦ Ç¥½ÃÇØ ±× ÆÄÀÏÀÌ Ãæµ¹ÀÌ ÀÖÀ½À» ¾Ë¸³´Ï´Ù. SubversionÀº Ãæµ¹ Ç¥Áö¸¦ °ãÄ¡°í ÀÖ´Â Àå¼Ò¿¡ µÎ¾î Ãæµ¹ÀÌ ÀϾ ³»¿ëÀ» º¸°í ¾Ë ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. Ãæµ¹ÀÌ ÀÖ´Â ÆÄÀÏÀ̸§ÀÇ µÚ¿¡ ƯÁ¤ÇÑ Ç¥½Ã(¹®ÀÚ¸¦ µ¡ºÙÀÓ)¸¦ °¢°¢ ºÙÀÎ ¼¼ °³ÀÇ Ãß°¡ ÆÄÀÏÀ» ÀÛ¾÷ º¹»ç¿¡ ¸¸µì´Ï´Ù. filename.mine ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇϱâ Àü¿¡ ÀÛ¾÷ º¹»ç¿¡ ÀÖ´ø ÆÄÀÏ ÀÔ´Ï´Ù. Áï Ãæµ¹ Ç¥Áö(¾î¶² ºÎºÐ¿¡¼­ Ãæµ¹ÀÌ ÀÖ¾ú´ÂÁö¸¦ º¸¿©ÁÖ´Â)¸¦ Æ÷ÇÔÇÏ°í ÀÖÁö ¾Ê½À´Ï´Ù. ÀÌ ÆÄÀÏÀº ´ç½ÅÀÌ ÇÑ ¸¶Áö¸· º¯°æÀÌ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. filename.rOLDREV ÀÌ°ÍÀº ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇϱâ ÀüÀÇ BASE(.svn¿¡ ÀúÀåµÇ¾î ÀÖ´Â) ¸®ºñÀü¿¡ ÀÖ´ø ÆÄÀÏ ÀÇ ³»¿ëÀÔ´Ï´Ù. Áï ±× ÆÄÀÏÀº ¸¶Áö¸·¿¡ ÆíÁýÇÑ ÆÄÀÏÀÇ Á÷Àü »óÅ Áï üũ¾Æ¿ô ½ÃÁ¡¿¡¼­ÀÇ ÆÄÀÏÀÔ´Ï´Ù. filename.rNEWREV ÀÌ°ÍÀº Subversion Ŭ¶óÀ̾ðÆ® ÇÁ·Î±×·¥ÀÌ ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇϸ鼭 ¼­¹ö·ÎºÎÅÍ ¹ÞÀº ÆÄÀÏÀÔ´Ï´Ù. ÀÌ°ÍÀº ÀúÀå¼ÒÀÇ HEAD ¸®ºñÀü ¿¡ ´ëÀÀÇÏ°í ÀÖ½À´Ï´Ù. ¿©±â¼­ OLDREVÀº .svn µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀÏÀÇ ¸®ºñÀü ¹øÈ£ÀÌ°í NEWREV´Â ÀúÀå¼Ò¿¡ ÀÖ´Â HEADÀÇ ¸®ºñÀü ¹øÈ£ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î Sally°¡ ÀúÀå¼Ò¿¡ ÀÖ´Â sandwich.txt ÆÄÀÏÀ» º¯°æÇß´Ù°í ÇսôÙ. Harry´Â ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç¿¡¼­ ±× ÆÄÀÏ (sandwich.txt) ÆÄÀÏÀ» º¯°æÇÏ°í Ä¿¹ÔÇÕ´Ï´Ù. Sally´Â Ä¿¹ÔÇϱâ Àü¿¡ ÀÛ¾÷ Ä«ÇǸ¦ °»½ÅÇÕ´Ï´Ù¸¸. Áï °°Àº REV¸¦ Sally¿Í Harry°¡ ¼öÁ¤ÇÏ°í Harry°¡ Sallyº¸´Ù ¸ÕÀú commitÇßÀ»¶§ Sally°¡ commit¸¦ ÇÏ·Á°í ÇÒ ¶§ Sally´Â ´ÙÀ½°ú °°Àº Ãæµ¹ÀÇ º¸°í¸¦ ¹Þ½À´Ï´Ù. $ svn update C sandwich.txt Updated to revision 2. $ ls -1 sandwich.txt sandwich.txt.mine sandwich.txt.r1 sandwich.txt.r2 ÀÌ ¶§ Subversion´Â ¼¼ °³ÀÇ Àӽà ÆÄÀÏÀÌ »èÁ¦µÉ ¶§±îÁö sandwich.txtÀÇ Ä¿¹ÔÀ» Çã°¡ ÇÏÁö ¾Ê½À´Ï´Ù. $ svn commit --message "Add a few more things" svn: A conflict in the working copy obstructs the current operation svn: commit failed (details follow): svn: Aborting commit: '/home/sally/svn-work/sandwich.txt' remains in conflict. ¸¸¾à Ãæµ¹ÀÌ ¹ß»ýÇßÀ» °æ¿ì¿¡´Â ´ÙÀ½ÀÇ ¼¼ °¡Áö ¹æ¹ýÁß ÇÑ °¡Áö¸¦ ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ¼ÕÀ¸·Î Ãæµ¹ ÅؽºÆ®¸¦ ÇÕĨ´Ï´Ù( ÆÄÀÏÁßÀÇ Ãæµ¹ Ç¥Áö¸¦ º¸°í ÆíÁýÇÏ¿©). ÀÛ¾÷ ÆÄÀÏ¿¡ Àӽà ÆÄÀÏ Áß¿¡ Çϳª¸¦ µ¡¾²±âÇÕ´Ï´Ù. svn revert <filename>¸¦ ½ÇÇàÇØ ·ÎÄÿ¡¼­ÀÇ ¸ðµç º¯°æÀ» ¹ö¸³´Ï´Ù. Ãæµ¹À» ÇØ°áÇϸé svn resolved¸¦ ½ÇÇàÇؼ­ Subversion¿¡ ±×°ÍÀ» ¾Ë·Á¾ß ÇÕ´Ï´Ù. ÀÌ°ÍÀº ¼¼ °³ÀÇ ÀÓ½ÃÆÄÀÏÀ» »èÁ¦ÇØ SubversionÀº ÀÌÁ¦ ÇØ´ç ÆÄÀÏÀÌ Ãæµ¹ »óÅ¿¡ ÀÖ´Ù°í »ý°¢ÇÏÁö ¾Ê°Ô µË´Ï´Ù. ´ç½ÅÀº Àӽà ÆÄÀÏÀ» Ç×»ó Á÷Á¢ »èÁ¦ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ SubversionÀÌ ´ç½ÅÀ» À§ÇØ ¸í·ÉÀ» ÁغñÇÏ°í Àִµ¥ Á¤¸»·Î ±×·±ÀÏÀ» ÇÏ°í ½ÍÀ¸½Ê´Ï±î? ±×·¸°Ô´Â »ý°¢µÇÁö ¾Ê½À´Ï´Ù¸¸. $ svn resolved sandwich.txt Resolved conflicted state of sandwich.txt Ãæµ¹À» ¼öµ¿À¸·Î Merge ¼öµ¿À¸·Î Ãæµ¹À» ÇÕÄ¡´Â °ÍÀº óÀ½¿¡´Â ¸Å¿ì ½ÈÀº ÀÏÀÌ°ÚÁö¸¸ Á¶±Ý ¿¬½ÀÇÏ¸é ¿ÀÅä¹ÙÀÌ¿¡¼­ ³»¸®´Â °Í°ú °°ÀÌ °£´ÜÇÏ°Ô ÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î ´ç½Å°ú ´ç½ÅÀÇ µ¿·á SallyÀÇ ´ëÈ­ ºÎÁ·À¸·Î ÀÎÇØ µÎ »ç¶÷ÀÌ sandwich.txt¶ó´Â ÆÄÀÏÀ» µ¿½Ã¿¡ ÆíÁýÇß´Ù°í ÇսôÙ. Sally´Â ÀÚ½ÅÀÇ º¯°æÀ» Ä¿¹ÔÇß°í ´ç½ÅÀÌ ÀÛ¾÷ Ä«ÇǸ¦ °»½ÅÇÏ·Á°í Çϸé Ãæµ¹ÀÌ ÀϾ´Ï´Ù. ±×·¡¼­ Ãæµ¹À» ÇØ°áÇϱâ À§ÇØ sandwich.txt¸¦ ÆíÁýÇØ¾ß ÇÕ´Ï´Ù. ÆÄÀÏÀ» º¸°Ú½À´Ï´Ù. $ cat sandwich.txt Top piece of bread Mayonnaise Lettuce Tomato Provolone <<<<<<< . mine Salami Mortadella Prosciutto ======= Sauerkraut Grilled Chicken >>>>>>> . r2 Creole Mustard Bottom piece of bread ÀÛ´Ù °°´Ù Å©´Ù´Â ±âÈ£´Â Ãæµ¹ Ç¥ÁöÀÔ´Ï´Ù. ¾ÕºÎºÐÀÇ µÎ ±âÈ£·Î µÑ·¯½ÎÀÎ ºÎºÐÀº ´ç½ÅÀÌ °íÄ£ °ÍÀÔ´Ï´Ù. <<<<<<< . mine Salami Mortadella Prosciutto ======= ±×¸®°í µÎ ¹ø°¿Í ¼¼ ¹ø°ÀÇ Ãæµ¹ Ç¥½Ã »çÀÌÀÇ ÅؽºÆ®´Â Sally°¡ Ä¿¹ÔÇÑ ºÎºÐÀÔ´Ï´Ù. ======= Sauerkraut Grilled Chicken >>>>>>> . r2 º¸Åë Ãæµ¹ Ç¥Áö¿Í SallyÀÇ º¯°æ ºÎºÐÀ» ±×³É »èÁ¦Çعö¸®°í ½ÍÁö´Â ¾ÊÀ» °ÍÀÔ´Ï´Ù. ±×·± ÀÏÀ» Çϸé Sally°¡ sandwich¸¦ ¹Þ¾ÒÀ» ¶§¿¡ ³î¶ó°í ±×°ÍÀº ±×³à°¡ ¹Ù¶ó´Â ÀÏÀº ¾Æ´Ò °ÍÀÔ´Ï´Ù. ´ç½ÅÀº ÀüÈ­¸¦ °ÉµçÁö »ç¹«½ÇÀ» °Ç³Ê°¡¼­ Sally¿¡°Ô ÀÌÅ»¸®¾Æ À½½ÄÁ¡¿¡¼­´Â ¼Ò±Ý¿¡ ÀýÀÎ ¾ç¹èÃß(sauerkraut)¸¦ »ì ¼ö ¾ø´Ù°í ¼³¸íÇØ ÁÝ´Ï´Ù(µÎ ¸íÀÇ º¯°æÀÌ Ãæµ¹ÇÏ°í ÀÖ´Â °ÍÀ» ¼³¸íÇÕ´Ï´Ù). ±×¸®°í ´ç½ÅÀÌ ÁÖ¹®ÇÏ¸é ±×µéÀº ´ç½ÅÀ» ±âÂ÷¿¡ Å¿ö¼­ ¸¶À»ÀÇ ¹ÛÀ¸·Î º¸³»¹ö¸± Áöµµ ¸ô¶ó¿ä. Ä¿¹ÔÇÒ º¯°æ ³»¿ë¿¡ ´ëÇØ ÇÕÀǸ¦ ÇßÀ¸¸é ÆÄÀÏÀ» ÆíÁýÇØ Ãæµ¹ Ç¥Áö¸¦ »èÁ¦ÇÕ´Ï´Ù. Top piece of bread Mayonnaise Lettuce Tomato Provolone Salami Mortadella Prosciutto Creole Mustard Bottom piece of bread ÀÌÁ¦ svn resolved¸¦ ½ÇÇàÇÏ°í Ä¿¹ÔÇÕ´Ï´Ù. $ svn resolved sandwich.txt $ svn commit -m "Go ahead and use my sandwich, discarding Sally's edits. " Ãæµ¹ÀÌ ÀÖ´Â ÆÄÀÏÀ» °íÄ¡´Â Áß¿¡ È¥¶õ½º·´´Ù¸é ¾ðÁ¦³ª SubvervionÀÌ ´ç½ÅÀ» À§Çؼ­ ¸¸µç ÀÛ¾÷ º¹»ç¿¡ ÀÖ´Â ¼¼ °³ÀÇ Àӽà ÆÄÀÏÀ» Âü°íÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× Áß¿¡´Â °»½ÅÀü¿¡ ´ç½ÅÀÌ ¼öÁ¤ÇÑ ¹öÀüÀÇ ÆÄÀϵµ ÀÖ½À´Ï´Ù. ÀÛ¾÷ ÆÄÀÏ À§¿¡ ÆÄÀÏÀ» Ä«ÇÇÇϱâ Ãæµ¹ÀÌ ÀϾ»ç ÀÚ½ÅÀÌ ÇÑ º¯°æÀ» ¹«½ÃÇÏ·Á°í ÇÒ °æ¿ì¿¡´Â SubversionÀÌ ¸¸µç Àӽà ÆÄÀÏ Áß Çϳª¸¦ ´Ü¼øÈ÷ ÀÛ¾÷ ÆÄÀÏ¿¡ µ¤¾î¾²¸é µË´Ï´Ù. $ svn update C sandwich.txt Updated to revision 2. $ ls sandwich. * sandwich.txt sandwich.txt.mine sandwich.txt.r2 sandwich.txt.r1 $ cp sandwich.txt.r2 sandwich.txt $ svn resolved sandwich.txt $ svn commit -m "Go ahead and use Sally's sandwich, discarding my edits. " Punting: <command>svn revert</command>ÀÇ ÀÌ¿ë Ãæµ¹ÀÌ ÀϾ Á¶»ç °á°ú ÀÚ½ÅÀÇ º¯°æÀ» ¹ö¸®°í ÆíÁýÀ» ´Ù½Ã ÇÏ´Â °æ¿ì´Â ´ÜÁö º¯°æÀ» ¿ø·¡´ë·Î µÇµ¹¸³´Ï´Ù. $ svn revert sandwich.txt Reverted sandwich.txt $ ls sandwich. * sandwich.txt Ãæµ¹ ÆÄÀÏÀ» ¿ø·¡´ë·Î µÇµ¹¸± ¶§´Â svn resolved¸¦ ½ÇÇàÇÒ ÇÊ¿ä°¡ ¾ø´Â °Í¿¡ ÁÖÀÇÇϼ¼¿ä. ÀÌÁ¦ ´ç½ÅÀÇ º¯°æÀ» Ä¿¹ÔÇÒ Áغñ°¡ µÇ¾ú½À´Ï´Ù. svn resolved´Â ÀÌ Àå¿¡¼­ º» ´Ù¸¥ ´ëºÎºÐÀÇ Ä¿¸àµå¿Í´Â ´Þ¸® Àμö¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù. ¾î¶°ÇÑ °æ¿ì¿¡¼­µµ ÃæºÐÈ÷ ÁÖÀÇÇÏ°í ÆÄÀÏÁßÀÇ Ãæµ¹À» È®½ÇÈ÷ ÇØ°áÇÑ °æ¿ì¸¸ svn resolved ¸¦ ½ÇÇàÇϼ¼¿ä. Àӽà ÆÄÀÏÀÌ »èÁ¦µÇ¸é SubversionÀº ÆÄÀÏÀÌ Ãæµ¹ ¸¶Ä¿¸¦ Æ÷ÇÔÇÏ°í À־ Ä¿¹ÔÇÕ´Ï´Ù. º¯°æÁ¡À» Ä¿¹Ô µåµð¾î ¿©±â±îÁö ¿Ô½À´Ï´Ù. ¼­¹ö·ÎºÎÅÍÀÇ º¯°æÀ» ¸ðµÎ ÇÕÃÆ°í ÆíÁýÀº ¸ðµÎ ³¡³µ½À´Ï´Ù. ÀÌÁ¦ º¯°æÀ» ÀúÀå¼Ò¿¡ Ä¿¹Ô ÇÒ Áغñ°¡ ´Ù µÇ¾ú½À´Ï´Ù. svn commit ¸í·ÉÀº ´ç½ÅÀÇ ¸ðµç º¯°æÁ¡À» ÀúÀå¼Ò¿¡ º¸³À´Ï´Ù. Ä¿¹ÔÇÒ ¶§¿¡´Â ¹Ù²ïÁ¡À» ¼³¸íÇÏ´Â ·Î±× ¸Þ¼¼Áö¸¦ ÁÙ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ·Î±× ¸Þ¼¼Áö´Â ´ç½ÅÀÌ ¸¸µç »õ·Î¿î ¸®ºñÀü¿¡ ºÙ¿©Áý´Ï´Ù. ·Î±× ¸Þ¼¼Áö°¡ °£´ÜÇÑ °æ¿ì´Â (ȤÀº) ¿É¼ÇÀ» »ç¿ëÇØ ¸í·ÉÁÙ¿¡¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. $ svn commit --message "Corrected number of cheese slices. " Sending sandwich.txt Transmitting file data . Committed revision 3. ±×·¯³ª ¹ú½á ·Î±× ¸Þ¼¼Áö¸¦ ¸¸µé¾î µÐ °æ¿ì´Â ¿É¼Ç µÚ¿¡ ÆÄÀÏ À̸§À» ÁöÁ¤ÇÏ¿© SubversionÀÌ ±× ÆÄÀÏÀÇ ³»¿ëÀ» »ç¿ëÇϵµ·Ï Áö½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. svn commit --file logmsg Sending sandwich Transmitting file data . Comitted revision 4. ³ª ¿É¼ÇÀ» ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â ȯ°æ º¯¼ö$EDITOR·Î ÁöÁ¤ÇÑ ÆíÁý±â°¡ ¶°¼­ ·Î±× ¸Þ¼¼Áö¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. ¸¸¾à ÆíÁý±â¿¡¼­ ·Î±× ¸Þ½ÃÁö¸¦ ÆíÁýÇÏ´Ù°¡ ±× Ä¿¹ÔÀ» ÁßÁöÇÏ°í ½Í´Ù°í »ý°¢ÇßÀ» °æ¿ì¿¡´Â ±×Àú ÀúÀåÇÏÁö ¾Ê°í ÆíÁý±â¸¦ Á¾·áÇÏ¸é µË´Ï´Ù. ¹ú½á Ä¿¹Ô ¸Þ¼¼Áö¸¦ ÀúÀåÇß´Ù¸é ³»¿ëÀ» »èÁ¦ÇÏ°í ÇÑ ¹ø ´õ ÀúÀåÇØ ÁÖ¼¼¿ä. $ svn commit Waiting for Emacs...Done Log message unchanged or not specified a) bort, c) ontinue, e) dit a $ ÀúÀå¼Ò´Â º¯°æÁ¡ÀÇ ³»¿ë¿¡ Àǹ̰¡ ÀÖÀ»Áö ¾î¶³Áö´Â ÀüÇô ½Å°æ¾²Áö ¾Ê½À´Ï´Ù. Subversion´Â ´ç½ÅÀÌ ¼öÁ¤ÇÑ ÆÄÀÏÀ» ´Ù¸¥ »ç¶÷ÀÌ ¼öÁ¤ÇÏ°í ÀÖÁö ¾Ê´Â °Í¸¸À» È®ÀÎÇÕ´Ï´Ù. ¸¸¾à ´Ù¸¥ »ç¶÷ÀÌ ±×·¯ÇÑ º¯°æÀ» ÇÏ°í ÀÖÀ¸¸é Ä¿¹ÔÀº ´ç½ÅÀÇ º¯°æ ÇÑ ÆÄÀÏÀÇ ¾î¶² °ÍÀΰ¡°¡ ÃÖ½ÅÀÌ ¾Æ´Ï¶ó°í ÇÏ´Â ¸Þ¼¼Áö¸¦ º¸³» °í Ä¿¹ÔÀº ½ÇÆÐÇÕ´Ï´Ù. $ svn commit --message "Add another rule" Sending rules.txt svn: Transaction is out of date svn: commit failed (details follow): svn: out of date: `rules.txt' in txn `g' $ ÀÌ·¯ÇÑ °æ¿ì¿¡´Â svn update¸¦ ½ÇÇàÇÏ¿© ±× °á°ú·Î ³ª¿À´Â Ãæµ¹À» ÇؼÒÇÑ ÈÄ ÇÑ ¹ø ´õ Ä¿¹ÔÇØ ÁÖ¼¼¿ä. ÀÌ°ÍÀ¸·Î SubversionÀ» »ç¿ëÇÏ´Â ±âº»ÀûÀÎ ÀÛ¾÷ »çÀÌŬÀ» ¼³¸íÇß½À´Ï´Ù. Subversion¿¡´Â ÀÌ ±× ¹Û¿¡µµ ÀúÀå¼Ò³ª ÀÛ¾÷ º¹»ç¸¦ °ü¸®Çϱâ À§ÇÑ ¸¹Àº ±â´ÉÀÌ ÀÖ½À´Ï´Ù¸¸ ÀÌ Àå¿¡¼­ Áö±Ý±îÁö ¼³¸íÇØ ¿Â ¸í·É¸¸À» »ç¿ëÇصµ ¸Å¿ì ¸¹Àº ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. È÷½ºÅ丮 È®ÀÎÇϱâ ÀÌÀü¿¡ ¸»ÇÑ °Íó·³ ÀúÀå¼Ò´Â ŸÀÓ ¸Ó½Å°ú °°Àº °÷ÀÔ´Ï´Ù. Áö±Ý±îÁö Ä¿¹ÔµÈ ¸ðµç º¯°æÀ» ±â·ÏÇϱ⠶§¹®¿¡ ÆÄÀÏÀ̳ª µð·ºÅ丮 °Å±â¿¡ µþ¸° ¸ÞŸµ¥ÀÌŸÀÇ ÀÌÀü ¹öÀüÀ» º¸´Â °Í¿¡ ÀÇÇØ È÷½ºÅ丮¸¦ Á¶»çÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Subversion ¸í·É Çϳª·Î °ú°ÅÀÇ Æ¯Á¤ ÀÏÀÚ³ª ¸®ºñÀü ¹øÈ£ÀÇ ÀúÀå¼Ò »óŸ¦ üũ¾Æ¿ô(ȤÀº ¹ú½á ÀÖ´Â ÀÛ¾÷ Ä«ÇÇÀÇ º¹¿ø) ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª °ú°Å·Î µ¹¾Æ°¡Áö´Â ¾Ê°í ´ÜÁö °ú°Å°¡ ¾î¶°Çß´ÂÁö Á¶±Ý µé¿©´Ù º¸±â¸¸ ÇÏ°í ½ÍÀº Àϵµ ÀÚÁÖ ÀÖ½À´Ï´Ù. ÀúÀå¼Ò·ÎÀÇ È÷½ºÅ丮 µ¥ÀÌÅ͸¦ ´Ù·ç±â À§ÇÑ ¸í·ÉÀÌ ¸î °³ ÀÖ½À´Ï´Ù. svn log Àü¹ÝÀûÀÎ Á¤º¸¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¸®ºñÀü¿¡ µþ¸° ·Î±× ¸Þ¼¼Áö¿Í °¢°¢ÀÇ ¸®ºñÀü¿¡¼­ ¾î´À °æ·Î°¡ º¯°æµÇ¾ú´ÂÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù. svn diff ½Ã°£¿¡ µû¶ó ÆÄÀÏÀÌ ¾î¶»°Ô º¯°æµÇ¾î ¿Ô´ÂÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù. svn cat ƯÁ¤ ¸®ºñÀü ¹øÈ£¿¡¼­ ÆÄÀÏÀ» ÃßÃâÇØ È­¸é¿¡ Ç¥½ÃÇÕ´Ï´Ù. svn list ÁöÁ¤ÇÑ ¸®ºñÀüÀÇ ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ Ç¥½ÃÇÕ´Ï´Ù. <command>svn log</command> ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ È÷½ºÅ丮¿¡ °üÇÑ Á¤º¸¸¦ º¸°í ½ÍÀ» ¶§´Â svn log ¸í·ÉÀ» »ç¿ëÇϼ¼¿ä. svn log´Â ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ ´©°¡ º¯°æÇß´ÂÁö ¾î´À ¸®ºñÀüÀ» º¯°æÇÑ °ÍÀÎÁö ±× ¸®ºñÀüÀÇ ½Ã°¢°ú ³¯Â¥´Â ¾ðÁ¦ÀÎÁö ±×¸®°í Ä¿¹Ô¿¡ µþ¸° ·Î±× ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¾î´À ¸®ºñÀüÀ¸·Î ±×°ÍÀÌ º¯°æµÇ°í Àΰ¡ ±× ¸®ºñÀüÀÇ ½Ã°¢°ú ÀÏÀÚ ÇÑÃþ ´õ ¸¸¾à Á¸ÀçÇϸé Ä¿¹Ô¿¡ ºÎ¼ö ÇÑ ·Î±× ¸Þ¼¼Áö¸¦ Ç¥½ÃÇÕ´Ï´Ù. $ svn log ------------------------------------------------------------------------ r3 | sally | Mon, 15 Jul 2002 18:03:46 -0500 | 1 line Added include lines and corrected # of cheese slices. ------------------------------------------------------------------------ r2 | harry | Mon, 15 Jul 2002 17:47:57 -0500 | 1 line Added main() methods. ------------------------------------------------------------------------ r1 | sally | Mon, 15 Jul 2002 17:40:08 -0500 | 2 lines Initial import ------------------------------------------------------------------------ ±âº»°ªÀ¸·Î ·Î±× ¸Þ¼¼Áö´Â ½Ã°£ ¼ø¼­¿Í ¹Ý´ë·Î Ç¥½ÃµÇ´Â °Í¿¡ ÁÖÀÇÇϼ¼¿ä. ´Ù¸¥ ¹üÀ§ÀÇ ¸®ºñÀüÀ» ƯÁ¤ ¼ø¼­·Î º¸°í ½ÍÀº °æ¿ì³ª ÇÑ ¸®ºñÀüÀ» Âï¾î¼­ º¸°í ½ÍÀ» ¶§´Â () ¿É¼ÇÀ» »ç¿ëÇÕ´Ï´Ù. $ svn log --revision 5:19 # shows logs 5 through 19 in chronological order $ svn log -r 19:5 # shows logs 5 through 19 in reverse order $ svn log -r 8 # shows log for revision 8 ÇϳªÀÇ ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ ·Î±× È÷½ºÅ丮¸¦ º¼ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î $ svn log foo.c … $ svn log http://foo.com/svn/trunk/code/foo.c … ÀÌ°ÍÀº ÀÛ¾÷ ÆÄÀÏ(¶Ç´Â URL)ÀÌ º¯°æµÈ ¸®ºñÀü ¸¸À»Ç¥½ÃÇÕ´Ï´Ù. ¸¸¾à ÆÄÀÏÀ̳ª µð·ºÅ丮¿¡ ´ëÇØ Á» ´õ »ó¼¼ÇÑ Á¤º¸¸¦ ¾ò°í ½ÍÀ» ¶§¿¡´Â svn log¿¡ () ¿É¼ÇÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. SubversionÀº ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ À̵¿½ÃÅ°°Å³ª º¹»ç ÇÒ ¼ö ÀÖÀ¸¹Ç·Î ÆÄÀÏ ½Ã½ºÅÛÀÇ °æ·Î º¯È­¸¦ ÂÑÀ» ¼ö ÀÖ´Â °ÍÀº Áß¿äÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ Ãâ·Â »óÅ¿¡¼­´Â svn log´Â Ãâ·Â ¸®ºñÀü¿¡¼­ º¯°æµÈ °æ·Î Á¤º¸µµ Æ÷ÇÔÇÕ´Ï´Ù: $ svn log -r 8 -v ------------------------------------------------------------------------ r8 | sally | 2002-07-14 08:15:29 -0500 | 1 line Changed paths: U /trunk/code/foo.c U /trunk/code/bar.h A /trunk/code/doc/README Frozzled the sub-space winch. ------------------------------------------------------------------------ ¿Ö <command>svn log</command>°¡ ¾Æ¹«°Íµµ ¾Èº¸¿©ÁÖÁö? SubversionÀ» »ç¿ëÇÑÁö ¾ó¸¶ Áö³ªÁö ¾Ê¾ÒÀ» ¶§ ´ëºÎºÐÀÇ »ç¿ëÀÚ´Â ´ÙÀ½°ú °°Àº ÀÏÀ» ´çÇÏ°ÚÁö¿ä. $ svn log -r 2 ------------------------------------------------------------------------ $ ¾óÇͺ¸±â¿¡ ¿¡·¯ °°½À´Ï´Ù¸¸ ¸®ºñÀüÀº ÀúÀå¼Ò¿¡ ´ëÇÑ °ÍÀ̹ǷΠsvn log´Â ÀúÀå¼Ò °æ·Î º°·Î µ¿ÀÛÇÏ´Â °ÍÀ» »ý°¢Çϼ¼¿ä. (°æ·Î¸¦ ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é SubversionÀº ±âº»°ªÀ¸·Î ". "À» »ç¿ëÇÕ´Ï´Ù) ±× °á°ú ÀÛ¾÷ Ä«ÇÇÀÇ ÇÏÀ§ µð·ºÅ丮¸¦ Á¶ÀÛÇÏ°í Àֱ⠶§¹®¿¡ ±× µð·ºÅ丮 ¾Æ·¡¿¡ ÀÖ´Â ÆÄÀÏ¿¡´Â ¾Æ¹«°Íµµ º¯°æµÈ °ÍÀÌ ¾ø´Âµ¥ ·Î±×¸¦ º¸·Á°í Çϸé SubversionÀº ¾Æ¹«°Íµµ Ãâ·ÂÇÏÁö ¾Ê½À´Ï´Ù. ±× ¸®ºñÀü¿¡¼­ÀÇ º¯°æÀ» º¸°í ½ÍÀ¸¸é ÀÛ¾÷ Ä«ÇÇÀÇ ÃÖ»óÀ§¿¡¼­ ½ÇÇàÇϼ¼¿ä. svn diff svn diff´Â ¾Õ¿¡¼­ ´Ù·é ÀûÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº unified diff Çü½ÄÀ¸·Î ÆÄÀÏÀÇ Â÷ÀÌÁ¡À» Ç¥½ÃÇÕ´Ï´Ù. ÀúÀå¼Ò¿¡ Ä¿¹ÔÇϱâ Àü¿¡ ÀÛ¾÷ Ä«ÇÇ¿¡¼­ º¯°æµÈ Á¡À» Ç¥½ÃÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç½Ç svn diff¿¡´Â ¼¼ °¡Áö »ç¿ë¹ýÀÌ ÀÖ½À´Ï´Ù. ·ÎÄà º¯°æ ³»¿ëÀ» È®ÀÎÇϱâ ÀÛ¾÷ Ä«ÇÇ¿Í ÀúÀå¼Ò¸¦ ºñ±³ ÀúÀå¼Ò¿Í ÀúÀå¼Ò¸¦ ºñ±³ ·ÎÄÃÀÇ º¯°æ ³»¿ëÀ» È®ÀÎÇϱâ ÀÌ¹Ì ºÁ ¿Â °Íó·³ ¿É¼Ç¾øÀÌ svn diff¸¦ ½ÇÇàÇϸé ÀÛ¾÷ Ä«ÇÇÀÇ ³»¿ë°ú .svn¿¡ ij½¬µÈ ¼öÁ¤¿ø ¸®ºñÀüÀÇ À» ºñ±³ÇÕ´Ï´Ù. $ svn diff Index: rules.txt =================================================================== --- rules.txt (revision 3) +++ rules.txt (working copy) @@ -1, 4 +1, 5 @@ Be kind to others Freedom = Responsibility Everything in moderation -Chew with your mouth open +Chew with your mouth closed +Listen when others are speaking $ ÀÛ¾÷ Ä«ÇÇ¿Í ÀúÀå¼Ò¸¦ ºñ±³Çϱâ ()¸¦ Çϳª¸¸ ÁöÁ¤Çϸé ÀÛ¾÷ Ä«ÇÇ´Â ÀúÀå¼ÒÀÇ ÁöÁ¤µÈ ¸®ºñÀü°ú ºñ±³ µË´Ï´Ù. $ svn diff --revision 3 rules.txt Index: rules.txt =================================================================== --- rules.txt (revision 3) +++ rules.txt (working copy) @@ -1, 4 +1, 5 @@ Be kind to others Freedom = Responsibility Everything in moderation -Chew with your mouth open +Chew with your mouth closed +Listen when others are speaking $ ÀúÀå¼Ò¿Í ÀúÀå¼Ò¸¦ ºñ±³Çϱâ ()¿¡ ÄÝ·ÐÀ»·Î ±¸ºÐµÈ ¸®ºñÀü ¹øÈ£ µÎ °³¸¦ ÁöÁ¤ÇÏ¸é µÎ °³ÀÇ ÀúÀå¼Ò°¡ ºñ±³µË´Ï´Ù. $ svn diff --revision 2:3 rules.txt Index: rules.txt =================================================================== --- rules.txt (revision 2) +++ rules.txt (revision 3) @@ -1, 4 +1, 4 @@ Be kind to others -Freedom = Chocolate Ice Cream +Freedom = Responsibility Everything in moderation Chew with your mouth closed $ svn diff´Â ÀÛ¾÷ Ä«ÇÇ¿¡ ÀÖ´Â ÆÄÀÏÀ» ÀúÀå¼Ò¿Í ºñ±³ÇÒ ¶§¸¸ ¾µ ¼ö Àִ°ÍÀÌ ¾Æ´Õµð. ÀÛ¾÷ Ä«ÇÇ°¡ ¾ø¾îµµ URL Àμö¸¦ ÁÖ´Â °ÍÀ¸·Î ÀúÀå¼Ò¿¡ ÀÖ´Â ¾ÆÀÌÅÛ°úÀÇ Â÷À̸¦ Á¶»çÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ·ÎÄà ¸Ó½Å¿¡ ÀÛ¾÷ Ä«ÇÇ°¡ ¾øÀ» ¶§¿¡ ÆÄÀÏÀÇ º¯°æÁ¡À» ¾Ë°í ½ÍÀº °æ¿ì¿¡ ¸Å¿ì Æí¸®ÇÕ´Ï´Ù. $ svn diff --revision 4:5 http://svn.red-bean.com/repos/example/trunk/text/rules.txt … $ <command>svn cat</command> ¸¸¾à ÀÌÀü ¹öÀüÀÇ ÆÄÀÏÀ» º¸°í ½ÍÁö¸¸ µÎ ÆÄÀÏ »çÀÌÀÇ Â÷À̸¦ º¼ ÇÊ¿ä´Â ¾ø´Â °æ¿ì¿¡´Â svn cat¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. $ svn cat --revision 2 rules.txt Be kind to others Freedom = Chocolate Ice Cream Everything in moderation Chew with your mouth closed $ Á÷Á¢ ÆÄÀÏ¿¡ Ãâ·ÂÇÒ ¼öµµ ÀÖ½À´Ï´Ù. $ svn cat --revision 2 rules.txt > rules.txt.v2 $ ¾Æ¸¶µµ ¾î°¼­ ³°Àº ¸®ºñÀüÀ¸·Î µÇµ¹¸®±â À§Çؼ­ ´Ü¼øÈ÷ svn update --revisionÀ» »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÎÁö ±Ã±ÝÇÒ °ÍÀÔ´Ï´Ù. svn cat¸¦ »ç¿ëÇÏ´Â ÆíÀÌ ÁÁÀº ÀÌÀ¯°¡ ¸î °¡Áö ÀÖ½À´Ï´Ù. ¿ì¼± ¿ÜºÎÀÇ diff(GUIÀ̰ųª unified diff Çü½ÄÀÇ Ãâ·ÂÀÌ ¾Æ¹«·± Àǹ̵µ ¾ø´Â °æ¿ì) ÇÁ·Î±×·¥À¸·Î µÎ ¸®ºñÀüÀÇ Â÷ÀÌÁ¡À» º¸°í ½ÍÀ»Áöµµ ¸ð¸¨´Ï´Ù. ÀÌ °æ¿ì ³°Àº ¹öÀüÀÇ ³»¿ëÀ» ¾ò¾î¼­ ÆÄÀÏ¿¡ Ãâ·ÂÇÑ °Í°ú ÀÛ¾÷ Ä«ÇÇÁßÀÇ ÆÄÀÏÀ» ¿ÜºÎ diff ÇÁ·Î±×·¥¿¡ ÀüÇØÁÝ´Ï´Ù. ÀÚÁÖ ´Ù¸¥ ¸®ºñÀü°úÀÇ Â÷ÀÌÁ¡À» ÃëÇÏ´Â °Íº¸´Ù´Â ±× ¹öÀüÀÇ ÆÄÀÏ Àüü¸¦ º¸´Â ÆíÀÌ °£´ÜÇÑ ÀÏÀÌ ÀÖ½À´Ï´Ù. <command>svn list</command> svn list ¸í·ÉÀº ·ÎÄà ¸Ó½Å¿¡ ½ÇÁ¦·Î ÆÄÀÏÀ» ¹ÞÁö ¾Ê°íµµ ÀúÀå¼Ò¿¡ ¾î¶² ÆÄÀÏÀÌ ÀÖ´ÂÁö º¸¿©ÁÝ´Ï´Ù. $ svn list http://svn.collab.net/repos/svn README branches/ clients/ tags/ trunk/ Á» ´õ ÀÚ¼¼ÇÑ Ç¥½Ã¸¦ ¿øÇÑ´Ù¸é () ¿É¼ÇÀ» ÁöÁ¤ÇÕ´Ï´Ù. Ãâ·ÂÀº ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù. $ svn list --verbose http://svn.collab.net/repos/svn 2755 harry 1331 Jul 28 02:07 README 2773 sally Jul 29 15:07 branches/ 2769 sally Jul 29 12:07 clients/ 2698 harry Jul 24 18:07 tags/ 2785 sally Jul 29 19:07 trunk/ °¢°¢ÀÇ ¼¼·ÎÁÙÀº ÆÄÀÏ ¶Ç´Â µð·ºÅ丮°¡ ¸¶Áö¸·À¸·Î ¹Ù²ï ¸®ºñÀü ¼öÁ¤ÇÑ »ç¶÷, ÆÄÀÏÀÎ °æ¿ì ±× ÆÄÀÏÀÇ Å©±â, ¸¶Áö¸·À¸·Î ¹Ù²ï ³¯Â¥, ±×¸®°í À̸§ÀÔ´Ï´Ù. È÷½ºÅ丮 ±â´É¿¡ ´ëÇÑ ¸¶Áö¸· ¸» Áö±Ý±îÁö º¸¾Æ¿Â ¸ðµç ¸í·É¿¡ ´õÇؼ­ svn update¿Í svn checkout ¿¡ ¿É¼ÇÀ» Á־ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ÀÛ¾÷ Ä«ÇÇ Àüü¸¦°ú°Å ½ÃÁ¡À¸·Î µÇµ¹¸³´Ï´Ù. ¾Ë°Ú½À´Ï±î? SubversionÀº ŸÀÓ ¸Ó½ÅÀ̶ó°í ¸»ÇßÁÒ? : $ svn checkout --revision 1729 # Checks out a new working copy at r1729 … $ svn update --revision 1729 # Updates an existing working copy to r1729 … ÀÚÁÖ »ç¿ëµÇ´Â ´Ù¸¥ ¸í·Éµé ¾Õ¿¡¼­ º» °Íµé¸¸Å­ ÀÚÁÖ ÀÌ¿ëµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù¸¸ ´ÙÀ½ÀÇ ¸í·ÉÀÌ °¡²û ÇÊ¿äÇÏ°Ô µË´Ï´Ù. <command>svn cleanup</command> SubversionÀÌ ÀÛ¾÷ Ä«ÇÇ(¶ÇÀº .svn¿¡ ÀÖ´Â Á¤º¸)¸¦ ¼öÁ¤ÇÒ °æ¿ì¿¡´Â °¡´ÉÇÑ ¾ÈÀüÇÏ°Ô ÇÏ·Á°í ÇÕ´Ï´Ù. ¹«¾ùÀΰ¡¸¦ º¯°æÇϱâ Àü¿¡ ½ÇÇà ³»¿ëÀ» ·Î±× ÆÄÀÏ¿¡ ¾²°í ±× ¸í·ÉÀ» ½ÇÇàÇÑ ÈÄ ¸¶Áö¸·¿¡ ·Î±× ÆÄÀÏÀ» »èÁ¦ÇÕ´Ï´Ù(ÀÌ°ÍÀº Àú³Î¸µ ÆÄÀÏ ½Ã½ºÅÛÀÇ ¹æ½Ä°ú ºñ½ÁÇÕ´Ï´Ù). SubversionÀÇ µ¿ÀÛÀÌ ÁߴܵǸé(Control-C ¸¦ ÀÔ·ÂÇϰųª ÄÄÇ»ÅÍ°¡ Á¾·áµÇ¾úÀ» °æ¿ì) ·Î±× ÆÄÀÏÀº µð½ºÅ©¿¡ ³²½À´Ï´Ù. ·Î±× ÆÄÀÏÀ» Àç½ÇÇàÇÏ´Â °ÍÀ¸·Î SubversionÀº ÀÌÀü¿¡ ÇÏ´ø ÀÛ¾÷À» ¿Ï·áÇÒ ¼ö ÀÖ°í ÀÛ¾÷ Ä«ÇÇ´Â Á¤»óÀûÀÎ »óÅ·ΠµÇµ¹¾Æ°©´Ï´Ù. svn cleanup°¡ ÇÏ´Â ÀÏÀº Á¤È®ÀÌ ÀÌ·± °ÍÀÔ´Ï´Ù. ÀÛ¾÷ Ä«ÇǸ¦ µÚÁ®¼­ ³²Àº ·Î±×¸¦ ½ÇÇàÇÏ°í ÇÁ·Î¼¼½ºÀÇ Àá±ÝÀ» ¾ø¾Û´Ï´Ù. ÀÛ¾÷ Ä«ÇÇÀÇ ¾îµò°¡°¡ Àá°Ü ÀÖ´Ù°í SubversionÀÌ ¾Ë·ÁÁÙ ¶§ ÀÌ ¸í·ÉÀ» ½ÇÇàÇϼ¼¿ä. svn status´Â Àá°ÜÀÖ´Â Ç׸ñ ¿·¿¡ LÀ» Ç¥½ÃÇÕ´Ï´Ù. $ svn status L . /somedir M . /somedir/foo.c $ svn cleanup $ svn status M . /somedir/foo.c <command>svn import</command> import ¸í·ÉÀº ¹öÀü °ü¸®µÇ°í ÀÖÁö ¾ÊÀº ¿©·¯ÆÄÀϵéÀ» ÀúÀå¼Ò·Î À̵¿ÇÏ´Â °£´ÜÇÑ ¹æ¹ýÀÔ´Ï´Ù. $ svnadmin create /usr/local/svn/newrepos $ svn import mytree file:///usr/local/svn/newrepos/fooproject Adding mytree/foo.c Adding mytree/bar.c Adding mytree/subdir Adding mytree/subdir/quux.h Transmitting file data.... Committed revision 1. À§ÀÇ ¿¹´Â µð·ºÅ丮 mytreeÀÇ ³»¿ëÀ» ÀúÀå¼ÒÀÇ fooproject µð·ºÅ丮¿¡ ³Ö½À´Ï´Ù. /fooproject/foo.c /fooproject/bar.c /fooproject/subdir /fooproject/subdir/quux.h ¿ä¾à ÀÌ°ÍÀ¸·Î Subversion Ŭ¶óÀ̾ðÆ®ÀÇ ¸í·É ´ëºÎºÐ¿¡ ´ëÇؼ­ ¼³¸íÇß½À´Ï´Ù. ¿©±â¼­ ¼³¸íÇÏÁö ¾Ê¾ÒÁö¸¸ Áß¿äÇÑ °ÍÀº ºê·£Ä¡(branch)¿Í º´ÇÕ(merge) ( ÂüÁ¶) ±×¸®°í ¼Ó¼ºÀÔ´Ï´Ù ( ÂüÁ¶). SubversionÀÌ °¡Áö°í ÀÖ´Â ¸¹Àº ¸í·ÉÀ» ÆľÇÇÏ·Á¸é ±×¸®°í ¿©·¯ºÐÀÇ ÀÏÀ» ½±°Ô Çϱâ À§Çؼ­ ±×°ÍµéÀ» ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö ¾Ë¾Æº¸·Á¸é ¸¦ ÈȾ´Â °ÍÀÌ ÁÁÀ»°ÍÀÔ´Ï´Ù.