Conflicten oplossen

Conflicten kunnen zich voordoen wanneer u veranderingen maakt aan een bestand dat gelijktijdig ook door een andere ontwikkelaar wordt aangepast. Het conflict wordt opgemerkt door CVS wanneer u het aangepaste bestand wilt bijwerken in de repository. CVS probeert de veranderingen samen te voegen (merge) met uw lokale werkkopie. Dit samenvoegen zal niet lukken wanneer de veranderingen aan het bestand elkaar overlappen (dwz dat de aangepaste regels in het bestand van de ene ontwikkelaar samenvalt met de aangepaste regels van die van uzelf). De CVS-server zal een foutmelding geven.

In het hoofdvenster van Cervisia worden bestanden welke een conflict hebben, weergeven in de kolom Status met "Conflict" en rood gekleurd. Het is nu uw taak om deze conflicten op te lossen alvorens het bestand vast te leggen. CVS zal weigeren om elk bestand met conflicten vast te leggen totdat ze zijn bewerkt. Vanuit het hoofdvenster kunt u uiteraard conflicten op de traditionele manier oplossen: gewoon op het betreffende bestand dubbelklikken en aanpassen met uw favoriete editor.

CVS markeert de conflicterende wijzigingen door markeringen te plaatsen midden in de bestanden, op de volgende manier:

<<<<<<<
Wijzigingen in uw werkkopie
=======
Wijzigingen in de repository
>>>>>>> revisie_nummer

U zult dit gehele blok met de nieuwe samengevoegde versie moeten vervangen. Natuurlijk heeft u een grote mate van vrijheid wanneer u een set conflicten dient op te lossen: voor elk conflict kunt u besluiten om te kiezen uit twee alternatieve versies. U kunt ook besluiten dat dat geen goed resultaat zal opleveren en vervolgens beide aanpassingen herschrijven tot een nieuwe routine of zelfs een compleet nieuw bestand.

Gelukkig biedt Cervisia een mooier interface voor het behandelen van deze conflicten. Dit betekent niet dat het nooit nodig is om handmatig de bestanden te bewerken, maar minstens de noodzaak om triviale conflicten op te lossen is verdwenen. Om de dialoog van Cervisia voor CVS oplossen te gebruiken, kiest u BestandOplossen... of klikt u rechts op het gemarkeerde bestand en kiest oplossen... uit het contextmenu.

Afbeelding 3.3. Een schermafdruk van het oplossenvenster

Een schermafdruk van het oplossenvenster

Bovenaan de dialoog ziet u Uw eigen versie (A) van het bestand aan de linkerzijde en de versie in de repository, Andere versie (B), aan de rechterzijde. De verschillen worden gemarkeerd met een rode kleur. Onder deze twee versies kunt u de Samengevoegde versie zien. Deze wordt bewaard in uw werkkopie als u op de knop Opslaan klikt.

U kunt verder of terug gaan naar de verschillende secties door de knoppen << en >> te gebruiken. In het lage midden van het venster kunt u zien welke sectie op dat moment is gemarkeerd. Bijvoorbeeld 2 van 3 betekent dat u momenteel op de tweede conflicterende sectie bent van drie conflicterende secties in totaal.

Nu kunt u sectie voor sectie bepalen welke versie u wilt hebben in het samengevoegde bestand. Door op A te drukken, neemt u de versie over die u maakte. Door op B te drukken, neemt u de versie over uit de repository. Door op A+B te drukken, worden beide versies toegevoegd en uw versie wordt eerste. B+A heeft hetzelfde resultaat, maar de volgorde is verschillend: eerst de versie uit de repository en daarna die van u.

Als u niet tevreden bent met elk van deze versies, druk dan op Bewerken om een eenvoudige tekstbewerker te starten waarmee u de sectie kunt bewerken. Wanneer u klaar bent, drukt u op OK om terug te keren naar de dialoog CVS oplossen en verder gaan met het oplossen van conflicten. U zult de sectie, die u zojuist hebt bewerkt, in de Samengevoegde versie zien, met uw wijzigingen.

Om uw wijzigingen op te slaan, waarmee de versie van de werkkopie wordt overschreven, druk dan op Opslaan. Merk op dat hiermee niet alleen de sectie die u aan het bekijken was, wordt opgeslagen, maar alle secties in het bestand. Als u het in een ander bestand wilt opslaan, druk dan op Opslaan als.... Druk op Sluiten om de dialoog te verlaten. Als u de dialoog sluit zonder opslaan, dan zullen de gemaakte wijzigingen verloren gaan.