³í¸® ¸ðµ¨ ÅëÇÕ¿¡ ´ëÇÑ ÀúÀå¼Ò ·Îµå¸Ê

³í¸® ¸ðµ¨¿¡ ´ëÇÑ ¸ðµç Áö¿øÀ» Á¦°øÇÏ·Á¸é ÀúÀå¼Ò Á¦°øÀÚ°¡ ´ÙÀ½ ´Ü°è¸¦ ¼öÇàÇØ¾ß ÇÕ´Ï´Ù.

  1. ResourceMapping¿¡ ¸Â°Ô ¼öÁ¤µÇ´Â ¿ä¼Ò¿¡ ÇØ´ç ÀúÀå¼Ò Á¶ÀÛÀ» ÄÁÆ®¸®ºä¼ÇÇÕ´Ï´Ù.
  2. ISynchronizationScope ¹× Áö¿ø API¸¦ »ç¿ëÇÏ¿© ÀÚ¿ø ¸ÊÇο¡ ´ëÇØ ¼öÇàµÈ Á¶ÀÛ¿¡ ¸ðµç ÇØ´ç ¸ðµ¨ ¿ä¼Ò ¹× ÀÚ¿øÀÌ Æ÷ÇԵǴÂÁö È®ÀÎÇÕ´Ï´Ù.
  3. IMergeContext ÀÎÅÍÆäÀ̽º ¹× Áö¿ø API¸¦ ÅëÇØ ¸ðµ¨ Á¦°øÀÚ°¡ headless º´ÇÕ¿¡ Âü¿©ÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÕ´Ï´Ù.
  4. º´ÇÕ°ú °ü·ÃµÈ ¸ðµ¨¿¡ teamContentProviders¸¦ »ç¿ëÇÏ¿© ¸ðµ¨ Á¦°øÀÚ°¡ º´ÇÕ ¹Ì¸®º¸±â¿¡ Âü¿©ÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÕ´Ï´Ù. ¸ðµ¨ ÄÁÅÙÃ÷, º´ÇÕ ÄÁÅØ½ºÆ® ¹× ºñ±³ ÇÁ·¹ÀÓ¿öÅ© °£ÀÇ °ü°è °ü¸®¿¡ µµ¿òÀ» ÁÖ´Â ModelSynchronizeParticipant Ŭ·¡½º°¡ Á¦°øµË´Ï´Ù.
  5. IFileHistoryProvider API¸¦ ÅëÇØ ÀÛ¾÷°ø°£ ÆÄÀÏ È÷½ºÅ丮¿¡ ´ëÇÑ ¾×¼¼½º¸¦ Á¦°øÇÕ´Ï´Ù.
  6. org.eclipse.core.filesystem Ç÷¯±×ÀÎÀÇ Eclipse ÆÄÀÏ ½Ã½ºÅÛ API¸¦ »ç¿ëÇÏ¿© ¿ø°Ý ±¸¼º¿¡ ´ëÇÑ ¾×¼¼½º¸¦ Á¦°øÇϰí ProjectSetCapability¸¦ ÅëÇØ ÀÛ¾÷°ø°£ ÇÁ·ÎÁ§Æ®¿¡ ¸µÅ©ÇÕ´Ï´Ù.
  7. SynchronizationStateTester API¿¡ »ç¿ëÇÒ Subscriber ÀÛ¾÷°ø°£À» Á¦°øÇÏ¿© ³í¸® ¸ðµ¨ ¿ä¼Ò µ¥ÄÚ·¹À̼ÇÀ» Áö¿øÇÕ´Ï´Ù.

´ÙÀ½ ¼½¼ÇÀº À§ÀÇ °¢ »çÇ׿¡ ´ëÇØ ÀÚ¼¼È÷ ¼³¸íÇÕ´Ï´Ù. org.eclipse.team.examples.filesystem Ç÷¯±×ÀÎÀº ÀÌ·¯ÇÑ »çÇ× Áß ¸î °¡Áö¿¡ ´ëÇØ ¼³¸íÇÏ´Â ¿¹Á¦¸¦ Æ÷ÇÔÇÕ´Ï´Ù. CVS ÀúÀå¼Ò¿¡¼­ ÇÁ·ÎÁ§Æ®¸¦ üũ¾Æ¿ôÇÏ¿© ÀÌ ÇнÀ¼­¸¦ Àд µ¿¾È ÂüÁ¶·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸éÃ¥»çÇ×: ¿¹Á¦ Ç÷¯±×ÀÎÀÇ ¼Ò½º ÄÚµå´Â ½Ã°£ÀÌ È帣¸é¼­ º¯°æµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼­ »ç¿ëµÇ´Â ³»¿ë°ú ÀÏÄ¡ÇÏ´Â »çº»À» °¡Á®¿Ã °æ¿ì 3.2 ¹öÀü ű×(´ëºÎºÐÀÇ °æ¿ì R3_2) ¶Ç´Â 2006³â 6¿ù 28ÀÏÀÇ ³¯Â¥ ű׸¦ »ç¿ëÇÏ¿© ÇÁ·ÎÁ§Æ®¸¦ üũ¾Æ¿ôÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÚ¿ø ¸ÊÇο¡ Á¶Ä¡ ÄÁÆ®¸®ºä¼Ç

±âº» ÀÚ¿ø ¸ÊÇÎ API

ÀÚ¿ø ¸ÊÇÎ API´Â ´ÙÀ½ Ŭ·¡½º·Î ±¸¼ºµË´Ï´Ù.

