Gebruikershulpmiddelen

Site-hulpmiddelen


linux:applicaties:git:git-owncloud

OwnCloud met Git

Wilt u bestanden uitwisselen tussen werk en thuis of gezamenlijk bestanden gebruiken in een project?
Met Git is snel een eenvoudige Open Source OwnCloud oplossing te realiseren! 1)

Naast de Git software op de lokale computer 2) is het enige dat u nodig heeft een via Internet toegankelijke Unix/Linux computer, waarop u uw eigen Git repository (archief) mag inrichten. In dit voorbeeld gebruiken we een computer van Internet provider XS4ALL, waarop we op “shell” niveau mogen inloggen. 3)

Hoewel Git ontworpen werd t.b.v. software ontwikkeling, is het in brede zin geschikt om verzamelingen bestanden te beheren.
Git is echter niet geschikt voor grote binaire bestanden (bijv. video). 4)

1. Setup Git server en Git clients

1.1 Setup Git server

Gebruik ssh om met gebruikersnaam (bijv. “myname”) en wachtwoord in te loggen in de Unix/Linux computer: 5)

$ ssh myname@shell.xs4all.nl

The authenticity of host 'shell.xs4all.nl (194.109.21.8)' can't be established.
RSA key fingerprint is 8b:16:df:7b:11:7c:78:1c:4d:65:3f:50:71:2b:91:5d.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'shell.xs4all.nl,194.109.21.8' (RSA) to the list of known hosts.

myname@shell.xs4all.nl's password:
Linux xs8.xs4all.nl 3.2.52-xsserver #1 SMP Mon Nov 11 23:22:44 CET 2013 x86_64

        Welkom bij XS4ALL !

xs8.xs4all.nl:/home/m/myname$

Maak een “bare” Git repository aan: 6) 7)

$ mkdir mygitrepo.git

$ cd mygitrepo.git

$ git init --bare
Initialized empty Git repository in /home/auto/myname/mygitrepo.git/

En hiermee is onze Git “server” klaar.

$ exit
Connection to shell.xs4all.nl closed.

1.2 Setup Git client

Maak als gewone gebruiker (bijv. “myname”) een lege Git repository aan op de lokale computer:

$ mkdir mygitrepo

$ cd mygitrepo

$ git init
Initialized empty Git repository in /home/myname/mygitrepo/.git/

Maak de Git server (een z.g. “remote”) bekend in deze Git repository:
(Als remote naam is hier “xs4all” gekozen.)

$ git remote add xs4all ssh://myname@shell.xs4all.nl/~/mygitrepo.git

Check het resultaat:

$ git remote -v
xs4all	ssh://myname@shell.xs4all.nl/~/mygitrepo.git (fetch)
xs4all	ssh://myname@shell.xs4all.nl/~/mygitrepo.git (push)
  • Verwijder een foute “remote” met: $ git remote rm xs4all

Controleer of het mogelijk is om data op te halen van de Git server:

$ git fetch xs4all
myname@shell.xs4all.nl's password:
  • Geen foutmeldingen? Dan is het goed!

1.3 Stel Naam en e-mail adres in op de Git client

Alvorens we de nieuwe Git repository kunnen gebruiken, moeten we onze identiteit bekendmaken:

$ git config --global user.name "Myname"

$ git config --global user.email "Myname@myhome.net"

2. Voeg bestanden toe in de Git repository

2.1 Plaats bestanden in de Git "working tree"

Voeg bestanden toe in de Git repository van de Git client computer:

$ pwd
/home/myname/mygitrepo

$ cal | tee cal.txt
   February 2014
Su Mo Tu We Th Fr Sa
                   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

$ echo 'Hello there!' > hello.txt

$ ls -l
total 8
-rw-r--r-- 1 myname myname 188 Feb 18 10:37 cal.txt
-rw-r--r-- 1 myname myname  13 Feb 18 10:38 hello.txt

2.2 Voeg de nieuwe data toe aan de Git repository

Nieuwe data wordt aan de Git repository toegevoegd d.m.v. een “Commit”.
Een Commit is een bij elkaar behorende set van wijzigingen aan de bestanden in de werkruimte. 8)

Schrijf nu de nieuwe Commit in de Git repository:

$ git add .

$ git commit -m 'Mijn eerste Commit!'

[master (root-commit) 8d84f9d] Mijn eerste Commit!
 2 files changed, 9 insertions(+)
 create mode 100644 cal.txt
 create mode 100644 hello.txt
  • N.B.: Vergeet de eerste stap “git add .” niet!
    “git commit” neemt alleen de data mee, die in de Git Index is toegevoegd! 9)
  • Het is mogelijk de optie “-m 'Commit tekst' ” weg te laten.
    U wordt dan gelanceerd in de “vi” editor om de Commit tekst te schrijven. (Leer eerst vi!) 10)
  • Let op de quotes om de Commit tekst!

Met het commando “git log” kunnen we de historie van de een branch bekijken: 11) 12)

$ git log

commit 88b32f6fb1fea7a0742f9060c5f4daa262e94630
Author: Myname <Myname@myhome.net>
Date:   Tue Feb 18 11:57:47 2014 +0100

    Mijn eerste Commit!

