[git] Handig zelf hosten van centrale git repositories

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Zoals velen, gebruik ik al een tijdje github voor mijn hobby projecten, maar omdat ik bepaalde dingen niet met de wereld wil delen en ook niet meteen geld ervoor wil betalen, ben ik op zoek gegaan naar een manier om zelf mijn eigen git repositories te hosten en te beheren.

Onder andere ook om dit later op mijn werk te introduceren.

Dus ik heb Ubuntu Server LTS geinstalleerd, OpenSSH aangezet en heb daar een map aangemaakt met bare repositories:

/home/git/repos/Project1.git
/home/git/repos/Project2.git
Enzovoorts...

Vervolgens heb ik deze als remote toegevoegd op mijn computer en kan ik prima wijzigingen pushen en pullen. Geen enkel probleem.

MAAR

Het zou natuurlijk wel heel handig zijn als je makkelijk kunt zien welke repositories er op de server zijn en wat daar in staat.

Dus ben ik op zoek gegaan naar web interfaces. Bijvoorbeeld gitweb en cgit.

Met cgit krijg ik het volgende:

Afbeeldingslocatie: http://tweakers.net/ext/f/zHRYDGVBJZ4Amaufj4MyVxip/thumb.png

Helaas worden "description" files niet door git meegenomen wanneer je een git clone doet.

En laat ik nou backup's maken door bestaande git repositories te clonen in een tijdelijke map en vervolgens te tar-en :)

Kortom, ik zit met een aantal vragen.

1. Wat is de beste manier om een backup van een bare git repository te maken?

Is het echt van levensbelang dat ik dit via een clone doe? (wat een atomic operation is)

Ik heb wel gelezen dat mensen met LVM snapshots in de problemen zijn gekomen, omdat iemand net met iets bezig was op het moment dat de snapshot gemaakt werd.

Dit suggereert dat het wel verstandig is, maar dan krijg ik dus geen backup van de "description" files.

2. Is er een betere manier om te laten zien wat de staat is van de bare repositories op de server?

Ondersteuning voor README.md files zou geweldig zijn.

3. Hoe zouden jullie dit inrichten?

PS:
Ik heb ook gekeken naar Gitlab CE, maar deze was supertraag en had een enorme overhead. Ik zoek echt naar iets simpels dat snel op cheap ass hardware kan draaien.

PPS:
gogs.io is veelbelovend, maar ik vind de documentatie karig. Het is mij niet helemaal duidelijk hoe ik daar een goede backup / restore van zou moeten maken. Plus dat het nog niet 1.0 heeft bereikt.

Ik ga nu toch voor gogs :) Inmiddels LVM snapshots aan de praat voor backups van mijn gehele home directory. Daarnaast is het risico vrij beperkt, omdat de git repositories toch apart staan.

Afbeeldingslocatie: http://tweakers.net/ext/f/HMUCSKqltTw0OByoKVI828F2/thumb.png

[ Voor 6% gewijzigd door Lethalis op 12-06-2016 10:51 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • hellum
  • Registratie: Oktober 2007
  • Laatst online: 07-10 10:47
misschien off-topic, maar waarom gebruik je bitbucket niet? Is gratis en prive.

Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
hellum schreef op zaterdag 11 juni 2016 @ 15:55:
misschien off-topic, maar waarom gebruik je bitbucket niet? Is gratis en prive.
Omdat ik de kennis die ik thuis opdoe, mee wil nemen naar de zaak.

En bitbucket heeft max 5 gebruikers als het gratis is :)

Ik wil er toch wel 10 tot 20 gebruikers op aansluiten zonder issues.

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Feanathiel
  • Registratie: Juni 2007
  • Niet online

Feanathiel

Cup<Coffee>

Wat je kunt proberen is op de server de hooks zo op te zetten dat ze globaal zijn ingericht. Op het moment dat er dan iemand een bestand push'd die description heet, maak je daar een symlink of kopie van (vanuit .git/description naar description). Dan is hij altijd in sync (door symlink) en werkt het ook als je nieuwe repo's aanmaakt.

