Kun olet luonut RepositoryProvider-luokan, on syytä paneutua muihin resurssinhallinnan menetelmiin:
Useissa tapauksissa tiettyjä tiedostoja ei tarvitse pitää tietovaraston hallinnassa. Esimerkiksi resurssit, jotka on johdettu toisista resursseista, voidaan usein jättää pois tietovarastosta. Kootut lähdetiedostot (kuten Javan .class-tiedostot) voidaan jättää pois, koska tietovarastossa on niitä vastaava lähdetiedosto (.java-tiedosto). Versionhallintaa ei ehkä kannata käyttää myöskään tietovaraston toimittajien luomiin metatietotiedostoihin. Laajennuspisteen org.eclipse.team.core.ignore avulla toimittajat voivat esitellä tiedostolajeja, jotka tulee ohittaa tietovaraston toimittajien toimintojen yhteydessä. CVS-työasemaan esimerkiksi liittyy seuraava esittely:
<extension point="org.eclipse.team.core.ignore">
<ignore pattern = ".#*" selected = "true"/>
</extension>
Merkintä esittää ohitettavan tiedostonimen pattern sekä selected-määritteen, joka esittää tiedostolajin valinnan oletusarvon oletusasetusten valintaikkunassa. Käyttäjän on päätettävä,mitkä tiedostot ohitetaan. Käyttäjä voi valita tiedostolajeja ohitettujen tiedostojen oletusluettelossa, poistaa tiedostolajien valinnan, lisätä tiedostolajeja luetteloon ja poistaa tiedostolajeja luettelosta.
Jotkin tietovarastot toteuttavat teksti- ja binääritiedostojen käsittelyn eri tavoilla. Laajennuksen org.eclipse.team.core.fileTypes avulla lisäosat voivat esitellä tiedostolajit teksti- tai binääritiedostoina. Java-työvälinejärjestelmä esittelee seuraavat tiedot:
<extension point="org.eclipse.team.core.fileTypes">
<fileTypes extension="java" type="text"/>
<fileTypes extension="classpath" type="text"/>
<fileTypes extension="properties" type="text"/>
<fileTypes extension="class" type="binary"/>
<fileTypes extension="jar" type="binary"/>
<fileTypes extension="zip" type="binary"/>
</extension>
Merkintä antaa lisäosien määrittää tiedostolajin extension-tiedon mukaan ja määrittää type-arvoksi teksti- (text) tai binääriarvon (binary). Kuten ohitettujakin tiedostoja käsiteltäessä, käyttäjän tulee hallita teksti- ja binääritiedostolajien luetteloa.
Projektissa voi olla resursseja, jotka eivät sijaitse paikallisessa tiedostojärjestelmässä projektin hakemistossa. Tällaisia resursseja kutsutaan linkitetyiksi resursseiksi.
Linkitetyt resurssit voivat aiheuttaa haastavia tilanteita sellaisille tietovarastojen toimittajille, jotka käyttävät suoraan tiedostojärjestelmää. Linkitetyt resurssit eivät nimittäin sijaitse tiedostojärjestelmässä projektin hakemistorakenteessa.
Linkitetyt resurssit saattavat vaikuttaa sellaisiin tietovaraston toimittajiin, joihin seuraava kuvaus sopii:
Oletetaan ensimmäisessä tapauksessa, että käyttäjä valitsee linkitetyn resurssin ja yrittää käyttää siihen jotakin toimittajan toimintoa. Tietovaraston toimittaja kutsuu komentorivin työasemaohjelmaa, joten voimme olettaa, että toimittaja kutsuu ensin esimerkiksi metodia IResource.getLocation().toOSString() ja syöttää saamansa tiedostojärjestelmäsijainnin argumenttina komentoriviohjelmaan. Jos kyseinen resurssi on linkitetty resurssi, tuloksena on projektin hakemistorakenteen ulkopuolella oleva tiedosto tai kansio. Jotkin komentorivin työasemaohjelmat eivät pysty käsittelemään tällaista tilannetta. Lyhyesti voidaan todeta, että jos tietovaraston toimittaja vastaanottaa resurssin sijainnin tiedostojärjestelmässä, linkitettyjen resurssien käsittely edellyttää todennäköisesti ylimääräistä työtä.
Toinen tilanne on melko samanlainen, sillä siihen sisältyy oletus siitä, että projektin resurssien rakenne vastaa täydellisesti tiedostojärjestelmän tiedostojen ja kansioiden rakennetta. Toimittajat saattavat joutua ongelmatilanteeseen, jos ne sekoittavat IResource- ja java.io.File-toimintoja. Linkkien osalta kohteen IFile pääobjekti ei ole sama kuin java.io.File-kohteen pääobjekti, joten jos koodi olettaa näiden kohteiden vastaavan toisiaan, koodin ajo epäonnistuu.
Pidettiin tärkeänä, että linkitettyjen resurssien esittely ei tahattomasti särkenyt aiemmin luotuja tietovarastojen toimittajia. Tarkemmin ottaen huolta aiheuttivat toimittajat, jotka luonnollisesti olettivat paikallisen tiedostojärjestelmän rakenteen vastaavan projektin rakennetta. Näin ollen linkitettyjä resursseja ei oletusarvon mukaan voi lisätä projekteihin, jotka on määritetty vastaamaan tällaista toimittajaa. Lisäksi linkitettyjä resursseja sisältäviä projekteja ei myöskään voi oletusarvon mukaan jakaa tällaisen toimittajan kanssa.
Linkityksiä tukevan toimittajan tulee sallia se, että linkitettyjä resursseja sisältävät projektit määritetään versionhallintaan, mutta toimittaja voi kuitenkin estää itse linkitettyjen resurssien versionhallinnan.
Huomattavasti monimutkaisempi ratkaisu on se, että myös varsinaisten linkitettyjen resurssien versionhallinta sallitaan. Tätä ratkaisua tulee kuitenkin välttää, sillä se voi aiheuttaa vaikeita tilanteita, joissa tiedosto saattaa esimerkiksi olla jo toisen toimittajan versionhallinnassa toisessa projektirakenteessa. Suositeltava vaihtoehto on siis tukea sellaisten projektien versionhallintaa, joiden sisältämät linkitetyt resurssit eivät ole versionhallinnassa.
Tietovarastojen toimittajien toteutukset voidaan päivittää tukemaan linkitettyjä resursseja korvaamalla RepositoryProvider.canHandleLinkedResources()-metodi niin, että se palauttaa arvon true. Tämän jälkeen linkitetyt resurssit sallitaan projekteissa, jotka on määritetty yhteiskäyttöön kyseisen tietovaraston toimittajan kanssa. Tietovaraston toimittajan on kuitenkin varmistettava, että linkitetyt resurssit käsitellään oikein. Kuten aiemmin mainittiin, on suositeltavaa määrittää tietovaraston toimittajat ohittamaan kaikki linkitetyt resurssit. Tällöin linkitetyt resurssit (ja niiden aliresurssit) tulee jättää pois tietovaraston toimittajan tukemista toimita. Lisäksi tietovaraston toimittajan tulee käyttää siirron ja poiston oletustoimintaa, jos tietovaraston toimittajan toteutus ohittaa oletusarvona olevan IMoveDeleteHook-toiminnan.
Ryhmän toimittajat voivat määrittää metodin IResource.isLinked() avulla, onko resurssi linkki. Tämä metodi palauttaa kuitenkin true-arvon vain, kun kyseessä on linkin juuri. Seuraavan koodikatkelman avulla voidaan määrittää, onko resurssi linkin aliobjekti.
String linkedParentName = resource.getProjectRelativePath().segment(0);
IFolder linkedParent = resource.getProject().getFolder(linkedParentName);
boolean isLinked = linkedParent.isLinked();
Tietovarastojen toimittajien tulee ohittaa kaikki resurssit, joille yllä oleva koodi palauttaa arvon true.
Tietovarastojen toteutuksissa käytetään usein ylimääräisiä tiedostoja ja kansioita, joihin tallennetaan tietovaraston toteutukseen liittyviä tietoja. Näitä tiedostoja saatetaan tarvita työtilassa, mutta niistä ei ole hyötyä lisäosille tai peruskäyttäjälle.
Ryhmien toimittajat voivat osoittaa IResource.setTeamPrivateMember(boolean)-luokan avulla, että resurssi on ryhmän toimittajan toteutuksen yksityinen resurssi. Vastaluodut resurssit eivät ole oletusarvon mukaan yksityisiä jäseniä, joten resurssi on erikseen merkittävä tämän metodin avulla ryhmän yksityiseksi resurssiksi. Projektin alikansio merkitään usein ryhmän yksityiseksi kohteeksi, kun projekti määritetään ryhmää varten ja alikansio luodaan.
Muut resurssien sovellusohjelmaliittymät, jotka luetteloivat resursseja (kuten resurssien delta-rakenteita), jättävät pois ryhmän yksityiset jäsenet, ellei niitä erikseen pyydetä sisällyttämään näitä jäseniä. Useimmat työasemat eivät siis "näe" ryhmän yksityisiä resursseja, eikä niitä näytetä käyttäjälle. Resurssien navigaattorinäkymässä ryhmän yksityiset jäsenet eivät näy oletusarvon mukaan, mutta käyttäjät voivat määrittää Oletusasetukset-ikkunassa ryhmän yksityiset jäsenet tuotavaksi näkyviin.
Järjestelmä ohittaa yritykset merkitä projekti tai työtilan juuri yksityiseksi.
Projektissa olevat versionhallintaan liittyvät resurssit säilytetään tietovarastossa, joten projekteja voidaan määrittää ryhmän jäsenten yhteiskäyttöön niin, että yhteiskäyttöön määritetään viittaus tietovarastokohtaisiin tietoihin, joita tarvitaan muodostettaessa projektia työtilaan. Tämä tehdään käyttämällä ryhmän projektiaineistojen tiedostovientiä.
Versiossa 3.0 sovellusohjelmaliittymä lisättiin kohteeseen ProjectSetCapability, jotta tietovarastojen toimittajat saattoivat esitellä luokan, joka toteuttaa heidän hallinnassaan olevien projektien tallennuksen. Kun käyttäjä valitsee projektiaineistojen viennin, viennin vaihtoehtoina näytetään vain sellaiset projektit, joihin määritetyissä tietovarastoissa on määritetty projektiaineistot.Tämä sovellusohjelmaliittymä korvaa vanhan projektiaineiston peräkkäistyksen sovellusohjelmaliittymän (lisätietoja edempänä).
Tietovaraston toimittaja saa projektiaineiston toimintoluokan RepositoryProviderType-luokalta, joka on rekisteröity samassa laajennuksessa kuin tietovaraston toimittaja. Esimerkiksi:
<extension point="org.eclipse.team.core.repository">
<repository
typeClass="org.eclipse.team.internal.ccvs.core.CVSTeamProviderType"
class="org.eclipse.team.internal.ccvs.core.CVSTeamProvider"
id="org.eclipse.team.cvs.core.cvsnature">
</repository>
</extension>
Ennen versiota 3.0 laajennuspiste org.eclipse.team.core.projectSets antoi tietovarastojen toimittajien esitellä luokan, joka toteuttaa heidän hallinnassaan olevien projektien tallennuksen. Kun käyttäjä valitsee projektiaineistojen viennin, viennin vaihtoehtoina näytetään vain sellaiset projektit, joihin määritetyissä tietovarastoissa on määritetty projektiaineistot.
CVS-työasemaan esimerkiksi liittyy seuraava esittely:
<extension point="org.eclipse.team.core.projectSets">
<projectSets id="org.eclipse.team.cvs.core.cvsnature" class="org.eclipse.team.internal.ccvs.ui.CVSProjectSetSerializer"/>
</extension>
Määritetyn class (luokka) -määritteen tulee toteuttaa laajennuspiste IProjectSetSerializer. Tätä käyttöliittymää on tuettu myös versiossa 3.0, mutta se on vanhentunut.