ÀÚ¿ø ¸ÊÇο¡´Â µÎ °¡Áö À¯ÇüÀÇ Ç÷¯±×ÀÎÀÌ Áß¿äÇÕ´Ï´Ù. ÇØ´ç Ç÷¯±×ÀÎÀº ÀÛ¾÷°ø°£ÀÇ ÀÚ¿øÀ¸·Î ±¸¼ºµÇ°Å³ª Æ÷ÇԵǴ ¸ðµ¨À» Á¦°øÇÏ´Â Ç÷¯±×Àΰú ÀÚ¿ø¿¡ ´ëÇÑ Á¶ÀÛÀ» ¼öÇàÇÏ·Á´Â Ç÷¯±×ÀÎÀÔ´Ï´Ù. ÀüÀÚÀÇ °æ¿ì´Â ¸ðµ¨ ·Îµå¸Ê¿¡¼­ ¼³¸íÇϰí ÈÄÀÚÀÇ °æ¿ì´Â ´ÙÀ½ ¼½¼Ç¿¡¼­ ¼³¸íÇÕ´Ï´Ù.

ÀÚ¿ø ¸ÊÇÎ ¹× ¿ÀºêÁ§Æ® ÄÁÆ®¸®ºä¼Ç

¼öÁ¤ °¡´ÉÇÑ È®ÀåÁ¡¿¡ È®ÀåÀ» ÄÁÆ®¸®ºä¼ÇÇÏ´Â Ç÷¯±×ÀÎÀº »õ ResourceMapping API¸¦ Áö¿øÇϱâ À§ÇØ ´ÙÀ½°ú °°Àº µÎ °¡Áö º¯°æ ÀÛ¾÷À» ¼öÇàÇØ¾ß ÇÕ´Ï´Ù.

  1. ÇØ´ç plugin.xml ÆÄÀÏ¿¡¼­ popupMenus È®ÀåÁ¡ÀÇ objectContributions¸¦ IResource ´ë½Å ´ë»ó ResourceMappingÀ¸·Î °»½ÅÇÕ´Ï´Ù(ÇØ´çµÇ´Â °æ¿ì).
  2. IResource ´ë½Å ResourceMapping¿¡ ´ëÇÑ ÀÛ¾÷ Á¶Ä¡¸¦ °»½ÅÇÏ°í ¼øÈ¸¿¡ Á¦°øµÈ ±íÀÌ Á¦ÇÑÁ¶°ÇÀ» ÁؼöÇÕ´Ï´Ù.

IResource¿¡ ¿ÀºêÁ§Æ® ÄÁÆ®¸®ºä¼ÇÀ» Ãß°¡ÇÏ´Â Ç÷¯±×ÀÎÀº ÀÌÁ¦ ´ë½Å ResourceMapping¿¡ ÇØ´ç ÄÁÆ®¸®ºä¼ÇÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù(¿©·¯ ÀÚ¿ø¿¡ Á¶Ä¡¸¦ Àû¿ëÇÒ ¼ö ÀÖ´Â °æ¿ì). ´ÙÀ½Àº ÀÚ¿ø ¸ÊÇο¡ ¸Â°Ô ¼öÁ¤µÇ´Â ¿ÀºêÁ§Æ®¿¡ ¸Þ´º Á¶Ä¡¸¦ ÄÁÆ®¸®ºä¼ÇÇÏ´Â XML ½º´ÏÆêÀÔ´Ï´Ù.

   <extension
       point="org.eclipse.ui.popupMenus">
     <objectContribution
            objectClass="org.eclipse.core.resources.mapping.ResourceMapping"
            adaptable="true"
            id="org.eclipse.team.ccvs.ui.ResourceMapperContributions">
<enablement>
<adapt type="org.eclipse.core.resources.mapping.ResourceMapping">
<test
property="org.eclipse.core.resources.projectPersistentProperty"
args="org.eclipse.team.core.repository,org.eclipse.team.cvs.core.cvsnature" />
</adapt>
</enablement>
<action
label="%UpdateAction.label"
definitionId="org.eclipse.team.cvs.ui.update"
class="org.eclipse.team.internal.ccvs.ui.actions.UpdateAction"
tooltip="%UpdateAction.tooltip"
menubarPath="team.main/group2"
id="org.eclipse.team.cvs.ui.update">
</action>
...
</objectContribution>
</extension>

ResourceMapping¿¡ ´ëÇÑ ÄÁÆ®¸®ºä¼ÇÀº IResource¿¡ ¸Â°Ô ¼öÁ¤µÇ´Â ¿ÀºêÁ§Æ®¿¡ ÀÚµ¿À¸·Î Àû¿ëµË´Ï´Ù. ÀÌ·¯ÇÑ Àüȯ ¿¬°üÀº Workbench¿¡¼­ ó¸®ÇÕ´Ï´Ù. ÀÚ¿ø ¸ÊÇο¡ ´ëÇÑ ÄÁÆ®¸®ºä¼Ç ÇÊÅ͸µÀº Àο¡À̺í¸ÕÆ® Ç¥Çö½ÄÀ» »ç¿ëÇÏ¿© ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·ÎÁ§Æ® Áö¼Ó Ư¼º¿¡ ÀÇÇÑ ÇÊÅ͸µ Ç¥Çö½ÄÀÌ Ãß°¡µÇ¾î ÀúÀå¼Ò Á¦°øÀÚ°¡ ÇØ´ç ÀúÀå¼Ò¿¡ ¸ÊÇεǴ ÇÁ·ÎÁ§Æ®¿¡¼­ ÇØ´ç ¸Þ´º¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