Zie ook: http://stackoverflow.com/...push-git-description-file

Acties:
  • 0 Henk 'm!

  • Mercatres
  • Registratie: September 2009
  • Laatst online: 10-10 12:25
Collega van mij had een klein jaar geleden een Gogs opgezet, en scheen heel simpel op te zetten. Ook met meerdere users was er geen probleem. Over het back-up/archive verhaal kan ik je echter niet helpen.

Acties:
  • +1 Henk 'm!

  • _trickster_
  • Registratie: Mei 2005
  • Laatst online: 10-10 00:04
Al gedacht aan gitlab? Je kan online gratis afnemen maar je kan hem zelf volgenmij ook hosten

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Met _trickster_.
Gitlab (CE) is makkelijk te installeren (en updaten), heeft een web-interface a-la github, hooks en heel de reutemeteut en ook makkelijke backups.

Installeren is (in essentie) easy als sudo apt-get install gitlab-ce

Support is goed, community actief, documentatie prima. Ik ben redelijk Linux n00b en had 't zo draaien / ingeregeld inc. TFA, backups en de hele shebang.

[ Voor 54% gewijzigd door RobIII op 11-06-2016 17:19 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Gitlab heb ik al getest en dat was heel traag op mijn 1gb VM die op een Celeron draait :p

Ik heb nog eens over snapshots nagedacht.

Ten eerste is een snapshot vrij snel aangemaakt. Dus stel dat ik elke nacht om 3 uur een snapshot maak en daar vandaan de git repositories backup met rsync of tar.

Dan kan er dus alleen iets misgaan als iemand om 3 uur 's nachts precies iets aan het syncen is. En dan alleen in de repository waar hij mee bezig is.

Maar omdat ik elke nacht een backup maak, betekent dat ook dat alle backup's erna en ervoor wel goed zijn.

Dus, is het risico vrij beperkt. Namelijk dat iemand precies om 3 uur 's nachts aan het syncen is en bovendien binnen 24 uur daarna alles stuk gaat, waardoor we exact die ene backup nodig hebben :)

Wellicht een aanvaardbaar risico :+

En zelfs dan zou hij maar een dag werk kwijt zijn, omdat de backup vd dag ervoor goed is. Daarnaast heeft hij de boel misschien ook nog ergens lokaal staan (en kan dit weer naar een oudere backup gepusht worden om alles terug te krijgen).

Kortom, als mijn redenatie correct is, kan ik gewoon een snapshot van de git map maken en backup-en.

En in dat geval gaan de description files gewoon mee en zijn die geen probleem meer.

Dus dan heb ik aan git, ssh, cgit en LVM snapshots genoeg :)

[ Voor 6% gewijzigd door Lethalis op 11-06-2016 18:43 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

Verwijderd

Je zou ook Gogs kunnen gebruiken als web interface voor Git. Werkt snel en goed op mijn Raspberry Pi…

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Bitbucket is gratis en heeft (by default) private repositories.

EDIT: Was iets te snel met reageren, mea culpa. Waarom moet het per se overigens gratis zijn? Bedoel, een hobby mag toch best geld kosten? En als het voor werk is, dan laat je de werkgever toch lekker betalen? :)

EDIT2:
Bitbucket is ook als self hosted te krijgen zie ik nu, onderaan deze pagina. Dat kost dan als je bijvoorbeeld met 10 man zou willen, 10 dollar per jaar. Ik dacht te lezen dat 25 man dan 25 dollar per jaar is, lijkt me niet onbetaalbaar duur en is de eerste dertig dagen gratis te proberen.

[ Voor 109% gewijzigd door CH4OS op 11-06-2016 21:36 ]


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 19:53

Ventieldopje

I'm not your pal, mate!

CH40S schreef op zaterdag 11 juni 2016 @ 21:27:
Bitbucket is gratis en heeft (by default) private repositories.

