Git voorbeeld: gitlab
(Reeks Git – handboek (nl) – commando’s vb – branch, merge – GitLab vb – SourceForge vb – git en gambas)
Samenwerken of verdeeld werken
Een van de online diensten die git aanbieden is gitlab.com
Ik heb die gebruikt als voorbeeld bij mijn git artikel.
Registratie
Je maakt een account aan met een naam, wachtwoord en e-mail adres. Op dat laatste krijg je dan een bevestigingsmail met een link.
Je kan een icoontje voor jezelf kiezen (“avatar”) zoals in veel online diensten, of het wordt herkend als je geregistreerd hebt bij een centraal register van avatars.
Je kan je ssh key (het publieke deel) in de user settings invoegen.
Project
Bij het maken van een nieuw project moet je nadenken over de “namespace”, want het is niet eenvoudig om die nadien te wijzigen. De belangrijkste vraag is of je het project onder je eigen naam/namespace maakt;
– naam/project
of onder de naam van een groep: (zie ook verder Group)
– groupnaam/projectnaam)
Als je samen met anderen wil werken is group aan te raden (zou eigenlijk standaard moeten zijn).
Ook als je een project hebt waar verschillende onderdelen zullen bestaan, of je op een andere manier programma’s wil groeperen, gebruik je een project. Je kan zelfs daar nog sub-projecten van definiëren.
Hoofd/kleine letters: Hoewel je de group en projectnaam met een hoofdletter kan laten beginnen, wordt de directory van je project (eigenaardig genoeg) met een kleine letter geschreven in het bestandssysteem (althans bij GitLab – is dit een toegeving aan Windows gebruikers? Het is in ieder geval vervelend als Linux gebruiker, waar MijnMap niet hetzelfde is als mijnmap).
Na create blank project in de web-interface krijg je in te vullen:
- name
- URL (wordt aangeboden op basis van je naam en huidige project
- slug (“Mijn Project” wordt “mijn-project” voor directory vorming)
- description
- visibility level (private staat standaard aan, groep heeft toegang)
- Initialise with README is aankruisbaar, maakt README.md
Wijzigen
Om het nadien te wijzigen moet je extra opties aktiveren (Project Settings, Advanced, Expand), Transfer project, Select a new namespace; daar kan je kiezen uit bestaande projecten. Je moet nog eens bevestigen met het intypen van de projectnaam ter controle.
(De rode omgeving geeft aan dat er onverwachten en onaangename gevolgen kunnen zijn, zorg zeker voor een backup).
Je moet daarna ook je instellingen aanpassen op je lokale git-werkstation; je kan de bestaande opvragen met:
git remote -v
wijzig met hetzelde commando als het opzetten:
git remote set-url
git remote set-url origin git@gitlab.com/GrpProject/projectname.git
(zowel de fetch als de push werden aangepast)
Als je in de web-interface een oude URL gebruikt die je bewaard had, krijg je een viendelijke foutmelding (en wordt je indien mogelijk doorverwezen):
Project ‘username/projectname’ was moved to ‘GrpPrjname/projectname’. Please update any links and bookmarks that may still have the old path.
Prive of publiek
Gitlab laat op dit moment toe om een account aan te maken en je project in te stellen als:
- publiek open source project
- privé project
Het privé project belet je niet om toch met anderen samen te werken.
Voor het project heb je Settings: “General-Members-Integrations-Repository-Pipelines-Pages-Audit Events”; kies “Members”, “Select members to invite”. Rol en vervaldatum kunnen ingesteld worden.
Repository
(upd 12-10-2018)
Als je het project via de webinterface (website) van GitLab aanmaakt, kan je
* de repository klaarmaken om met een “clone” commando af te halen (initialisatie van de “master”); daarbij kan je de README.md invullen.
* onmiddellijk een LICENSE kiezen; met een eenvoudige klik kan je een licentie bestand toevoegen aan je repository. Je kan kiezen uit een lijstje waarin bv GPL en andere licenties voorkomen. Als je bv GPL3 kiest, wordt er een bestand LICENSE gemaakt met als inhoud de GPL3, en als commit geregistreerd.
(upd: dit lijkt ondertussen veranderd te zijn, volg online instructies)
Afhalen met:
git clone git://git@gitlab.com:userORgroup/projectname.git
(of gebruik hun web-interface om de juiste url te knippen/plakken, zoals hier beschreven.)
Meer basiscommando’s
cybr@penguin:~/Git/NieuwPrj> git clone git@gitlab.com:devgroup/nieuwprj.git
Cloning into 'nieuwprj'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
In directory Test: git clone git@xxx/persis3-prj.git
maakt in de dir waar je staat:
persis3-prj
met daarin: README.md
dus je moet zelf niet die prj directory aanmaken. Als je een niveau prj directory hebt met aanverwante files en ook daarin een application directory met de broncode, kan je die zo automatisch maken door de clone opdracht.
Groep
Daarvoor maak je een groep aan (menu “+”, new group), die je een naam naar keuze geeft; ik hou hem vrij algemeen omdat het gemakkelijk is om veel projecten te delen met 1 groep.
Daarna ga je de leden voor de groep kiezen. Zelf ben je al lid doordat je de groep gemaakt hebt. Je kan een andere account opzoeken in de bestaande gitlab accounts, en lid maken van de groep. Je kan zoeken op naam, e-mail adres. Je kan de duur instellen van het lidmaatschap, en het niveau (Guest, Reporter, Developer, Master, Owner); Owner ben je zelf.
De andere partij krijgt dan een mail met “Access to the NewGroupName group was granted”. Hij kan met een klik weer uit de groep stappen.
Die andere account kan natuurlijk ook een andere account van jezelf zijn, waarbij je bv thuis een andere account gebruikt dan op het werk.
Groepsproject
Het is de bedoeling dan een nieuw project te maken binnen die groep. Je kan een bestaand project aan die groep toevoegen / overzetten van persoonlijk project naar groepsproject; je gaat het importeren als het ware, maar dat houdt in dat de naam van het project (url) verandert, en dat kan onverwachte problemen geven wordt opgemerkt door gitlab. Je kan natuurlijk ook gewoon een nieuw project maken en daar de bestaande code van het moment in invoeren.
Rechten
De volgende stap is dan de toegangsniveau’s instellen. Hier bepaal je de fijnere betekenis van bv Developer; maar ze hebben al een ingevulde standaardbetekenis volgens deze tabel: (Permissions).
Guest Reporter Developer Maintainer Owner
– Rondkijken kan iedereen, labels toekennen bijna iedereen.
– Reporter kan met issues/requirements/tasks werken
– Developer repo’s/project wiki/security dashboard…
– Maintainer team/members, repo protection…
en de Master kan een project maken in de groep.
Afhalen
(upd 2017-09-17)
Als je ingelogd bent op de site kan je ook in je browser door de broncode bladeren; je ziet het voorgesteld als een bestandssysteem met betanden. Je kan iedere individuele file bekijken of afhalen als download.
Op hoger/het hoogste niveau kan je ook het project afhalen (symbool van pijl naar beneden op plat streepje); je krijgt dan de keuze aangeboden om het als een gecomprimeerd pakket (bv tar.gz) te downloaden.
Project verwijderen
(upd. 29/06/2021)
Ingelogd, “settings” (linkerkolom), “General”, “Advanced” (openklappen), helemaal onderaan “Delete project”
Daar staat ook bij “Delayed project deletion / Disabled”, en onderaan de knop “Delete project”.
Er wordt nog gevraagd of je “absolutely sure” bent, en je moet iets (bv de projectnaam) typen om te bevestigen.
Je kan daarna het project terug aanmaken met dezelfde naam, het krijgt een nieuwe project ID.
Documentatie-wiki
Eén van de opties in de linkermenubalk van GitLab is de wiki, die je kan gebruiken voor documentatie. Het startscherm heeft een knop “Create your first page”.
Issue tracker
De issue tracker wordt gebruikt bij het maken van voorstellen (feature proposal), fouten te melden (bug reporting), enz.
Issue tracker menu leidt naar de lijst of naar het issue board, waar je issues kan slepen naar bv de labels “To Do”, “Doing”, en andere zelf te maken onderverdelingen, waarnaar ze ook verder gesleept kunnen worden. Zo krijgen de issues een traject.