ResourceMapping Ŭ·¡½º¿¡ ÄÁÆ®¸®ºä¼ÇµÈ Á¶Ä¡¿¡ Çϳª ÀÌ»óÀÇ ResourceMappingÀ» Æ÷ÇÔÇÏ´Â ¼±ÅûçÇ×ÀÌ Á¦°øµË´Ï´Ù. ÇØ´ç Á¶Ä¡´Â Á¶ÀÛÀÌ ¼öÇàµÉ ÀÚ¿ø ¼¼Æ®·Î ÀÚ¿ø ¸ÊÇÎÀ» º¯È¯ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÀÛ¾÷Àº ¸ÊÇÎ ¼øÈ¸¸¦ °¡Á®¿À´Â getTraversals¸¦ È£ÃâÇÏ¿© ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼øÈ¸´Â ¼øÈ¸ Ŭ¶óÀÌ¾ðÆ®°¡ ¼øÈ¸ ´ë»ó ÀÚ¿øÀÇ ±íÀ̸¦ ±â¹ÝÀ¸·Î ÇØ´ç Á¶ÀÛÀ» ÃÖÀûÈ­ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®´Â ÀÚ¿øÀ» ¼öµ¿À¸·Î ¼øÈ¸Çϰųª, Á¶Ä¡°¡ ÀÛ¾÷ ¼öÇàÀ» À§ÀÓÇÏ´Â Á¶ÀÛ¿¡ ´ëÇÑ ÀÔ·ÂÀ¸·Î ÀÚ¿ø ¹× ±íÀ̸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, »ç¿ëÀÚ°¡ Java ÆÐŰÁö¿¡ ´ëÇØ CVS °»½ÅÀ» ¼öÇàÇϰí ÇØ´ç Java ÆÐŰÁö ÀÚ¿ø ¸ÊÇÎÀÌ ±íÀ̰¡ 1ÀÎ Æú´õ¿¡ ¸ÊÇεǴ °æ¿ì, CVS´Â ÆÐŰÁö°¡ ³ªÅ¸³»´Â Æú´õ¿¡ ´ëÇÑ ¾èÀº °»½ÅÀ» ¼öÇàÇÏ´Â ÀûÀýÇÑ ¸í·É(°ü½ÉÀÖ´Â »ç¿ëÀÚÀÇ °æ¿ì "cvs update -l")À» ¹ßÇàÇÕ´Ï´Ù.

¼±ÅÃµÈ ÀÚ¿ø ¸ÊÇο¡¼­ Á÷Á¢ ¼øÈ¸ ¼¼Æ®¸¦ ¾òÀ» ¼ö ÀÖÁö¸¸ ƯÁ¤ Á¶ÀÛ¿¡ Ãß°¡ ÀÚ¿ø ¶Ç´Â ¸ðµ¨ ¿ä¼Ò¸¦ Æ÷ÇÔÇØ¾ß ÇÏ´Â ¸ðµ¨ °ü°è(¶Ç´Â ÀúÀå¼Ò °ü°è)°¡ Á¸ÀçÇÕ´Ï´Ù. ´ÙÀ½ ¼½¼ÇÀº ¸ðµç Çʼö ÀÚ¿øÀ» ´ÜÀÏ Á¶ÀÛ¿¡ Æ÷ÇÔÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÕ´Ï´Ù.

Á¶ÀÛ ¹üÀ§

ÆÀ Á¶ÀÛÀÇ °æ¿ì, ¼±ÅÃµÈ ¸ÊÇÎÀ» Á¶ÀÛÀÌ ¼öÇàµÉ ¸ÊÇÎ ¼¼Æ®·Î º¯È¯ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÇÁ·Î¼¼½º¿¡´Â ¸ðµç ¸ðµ¨ Á¦°øÀÚ ÂüÁ¶¸¦ ÅëÇØ ÇØ´ç Àο¡À̺í¸ÕÆ® ±ÔÄ¢°ú ÀÏÄ¡ÇÏ´Â ÀÚ¿ø¿¡ ´ëÇÑ Á¶ÀÛ¿¡ ÇØ´ç Á¦°øÀÚ¸¦ Æ÷ÇÔÇÏ´Â ÀÛ¾÷ÀÌ Æ÷ÇԵ˴ϴÙ. Á¶ÀÛÀÌ ¼öÇàµÉ ÀÚ¿ø ¸ÊÇÎÀÇ Àüü ¼¼Æ®¸¦ ¼³¸íÇϱâ À§ÇØ »ç¿ëÇÏ´Â ¿ë¾î°¡ Á¶ÀÛ ¹üÀ§ÀÔ´Ï´Ù. À̸¦ À§ÇØ ´ÙÀ½ API°¡ Á¦°øµË´Ï´Ù.

SynchronizationScopeManager Ŭ·¡½ºÀÇ initialize(IProgressMonitor) ¸Þ¼Òµå´Â ÀÚ¿ø ¸ÊÇÎÀÇ ÀÔ·Â ¼¼Æ®¸¦ Á¶ÀÛÀÌ ¼öÇàµÇ¾î¾ß ÇÏ´Â Àüü ¸ÊÇÎ ¼¼Æ®¿Í ÇØ´ç ¸ÊÇο¡ Àû¿ëµÇ´Â Àüü ¼øÈ¸ ¼¼Æ®·Î º¯È¯ÇÏ´Â Àüü ÇÁ·Î¼¼½º¸¦ ó¸®ÇÕ´Ï´Ù. ÀúÀå¼Ò Á¦°øÀÚ´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ÇÁ·Î¼¼½º¸¦ Á¶Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

  1. ÀÚ¿ø ¸ÊÇο¡¼­ ÀÚ¿ø ¼øÈ¸¸¦ ¾òÀ» ¶§ »ç¿ëÇÒ RemoteResourceMappingContext¸¦ Á¦°øÇÕ´Ï´Ù.
  2. SynchronizationScopeManager¸¦ ´ëüÇÏ¿© Çʿ信 µû¶ó ¹üÀ§ °ü¸® ÇÁ·Î¼¼½º¸¦ Á¶Á¤ÇÕ´Ï´Ù.

