Direct naar hoofdinhoud

Opzetten voor Plastic SCM-testen

Onofficiële Beta-vertaling

Deze pagina is vertaald door PageTurner AI (beta). Niet officieel goedgekeurd door het project. Een fout gevonden? Probleem melden →

Wanneer je het bestand segment_plastic.go aanpast, moet je mogelijk je wijzigingen testen tegen een echte instantie van Plastic SCM. Dit document helpt je op weg met Plastic SCM.

In het bijdragedocument staat een sectie over dev containers & codespaces. Je kunt Plastic SCM ook binnen deze omgevingen instellen.

Serveropstelling

Hier vind je de officiële installatie-instructies. Ik beschrijf het kort:

Installatie op Debian of in dev-container

Voeg eerst de repository toe:

sudo apt-get update
sudo apt-get install -y apt-transport-https
wget -qO - https://www.plasticscm.com/plasticrepo/stable/debian/Release.key | \
gpg --dearmor | sudo tee /usr/share/keyrings/plasticscm-stable.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/plasticscm-stable.gpg] \
https://www.plasticscm.com/plasticrepo/stable/debian ./" | \
sudo tee /etc/apt/sources.list.d/plasticscm-stable.list
sudo apt-get update

Installeer vervolgens de server: dit kan aan het einde van de installatie een fout geven zie hieronder

sudo apt-get install -y plasticscm-server-core

Dit kan een fout tonen tijdens het configureren van het geïnstalleerde pakket. In dat geval is de server niet als service geregistreerd. Negeer dit!

Serverconfiguratie

Configureer de server via:

sudo /opt/plasticscm5/server/plasticd configure \
--language=en \
--workingmode=NameWorkingMode \
--port=8087 \
--sslport=8088

Gefeliciteerd! Je server is geconfigureerd. Meer informatie vind je in de officiële configuratie-instructies.

Server starten

Als je server zonder fout is geïnstalleerd, is deze correct als service geregistreerd en kun je hem starten via:

sudo service plasticd start

Zo niet, moet je hem handmatig starten (bijvoorbeeld in de dev-container):

sudo /opt/plasticscm5/server/plasticd start

Dit blokkeert de huidige shell tot het serverproces klaar is. Mogelijk moet je een andere terminal openen om verder te gaan.

Je Plastic SCM-server zou nu gestart moeten zijn.

Clientopstelling

Plastic SCM wordt geleverd met een CLI, vergelijkbaar met git, (+ optionele gebruikersinterface)

Installatie op Debian of in dev-container

Dit zijn de stappen om de Plastic SCM CLI op Debian of in de dev-container te installeren:

sudo apt-get install -y plasticscm-client-core

Clientconfiguratie

Voer dit uit om de client met de server te verbinden en een account in te stellen:

cm configure \
--language=en \
--workingmode=NameWorkingMode \
--server=localhost \
--port=8087

Gefeliciteerd! Je client zou nu verbonden moeten zijn met je server. Meer informatie vind je in de officiële configuratie-instructies.

Je kunt testen of het werkte en licentie-informatie tonen via:

cm li

Dingen testen

Nu naar het leuke deel! De server is automatisch ingesteld om een default-repository te hosten met de branch /main.

Het Plastic SCM CLI-commando is: cm

Als je ooit wilt weten wat je ermee kunt doen, roep dan:

cm showcommands --all

Een lokale werkruimte maken

Je hebt een lokale werkruimte nodig om met Plastic te werken:

cd ~
mkdir dev
cd dev
cm wk create workspace workspace rep:default
cd workspace
cm status

Bestanden toevoegen

Begin met het maken van lokale, privébestanden

echo "test" > myfile.txt
cm status --all

Voeg het bestand toe aan je lokale wijzigingen

cm add myfile.txt
cm status

Testtip: Zowel Private als Added bestanden moeten meetellen voor de Added eigenschap van het plastic segment.

Wijzigingen committen

Na het lokaal toevoegen, wijzigen, verplaatsen of verwijderen van bestanden wil je deze committen om een nieuwe changeset aan te maken. Voer dit commando uit om alle lokale wijzigingen te committen:

cm status | cm ci . -c "my first commit"

Lokale wijzigingen ongedaan maken

Mocht je je lokale wijzigingen niet willen of kunnen committen, dan is er een undo-commando. Dit maakt alle lokale wijzigingen ongedaan:

cm status | cm undo .

Bestanden wijzigen, verplaatsen of verwijderen

