· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Subversion Book/Guided Tour

ÇÔ²² µÑ·¯º¸±â

1Chapter. ÇÔ²² µÑ·¯º¸±â


1.1.

ÀÌÁ¦ SubversionÀ» »ç¿ëÇÏ´Â ¹ýÀ» ÀÚ¼¼È÷ º¸µµ·Ï ÇÏ°Ú½À´Ï´Ù. ÀÌ ÀåÀÌ ³¡³¯ ÁîÀ½À̸é ÀÏ»óÀûÀÎ ÀÛ¾÷¿¡ SubversionÀ» »ç¿ëÇϱâ À§ÇØ ÇÊ¿äÇÑ °ÅÀÇ ¸ðµç ÀϵéÀ» ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ´ç½ÅÀÇ Äڵ带 óÀ½ üũ¾Æ¿ôÇÏ´Â °ÍÀ¸·Î ½ÃÀÛÇÏ¿© Äڵ带 ¼öÁ¤ÇÏ°í ¼öÁ¤ÇÑ ³»¿ëÀ» °Ë»çÇÕ´Ï´Ù. ¶Ç ´Ù¸¥ »ç¶÷ÀÌ ¼öÁ¤ÇÑ ³»¿ëÀ» ÀÚ½ÅÀÇ ÀÛ¾÷º»¿¡ ¹Ý¿µÇÏ°í °Ë»çÇϸç Ãæµ¹ÀÌ ¹ß»ýÇÒ °æ¿ì ÇØ°áÇÏ°Ô µË´Ï´Ù.

ÀÌ Àå¿¡¼­ SubversionÀÇ ¸í·É¾î ÀüºÎ¸¦ ¿­°ÅÇÏÁö´Â ¾Ê½À´Ï´Ù. ±×º¸´Ù´Â »ç¿ëÀÚ°¡ SubversionÀ» »ç¿ëÇÏ¿© °¡Àå º¸ÆíÀûÀ¸·Î ÇÏ°Ô µÉ ÀÛ¾÷µé¿¡ ´ëÇØ ¼Ò°³¸¦ ÇÕ´Ï´Ù. ÀÌ ÀåÀº ´ç½ÅÀÌ 2Àå>À» Àаí ÀÌÇØÇßÀ¸¸ç SubversionÀÌ »ç¿ëÇÏ´Â ÀϹÝÀûÀÎ ¸ðµ¨À» ¾Ë°í ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù. ¸í·É¾îÀÇ Àüü ·¹ÆÛ·±½º´Â 8Àå >À» º¸½Ê½Ã¿À.


1.1. µµ¿ò¸»

°è¼Ó ÁøÇàÇϱâ Àü¿¡ °¡Àå Áß¿äÇÑ Subversion ¸í·É¾îÀÎ svn help ¿¡ ´ëÇØ ¾Ë¾Æ º¸°Ú½À´Ï´Ù. Subversion Ä¿¸àµå ¶óÀΠŬ¶óÀ̾ðÆ®´Â ½º½º·Î ¹®¼­¸¦ »ý¼ºÇÏ¿© Ãâ·ÂÇÕ´Ï´Ù. ¾ðÁ¦¶óµµ svn help ¼­ºê Ä¿¸àµå ¶ó°í Ä¡¸é ¼­ºê Ä¿¸àµåÀÇ ¹®¹ý, ¿É¼Ç ½ºÀ§Ä¡, µ¿ÀÛÀ» ¾Ë·Á ÁÝ´Ï´Ù.


1.2. ÀÓÆ÷Æ®

svn import ¸í·ÉÀ¸·Î SubversionÀÇ ÀúÀå¼Ò(repository)¿¡ »õ·Î¿î ÇÁ·ÎÁ§Æ®¸¦ ÀÓÆ÷Æ® ÇÒ ¼ö ÀÖ½À´Ï´Ù. Subversion ¼­¹ö¸¦ ¼³Á¤ÇÒ ¶§ ÃÖÃÊ·Î ½ÇÇàÇÏ°Ô µÉ Ä¿¸àµåÀÌÁö¸¸ ¸Å¿ì ºó¹øÇÏ°Ô »ç¿ëµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. import ÀÇ »ó¼¼ÇÑ ±â´É¿¡ ´ëÇÏ¿©´Â ÀÌ ÀåÀÇ µÚ ÂÊ¿¡ ÀÖ´Â "svn import" ¼½¼Ç >À» º¸½Ê½Ã¿À.


1.3. ¸®ºñÀü: ¹øÈ£, Å°¿öµå, ³¯Â¥

ÁøÇàÇϱâ Àü¿¡ ÀúÀå¼Ò ³»¿¡ ƯÁ¤ÇÑ ¸®ºñÀüÀ» ÁöĪÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¾Ë¾Æ µÑ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. >¿¡¼­ º» °Íó·³ ¸®ºñÀüÀº ƯÁ¤ÇÑ ¼ø°£ ÀúÀå¼Ò(repository)ÀÇ "¼ø°£Æ÷Âø »çÁø(snapshot)"ÀÔ´Ï´Ù. Ä¿¹ÔÀ» ¹Ýº¹ÇÏ¿© ÀúÀå¼Ò°¡ Ä¿Áü¿¡ µû¶ó ÀÌ ½º³À¼¦µéÀ» ±¸ºÐÇÒ ¹æ¹ýÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù.

--revision (-r) ¿É¼Ç µÚ¿¡ ¿øÇÏ´Â ¸®ºñÀü ¹øÈ£¸¦ Àû¾î (svn --revision REV) ¸®ºñÀüÀ» ¸í½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç´Â µÎ ¸®ºñÀüÀ» ÄÝ·ÐÀ¸·Î ±¸ºÐÇÏ¿© (svn --revision REV1:REV2). ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¸®ºñÀüÀº ¹øÈ£, Å°¿öµå, ³¯Â¥ ¼¼°¡Áö ¹æ¹ýÀ¸·Î ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.


1.3.1. ¸®ºñÀü ¹øÈ£