´ÙÀ½ µÎ ¼½¼ÇÀº À§ÀÇ »çÇ׿¡ ´ëÇØ ÀÚ¼¼È÷ ¼³¸íÇÕ´Ï´Ù.

¿ø°Ý ÀÚ¿ø ¸ÊÇÎ ÄÁÅØ½ºÆ®

ÇÊ¿äÇÑ ÀÚ¿øÀ» ¸ðµÎ ÆÀ Á¶ÀÛ¿¡ Æ÷ÇÔÇÏ·Á¸é ¸ðµ¨ Á¦°øÀÚ°¡ ÀúÀå¼Ò¿¡¼­ Çϳª ÀÌ»óÀÇ ÀÚ¿ø »óŸ¦ ÆÄ¾ÇÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀϺΠ¸ðµ¨ÀÇ °æ¿ì, ÀÌ ±â´ÉÀÌ ÇÊ¿äÇÏÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Java ÆÐŰÁö´Â ¸ðµ¨ÀÇ ¿ø°Ý »óÅ¿¡ °ü°è ¾øÀÌ ±íÀÌ 1·Î ¹æ¹®ÇÒ ¼ö ÀÖ´Â ÄÁÅ×À̳ÊÀÔ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì, ÀúÀå¼Ò Á¦°øÀÚ´Â È®¾à ½Ã Ãâ·Â »èÁ¦¸¦ Æ÷ÇÔÇØ¾ß ÇÏ¸ç °»½Å ½Ã ÀÔ·Â Ãß°¡¸¦ Æ÷ÇÔÇØ¾ß ÇÔÀ» ½±°Ô ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀϺΠ³í¸® ¸ðµ¨À» ±¸¼ºÇÏ´Â ÀÚ¿øÀº ½Ã°£ÀÌ Áö³²¿¡ µû¶ó º¯°æµÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ¸ðµ¨ ¿ä¼Ò¸¦ ±¸¼ºÇÏ´Â ÀÚ¿øÀº Manifest ÆÄÀÏÀÇ ÄÁÅÙÃ÷ ¶Ç´Â ±âŸ À¯»çÇÑ ¸ÞÄ¿´ÏÁò¿¡ µû¶ó ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù. ÀÚ¿ø ¸ÊÇÎÀÌ ¿Ã¹Ù¸¥ ¼øÈ¸¸¦ ¸®ÅÏÇÏ·Á¸é Manifest ÆÄÀÏÀÇ ¿ø°Ý ÄÁÅÙÃ÷(·ÎÄà ÄÁÅÙÃ÷¿Í ´Ù¸¥ °æ¿ì)¿¡ ¾×¼¼½ºÇÏ¿© Ãß°¡ ÀÚ¿øÀ» Æ÷ÇÔÇØ¾ß ÇÏ´ÂÁö ¿©ºÎ¸¦ È®ÀÎÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Ãß°¡ ÀÚ¿øÀÌ ÀÛ¾÷°ø°£¿¡ ¾øÀ» ¼öµµ ÀÖÁö¸¸ ÀúÀå¼Ò Á¦°øÀÚ´Â ¼±ÅÃµÈ Á¶Ä¡°¡ ¼öÇàµÉ ¶§ ÀÚ¿ø ±â´ÉÀ» È®ÀÎÇÏ´Â ¹æ¹ýÀ» ¾Ë°í ÀÖ½À´Ï´Ù.

ÀÌó·³ º¸´Ù º¹ÀâÇÑ ¸ðµ¨À» Áö¿øÇϱâ À§ÇØ RemoteResourceMappingContext¸¦ ResourceMapping#getTraversals ¸Þ¼Òµå·Î Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. ÄÁÅØ½ºÆ®°¡ Á¦°øµÇ¸é ¸ÊÇο¡¼­ ÇØ´ç ÄÁÅØ½ºÆ®¸¦ »ç¿ëÇÏ¿© ÇÊ¿äÇÑ ¸ðµç ÀÚ¿øÀÌ ¼øÈ¸¿¡ Æ÷ÇԵǾú´ÂÁö È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ÄÁÅØ½ºÆ®°¡ Á¦°øµÇÁö ¾Ê´Â °æ¿ì ¸ÊÇÎÀº ·ÎÄà »óŸ¸ ÇØ´çµÇ´Â °ÍÀ¸·Î °¡Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿ø°Ý ÀÚ¿ø ¸ÊÇÎ ÄÁÅØ½ºÆ®´Â ´ÙÀ½°ú °°Àº ¼¼ °¡Áö ±âº» Á¶È¸¸¦ Á¦°øÇÕ´Ï´Ù.

ù ¹øÂ° Áú¹®¿¡ ´ëÇÑ ´ë´äÀº ¼öÇàµÇ´Â Á¶ÀÛ À¯Çü¿¡ µû¶ó ´Ù¸¨´Ï´Ù. ÀϹÝÀûÀ¸·Î, °»½Å ¹× º´ÇÕÀº 3-¹æÇâ Á¶ÀÛÀÌ°í ºñ±³ ¹× ¹Ù²Ù±â(ÃÖ¼ÒÇÑ CVSÀÇ °æ¿ì)´Â 2-¹æÇâ Á¶ÀÛÀÔ´Ï´Ù.

