Git-repositories beheren op uw eigen website
Als u bekend bent met het Git-revisiebeheersysteem, hebt u waarschijnlijk wel gehoord van sociale softwaresites die Git gebruiken, zoals GitHub, Gitorious en Sourceforge. Die sites zijn geweldig voor samenwerking, maar wat als je een privé Git-repository op je eigen persoonlijke website wilt hosten?
GitList is een PHP-frontend voor Git die het bladeren door je Git-repositories verfraait en vereenvoudigt, en je kunt het overal hosten waar je maar wilt. Zeg vaarwel tegen exorbitante vergoedingen voor het hosten van uw privérepository; GitList is helemaal gratis, en vanwege de minimale afhankelijkheden, kun je het zelfs uitvoeren op (sommige) gedeelde webhostingplannen.
De interface ziet er vast vertrouwd uit voor jullie GitHub-gebruikers die er zijn! Het ziet er vrij glad en modern uit in vergelijking met de onhandige interface van Gitweb, Git's standaardwebfrontend, en het zit boordevol gebruiksvriendelijke functies. Sommige hiervan omvatten:
- Ondersteuning voor het bladeren door meerdere repositories
- Ondersteuning voor meerdere vertakkingen en tags
- RSS feeds
- Syntaxisaccentuering
- Statistieken over uw repositories
- Eenvoudig te installeren in vergelijking met andere webgebaseerde Git-frontends
Vereisten
Zoals we eerder al vermeldden, kunt u GitList installeren op een aantal gedeelde webhostingplannen. U hebt op uw externe server wel een aantal dingen nodig die niet alle gedeelde hostingpakketten bieden:
- Git
- SSH-toegang
Merk op dat SSH-toegang niet vereist is om GitList zelf te installeren, maar je hebt het nodig om je remote Git-repositories vanaf de opdrachtregel te maken en te beheren.
Naast deze twee items heb je nodig:
- Apache met mod_rewrite ingeschakeld of Nginx op uw externe server
- PHP 5.3.3 op uw externe server
- Git op je lokale computer
Installatie
Neem een tarball van de GitList-code van de hoofdpagina op GitList.org. U kunt kiezen tussen de nieuwste stabiele release, die op het moment van schrijven 0.3 of de ontwikkelingsversie is. Ik koos voor de ontwikkeling, maar je kunt in beide gevallen dezelfde installatie-instructies volgen.
Pak de tarball uit in de map op uw site waarnaar u GitList wilt installeren - niet te verwarren met de map waarin uw werkelijke Git-bibliotheken zijn geïnstalleerd, waar we een beetje over zullen praten.
Vanaf nu gaan de instructies in dit artikel ervan uit dat u via SSH bent ingelogd op uw site. Voer je GitList-map in en stel 777-machtigingen in naar de submap "cache" (maak deze aan als deze nog niet bestaat):
[mkdir cache] chmod 777 cache
Verplaats nu het bestand config.ini-voorbeeld naar config.ini:
mv config.ini-example config.ini
Open config.ini voor bewerking in een van de teksteditors die beschikbaar zijn op uw externe server. Bijvoorbeeld:
vi config.ini
Voor dit gedeelte moet je al een of meer Git-bibliotheken ergens op je server hebben opgeslagen. Als u dat niet doet, leest u het volgende gedeelte en komt u hier terug.
Vul het repositories
in de code in met het volledige pad van uw Git-projectdirectory. Als je het volledige pad niet kent, kun je naar die map gaan en pwd
; de uitvoer is het volledige pad. In dit geval werd mijn Git-projectmap 'gitprojects' genoemd en deze leefde onder de submap 'git' van mijn hoofdsite, dus typte ik mijn pad dienovereenkomstig in (de mapstructuur kan per webhost verschillen, dus wees voorzichtig):
Een Git Repository op uw server krijgen
Ga je gang en sla dit gedeelte over als je al je remote repositories hebt ingesteld. Zo niet, hier is een manier om het te doen.
Maak eerst een Git-repository op je lokale computer. U kunt vanuit elke directory een repository maken. Stel dat u een map met de naam 'schildpadden' heeft met daarin enkele bestanden:
cd turtles git init #this initialiseert de repository git add * #dit zorgt ervoor dat alle bestanden in de directory worden bijgehouden voor revisies git commit -m "Mijn repo gemaakt" * #committeert de bestanden en voegt een commentaar toe
Nu SSH in uw externe server om een bare repository aan te maken en te initialiseren:
mkdir turtles.git && cd turtles.git git --bare init
Keer terug naar uw lokale machine en voeg een filiaal op afstand toe. Het is gebruikelijk om het 'oorsprong' te noemen, maar u kunt elke gewenste naam gebruiken (andere namen gebruiken is handig als u dezelfde bestanden deelt met meerdere externe opslagplaatsen). Volg de indeling van dit voorbeeld maar verander uw bestandspaden op de juiste manier:
git remote add origin ssh: //[email protected]/home/uwgebruikersnaam/public_html/gitprojects/turtles.git
Duw nu uw bestanden naar de externe server:
git push - alles afkomstig
Ta-da! Je hebt nu een externe kopie van je Git-repository die je kunt doorbladeren met GitList. Vergeet niet eerst het pad van de bovenliggende map in uw config.ini te plaatsen.
Uw repository beveiligen
Als je je zorgen maakt over het weghouden van je repository voor nieuwsgierige blikken, kan ik je helaas vertellen dat GitList geen ingebouwde gebruikersauthenticatiemethode biedt. In de meeste gevallen kunt u een map echter via een wachtwoord beveiligen via het configuratiescherm van uw website. In cPanel staat het hier in de sectie "Beveiliging":
Als alternatief kunt u de Apache-server handmatig configureren om de toegang tot bepaalde gebruikers te beperken.
Conclusie
Het hosten van uw eigen repositories kan zowel krachtig als budgetbesparend zijn. Of je Git nu al een tijdje gebruikt of je bent in het beginstadium van nieuwsgierigheid over hoe je kunt profiteren van versiebeheer, ik spoor je aan om self-hosting en GitList uit te proberen - tenzij, natuurlijk, je bent volledig inhoud die de controle over uw inhoud overlaat aan derden.