»õ·Î¿î Subversion ÀúÀå¼Ò¸¦ ¸¸µé¸é ¸®ºñÀü 0ºÎÅÍ ½ÃÀÛÇÏ°Ô µË´Ï´Ù. ÀÌÈÄ Ä¿¹ÔÀ» ½ÇÇàÇÒ ¶§¸¶´Ù ¸®ºñÀü ¹øÈ£´Â 1¾¿ Áõ°¡ÇÕ´Ï´Ù. Ä¿¹ÔÀÌ ¿Ï·áµÉ ¶§¸¶´Ù Subversion Ŭ¶óÀ̾ðÆ®´Â ¾Æ·¡¿Í °°ÀÌ »õ·Î¿î ¸®ºñÀü ¹øÈ£¸¦ ¾Ë·ÁÁÝ´Ï´Ù.

$ svn commit --message "Corrected number of cheese slices. "
Sending        sandwich.txt
Transmitting file data .
Committed revision 3.
      

³ªÁß¿¡ ÀÌ ¸®ºñÀüÀ» ÂüÁ¶ÇÏ°í ½ÍÀ» ¶§ (ÀÌ ÀåÀÇ µÚ¿¡¼­ ¾î¶² °æ¿ì¿¡ ±×·± ÀÏÀÌ ÇÊ¿äÇÑ°¡¸¦ ¼³¸íÇÕ´Ï´Ù) "3"À¸·Î ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.


1.3.2. ¸®ºñÀü Å°¿öµå

Subversion Ŭ¶óÀ̾ðÆ®´Â ´Ù¾çÇÑ ¸®ºñÀü Å°¿öµå¸¦ ÀÌÇØÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Å°¿öµå´Â --revision ¿É¼Ç µÚ¿¡ ¼ýÀÚ°ª ´ë½Å¿¡ »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç Subversion¿¡ ÀÇÇØ Æ¯Á¤ÀÇ ¸®ºñÀü ¹øÈ£·Î º¯È¯µË´Ï´Ù:

Note: ÀÛ¾÷º»ÀÇ ¸ðµç µð·ºÅ丮¿¡´Â .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 ÀÇ ÀÛ¾÷ ¸®ºñÀüÀÌ °¨¼ÒÇÔ)
      

ÀÌ·¯ÇÑ Å°¿öµå¸¦ ÀÌ¿ëÇϸé ÀÛ¾÷º»À̳ª ƯÁ¤ ¸®ºñÀüÀ» Çò°¥¸®´Â ¹øÈ£°¡ ¾Æ´Ñ Å°¿öµå·Î ÁöÁ¤ÇÏ¿© ÀÚÁÖ¾²´Â ¿©·¯ À¯¿ëÇÑ ¸í·ÉÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.


1.3.3. ¸®ºñÀü ÀÏÀÚ

¸®ºñÀü ¹øÈ£³ª ¸®ºñÀü Å°¿öµå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â °æ¿ì¶ó¸é ¾ðÁ¦³ª ³¯Â¥¿Í ½Ã°¢µµ Áß°ýÈ£ "{}" ¾È¿¡ ³Ö¾î ¸®ºñÀüÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ³¯Â¥¿Í ¸®ºñÀü ¹øÈ£¸¦ µ¿½Ã¿¡ »ç¿ëÇØ ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

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Àº ¹üÀ§ ¾È¿¡ ÀÖ´Â ¸ðµç ¸®ºñÀüÀ» ´ë»óÀ¸·Î °Ë»öÇÕ´Ï´Ù. ÁöÁ¤µÈ µÎ ³¯Â¥´Â °Ë»ö¿¡ Æ÷ÇԵ˴ϴÙ.

$ svn log --revision {2002-11-20}:{2002-11-29}

      

¾Õ¼­ ÁöÀûÇÑ °Íó·³ ³¯Â¥¿Í ¸®ºñÀü ¹øÈ£¸¦ °°ÀÌ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

$ svn log -r {11/20/02}:4040
      

1.4. ÃÖÃÊÀÇ Ã¼Å©¾Æ¿ô

´ëºÎºÐÀÇ °æ¿ì ÀúÀå¼Ò·ÎºÎÅÍ ÇÁ·ÎÁ§Æ®¸¦ üũ¾Æ¿ô(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.
    

À§ÀÇ ¿¹´Â 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)" ¸ðµ¨À» »ç¿ëÇϹǷΠ(>) üũ¾Æ¿ôÇÏ¸é ¹Ù·Î °¡Á®¿Â ÆÄÀÏ°ú µð·ºÅ丮¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. (ÀÌ·¸°Ô °¡Á®¿Â ÆÄÀÏ°ú µð·ºÅ丮ÀÇ ¸ðÀÓÀ» ÀÛ¾÷ º¹»ç¶ó°í ÇÕ´Ï´Ù).

¹Ù²Ù¾î ¸»ÇÏ¸é ¿©·¯ºÐÀÇ"ÀÛ¾÷ º¹»ç"´Â ½Ã½ºÅÛ ¿¡ ÀÖ´Â ´Ù¸¥ ÆÄÀÏÀ̳ª µð·ºÅ丮¿Í ´Ù¸¦ °ÍÀÌ ¾ø½À´Ï´Ù. [1] ÆíÁýÇϰųª º¯°æÇϰųª À̵¿Çϰųª ÀÛ¾÷ Ä«ÇÇ Àüü¸¦ Åë°·Î »èÁ¦Çعö¸± ¼öµµ ÀÖ½À´Ï´Ù.