Eclipse ÆÀ API¿¡´Â ·ÎÄà ÀÛ¾÷°ø°£°ú ¿ø°Ý ¼­¹ö °£ÀÇ µ¿±âÈ­ »óŸ¦ Á¦°øÇÏ´Â API¸¦ Á¤ÀÇÇÏ´Â Subscriber Ŭ·¡½º°¡ Æ÷ÇԵ˴ϴÙ. ¶ÇÇÑ Subscriber¸¦ »ç¿ëÇÏ¿© ÇÊ¿äÇÑ ¿ø°Ý »óÅ¿¡ ¾×¼¼½ºÇÏ´Â SubscriberResourceMappingContext°¡ Á¦°øµË´Ï´Ù. Subscriber°¡ Àִ Ŭ¶óÀÌ¾ðÆ®´Â ÀÚ¿ø ¸ÊÇÎ ÄÁÅØ½ºÆ®¸¦ °¡Á®¿À±â À§ÇÑ Ãß°¡ ÀÛ¾÷À» ¼öÇàÇÏÁö ¾Ê¾Æµµ µË´Ï´Ù.

SynchronizationScopeManager ¼­ºêŬ·¡½º ÁöÁ¤

SynchronizationScopeManager Ŭ·¡½º´Â ¹üÀ§ »ý¼º ¹× °ü¸® ÇÁ·Î¼¼½º¸¦ »ç¿ëÀÚ Á¶Á¤Çϱâ À§ÇØ ¼­ºêŬ·¡½º¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹üÀ§ °ü¸®ÀÚÀÇ ¼­ºêŬ·¡½º¸¦ ÁöÁ¤ÇÏ´Â µÎ °¡Áö ÁÖ¿ä ÀÌÀ¯´Â ´ÙÀ½°ú °°½À´Ï´Ù.

  1. ÀϺΠÀúÀå¼Ò ·¹º§ °ü°è(¿¹: º¯°æ ¼¼Æ®)·Î ÀÎÇØ ÀúÀå¼Ò Á¦°øÀÚ°¡ Ãß°¡ ÀÚ¿øÀ» Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù. ÀÌ´Â adjustInputTraversals(ResourceTraversal[]) ¸Þ¼Òµå¸¦ ´ëüÇÏ¿© ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
  2. µ¿±âÈ­ ¶óÀÌÇÁ»çÀÌŬÀÌ ±æ¾î(¿¹: µ¿±âÈ­ º¸±â ´ë ´ëÈ­ »óÀÚ) ¹üÀ§ º¯°æ»çÇ׿¡ ´ëÀÀÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. ISynchronizationScopeParticipant ÀÎÅÍÆäÀ̽º´Â ¸ðµ¨ Á¦°øÀÚ°¡ ¹üÀ§ °ü¸® ÇÁ·Î¼¼½º¿¡ Âü¿©Çϱâ À§ÇØ »ç¿ëÇÒ ¼ö ÀÖ´Â API¸¦ Á¤ÀÇÇÕ´Ï´Ù. SubscriberScopeManager Ŭ·¡½º´Â ¹üÀ§ °ü¸® ÇÁ·Î¼¼½ºÀÇ Âü¿©ÀÚ¸¦ Æ÷ÇÔÇÏ´Â SynchronizationScopeManagerÀÇ Subscriber ±â¹Ý ¼­ºêŬ·¡½ºÀÔ´Ï´Ù. ÀÌ·¯ÇÑ À¯ÇüÀÇ ÇÁ·Î¼¼½º°¡ ÇÊ¿äÇÑ ÀÌÀ¯ÀÇ ÇÑ ¿¹·Î ÀÛ¾÷ ¼¼Æ®¸¦ µé ¼ö ÀÖ½À´Ï´Ù. ÀÛ¾÷ ¼¼Æ®°¡ ¹üÀ§ ³» ÀÚ¿ø ¸ÊÇÎ Áß ÇϳªÀÎ °æ¿ì, ÇØ´ç ÀÛ¾÷ ¼¼Æ®¿¡ ÀÚ¿øÀÌ Ãß°¡µÇ¸é ÇØ´ç ¹üÀ§¿¡ Æ÷ÇԵǴ ¼øÈ¸ ¼¼Æ®°¡ È®ÀåµË´Ï´Ù.

¸ðµ¨ ±â¹Ý º´ÇÕ

¸ðµ¨ Âü¿©°¡ ÇÊ¿äÇÑ ±âº» ÀúÀå¼Ò Á¶ÀÛ À¯ÇüÀº º´ÇÕÀÔ´Ï´Ù. ¸¹Àº °æ¿ì, ¸ðµ¨Àº ÆÄÀÏ ·¹º§¿¡¼­¸¸ Âü¿©ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì ¸ðµ¨ Á¦°øÀÚ°¡ ƯÁ¤ È®Àå ¶Ç´Â ÄÁÅÙÃ÷ À¯ÇüÀÇ ÆÄÀÏÀ» º´ÇÕÇϱâ À§ÇØ »ç¿ëÇØ¾ß ÇÏ´Â º´ÇÕÀÚ¸¦ ÄÁÆ®¸®ºä¼ÇÇÒ ¼ö ÀÖ´Â IStorageMerger API°¡ µµÀԵǾú½À´Ï´Ù. ±×·¯³ª °æ¿ì¿¡ µû¶ó ¿Ã¹Ù¸¥ º´ÇÕ Âü¿©¸¦ À§ÇÑ Ãß°¡ ÄÁÅØ½ºÆ®°¡ ¸ðµ¨¿¡ ÇÊ¿äÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ À§ÇØ IResourceMappingMerger ¹× IMergeContext API¸¦ µµÀÔÇß½À´Ï´Ù.

