ÄÁÅÙÃ÷ Ç¥½Ã±â ±¸Çö

ºñ±³ Ç÷¯±×ÀÎÀ» »ç¿ëÇÏ¿© ±¸Á¶È­µÇÁö ¾ÊÀº ¿ä¼Ò °£ÀÇ ÄÁÅÙÃ÷ Â÷ÀÌÁ¡À» º¸°í º´ÇÕÇÏ´Â µ¥ ÇÊ¿äÇÑ Æ¯¼öÈ­µÈ Ç¥½Ã±â¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.

´Ü¼ø ÄÁÅÙÃ÷ Ç¥½Ã±â

´ÜÀÏ ÀԷ¸¸ »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ ºñ±³°¡ ÇÊ¿ä¾ø´Â °æ¿ì¿¡´Â ÄÁÅÙÃ÷ Ç¥½Ã±â¸¦ »ç¿ëÇÕ´Ï´Ù. À̸¦ À§ÇÑ ÀϹÝÀûÀÎ ¿¹°¡ ¹Ù·Î "·ÎÄà È÷½ºÅ丮¿¡¼­ º¹¿ø" ±â´ÉÀÔ´Ï´Ù.  org.eclipse.compare.contentViewers È®ÀåÁ¡À» »ç¿ëÇÏ¿© ÇØ´ç ÀÔ·ÂÀ» ºñ±³ÇÏÁö ¾Ê´Â Ư¼öÈ­µÈ ÄÁÅÙÃ÷ Ç¥½Ã±â¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÄÁÅÙÃ÷ º´ÇÕ Ç¥½Ã±â

ÄÁÅÙÃ÷ º´ÇÕ Ç¥½Ã±â¿¡¼­ ÇØ´ç ÀԷ¿¡ ´ëÇÑ 2¹æÇâ ¶Ç´Â 3¹æÇâ ºñ±³¸¦ ¼öÇàÇϰí, °á°ú¸¦ ³ª¶õÈ÷ ¶Ç´Â ´Ù¸¥ ÀûÀýÇÑ ¹æ¹ýÀ¸·Î Á¦°øÇÕ´Ï´Ù.  Ç¥½Ã±â¸¦ »ç¿ëÇÏ¿© ÀÔ·Â °£¿¡ º´ÇÕÇÒ ¼ö ÀÖ½À´Ï´Ù. ÄÁÅÙÃ÷ º´ÇÕ Ç¥½Ã±â´Â ÅØ½ºÆ®³ª À̹ÌÁö¿¡ °øÅëÀÔ´Ï´Ù.

Ç¥ÁØ º´ÇÕ Ç¥½Ã±â°¡ Ç÷¯±×ÀÎ ±â´É¿¡ ÀûÇÕÇÏÁö ¾ÊÀº °æ¿ì »ç¿ëÀÚ °íÀ¯ÀÇ ÄÁÅÙÃ÷ Ç¥½Ã±â¸¦ ±¸ÇöÇϵµ·Ï ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.  ÄÁÅÙÃ÷ Ç¥½Ã±â´Â org.eclipse.compare.contentMergeViewers È®ÀåÁ¡À» »ç¿ëÇÏ¿© Ç÷§Æû¿¡ ´ëÇØ µî·ÏµÇ¾î¾ß ÇÕ´Ï´Ù.  ´ÙÀ½ ¸¶Å©¾÷Àº Java IDE¿¡¼­ Java ¹× Ư¼º ÆÄÀÏÀ» º¼ ¼ö ÀÖµµ·Ï Ư¼öÈ­µÈ ÄÁÅÙÃ÷ º´ÇÕ Ç¥½Ã±âÀÇ Á¤ÀǸ¦ Ç¥½ÃÇÕ´Ï´Ù.

   <extension
	point="org.eclipse.compare.contentMergeViewers">
	<viewer
		id="org.eclipse.jdt.internal.ui.compare.JavaContentViewerCreator"
		extensions="java,java2"
		class="org.eclipse.jdt.internal.ui.compare.JavaContentViewerCreator">
	</viewer>
	<viewer
		id="org.eclipse.jdt.internal.ui.compare.TextMergeViewerCreator"
		extensions="properties"
		class="org.eclipse.jdt.internal.ui.compare.TextMergeViewerCreator">
	</viewer>
</extension>