Note: ÀÛ¾÷º»Àº ½Ã½ºÅÛ¿¡ ÀÖ´Â "´Ù¸¥ ÆÄÀÏÀ̳ª µð·ºÅ丮µé°ú ¾Æ¹«·± Â÷ÀÌÁ¡Àº ¾ø½À´Ï´Ù"¸¸ ÀÛ¾÷ Ä«ÇÇ¿¡ ¼ÓÇÏ´Â ÆÄÀÏ À̳ª µð·ºÅ丮ÀÇ À§Ä¡³ª À̸§À» ´Ù½Ã Æí¼ºÇßÀ» °æ¿ì¿¡´Â Ç×»ó Subversion¿¡ ±×°ÍÀ» ¾Ë·ÁÁÖ¾î¾ß ÇÕ´Ï´Ù. ¸¸¾à ÀÛ¾÷ º¹»ç¿¡ ¼ÓÇÏ´Â ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ º¹»çÇϰųª À̵¿ÇÏ°í ½ÍÀº °æ¿ì¿¡´Â ¿î¿µÃ¼Á¦¿¡¼­ Á¦°øÇÏ´Â º¹»ç³ª À̵¿ ¸í·É¾î ´ë½Å¿¡svn copy¿Ísvn move¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä. ÀÌ ÀåÀÇ µÚÂÊ¿¡¼­ Á» ´õ ÀÚ¼¼ÇÏ°Ô ¼³¸íÇÕ´Ï´Ù.

ÆÄÀÏÀ» °íÃưųª, ¶Ç´Â »õ·Î¿î ÆÄÀÏÀ» ¸¸µé°Å³ª, µð·ºÅ丮¸¦ ¿Å±â´Â µîÀÇ º¯°æ»çÇ×Àº ´ÙÀ½ Ä¿¹ÔÇÒ ¶§±îÁö 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 À̶ó´Â µð·ºÅ丮¿¡ ÀÛ¾÷ Ä«ÇÇ°¡ ¸¸µé¾î Áý´Ï´Ù.


1.5. ±âº»ÀûÀÎ ÀÛ¾÷ »çÀÌŬ

Subversion¿¡´Â ¸¹Àº ±â´ÉÀÌ ÀÖÁö¸¸ ÀÚÁÖ »ç¿ëÇÏ´Â ±â´ÉÀº ¸î °¡Áö »ÓÀÔ´Ï´Ù. ÀÌ Àå¿¡¼­´Â Á¦ÀÏ ÀÚÁÖ ¾²ÀÌ´Â °ÍµéÀ» ¼³¸íÇÕ´Ï´Ù.

ÀüÇüÀûÀÎ ÀÛ¾÷ »çÀÌŬÀº ´ÙÀ½°ú °°½À´Ï´Ù.

  • ÀÛ¾÷ º¹»çÀÇ ¾÷µ¥ÀÌÆ®

    • svn update

  • º¯°æ

    • svn add

    • svn delete

    • svn move

    • svn copy

  • ÀÚ½ÅÀÇ º¯°æÁ¡ È®ÀÎ

    • svn status

    • svn diff

    • svn revert

  • ´Ù¸¥ »ç¶÷ÀÇ º¯°æ°ú Merge

    • svn merge

    • svn resolved

  • ÀÚ½ÅÀÇ º¯°æÁ¡À» Ä¿¹Ô

    • svn commit


1.5.1. ÀÛ¾÷ º¹»çÀÇ °»½Å

ÆÀÀ» ¸¸µé¾î ÀÛ¾÷ÇÏ°í ÀÖ´Â ÇÁ·ÎÁ§Æ®¿¡¼­´Â ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇÏ°í ½ÍÀ»¶§°¡ ÀÖÀ» °ÍÀÔ´Ï´Ù. Áï ´Ù¸¥ ¸â¹öÀÇ º¯°æÁ¡À» ¸ðµÎ ¹Þ´Â °ÍÀÌÁö¿ä. ÀÌ °æ¿ì 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´Â ¼­¹ö·ÎºÎÅÍ Ãæµ¹ÀÌ ÀÖ´Â º¯°æÀ» ¹Þ¾Ò½À´Ï´Ù. ¼­¹ö·ÎºÎÅÍÀÇ º¯°æÀº ´ç½Å ÀÚ½ÅÀÇ º¯°æ°ú Á÷Á¢ °ãÄ¡°í ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸ °ÆÁ¤ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ÀÌ Ãæµ¹Àº »ç¶÷(Áï ´ç½Å)ÀÌ ÇؼÒÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ÀÌ ÀåÀÇ ´ÙÀ½¿¡ ÀÌ »óȲ¿¡ ´ëÇØ ³íÀÇÇÕ´Ï´Ù.


1.5.2. ÀÛ¾÷ º¹»ç¸¦ º¯°æÇϱâ

ÀÌÁ¦ ÀÚ½ÅÀÇ ÀÛ¾÷ º¹»ç·Î º¯°æÀ» ´õÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿Í °°Àº ºñ±³Àû Ư¼öÇÑ º¯°æÀ» ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. »õ·Î¿î ±â´É À» Ãß°¡Çϰųª ¹ö±×¸¦ °íÄ¡°Å³ª µîÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì¿¡ »ç¿ëÇÏ´Â 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 ¸¸À» Ãß°¡ÇÏ°í ½ÍÀº °æ¿ì´Â--non-recursive (-N) ¿É¼ÇÀ» ÁöÁ¤ÇØ ÁÖ¼¼¿ä.

svn delete foo

foo ¸¦ ÀúÀå¼Ò(repository)·ÎºÎÅÍ »èÁ¦µµ·Ï ¿¹¾à ÇÕ´Ï´Ù. foo °¡ ÆÄÀÏÀ̸é ÀÛ¾÷ º¹»ç·ÎºÎÅÍ Áï½Ã »èÁ¦µË´Ï´Ù. foo°¡ µð·ºÅ丮ÀÌ¸é ¹Ù·Î »èÁ¦µÇÁö ¾Ê°í »èÁ¦ ¿¹¾à »óÅ·Π¼³Á¤µË´Ï´Ù. º¯°æÀ» Ä¿¹ÔÇϸé foo ´Â ÀÛ¾÷ º¹»ç¿Í ÀúÀå¼Ò(repository)·ÎºÎÅÍ »èÁ¦µË´Ï´Ù. [2]

svn copy foo bar

foo¸¦ º¹»çÇؼ­ »õ·Î¿î ¾ÆÀÌÅÛ bar¸¦ ¸¸µì´Ï´Ù. bar´Â ÀÚµ¿ÀûÀ¸·Î Ãß°¡ ¿¹°íµË´Ï´Ù. bar°¡ ´ÙÀ½ÀÇ Ä¿¹ÔÀ¸·Î ÀúÀå¼Ò(repository) ¿¡ Ãß°¡µÉ ¶§ º¹»çÀÇ È÷½ºÅ丮°¡ ±â·ÏµË´Ï´Ù(foo ÀÇ º¹»çº»À̶ó´Â È÷½ºÅ丮).