º´ÇÕ Á¶ÀÛÀº ÀúÀå¼Ò Á¦°øÀÚ¿Í ¿¬°üµÈ Á¶Ä¡·Îµµ °è¼Ó Æ®¸®°ÅµË´Ï´Ù. ±×·¯³ª »ç¿ëÀÚ°¡ º´ÇÕ À¯Çü Á¶ÀÛÀ» ¿äûÇϸé ÀúÀå¼Ò Á¦°øÀÚ°¡ º´ÇÕ ÇÁ·Î¼¼½º¿¡ ¸ðµ¨ Á¦°øÀÚ¸¦ Æ÷ÇÔ½ÃÄÑ º´ÇÕÀ¸·Î ÀÎÇØ ¸ðµ¨ÀÌ ¼Õ»óµÇÁö ¾Êµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù.

¸ðµ¨ ±â¹Ý º´ÇÕ Áö¿ø°ú °ü·ÃµÈ µÎ °¡Áö ±âº» ÀúÀå¼Ò Á¦°øÀÚ API´Â ´ÙÀ½°ú °°½À´Ï´Ù.

  1. º´ÇÕ¿¡ Æ÷ÇԵǴ ÀÚ¿øÀÇ µ¿±âÈ­ »óŸ¦ ¼³¸íÇÏ´Â API
  2. ¸ðµ¨ Á¦°øÀÚ°¡ ¸ðµ¨ ¿ä¼Ò¸¦ º´ÇÕÇÒ ¼ö ÀÖ´Â API
´ÙÀ½ ¼½¼ÇÀº ÀÌ µÎ API¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.

µ¿±âÈ­ »óÅ ¼³¸íÀ» À§ÇÑ API

¸ðµ¨ ±â¹Ý º´ÇÕÀÇ Áß¿äÇÑ Ãø¸é Áß Çϳª´Â °ü·Ã ÀÚ¿øÀÇ µ¿±âÈ­ »óŸ¦ ¸ðµ¨ Á¦°øÀÚ¿¡°Ô ¾Ë¸®´Â µ¥ »ç¿ëµÇ´Â APIÀÔ´Ï´Ù. ´ÙÀ½ ÀÎÅÍÆäÀ̽º´Â µ¿±âÈ­ »óŸ¦ ¼³¸íÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.

Ŭ·¡½º À̸§ÀÌ "I" Á¢µÎºÎ°¡ Á¦°ÅµÈ ÀÎÅÍÆäÀ̽º À̸§°ú ÀÏÄ¡ÇÏ´Â ±ÔÄ¢¿¡ µû¶ó ÀÌ ÀÎÅÍÆäÀ̽º ¸ðµÎ¿¡ Ãß»ó Ŭ·¡½º°¡ Á¦°øµË´Ï´Ù. ÀúÀå¼Ò Á¦°øÀÚ´Â ResourceDiff Ŭ·¡½º¸¸ ´ëüÇÏ¸é µÇ¹Ç·Î ÇØ´ç ÀÌÀü ¹× ÀÌÈÄ ÆÄÀÏ °³Á¤À» Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.

¸ðµ¨ º´ÇÕÀ» À§ÇÑ API

IMergeContext ÀÎÅÍÆäÀ̽º´Â º´ÇÕÀ» Áö¿øÇÏ´Â Ãß°¡ ¸Þ¼Òµå·Î µ¿±âÈ­ ÄÁÅØ½ºÆ®¸¦ È®ÀåÇÕ´Ï´Ù. ´ÙÀ½°ú °°Àº ±â´ÉÀÇ ÄÝ¹é ¸Þ¼Òµå°¡ Á¸ÀçÇÕ´Ï´Ù.

¸¹Àº º´ÇÕ µ¿ÀÛ¿¡ ´ëÇÑ ±âº» ±¸ÇöÀ» Æ÷ÇÔÇÏ´Â Ãß»ó MergeContext Ŭ·¡½º°¡ Á¦°øµË´Ï´Ù. ÀÌ Å¬·¡½º´Â ¶ÇÇÑ IStorageMerger¸¦ »ç¿ëÇÏ¿© 3-¹æÇâ º´ÇÕÀ» ¼öÇàÇÕ´Ï´Ù. º´ÇÕ ÄÁÅØ½ºÆ®¿Í ¿¬°üµÈ µ¿±âÈ­ »óÅ ¼³¸íÀ» ä¿ì°í À¯Áöº¸¼öÇÏ´Â SubscriberMergeContext Ŭ·¡½ºµµ Á¦°øµË´Ï´Ù.

IResourceMappingMerger API¸¦ »ç¿ëÇÏ¿© ¸ðµ¨ ±â¹Ý º´ÇÕ Á¶ÀÛÀ» ¼öÇàÇÏ´Â ModelMergeOperation Á¶ÀÛ Å¬·¡½º°¡ Á¦°øµË´Ï´Ù. initializeContext(IProgressMonitor) ¸Þ¼Òµå¸¦ ´ëüÇÏ¿© º´ÇÕ ÄÁÅØ½ºÆ®¸¦ ¸®ÅÏÇϱâ À§ÇÑ ¼­ºêŬ·¡½º°¡ ÇÊ¿äÇÕ´Ï´Ù. Á¶ÀÛÀº ÀÌ ÄÁÅØ½ºÆ®¸¦ »ç¿ëÇÏ¿© headless ¸ðµ¨ ±â¹Ý º´ÇÕÀ» ½ÃµµÇÕ´Ï´Ù. Ãæµ¹ÀÌ ¹ß»ýÇÏ´Â °æ¿ì, ¼­ºêŬ·¡½º¿¡ ´ëÇÑ º´ÇÕ ¹Ì¸®º¸±â°¡ Á¦°øµË´Ï´Ù. ´ÙÀ½ ¼½¼ÇÀÇ ³»¿ë´ë·Î, ModelSynchronizeParticipant¸¦ »ç¿ëÇÏ´Â ¹Ì¸®º¸±â ±â´ÉÀ» Á¦°øÇÏ´Â ModelParticipantMergeOperationÀÌ Á¸ÀçÇÕ´Ï´Ù.

