Opzetten voor Plastic SCM-testen
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