¸¶Å©¾÷¿¡¼­ Ç¥½Ã±âÀÇ ID, ÀÌ ID¸¦ ÀÛ¼ºÇϴ Ŭ·¡½º ¹× ÄÁÅÙÃ÷ Ç¥½Ã±â°¡ »ç¿ëÇØ¾ß ÇÒ ÆÄÀÏ È®ÀåÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ.   

ContentMergeViewer´Â 2°³ÀÇ ÄÁÅÙÃ÷ ¿µ¿ªÀÌ ³ª¶õÈ÷ ÀÖ°í °øÅë »óÀ§(3¹æÇâ ºñ±³¿ë)¿¡ ´ëÇÑ ¼±ÅÃÀû ÄÁÅÙÃ÷ ¿µ¿ªÀÌ ÀÖ´Â Ãß»óÀûÀÎ ºñ±³ ¹× º´ÇÕ Ç¥½Ã±âÀÔ´Ï´Ù. ±¸Çö¿¡ ÄÁÅÙÃ÷ À¯Çü¿¡ ´ëÇÑ °¡Á¤ÀÌ ¾øÀ¸¹Ç·Î, ¼­ºêŬ·¡½º°¡ ƯÁ¤ ÄÁÅÙÃ÷ À¯ÇüÀ» ó¸®ÇØ¾ß ÇÕ´Ï´Ù.   

org.eclipse.compare.internalÀÇ ImageMergeViewer¿¡¼­´Â ContentMergeViewer¸¦ »ç¿ëÇÏ¿© À̹ÌÁö¿¡ ´ëÇÑ °£´ÜÇÑ º´ÇÕ Ç¥½Ã±â¸¦ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ÄÁÅÙÃ÷ º´ÇÕ Ç¥½Ã±â´Â IMergeViewerContentProvider ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÏ´Â ÄÁÅÙÃ÷ Á¦°øÀÚ¸¦ ÅëÇØ ÇØ´ç ¸ðµ¨¿¡ ¾×¼¼½ºÇÕ´Ï´Ù.

ÅØ½ºÆ® º´ÇÕ

Ç¥½Ã±â°¡ ÅØ½ºÆ®¸¦ »ç¿ëÇÏ´Â °æ¿ì ÅؽºÆ® ÄÁÅÙÃ÷¸¦ ºñ±³ÇÏ°í º´ÇÕÇÏ´Â Ãß°¡ Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

TextMergeViewer´Â ÅØ½ºÆ® ÄÁÅÙÃ÷¸¦ ºñ±³ ¹× º´ÇÕÇϱâ À§ÇÑ ContentMergeViewerÀÇ ±¸Ã¼ÀûÀΠǥÁØ ¼­ºêŬ·¡½ºÀÔ´Ï´Ù. ÅؽºÆ® º´ÇÕ Ç¥½Ã±â¿¡¼­´Â RangeDifferencer¸¦ »ç¿ëÇÏ¿© 2°³ ¶Ç´Â 3°³ÀÇ ÀÔ·Â ¹®¼­¸¦ Çະ·Î ÅØ½ºÆ® ºñ±³¸¦ ¼öÇàÇÕ´Ï´Ù.  

¼­·Î ´Ù¸¥ ÅØ½ºÆ® ÇàÀÇ °æ¿ì TextMergeViewer¿¡¼­´Â ITokenComparator¸¦ »ç¿ëÇÏ¿© ÀÏÄ¡ÇÏ´Â ÅäÅ«°ú ÀÏÄ¡ÇÏÁö ¾Ê´Â ÅäÅ«ÀÇ °¡Àå ±ä ¼ø¼­¸¦ ã½À´Ï´Ù. TextMergeViewerÀÇ ±âº» ÅäÅ« ºñ±³´Â °ø¹éÀ¸·Î ±¸ºÐµÈ ¹®ÀÚ¿¡¼­ ÀÛµ¿ÇÕ´Ï´Ù. ´Ù¸¥ °èȹÀÌ ÇÊ¿äÇÒ °æ¿ì(¿¹¸¦ µé¾î, Java ÀÎ½Ä º´ÇÕ Ç¥½Ã±âÀÇ Java ÅäÅ«) Ŭ¶óÀÌ¾ðÆ®´Â ITokenComparator ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ¿© ÀÚü ÅäÅ« ºñ±³±â¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.   

