±¸Á¶ Ç¥½Ã±â ±¸Çö

±¸Á¶ º´ÇÕ Ç¥½Ã±â´Â ÇØ´ç ÀԷ¿¡ ´ëÇÑ 2¹æÇâ ¶Ç´Â 3¹æÇâ ºñ±³¸¦ ¼öÇàÇϰí, °á°ú¸¦ °èÃþ ±¸Á¶ º¸±â·Î Á¦°øÇϰí, »ç¿ëÀÚ°¡ ÀÔ·Â »çÀÌ¿¡¼­ º´ÇÕÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. ±¸Á¶ º´ÇÕ Ç¥½Ã±â´Â ÀÛ¾÷°ø°£ ÀÚ¿øÀ̳ª ¾ÆÄ«ÀÌºê ÆÄÀÏÀÇ ±¸¼º¿ø¿¡ °øÅëÀÔ´Ï´Ù.

Æ®¸® ¸ð¾ç ±¸Á¶ Ç¥½Ã±â

¿©·¯ °¡Áö ±¸Á¶ ºñ±³ Ç¥½Ã±âÀÇ ±¸ÇöÀÌ Æ®¸®¸¦ ±â¹ÝÀ¸·Î ÇϹǷÎ, ºñ±³ Ç÷¯±×ÀÎÀº ÀÏ¹Ý Æ®¸® ±â¹ÝÀÇ StructureDiffViewer¸¦ Á¦°øÇÕ´Ï´Ù. Ç÷¯±×ÀÎÀº ´ÜÀÏ ÀÔ·Â ¿ÀºêÁ§Æ®¸¦ °èÃþ ±¸Á¶·Î ±¸ºÐÇÏ´Â ±¸Á¶ ÀÛ¼ºÀÚ¸¦ Á¦°øÇØ¾ß ÇÕ´Ï´Ù. StructureDiffViewer´Â °á°ú ±¸Á¶¿¡ ´ëÇÑ ºñ±³¸¦ ¼öÇàÇϰí ÇØ´ç °á°ú¸¦ Æ®¸®·Î Ç¥½ÃÇÕ´Ï´Ù.

org.eclipse.compare.structureCreators È®ÀåÀ» »ç¿ëÇÏ¿© Ç÷¯±×ÀÎÀÇ ±¸Á¶ ÀÛ¼ºÀÚ¸¦ ÁöÁ¤ÇϽʽÿÀ. ÄÁÅÙÃ÷ Ç¥½Ã±â¿Í ¸¶Âù°¡Áö·Î ±¸Á¶ ÀÛ¼ºÀÚ¸¦ ÆÄÀÏ È®ÀåÀÚ ¼¼Æ®¿¡ ÁöÁ¤Çϰųª ÄÁÅÙÃ÷ À¯ÇüÀ» ƯÁ¤ ±¸Á¶ ÀÛ¼ºÀÚ¿Í ¿¬°ü½ÃŰ´Â µ¥ contentTypeBindingÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸Á¶ ÀÛ¼ºÀÚ´Â ÄÁÅÙÃ÷ Ç¥½Ã±â¿Í ¸Å¿ì À¯»çÇϹǷΠ¿©±â¿¡¼­´Â ¸¶Å©¾÷À» °ËÅäÇÏÁö ¾Ê½À´Ï´Ù. JDT Ç÷¯±×ÀÎÀº org.eclipse.compare.structureCreators¿¡ ´ëÇØ ¸î °¡Áö ÄÁÆ®¸®ºä¼ÇÀ» Á¤ÀÇÇÕ´Ï´Ù.

±âŸ °èÃþ ±¸Á¶ Ç¥½Ã±â

ÀϺÎÀÇ °æ¿ì, Æ®¸® ±â¹ÝÀÇ StructureDiffViewer´Â Ç÷¯±×Àο¡ ÀûÇÕÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. org.eclipse.compare.structureMergeViewers È®ÀåÁ¡À» »ç¿ëÇÏ¿© ±¸Á¶ º´ÇÕ Ç¥½Ã±â¿¡ ÇØ´çÇÏ´Â »ç¿ëÀÚ °íÀ¯ÀÇ ±¸ÇöÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸Á¶ º´ÇÕ Ç¥½Ã±â¸¦ ÆÄÀÏ È®ÀåÀÚ¿¡ ÁöÁ¤Çϰųª ÄÁÅÙÃ÷ À¯ÇüÀ» ƯÁ¤ ±¸Á¶ º´ÇÕ Ç¥½Ã±â¿Í ¿¬°ü½ÃŰ´Â µ¥ contentTypeBindingÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. org.eclipse.compare.structureMergeViewers ÄÁÆ®¸®ºä¼Ç¿¡ ´ëÇÑ ¿¹´Â JDT Ç÷¯±×ÀÎÀ» ÂüÁ¶ÇϽʽÿÀ.

°Ë»ö Ç÷¯±×ÀÎÀº °Ë»ö Ç¥½Ã±â¸¦ ±¸ÇöÇÏ´Â µ¥ µµ¿òÀÌ µÇ´Â ¸î °¡Áö À¯Æ¿¸®Æ¼ Ŭ·¡½º¸¦ Á¦°øÇÕ´Ï´Ù.

Â÷º°±â 