EDIT: Was iets te snel met reageren, mea culpa. Waarom moet het per se overigens gratis zijn? Bedoel, een hobby mag toch best geld kosten? En als het voor werk is, dan laat je de werkgever toch lekker betalen? :)

EDIT2:
Bitbucket is ook als self hosted te krijgen zie ik nu, onderaan deze pagina. Dat kost dan als je bijvoorbeeld met 10 man zou willen, 10 dollar per jaar. Ik dacht te lezen dat 25 man dan 25 dollar per jaar is, lijkt me niet onbetaalbaar duur en is de eerste dertig dagen gratis te proberen.
Self hosted is voor 10 man $10 per jaar. Voor 11 mensen of meer betaal je ook ineens een hele smak meer.

Gitlab is gratis voor een onbeperkt aantal repo's en gebruikers en wordt nog eens voor je gehost ook. Hoef je je nergens druk om te maken :)

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
Verwijderd schreef op zaterdag 11 juni 2016 @ 21:24:
Je zou ook Gogs kunnen gebruiken als web interface voor Git. Werkt snel en goed op mijn Raspberry Pi…
Die blijft interessant, en heb ik ook al getest :)

Ik heb iig al een script in elkaar getimmerd om een backup van de snapshot te maken. Het moet nog een beetje opgeschoond worden en uitgebreid, maar het werkt al:

Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env python3
#
# Script to create a backup of a snapshot

import sys
import os
import shutil
import subprocess
import tempfile
import time

SNAPSHOT_SIZE="1024M"
SNAPSHOT_NAME="snap"
VOLUME_GROUP="/dev/pluto-vg"
LOGICAL_VOLUME="root"
MOUNT_POINT="/mnt/snap"

BACKUP_MOUNT_POINT="/mnt/backup"
BACKUP_SOURCE="/mnt/snap/home/marc"
BACKUP_DEST="/mnt/backup"
BACKUP_NAME="HomeBackup"

# Step 1 : Create the snapshot volume
args = ["lvcreate", "-L" + SNAPSHOT_SIZE, "-s", "-n", SNAPSHOT_NAME, VOLUME_GROUP + "/" + LOGICAL_VOLUME]
if subprocess.call(args) != 0:
    print("Snapshot creation failed.")
    sys.exit(1)

print("Created snapshot of " + VOLUME_GROUP + "/" + LOGICAL_VOLUME)

# Step 2 : Mount the snapshot
args = ["mount", VOLUME_GROUP + "/" + SNAPSHOT_NAME, MOUNT_POINT, "-o", "ro"]
if subprocess.call(args) != 0:
    print("Mounting the snapshot failed.")
    sys.exit(1)

print("Snapshot mounted at " + MOUNT_POINT)

# Step 3 : Mount backup location
if BACKUP_MOUNT_POINT:
    args = ["mount", BACKUP_MOUNT_POINT]
    if subprocess.call(args) != 0:
        print("Mounting the backup location failed.")
        sys.exit(1)

    print("Backup location mounted at " + BACKUP_MOUNT_POINT)
    
# Step 4 : Change to the backup source folder
cur_dir = os.path.abspath(os.path.curdir)
os.chdir(BACKUP_SOURCE)

# Step 5 : Create TAR
tarfile = os.path.join(BACKUP_DEST, BACKUP_NAME + ".tar.gz")
args = ["tar", "cfz", tarfile, BACKUP_SOURCE]
if subprocess.call(args) != 0:
    print("Create TAR file failed.")
    sys.exit(1)

print("TAR file created")

# Step x : Change back to current dir to prevent keeping the snapshot busy
os.chdir(cur_dir)

# Step x : Unmount the backup location
if BACKUP_MOUNT_POINT:
    args = ["umount", BACKUP_MOUNT_POINT]
    if subprocess.call(args) != 0:
        print("Unmounting the backup location failed.")
        sys.exit(1)

    print("Backup location unmounted")