ÆÀ Ç¥½Ã±âÀÇ ¸ðµ¨ ÄÁÅÙÃ÷

Eclipse 3.2¿¡¼­ µµÀÔµÈ °øÅë ³×ºñ°ÔÀÌÅÍ ÇÁ·¹ÀÓ¿öÅ©¸¦ »ç¿ëÇÏ¿© ÆÀ Á¶ÀÛÀÇ ³í¸® ¸ðµ¨ Ç¥½Ã¿¡ ´ëÇÑ Áö¿øÀÌ Á¦°øµË´Ï´Ù. ³í¸® ¸ðµ¨Àº org.eclipse.team.ui.teamContentProvider È®ÀåÁ¡À» »ç¿ëÇÏ¿© ÄÁÅÙÃ÷ È®Àå°ú ¸ðµ¨ Á¦°øÀÚ¸¦ ¿¬°ü½Ãų ¼ö ÀÖ½À´Ï´Ù. ÆÀ Á¦°øÀÚ´Â ITeamContentProviderManager¸¦ ÅëÇØ ÀÌ ÄÁÅÙÃ÷ Á¦°øÀÚ¿¡ ¾×¼¼½ºÇÕ´Ï´Ù.

ÆÀ Á¦°øÀÚ°¡ ³í¸® ¸ðµ¨À» Ç¥½ÃÇÏ´Â °æ¿ì´Â ´ÙÀ½°ú °°ÀÌ ´Ù¾çÇÕ´Ï´Ù.

ModelSynchronizeParticipant´Â µ¿±âÈ­ º¸±â ¶Ç´Â iSynchronizePages¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ´Â ÄÁÅ×À̳ʿ¡ ´ëÇÑ ÅëÇÕÀ» Á¦°øÇÕ´Ï´Ù. Âü¿©ÀÚ´Â ±âÁ¸ µ¿±âÈ­ Âü¿©ÀÚ ±â´É ¹× °øÅë ³×ºñ°ÔÀÌÅÍ ±â´ÉÀ» ¸ðµÎ »ç¿ëÇÏ¿© ÆÀ Á¦°øÀÚ ¹× ¸ðµ¨ÀÌ µµ±¸ ¸ðÀ½, ÄÁÅØ½ºÆ® ¸Þ´º ¹× º´ÇÕ ¹Ì¸®º¸±âÀÇ ±âŸ Ãø¸éÀ» »ç¿ëÀÚ Á¶Á¤ÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÕ´Ï´Ù. ModelSynchronizeParticipant´Â ´ÙÀ½À» Á¦°øÇÕ´Ï´Ù.

´ÙÀ½Àº ƯÁ¤ ÆÀ Á¦°øÀÚÀÇ ¸ðµ¨ µ¿±âÈ­ Âü¿©ÀÚ¸¦ »ç¿ëÀÚ Á¶Á¤ÇÏ´Â ´Ü°èÀÇ Ã¼Å©¸®½ºÆ®ÀÔ´Ï´Ù.

´ÙÀ½ XML ½º´ÏÆêÀº CVS Âü¿©ÀÚ Å¬·¡½ºÀÇ µî·Ï ¹æ¹ý°ú ÇØ´ç Ç¥½Ã±âÀÇ Á¤ÀÇ ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

   <extension point="org.eclipse.team.ui.synchronizeParticipants">
<participant
            name="CVS"
            icon="$nl$/icons/full/eview16/cvs_persp.gif"
            class="org.eclipse.team.internal.ccvs.ui.mappings.WorkspaceModelParticipant"
            id="org.eclipse.team.cvs.ui.workspace-participant">
      </participant>
   </extension>   
   <extension point="org.eclipse.ui.navigator.viewer">
       <viewer viewerId="org.eclipse.team.cvs.ui.workspaceSynchronization">
<popupMenu
                allowsPlatformContributions="false"
                id="org.eclipse.team.cvs.ui.workspaceSynchronizationMenu"> 
             <insertionPoint name="file"/>
             <insertionPoint name="edit" separator="true"/>       
             <insertionPoint name="synchronize"/>
             <insertionPoint name="navigate" separator="true"/>
             <insertionPoint name="update" separator="true"/>
             <insertionPoint name="commit" separator="false"/>
             <insertionPoint name="overrideActions" separator="true"/>
             <insertionPoint name="otherActions1" separator="true"/>
             <insertionPoint name="otherActions2" separator="true"/>
             <insertionPoint name="sort" separator="true"/>
             <insertionPoint name="additions" separator="true"/>             
             <insertionPoint name="properties" separator="true"/>
          </popupMenu>
	</viewer>
   </extension>

ÆÄÀÏ È÷½ºÅ丮

¸ðµ¨ÀÌ ÆÄÀÏ È÷½ºÅ丮¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÏ´Â ÆÄÀÏ È÷½ºÅ丮 API°¡ Ãß°¡µÇ¾ú½À´Ï´Ù. ÆÄÀÏ È÷½ºÅ丮 API´Â ´ÙÀ½ ÀÎÅÍÆäÀ̽º·Î ±¸¼ºµË´Ï´Ù.