Â÷º°±â´Â °èÃþÀûÀ¸·Î ±¸Á¶È­µÈ µ¥ÀÌÅÍÀÇ Â÷º° ¿£ÁøÀÔ´Ï´Ù. µÎ °³³ª ¼¼ °³ÀÇ ÀÔ·ÂÀ» ÇÊ¿ä·Î Çϰí ÇØ´ç ÀԷ¿¡ ´ëÇØ 2¹æÇâ ¶Ç´Â 3¹æÇâ ºñ±³¸¦ ¼öÇàÇÕ´Ï´Ù.

Â÷º° ¿£Áø¿¡ ´ëÇÑ ÀÔ·Â ¿ä¼Ò¿¡¼­ IStructureComparator ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÒ °æ¿ì ¿£ÁøÀº ÀÚüÀûÀ¸·Î ÀÔ·Â ¿ä¼ÒÀÇ ÇÏÀ§¿¡ ¹Ýº¹ÀûÀ¸·Î Àû¿ëÇÕ´Ï´Ù. ¸®ÇÁ ¿ä¼Ò¿¡¼­ IStreamContentAccessor ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß Â÷º°±â¿¡¼­ ÇØ´ç ÄÁÅÙÃ÷¿¡ ´ëÇØ ¹ÙÀÌÆ®½Ä ºñ±³¸¦ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

Ç÷§Æû ±¸Çö¿¡ Æ÷ÇÔµÈ Â÷º°±â¿¡ ´ëÇÑ ¿©·¯ °¡Áö ÁÁÀº ¿¹Á¦°¡ ÀÖ½À´Ï´Ù.

±âº»ÀûÀ¸·Î Â÷º° ¿£Áø¿¡¼­´Â ºñ±³ Á¶ÀÛ °á°ú¸¦ DiffNode ¿ÀºêÁ§Æ®ÀÇ Æ®¸®·Î ¸®ÅÏÇÕ´Ï´Ù. DiffNode¿¡¼­´Â µÎ °³ ¶Ç´Â ¼¼ °³ÀÇ ÀÔ·Â °£ º¯°æ»çÇ׿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù. ¿£ÁøÀÇ ´ÜÀÏ ¸Þ¼Òµå¸¦ ´ëüÇÏ¿© °á°ú ³ëµåÀÇ À¯ÇüÀ» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

Â÷ÀÌ Ç¥½Ã±â

DiffNodeÀÇ Æ®¸®¸¦ DiffTreeViewer¿¡ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. DiffTreeViewer¿¡¼­´Â Æ®¸®ÀÇ ³»ºÎ ³ëµå¿¡¼­ IDiffContainer ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÏ°í ±¸ÇöÀ» IDiffElement ÀÎÅÍÆäÀ̽º¿¡°Ô ³²°ÜµÓ´Ï´Ù.

°èÃþÀûÀ¸·Î ±¸Á¶È­µÈ µ¥ÀÌÅ͸¦ ºñ±³Çϰí Â÷À̸¦ Ç¥½ÃÇϱâ À§ÇÑ ÀϹÝÀûÀÎ ´Ü°è´Â ´ÙÀ½°ú °°½À´Ï´Ù.

  1. IStructureComparator ¹× IStreamContentAccessor ÀÎÅÍÆäÀ̽º¸¦ ¸ðµÎ ±¸ÇöÇÏ´Â ¿ÀºêÁ§Æ®ÀÇ Æ®¸®·Î ÀÔ·Â µ¥ÀÌÅ͸¦ ¸ÊÇÎÇÕ´Ï´Ù.
  2. Â÷º°±â¸¦ ÅëÇØ ºñ±³ ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù.
  3. Â÷º° °á°ú¸¦ DiffTreeViewer·Î °ø±ÞÇÕ´Ï´Ù.

StructureDiffViewer´Â À§ ¼¼ ´Ü°è¸¦ ÀÚµ¿È­Çϴ Ư¼öÇÑ DiffTreeViewerÀÔ´Ï´Ù. ÀÌ Ç¥½Ã±â´Â ºñ±³ÇÒ µÎ °³ ¶Ç´Â ¼¼ °³ÀÇ ÀÔ·Â ¿ä¼Ò¸¦ °Ë»öÇÏ´Â ICompareInput À¯ÇüÀÇ ´ÜÀÏ ÀÔ·Â ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÕ´Ï´Ù. ÀÌ Ç¥½Ã±â´Â IStructureCreator¸¦ »ç¿ëÇÏ¿© IStructureComparator ¹× IStreamContentAccessor ¿ÀºêÁ§Æ®°¡ ÀÖ´Â Æ®¸®¸¦ ÃßÃâÇÕ´Ï´Ù. ±×·± ´ÙÀ½ ÀÌ Æ®¸®¸¦ Â÷º° ¿£Áø°ú ºñ±³ÇÏ°í °á°ú¸¦ Æ®¸® Ç¥½Ã±â¿¡ Ç¥½ÃÇÕ´Ï´Ù.

ZipFileStructureCreator´Â IStructureCreator ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöÀ̰í, Â÷º° ¿£Áø(Â÷º°±â)À» ÅëÇØ ½±°Ô ºñ±³ÇÒ ¼ö ÀÖ´Â Zip ¾ÆÄ«À̺êÀÇ ÄÁÅÙÃ÷¸¦ IStructureComparatorÀÇ °èÃþ ±¸Á¶·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. ÀÌ´Â ºñ±³ Ç÷¯±×ÀÎÀÇ °èÃþ ±¸Á¶ ºñ±³ ±â´É¿¡ ±¸Á¶È­µÈ ÆÄÀÏÀ» »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ´Â ¹æ¹ýÀ» À§ÇÑ ÁÁÀº ¿¹Á¦ÀÔ´Ï´Ù.