# Step x : Unmount the snapshot
args = ["umount", VOLUME_GROUP + "/" + SNAPSHOT_NAME]
if subprocess.call(args) != 0:
    print("Unmounting the snapshot failed.")
    sys.exit(1)

print("Snapshot unmounted")

# Step x : Remove the snapshot
args = ["lvremove", "-f", VOLUME_GROUP + "/" + SNAPSHOT_NAME]
if subprocess.call(args) != 0:
    print("Removing the snapshot failed.")
    sys.exit(1)

print("Snapshot removed")


Of ik nou Gogs ga gebruiken, of even bij cgit blijf, de backup oplossing is er nu iig :)

Het script maakt een snapshot van mijn root partitie en mount daarnaast ook nog een Windows share op een andere server (die ik in /etc/fstab heb gedefinieerd), waar ik vervolgens een tar file naartoe wegschrijf :)

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Lethalis
  • Registratie: April 2002
  • Niet online
CH40S schreef op zaterdag 11 juni 2016 @ 21:27:
EDIT: Was iets te snel met reageren, mea culpa. Waarom moet het per se overigens gratis zijn? Bedoel, een hobby mag toch best geld kosten? En als het voor werk is, dan laat je de werkgever toch lekker betalen? :)
Het is voor mij part of the fun om het helemaal met gratis software voor elkaar te krijgen.

Anders kan ik net zo goed Windows blijven gebruiken en een github abonnement afsluiten.

In plaats daarvan draai ik Ubuntu 16.04 LTS op mijn computers, programmeer ik in Java, Python, .NET core, HTML5 en JavaScript etc. En gebruik ik Postgres en sqlite als db backend.

Op mijn werk doe ik 90% vd tijd niks anders dan werken aan een enorm Windows.Forms project in VB.NET en C#. En gebruiken we nog steeds SourceSafe :X

Dan is het juist leuk om thuis iets heel anders te doen :)

Daarnaast zijn mijn hobbies al duur genoeg :p

[edit]
Ik ga voor Gogs:

Afbeeldingslocatie: http://tweakers.net/ext/f/HMUCSKqltTw0OByoKVI828F2/thumb.png

Heb hem nu wel goed aan de praat vind ik :)

[ Voor 13% gewijzigd door Lethalis op 12-06-2016 09:43 ]

Ask yourself if you are happy and then you cease to be.


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 00:11
Ventieldopje schreef op zaterdag 11 juni 2016 @ 22:22:
[...]


Self hosted is voor 10 man $10 per jaar. Voor 11 mensen of meer betaal je ook ineens een hele smak meer.
Bitbucket server zelf hosten is een one-time payment, niet per jaar. Dus voor 10 users eenmalig $10:
$10
One-time payment
up to 10 users
Die $10 gaat trouwens ook nog naar liefdadigheid. Voor 25 man is het $1800, dus de prijs loopt inderdaad wel vrij sterk op.

Overigens zou je lijkt me ook een soort gedeelde guest user aan moeten kunnen maken, met alleen read / clone rechten.


P.S. Niet dat ik Bitbucket aan wil bevelen overigens, maar de prijzen vallen nog wel mee ;)

[ Voor 18% gewijzigd door Morrar op 12-06-2016 14:14 ]


Acties:
  • 0 Henk 'm!

  • - peter -
  • Registratie: September 2002
  • Laatst online: 08-10 15:53
gitolite?

Acties:
  • 0 Henk 'm!

  • Teunis
  • Registratie: December 2001
  • Laatst online: 08-10 19:42
Lethalis schreef op zaterdag 11 juni 2016 @ 14:58:
1. Wat is de beste manier om een backup van een bare git repository te maken?

2. Is er een betere manier om te laten zien wat de staat is van de bare repositories op de server?

3. Hoe zouden jullie dit inrichten?
1) https://git-scm.com/docs/git-archive
2) wji gebruiken: http://gitblit.com/
3) zelf niet ingericht dus geen idee over het gemak.

Please nerf Rock, Paper is fine. Sincerely yours, Scissor.
GW2:Teunis.6427

Pagina: 1