ÀÌ API¿Í ÇÔ²² ÀÏ¹Ý ÆÄÀÏ È÷½ºÅ丮 º¸±â°¡ Ãß°¡µÇ¾ú½À´Ï´Ù. ÆÀ Á¦°øÀÚ´Â ÀÌ º¸±â¸¦ »ç¿ëÇÏ¿© °øÀ¯ º¸±â¿¡ ÇØ´ç ÆÄÀÏ/Áö¿ø È÷½ºÅ丮¸¦ Ç¥½ÃÇÒ ¼ö ÀÖÀ¸¸ç ¸ðµ¨Àº ÆÄÀÏ¿¡ Á÷Á¢ ¸ÊÇεÇÁö ¾Ê´Â ¿ä¼Ò¿¡ ´ëÇÑ ¸ðµ¨ ¿ä¼Ò È÷½ºÅ丮¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. È÷½ºÅ丮 º¸±â´Â ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î ¼±ÅÃµÈ ¿ä¼Ò¿¡ ´ëÇÑ ÆäÀÌÁö¸¦ ¾ò´Â ÆäÀÌÁö ±â¹Ý º¸±âÀÔ´Ï´Ù.

ÇÁ·ÎÁ§Æ® ¼¼Æ® ±â´É

ÇÁ·ÎÁ§Æ®¿Í ¿ø°Ý ÄÁÅÙÃ÷ °£ ¸ÊÇÎÀ» ½Äº°ÇÏ´Â µ¥ »ç¿ëµÇ´Â ÂüÁ¶ ¹®ÀÚ¿­°ú org.eclipse.core.filesystem.filesystems È®ÀåÁ¡À¸·Î µî·ÏµÈ ÆÄÀÏ ½Ã½ºÅÛ ¼³°è¸¦ ½Äº°ÇÏ´Â URI °£ÀÇ »óÅ ÀüÀ̸¦ Áö¿øÇϱâ À§ÇØ ProjectSetCapability¿¡ ¸Þ¼Òµå°¡ Ãß°¡µÇ¾ú½À´Ï´Ù. ÆÀ Á¦°øÀÚ´Â ³í¸® ¸ðµ¨ÀÌ ¿ø°Ý ã¾Æº¸±â ¹× ÇÁ·ÎÁ§Æ® ·ÎµùÀ» ¼öÇàÇÒ ¼ö ÀÖµµ·Ï ÀÌ¿¡ ´ëÇÑ Áö¿øÀ» ¼±ÅÃÀûÀ¸·Î Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.

¸ðµ¨ ¿ä¼Ò µ¥ÄÚ·¹À̼Ç

ÆÀ Á¦°øÀÚ´Â ¿ÀºêÁ§Æ® ÄÁÆ®¸®ºä¼ÇÀÌ ÀÚ¿ø ¸ÊÇÎ ÀÛ¾÷À» ¼öÇàÇϵµ·Ï º¯È¯µÇ´Â °Í°ú µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î °£´ÜÇÑ µ¥ÄÚ·¹ÀÌÅͰ¡ ÀÚ¿ø ¸ÊÇÎ ÀÛ¾÷À» ¼öÇàÇϵµ·Ï º¯È¯ÇÏ¿© ¸ðµ¨ ¿ä¼Ò¸¦ µ¥ÄÚ·¹À̼ÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ³í¸® ¸ðµ¨ ¿ä¼Ò µ¥ÄÚ·¹À̼ǿ¡´Â ÇÑ °¡Áö ¹®Á¦Á¡ Ãø¸éÀÌ ÀÖ½À´Ï´Ù. Áï, ¸ðµ¨ ¿ä¼Ò°¡ ÀÚ¿ø¿¡ ´ëÇØ ÀÏ´ëÀÏ·Î ¸ÊÇεÇÁö ¾Ê´Â °æ¿ì ±âº» ÀÚ¿øÀÌ º¯°æµÇ¸é ¸ðµ¨ ¿ä¼Ò°¡ ·¹ÀÌºí °»½ÅÀ» ¹ÞÁö ¸øÇÕ´Ï´Ù.

ÀÌ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ, ¸ðµ¨ Á¦°øÀÚ¿¡°Ô ÆÀ µ¥ÄÚ·¹À̼ǿ¡ ¿µÇâÀ» ÁÙ ¼ö ÀÖ´Â »óÅ º¯°æ»çÇ׿¡ ´ëÇØ ¾×¼¼½º ±ÇÇÑÀ» ºÎ¿©ÇÏ´Â ITeamStateProvider°¡ µµÀԵǾú½À´Ï´Ù. ¶ÇÇÑ ¸ðµ¨ º¸±â´Â SynchronizationStateTester¸¦ »ç¿ëÇÏ¿© ³í¸® ¸ðµ¨ ¿ä¼ÒÀÇ ·¹À̺íÀ» °»½ÅÇØ¾ß ÇÏ´Â ½ÃÁ¡À» ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ API´Â ITeamStateProvider ÀÎÅÍÆäÀ̽º¿¡ ÀÇÁ¸ÇÏ¿© ÀÚ¿øÀÇ ÆÀ »óŰ¡ º¯°æµÇ¾î IDecorationContextÀÇ ÀϺημ­ ÆÀ µ¥ÄÚ·¹ÀÌÅÍ¿¡ Àü´ÞÇÒ ¼ö ÀÖ´Â ½ÃÁ¡À» ÆÇº°ÇÕ´Ï´Ù.