svn move foo bar

ÀÌ ¸í·ÉÀº svn copy foo bar; svn delete foo ¸¦ ½ÇÇàÇÏ´Â °Í°ú ¿ÏÀüÈ÷ °°½À´Ï´Ù. Áï bar ´ÂfooÀÇ º¹»çº»À¸·Î¼­ Ãß°¡ ¿¹¾àµÇ°í foo ´Â »èÁ¦ ¿¹¾àµË´Ï´Ù.


1.5.3. ÀÚ½ÅÀÇ º¯°æÁ¡À» Á¶»ç

º¯°æÀÌ ¿Ï·áÇϸé ÀúÀå¼Ò(repository)¿¡ Ä¿¹ÔÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ º¸Åë Ä¿¹ÔÇϱâ Àü¿¡ ÀÚ½ÅÀÌ ¹«¾ùÀ» º¯°æÇß´ÂÁö Á¤È®ÇÏ°Ô ºÁ µÎ´Â °Ô ÁÁ½À´Ï´Ù. Ä¿¹Ô Àü¿¡ º¯°æÁ¡À» È®ÀÎÇÔÀ¸·Î½á º¸´Ù Á¤È®ÇÑ ·Î±× ¸Þ¼¼Áö¸¦ ºÙÀÌ´Â °ÍÀÌ °¡´ÉÇÒ »Ó¸¸ ¾Æ´Ï¶ó ºÒÃæºÐÇÏ°Ô ¼öÁ¤µÈ °ÍÀ» ¹ß°ßÇÒ ¼öµµ ÀÖ°í Ä¿¹ÔÇϱâ Àü¿¡ ±× º¯°æÀ» ÆıâÇϰųª ÇÒ ±âȸ°¡ ÁÖ¾îÁý´Ï´Ù. °Ô´Ù°¡ °ø°³Çϱâ Àü¿¡ º¯°æÁ¡À» Àç°ËÅäÇϰųª ÀÚ¼¼ÇÏ°Ô Á¶»çÇÒ ÁÁÀº ±âȸÀ̱⵵ ÇÕ´Ï´Ù. svn status, svn diff, svn revert ¸¦ »ç¿ëÇØ ¿©·¯ºÐÀÌ ¾î¶² º¯°æÀ» Çß´ÂÁö¸¦ Á¤È®ÇÏ°Ô º¼ ¼ö ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀº º¸Åë ¾ÕÂÊ µÎ Ä¿¸àµå·Î ÀÛ¾÷ Ä«ÇÇÁßÀÇ ¾î´À ÆÄÀÏ À» º¯°æÇß´ÂÁö¸¦ Á¶»çÇÏ°í ¼¼¹ø° Ä¿¸àµå·Î ±× ÁßÀÇ ¸î¸î(ȤÀº ÀüºÎ)ÀÇ º¯°æÀ» Ãë¼ÒÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù.

SubversionÀº ÀÌ ÀÛ¾÷À» Çϱâ À§Çؼ­ ÃÖÀûÈ­µÇ¾î ¿Ô°í ÀúÀå¼Ò¿Í Åë½ÅÇÏÁö ¾Ê°íµµ ¸¹Àº ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ÀÛ¾÷ º¹»ç¿¡´Â . svn ¶ó°í ÇÏ´Â ¼ûÀº µð·ºÅ丮°¡ ÀÖ¾î ¿©±â¿¡ ÀÛ¾÷ º¹»çÀÇ "¿øº» ¸®ºñÀü(prestine)"ÀÇ Ä«ÇÇ°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀ» Àß »ç¿ëÇØ SubversionÀº ´ç½ÅÀÇ ÀÛ¾÷ ÆÄÀÏÀÇ ¾î¶² °ÍÀÌ º¯°æµÇ¾ú´ÂÁö¸¦ Àçºü¸£°Ô ¾Ë ¼ö°¡ ÀÖ°í ÀúÀå¼Ò(repository)¿Í Åë½ÅÇÏÁö ¾Ê°íµµ º¯°æÇÑ °ÍÀ» µÇµ¹¸± ¼ö ÀÖ½À´Ï´Ù.


1.5.3.1. svn status

¾Æ¸¶ ¾î´À Subversion Ä¿¸àµåº¸´Ùsvn status Ä¿¸àµå¸¦ ÀÚÁÖ ÀÌ¿ëÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù.

ÀÚ½ÅÀÇ ÀÛ¾÷ Ä«ÇÇ ÃÖ»óÀ§¿¡¼­ Àμö¾øÀÌ 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Àº ¹öÀü °ü¸®ÇÏ¿¡´Â ¾ø½À´Ï´Ù. --quiet (¶Ç´Â -q) ¿É¼ÇÀ» 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Ì Ç¥½ÃµÇ´Â °æ¿ì´Â SubversionÀÌ ±× ÆÄÀÏ(ȤÀº µð·ºÅ丮)¸¦ .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µµ --verbose (-v) ¿É¼ÇÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. ±× °æ¿ì ÀÛ¾÷ º¹»çÀÇ (º¯°æµÇÁö ¾ÊÀº ÆÄÀϵµ Æ÷ÇÔÇÏ¿©) ¸ðµç ¾ÆÀÌÅÛÀÇ »óŸ¦ Ç¥½ÃÇÕ´Ï´Ù.