Al deze acties worden op bestandsniveau uitgevoerd. Je kunt cm status uitvoeren om te zien hoe Plastic je acties volgt. Gebruik de eerder beschreven commit-methode om je wijzigingen te committen.

Testtip: Al deze wijzigingen moeten meetellen voor de bijbehorende eigenschap (Modified, Moved, Deleted) van het plastic segment.

Branching

Hierboven zijn de basisprincipes van het werken met de Plastic SCM client beschreven. Maar je wilt waarschijnlijk dieper duiken en branches of labels gebruiken en mergen.

Een nieuwe branch aanmaken

Om een nieuwe branch aan te maken gebaseerd op de laatste changeset in branch /main:

cm br /main/new-branch

Tip: Gebruik dit om alle branches weer te geven:

cm find branches

Label toekennen aan huidige changeset

Je workspace weerspiegelt altijd één specifieke changeset (zie cm status). Je kunt een label aan die changeset toekennen voor snelle navigatie of documentatiedoeleinden:

cm label mk "BL0001"

Tip: Gebruik dit om alle labels weer te geven:

cm find labels

Overschakelen naar een branch

Om naar een branch over te schakelen:

cm switch /main/new-branch
cm status

Testtip: de branchnaam moet zichtbaar zijn in de Selector eigenschap van het plastic segment

Overschakelen naar een changeset

Elke commit krijgt een uniek changeset-nummer. Hier kun je naartoe overschakelen:

cm switch cs:1

Testtip: het changeset-nummer moet zichtbaar zijn in de Selector eigenschap van het plastic segment

Overschakelen naar een label

Je kunt ook naar een label overschakelen via:

cm switch BL00001

Testtip: het label moet zichtbaar zijn in de Selector eigenschap van het plastic segment

Branches mergen

Om branches te mergen, moet je eerst overschakelen naar de doel-branch van de merge. Daarna kun je een andere branch mergen via:

cm switch /main
cm merge /main/new-branch --merge
cm status

Tip: Dit bereidt alleen de merge lokaal voor. Je moet de wijzigingen committen om de merge te voltooien!

Testtip: Een pending merge moet zichtbaar zijn in de MergePending eigenschap van het plastic segment

Cherry-pick merge

Terwijl de bovenstaande merge alle wijzigingen van een branch (en zijn ouders) samenvoegt, is er een cherry-pick merge die alleen de wijzigingen van één enkele changeset samenvoegt:

cm merge cs:8 --merge --cherrypicking

Tip: Dit bereidt alleen de merge lokaal voor. Je moet de wijzigingen committen om de merge te voltooien!

Testtip: Een pending cherry-pick merge moet zichtbaar zijn in de MergePending eigenschap van het plastic segment

Mergeconflicten

Er zijn verschillende oorzaken voor conflicten tijdens merges:

Evil Twin

Dit gebeurt wanneer een merge wordt uitgevoerd waarbij twee bestanden met dezelfde naam zijn toegevoegd op zowel de bron- als doelbranch.

cm br mk /main/sub-branch
cm switch /main/sub-branch
echo "1" > twin.txt
cm add twin.txt
cm ci twin.txt

cm switch /main
echo "2" > twin.txt
cm add twin.txt
cm ci twin.txt

cm merge /main/sub-branch --merge

Tip: dit vraagt je direct het conflict op te lossen

Wijzigingen aan beide kanten

Dit gebeurt wanneer een merge wordt uitgevoerd waarbij een bestand zowel aan bron- als doelzijde is gewijzigd.

cm switch /main
echo "base" > file.txt
cm add file.txt
cm ci file.txt

cm br mk /main/test

echo "on main" > file.txt
cm ci file.txt

cm switch /main/test
echo "on test" > file.txt
cm ci file.txt

cm switch /main
cm merge /main/test --merge

Let op: dit probeert gtkmergetool te openen, wat in de dev-container zal falen!

Gewijzigd vs. verwijderd bestand

Dit gebeurt wanneer een merge wordt uitgevoerd waarbij een bestand aan de ene kant is gewijzigd en aan de andere kant is verwijderd

cm switch /main
echo "base" > deleteme.txt
cm add deleteme.txt
cm ci deleteme.txt

cm br mk /main/del

rm deleteme.txt
cm ci --all

cm switch /main/del
echo "on del" > deleteme.txt
cm ci deleteme.txt

cm switch /main
cm merge /main/del --merge

Let op: Dit vraagt je direct om het mergeconflict op te lossen