TextMergeViewer´Â Àüü ¹®¼­¿Í ¹®¼­ÀÇ ÇÏÀ§ ¹üÀ§¿¡¼­ ÀÛµ¿ÇÕ´Ï´Ù. ÀϺΠ¹®¼­ÀÇ °æ¿ì Ç¥½Ã±âÀÇ ÀÔ·ÂÀº IDocument ´ë½Å IDocumentRange¿©¾ß ÇÕ´Ï´Ù.

Â÷ÀÌ ¹üÀ§

RangeDifferencer´Â ÀÏÄ¡ÇÏ´Â ºñ±³ °¡´ÉÇÑ ¿£Æ¼Æ¼¿Í ÀÏÄ¡ÇÏÁö ¾Ê´Â ºñ±³ °¡´ÉÇÑ ÅØ½ºÆ® ÄÁÅÙÃ÷¿¡¼­ ¿£Æ¼Æ¼ÀÇ °¡Àå ±ä ¼ø¼­¸¦ ã½À´Ï´Ù. ÇØ´ç ±¸ÇöÀº ÆÄÀÏ ºñ±³ ÇÁ·Î±×·¥(ÀÛ¼ºÀÚ: Webb Miller ¹× Eugene W. Myers, Software Practice and Experience, º¼·ý 15, 1985³â 11¿ù)¿¡¼­ ¼³¸íÇÑ ¿ÀºêÁ§Æ®È­µÈ ¹öÀüÀÇ ¾Ë°í¸®ÁòÀ» ±âÁØÀ¸·Î ÇÕ´Ï´Ù. Å¬¶óÀÌ¾ðÆ®´Â IRangeComparator ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöÀ¸·Î Â÷º°±â¿¡°Ô ÀÔ·ÂÀ» Á¦°øÇØ¾ß ÇÕ´Ï´Ù. IRangeComparator´Â ÀÔ·Â µ¥ÀÌÅ͸¦ ¿£Æ¼Æ¼ÀÇ ¼ø¼­·Î ¼¼ºÐÇϰí ÇÑ ¿£Æ¼Æ¼¸¦ ´Ù¸¥ IRangeComparatorÀÇ ¿£Æ¼Æ¼¿Í ºñ±³Çϱâ À§ÇÑ ¸Þ¼Òµå¸¦ Á¦°øÇÕ´Ï´Ù.

¿¹¸¦ µé¾î, µÎ °³ÀÇ ÅØ½ºÆ® ¹®¼­¸¦ ºñ±³Çϰí ÀÏÄ¡ÇÏ´Â Çà°ú ÀÏÄ¡ÇÏÁö ¾Ê´Â ÇàÀÇ °¡Àå ±ä °øÅë ¼ø¼­¸¦ ã±â À§ÇØ IRangeComparatorÀÇ ±¸Çö¿¡¼­ ¹®¼­¸¦ ÇàÀ¸·Î ¼¼ºÐÇÏ°í µÎ ÇàÀÌ °°ÀºÁö Å×½ºÆ®Çϱâ À§ÇÑ ¸Þ¼Òµå¸¦ Á¦°øÇÕ´Ï´Ù. À̸¦ ¼öÇàÇÒ ¼ö ÀÖ´Â ¹æ¹ý ¿¹Á¦´Â org.eclipse.compare.internal.DocLineComparator¸¦ ÂüÁ¶ÇϽʽÿÀ.

Â÷º°±â¿¡¼­´Â ÀÌ ¼ø¼­ »çÀÌÀÇ Â÷À̸¦ RangeDifference ¿ÀºêÁ§Æ®ÀÇ ¹è¿­·Î ¸®ÅÏÇÕ´Ï´Ù. ¸ðµç ´ÜÀÏ RangeDifference¿¡¼­´Â Â÷ÀÌ Á¾·ù(º¯°æ ¾øÀ½, º¯°æ, Ãß°¡, »èÁ¦)¿Í µÎ °³³ª ¼¼ °³ÀÇ ÀÔ·ÂÀÇ ±âº»ÀÌ µÇ´Â ºñ±³ °¡´ÉÇÑ ¿£Æ¼Æ¼ÀÇ ÇØ´ç ¹üÀ§¸¦ ¼³¸íÇÕ´Ï´Ù.

 

Copyright IBM Corporation and others 2000, 2003.