$ 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 µð·ºÅ丮ÀÇ ¸ÞŸµ¥ÀÌŸ¸¦ ºñ±³ÇÔÀ¸·Î½á ·ÎÄà ¸Ó½Å»ó¿¡¼­¸¸ µ¿ÀÛÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î --show-updates(-u) ¿É¼ÇÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ÀúÀå¼Ò(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¿¡ °üÇÑ ¼­¹ö»óÀÇ º¯°æÁ¡À» ¹Þ¾Æ¿Í¼­ °»½ÅÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ÃÖ½ÅÀÌ ¾Æ´Ï¶ó´Â ÀÌÀ¯·Î Ä¿¹ÔÀº ½ÇÆÐÇÏ°ÚÁö¿ä(ÀÚ¼¼ÇÏ°Ô´Â ´ÙÀ½¿¡ ¸»ÇÕ´Ï´Ù).


1.5.3.2. svn diff

ÀÚ½ÅÀÇ º¯°æÁ¡À» Á¶»çÇÏ´Â ´Ù¸¥ ¹æ¹ýÀº svn diff ¸í·ÉÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. svn diff¸¦ Àμö ¾øÀÌ ½ÇÇàÇϸé ÀÚ½ÅÀÌ ¾î¶² º¯°æÀ» Çß´ÂÁö Á¤È®ÇÏ°Ô ¾Ë ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ ¶§ÀÇ Ãâ·Â Çü½ÄÀº unified diff Çü½ÄÀÔ´Ï´Ù: [3]

$ 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
        

¿¹¸¦ µé¾î ÆÐÄ¡ ÆÄÀÏÀ» ´Ù¸¥ °³¹ßÀÚ¿¡°Ô º¸³» Ä¿¹ÔÀü¿¡ Àç°ËÅ䳪 Å×½ºÆ®¸¦ ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.


1.5.3.3. svn revert

À§ÀÇ 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
        

Note: 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
        

1.5.4. Ãæµ¹ÀÇ ÇؼÒ(´Ù¸¥ »ç¶÷ÀÇ º¯°æÁ¡°ú 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Àº ÀÌÁ¦ ÇØ´ç ÆÄÀÏÀÌ Ãæµ¹ »óÅ¿¡ ÀÖ´Ù°í »ý°¢ÇÏÁö ¾Ê°Ô µË´Ï´Ù. [4]

$ svn resolved sandwich.txt
Resolved conflicted state of sandwich.txt
      

1.5.4.1. Ãæµ¹À» ¼öµ¿À¸·Î 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)¸¦ »ì ¼ö ¾ø´Ù°í ¼³¸íÇØ ÁÝ´Ï´Ù(µÎ ¸íÀÇ º¯°æÀÌ Ãæµ¹ÇÏ°í ÀÖ´Â °ÍÀ» ¼³¸íÇÕ´Ï´Ù). [5] Ä¿¹ÔÇÒ º¯°æ ³»¿ë¿¡ ´ëÇØ ÇÕÀǸ¦ ÇßÀ¸¸é ÆÄÀÏÀ» ÆíÁýÇØ Ãæµ¹ Ç¥Áö¸¦ »èÁ¦ÇÕ´Ï´Ù.

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ÀÌ ´ç½ÅÀ» À§Çؼ­ ¸¸µç ÀÛ¾÷ º¹»ç¿¡ ÀÖ´Â ¼¼ °³ÀÇ Àӽà ÆÄÀÏÀ» Âü°íÇÒ ¼ö ÀÖ½À´Ï´Ù. ±× Áß¿¡´Â °»½ÅÀü¿¡ ´ç½ÅÀÌ ¼öÁ¤ÇÑ ¹öÀüÀÇ ÆÄÀϵµ ÀÖ½À´Ï´Ù.


1.5.4.2. ÀÛ¾÷ ÆÄÀÏ À§¿¡ ÆÄÀÏÀ» Ä«ÇÇÇϱâ

Ãæµ¹ÀÌ ÀϾ»ç ÀÚ½ÅÀÌ ÇÑ º¯°æÀ» ¹«½ÃÇÏ·Á°í ÇÒ °æ¿ì¿¡´Â 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. "
        

1.5.4.3. Punting: svn revertÀÇ ÀÌ¿ë

Ãæµ¹ÀÌ ÀϾ Á¶»ç °á°ú ÀÚ½ÅÀÇ º¯°æÀ» ¹ö¸®°í ÆíÁýÀ» ´Ù½Ã ÇÏ´Â °æ¿ì´Â ´ÜÁö º¯°æÀ» ¿ø·¡´ë·Î µÇµ¹¸³´Ï´Ù.

$ svn revert sandwich.txt
Reverted sandwich.txt
$ ls sandwich. *
sandwich.txt
        

Ãæµ¹ ÆÄÀÏÀ» ¿ø·¡´ë·Î µÇµ¹¸± ¶§´Â svn resolved¸¦ ½ÇÇàÇÒ ÇÊ¿ä°¡ ¾ø´Â °Í¿¡ ÁÖÀÇÇϼ¼¿ä.

ÀÌÁ¦ ´ç½ÅÀÇ º¯°æÀ» Ä¿¹ÔÇÒ Áغñ°¡ µÇ¾ú½À´Ï´Ù. svn resolved´Â ÀÌ Àå¿¡¼­ º» ´Ù¸¥ ´ëºÎºÐÀÇ Ä¿¸àµå¿Í´Â ´Þ¸® Àμö¸¦ ÇÊ¿ä·Î ÇÕ´Ï´Ù. ¾î¶°ÇÑ °æ¿ì¿¡¼­µµ ÃæºÐÈ÷ ÁÖÀÇÇÏ°í ÆÄÀÏÁßÀÇ Ãæµ¹À» È®½ÇÈ÷ ÇØ°áÇÑ °æ¿ì¸¸ svn resolved ¸¦ ½ÇÇàÇϼ¼¿ä. Àӽà ÆÄÀÏÀÌ »èÁ¦µÇ¸é SubversionÀº ÆÄÀÏÀÌ Ãæµ¹ ¸¶Ä¿¸¦ Æ÷ÇÔÇÏ°í À־ Ä¿¹ÔÇÕ´Ï´Ù.


1.5.5. º¯°æÁ¡À» Ä¿¹Ô

µåµð¾î ¿©±â±îÁö ¿Ô½À´Ï´Ù. ¼­¹ö·ÎºÎÅÍÀÇ º¯°æÀ» ¸ðµÎ ÇÕÃÆ°í ÆíÁýÀº ¸ðµÎ ³¡³µ½À´Ï´Ù. ÀÌÁ¦ º¯°æÀ» ÀúÀå¼Ò¿¡ Ä¿¹Ô ÇÒ Áغñ°¡ ´Ù µÇ¾ú½À´Ï´Ù.

svn commit ¸í·ÉÀº ´ç½ÅÀÇ ¸ðµç º¯°æÁ¡À» ÀúÀå¼Ò¿¡ º¸³À´Ï´Ù. Ä¿¹ÔÇÒ ¶§¿¡´Â ¹Ù²ïÁ¡À» ¼³¸íÇÏ´Â ·Î±× ¸Þ¼¼Áö¸¦ ÁÙ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ·Î±× ¸Þ¼¼Áö´Â ´ç½ÅÀÌ ¸¸µç »õ·Î¿î ¸®ºñÀü¿¡ ºÙ¿©Áý´Ï´Ù. ·Î±× ¸Þ¼¼Áö°¡ °£´ÜÇÑ °æ¿ì´Â --message (ȤÀº-m) ¿É¼ÇÀ» »ç¿ëÇØ ¸í·ÉÁÙ¿¡¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

$ svn commit --message "Corrected number of cheese slices. "
Sending        sandwich.txt
Transmitting file data .
Committed revision 3.
      

±×·¯³ª ¹ú½á ·Î±× ¸Þ¼¼Áö¸¦ ¸¸µé¾î µÐ °æ¿ì´Â --file ¿É¼Ç µÚ¿¡ ÆÄÀÏ À̸§À» ÁöÁ¤ÇÏ¿© SubversionÀÌ ±× ÆÄÀÏÀÇ ³»¿ëÀ» »ç¿ëÇϵµ·Ï Áö½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

svn commit --file logmsg 
Sending        sandwich
Transmitting file data .
Comitted revision 4.
      

--message³ª --file ¿É¼ÇÀ» ÁöÁ¤ÇÏÁö ¾ÊÀº °æ¿ì¿¡´Â ȯ°æ º¯¼ö$EDITOR·Î ÁöÁ¤ÇÑ ÆíÁý±â°¡ ¶°¼­ ·Î±× ¸Þ¼¼Áö¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù.

Tip: ¸¸¾à ÆíÁý±â¿¡¼­ ·Î±× ¸Þ½ÃÁö¸¦ ÆíÁýÇÏ´Ù°¡ ±× Ä¿¹ÔÀ» ÁßÁöÇÏ°í ½Í´Ù°í »ý°¢ÇßÀ» °æ¿ì¿¡´Â ±×Àú ÀúÀåÇÏÁö ¾Ê°í ÆíÁý±â¸¦ Á¾·áÇÏ¸é µË´Ï´Ù. ¹ú½á Ä¿¹Ô ¸Þ¼¼Áö¸¦ ÀúÀåÇß´Ù¸é ³»¿ëÀ» »èÁ¦ÇÏ°í ÇÑ ¹ø ´õ ÀúÀåÇØ ÁÖ¼¼¿ä.

$ 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¿¡´Â ÀÌ ±× ¹Û¿¡µµ ÀúÀå¼Ò³ª ÀÛ¾÷ º¹»ç¸¦ °ü¸®Çϱâ À§ÇÑ ¸¹Àº ±â´ÉÀÌ ÀÖ½À´Ï´Ù¸¸ ÀÌ Àå¿¡¼­ Áö±Ý±îÁö ¼³¸íÇØ ¿Â ¸í·É¸¸À» »ç¿ëÇصµ ¸Å¿ì ¸¹Àº ÀÏÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.


1.6. È÷½ºÅ丮 È®ÀÎÇϱâ

ÀÌÀü¿¡ ¸»ÇÑ °Íó·³ ÀúÀå¼Ò´Â ŸÀÓ ¸Ó½Å°ú °°Àº °÷ÀÔ´Ï´Ù. Áö±Ý±îÁö Ä¿¹ÔµÈ ¸ðµç º¯°æÀ» ±â·ÏÇϱ⠶§¹®¿¡ ÆÄÀÏÀ̳ª µð·ºÅ丮 °Å±â¿¡ µþ¸° ¸ÞŸµ¥ÀÌŸÀÇ ÀÌÀü ¹öÀüÀ» º¸´Â °Í¿¡ ÀÇÇØ È÷½ºÅ丮¸¦ Á¶»çÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. Subversion ¸í·É Çϳª·Î °ú°ÅÀÇ Æ¯Á¤ ÀÏÀÚ³ª ¸®ºñÀü ¹øÈ£ÀÇ ÀúÀå¼Ò »óŸ¦ üũ¾Æ¿ô(ȤÀº ¹ú½á ÀÖ´Â ÀÛ¾÷ Ä«ÇÇÀÇ º¹¿ø) ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª °ú°Å·Î µ¹¾Æ°¡Áö´Â ¾Ê°í ´ÜÁö °ú°Å°¡ ¾î¶°Çß´ÂÁö Á¶±Ý µé¿©´Ù º¸±â¸¸ ÇÏ°í ½ÍÀº Àϵµ ÀÚÁÖ ÀÖ½À´Ï´Ù.

ÀúÀå¼Ò·ÎÀÇ È÷½ºÅ丮 µ¥ÀÌÅ͸¦ ´Ù·ç±â À§ÇÑ ¸í·ÉÀÌ ¸î °³ ÀÖ½À´Ï´Ù.

svn log

Àü¹ÝÀûÀÎ Á¤º¸¸¦ Ç¥½ÃÇÕ´Ï´Ù. ¸®ºñÀü¿¡ µþ¸° ·Î±× ¸Þ¼¼Áö¿Í °¢°¢ÀÇ ¸®ºñÀü¿¡¼­ ¾î´À °æ·Î°¡ º¯°æµÇ¾ú´ÂÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.

svn diff

½Ã°£¿¡ µû¶ó ÆÄÀÏÀÌ ¾î¶»°Ô º¯°æµÇ¾î ¿Ô´ÂÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.

svn cat

ƯÁ¤ ¸®ºñÀü ¹øÈ£¿¡¼­ ÆÄÀÏÀ» ÃßÃâÇØ È­¸é¿¡ Ç¥½ÃÇÕ´Ï´Ù.

svn list

ÁöÁ¤ÇÑ ¸®ºñÀüÀÇ ÆÄÀÏÀ̳ª µð·ºÅ丮¸¦ Ç¥½ÃÇÕ´Ï´Ù.


1.6.1. svn log

ÆÄÀÏÀ̳ª µð·ºÅ丮ÀÇ È÷½ºÅ丮¿¡ °üÇÑ Á¤º¸¸¦ º¸°í ½ÍÀ» ¶§´Â 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
------------------------------------------------------------------------
      

±âº»°ªÀ¸·Î ·Î±× ¸Þ¼¼Áö´Â ½Ã°£ ¼ø¼­¿Í ¹Ý´ë·Î Ç¥½ÃµÇ´Â °Í¿¡ ÁÖÀÇÇϼ¼¿ä. ´Ù¸¥ ¹üÀ§ÀÇ ¸®ºñÀüÀ» ƯÁ¤ ¼ø¼­·Î º¸°í ½ÍÀº °æ¿ì³ª ÇÑ ¸®ºñÀüÀ» Âï¾î¼­ º¸°í ½ÍÀ» ¶§´Â --revision (-r) ¿É¼ÇÀ» »ç¿ëÇÕ´Ï´Ù.

$ 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¿¡ --verbose (-v) ¿É¼ÇÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. 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.

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

1.6.2. svn diff

svn diff´Â ¾Õ¿¡¼­ ´Ù·é ÀûÀÌ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº unified diff Çü½ÄÀ¸·Î ÆÄÀÏÀÇ Â÷ÀÌÁ¡À» Ç¥½ÃÇÕ´Ï´Ù. ÀúÀå¼Ò¿¡ Ä¿¹ÔÇϱâ Àü¿¡ ÀÛ¾÷ Ä«ÇÇ¿¡¼­ º¯°æµÈ Á¡À» Ç¥½ÃÇϴµ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

»ç½Ç svn diff¿¡´Â ¼¼ °¡Áö »ç¿ë¹ýÀÌ ÀÖ½À´Ï´Ù.

  • ·ÎÄà º¯°æ ³»¿ëÀ» È®ÀÎÇϱâ

  • ÀÛ¾÷ Ä«ÇÇ¿Í ÀúÀå¼Ò¸¦ ºñ±³

  • ÀúÀå¼Ò¿Í ÀúÀå¼Ò¸¦ ºñ±³


1.6.2.1. ·ÎÄÃÀÇ º¯°æ ³»¿ëÀ» È®ÀÎÇϱâ

ÀÌ¹Ì ºÁ ¿Â °Íó·³ ¿É¼Ç¾øÀÌ 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
$
        

1.6.2.2. ÀÛ¾÷ Ä«ÇÇ¿Í ÀúÀå¼Ò¸¦ ºñ±³Çϱâ

--revision(-r)¸¦ Çϳª¸¸ ÁöÁ¤Çϸé ÀÛ¾÷ Ä«ÇÇ´Â ÀúÀå¼ÒÀÇ ÁöÁ¤µÈ ¸®ºñÀü°ú ºñ±³ µË´Ï´Ù.

$ 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
$
        

1.6.2.3. ÀúÀå¼Ò¿Í ÀúÀå¼Ò¸¦ ºñ±³Çϱâ

--revision(-r)¿¡ ÄÝ·ÐÀ»·Î ±¸ºÐµÈ ¸®ºñÀü ¹øÈ£ µÎ °³¸¦ ÁöÁ¤ÇÏ¸é µÎ °³ÀÇ ÀúÀå¼Ò°¡ ºñ±³µË´Ï´Ù.

$ 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

$
        

1.6.3. svn cat

¸¸¾à ÀÌÀü ¹öÀüÀÇ ÆÄÀÏÀ» º¸°í ½ÍÁö¸¸ µÎ ÆÄÀÏ »çÀÌÀÇ Â÷À̸¦ º¼ ÇÊ¿ä´Â ¾ø´Â °æ¿ì¿¡´Â 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 ÇÁ·Î±×·¥¿¡ ÀüÇØÁÝ´Ï´Ù.

ÀÚÁÖ ´Ù¸¥ ¸®ºñÀü°úÀÇ Â÷ÀÌÁ¡À» ÃëÇÏ´Â °Íº¸´Ù´Â ±× ¹öÀüÀÇ ÆÄÀÏ Àüü¸¦ º¸´Â ÆíÀÌ °£´ÜÇÑ ÀÏÀÌ ÀÖ½À´Ï´Ù.


1.6.4. svn list

svn list ¸í·ÉÀº ·ÎÄà ¸Ó½Å¿¡ ½ÇÁ¦·Î ÆÄÀÏÀ» ¹ÞÁö ¾Ê°íµµ ÀúÀå¼Ò¿¡ ¾î¶² ÆÄÀÏÀÌ ÀÖ´ÂÁö º¸¿©ÁÝ´Ï´Ù.

$ svn list http://svn.collab.net/repos/svn
README
branches/
clients/
tags/
trunk/
      

Á» ´õ ÀÚ¼¼ÇÑ Ç¥½Ã¸¦ ¿øÇÑ´Ù¸é --verbose (-v) ¿É¼ÇÀ» ÁöÁ¤ÇÕ´Ï´Ù. Ãâ·ÂÀº ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.

$ 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/
      

°¢°¢ÀÇ ¼¼·ÎÁÙÀº ÆÄÀÏ ¶Ç´Â µð·ºÅ丮°¡ ¸¶Áö¸·À¸·Î ¹Ù²ï ¸®ºñÀü ¼öÁ¤ÇÑ »ç¶÷, ÆÄÀÏÀÎ °æ¿ì ±× ÆÄÀÏÀÇ Å©±â, ¸¶Áö¸·À¸·Î ¹Ù²ï ³¯Â¥, ±×¸®°í À̸§ÀÔ´Ï´Ù.


1.6.5. È÷½ºÅ丮 ±â´É¿¡ ´ëÇÑ ¸¶Áö¸· ¸»

Áö±Ý±îÁö º¸¾Æ¿Â ¸ðµç ¸í·É¿¡ ´õÇؼ­ svn update¿Í svn checkout ¿¡ --revision ¿É¼ÇÀ» Á־ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº ÀÛ¾÷ Ä«ÇÇ Àüü¸¦"°ú°Å ½ÃÁ¡"À¸·Î µÇµ¹¸³´Ï´Ù. [6]:

$ svn checkout --revision 1729 # Checks out a new working copy at r1729

$ svn update --revision 1729 # Updates an existing working copy to r1729

      

1.7. ÀÚÁÖ »ç¿ëµÇ´Â ´Ù¸¥ ¸í·Éµé

¾Õ¿¡¼­ º» °Íµé¸¸Å­ ÀÚÁÖ ÀÌ¿ëµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù¸¸ ´ÙÀ½ÀÇ ¸í·ÉÀÌ °¡²û ÇÊ¿äÇÏ°Ô µË´Ï´Ù.


1.7.1. svn cleanup

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
      

1.7.2. svn import

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
      

1.8. ¿ä¾à

ÀÌ°ÍÀ¸·Î Subversion Ŭ¶óÀ̾ðÆ®ÀÇ ¸í·É ´ëºÎºÐ¿¡ ´ëÇؼ­ ¼³¸íÇß½À´Ï´Ù. ¿©±â¼­ ¼³¸íÇÏÁö ¾Ê¾ÒÁö¸¸ Áß¿äÇÑ °ÍÀº ºê·£Ä¡(branch)¿Í º´ÇÕ(merge) (> ÂüÁ¶) ±×¸®°í ¼Ó¼ºÀÔ´Ï´Ù (> ÂüÁ¶). SubversionÀÌ °¡Áö°í ÀÖ´Â ¸¹Àº ¸í·ÉÀ» ÆľÇÇÏ·Á¸é ±×¸®°í ¿©·¯ºÐÀÇ ÀÏÀ» ½±°Ô Çϱâ À§Çؼ­ ±×°ÍµéÀ» ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö ¾Ë¾Æº¸·Á¸é >¸¦ ÈȾ´Â °ÍÀÌ ÁÁÀ»°ÍÀÔ´Ï´Ù.

Notes

[1]

ÀÛ¾÷º»¿¡ ÀÖ´Â µð·ºÅ丮´Â ¸ðµÎ .svnÀ̶ó´Â ÇÏÀ§ µð·ºÅ丮¸¦ Æ÷ÇÔÇÏ°í ÀÖ´Ù´Â »ç½ÇÀº Á¦¿ÜÇÏ°í ¸»ÀÔ´Ï´Ù. ³ªÁß¿¡ Á» ´õ À̾߱â ÇÏÁö¿ä.

[2]

¹°·Ð ÀúÀå¼Ò(repository)·ÎºÎÅÍ ¿ÏÀüÇÏ°Ô »èÁ¦µÇ¾î ¹ö¸®´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ´ÜÁö ÀúÀå¼Ò(repository)ÀÇ HEAD·ÎºÎÅÍ »èÁ¦µÉ »ÓÀÔ´Ï´Ù. »èÁ¦ÇÑ ¸®ºñÀüº¸´Ù ÀüÀÇ ¸®ºñÀüÀ» ÁöÁ¤ÇØ Ã¼Å©¾Æ¿ô Çϸé(ȤÀº ÀÛ¾÷ º¹»ç¸¦ °»½ÅÇϸé) »èÁ¦Àü »óÅ·Πµ¹¾Æ¿Ã ¼ö°¡ ÀÖ½À´Ï´Ù.

[3]

SubversionÀº ³»ºÎ diff ¿£ÁøÀ» ÀÌ¿ëÇؼ­ unified diff Çü½ÄÀ» »ý¼ºÇÕ´Ï´Ù. ¸¸¾à ´Ù¸¥ Çü½ÄÀÇ diff Ãâ·ÂÀ» °®°í ½ÍÀº °æ¿ì¿¡´Â --diff-cmd·Î ¿ÜºÎ diff ÇÁ·Î±×·¥À» ÁöÁ¤ÇÏ°í --extensions ¿É¼ÇÀ» »ç¿ëÇØ Ç÷¡±×¸¦ °Ç³×ÁÖ¼¼¿ä. ¿¹¸¦ µé¾î ÆÄÀÏ foo.cÀÇ ·ÎÄà º¯°æÁ¡À» context Ãâ·Â Çü½Ä¿¡¼­ º¸°í ½ÍÁö¸¸ °ø¹éÀÇ º¯°æÀº ¹«½ÃÇÏ°í ½ÍÀº °æ¿ì "snv diff --diff-cmd /usr/bin/diff --extensions '-bc' foo.c" ¿Í °°ÀÌ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

[4]

´ç½ÅÀº Àӽà ÆÄÀÏÀ» Ç×»ó Á÷Á¢ »èÁ¦ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÇÏÁö¸¸ SubversionÀÌ ´ç½ÅÀ» À§ÇØ ¸í·ÉÀ» ÁغñÇÏ°í Àִµ¥ Á¤¸»·Î ±×·±ÀÏÀ» ÇÏ°í ½ÍÀ¸½Ê´Ï±î? ±×·¸°Ô´Â »ý°¢µÇÁö ¾Ê½À´Ï´Ù¸¸.

[5]

±×¸®°í ´ç½ÅÀÌ ÁÖ¹®ÇÏ¸é ±×µéÀº ´ç½ÅÀ» ±âÂ÷¿¡ Å¿ö¼­ ¸¶À»ÀÇ ¹ÛÀ¸·Î º¸³»¹ö¸± Áöµµ ¸ô¶ó¿ä.

[6]

¾Ë°Ú½À´Ï±î? SubversionÀº ŸÀÓ ¸Ó½ÅÀ̶ó°í ¸»ÇßÁÒ?


ID
Password
Join
You display the wonderful traits of charm and courtesy.


sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2005-04-04 01:58:20
Processing time 0.0021 sec