3. Synchroniseer met de Git server

3.1 Haal data van de Git server op

Het commando “git fetch” haalt de data van de Git server:
(In dit voorbeeld is er al data op de Git server geplaatst vanuit een andere Git client.)

$ git fetch xs4all
myname@shell.xs4all.nl's password:

warning: no common commits
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From ssh://shell.xs4all.nl/~/mygitrepo
 * [new branch]      master     -> xs4all/master

Met het commando “git log” kunnen we de historie van de remote branch “xs4all/master” bekijken: 13)

$ git log xs4all/master

commit ec6468d43cfbeddd317073224ffee6019dc55c09
Author: Myworkname <Myworkname@myworkplace.com>
Date:   Mon Feb 17 14:50:58 2014 +0100

    Kalender 2014

3.2 Samenvoegen van lokale en remote data

Het commando “git rebase” voegt de lokale data in de Git repository samen met de data van de Git server: 14)

$ git rebase xs4all/master

First, rewinding head to replay your work on top of it...
Applying: Mijn eerste Commit!

Met het commando “git log” kunnen we de historie van de actuele branch (master) bekijken: 15)

$ git log

commit 88b32f6fb1fea7a0742f9060c5f4daa262e94630
Author: Myname <Myname@myhome.net>
Date:   Tue Feb 18 11:57:47 2014 +0100

    Mijn eerste Commit!

commit ec6468d43cfbeddd317073224ffee6019dc55c09
Author: Myworkname <Myworkname@myworkplace.com>
Date:   Mon Feb 17 14:50:58 2014 +0100

    Kalender 2014

4. Actualiseer de Git server

Met het commando “git push” zenden we de samengevoegde data naar de Git server:

$ git push xs4all master
myname@shell.xs4all.nl's password:

Counting objects: 5, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 438 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)
To ssh://myname@shell.xs4all.nl/~/mygitrepo.git
   ec6468d..88b32f6  master -> master

N.B. Synchroniseer altijd eerst met de Git server!

Wanneer de Git client niet eerst gesynchroniseerd is met de Git server wordt de “git push” door de Git server geweigerd:

$ git push xs4all master
myname@shell.xs4all.nl's password:

To ssh://myname@shell.xs4all.nl/~/mygitrepo.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://myname@shell.xs4all.nl/~/mygitrepo.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
  • Ga terug naar stap 3: Voer een “fetch” uit, gevolgd door een “rebase”.

5. Gitk en Git Gui

5.1 Gitk: Opvragen van informatie uit de Git repository

Met het grafische programma “gitk” kunnen we een actueel overzicht opvragen van de Git repository:

$ pwd
/home/myname/mygitrepo

$ gitk --all &

5.2 Git Gui: Grafische Git manager

Vanuit “gitk” kunnen we ook een grafische Git manager starten:

File -> Start git gui

6. Meer informatie

Links
http://git-scm.com/book/nl Git-scm boek NL
https://www.kernel.org/pub/software/scm/git/docs/user-manual.html Git User's Manual
http://git-scm.com/downloads Git-scm downloads (diverse platformen)

.

Copyright © 2014 Integrated Services; Tux4u.nl
Author: Marjan Waldorp; git/git-owncloud 2014-02-21

1)
Git is een versiebeheersysteem ontwikkeld door Linus Torvalds ten behoeve van het Linux kernel project. Git is Open Source software en voor diverse platformen beschikbaar.
2)
In de Tux4u®/Penguin Suite is Git ge_i:nstalleerd.
3)
Shell toegang tot een Unix/Linux computer is standaard in het XS4all Internet abonnement inbegrepen.
4)
Github.com hanteert: bestanden max: 50-100MB, repository max: 10GB.
5)
“shell.xs4all.nl” is de naam van de XS4ALL Unix/Linux computer.
6)
Een bare Git repository heeft alleen een Git repository, geen “working tree” (bestanden). Vergelijk met de Git client setup.
7)
Het is gebruikelijk om de naam van een “bare” Git repository op “.git” te laten eindigen.
8)
De data van de Git repository bevindt zich achter de directory “.git”
9)
De Git Index indexeert de bestanden.
10)
De editor wordt bepaald door de variabele $EDITOR.
11)
Git werkt met “branches” (vertakkingen). De standaard branch is de (lokale) “master” branch.
12)
commit 88b32f6fb1fea7a0742f9060c5f4daa262e94630
Elke commit heeft zijn eigen unieke ID. Deze ID wordt bepaald door de SHA1 secure hash te berekenen over alle commit data en metadata (cryptografie).
13)
De van de Git server opgehaalde data wordt in de lokale Git repository opgeslagen in “remote” branches: * [new branch] master → xs4all/master
14)
Het commando “git rebase” plaatst de commits in de actieve branch (master) bovenop de commits van de “xs4all/master” branch.
15)
De laatste commit in de branch zien we bovenaan. De HEAD (kop) van deze master branch is dus “Mijn eerste Commit!”
linux/applicaties/git/git-owncloud.txt · Laatst gewijzigd: 2018/12/30 17:17 (Externe bewerking)