Ein (Social-)Code-Hosting Dienst.
Statistiken:
- ~3,5 Millionen User
- 6 Millionen Repositories
- 158 Mitarbeiter
- April 2008 mit 6000 Usern und 2500 Repos gestartet.
Bekannte Projekte:
- Erlang, PHP, Perl, Clojure
- Mirros: Linux-Kernel, Ruby
- Git itself
Für Open-Source kostenlos.
- Einschränkungen: 1 GB Speicherplatz.
Infrastructure as a Service
Für Unternehmen gibt es private repos.
Für große Unternehmen kann man die Github-Software lizenzieren.
Eigener Pastebin mit Versionierung Gist.
Volltextsuche über alle Repositories.
# Wird in ~/.gitconfig gespeichert
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
Ablauf ohne GitHub:
# Auf Seite des Forkers (bob)
$ git request-pull HEAD^1 https://github.com/<bob>/repo.git
The following changes since commit 04ca9db3149956ed7670d699cb4b4328386b88e1:
Sophisticated commit message. (2013-05-11 00:36:56 +0200)
are available in the git repository at:
https://github.com/<bob>/repo.git master
$ git push
# Bob sendet diesen Text an Alice
# Auf Seite des Annehmers (alice):
$ git remote add bob https://github.com/<bob>/repo.git
$ git pull bob 04ca9d
Ablauf mit GitHub:
- bob macht über GitHub einen Pull Request.
- alice klickt auf Confirme Merge.
Features:
Verwaltung von...
Code lässt sich online:
- Browsen.
- Blamen.
- Historisch betrachten.
- Editieren.
Tipp: Auch Bilder, Dokumente und Videos sind previewbar.
Issuetracker:
- Eingebauter Bugtracker.
Metriken:
- Contributors, Commit Activity, Pulse.
- Beispiel.
Downloads:
- Gepushte Tags werden zu Downloads.
- Beispiel: Anlegen von 1.2.0rc1:
$ git tag 1.2.0rc1 $ git push origin 1.2.0rc1
Wiki/Webpagehosting:
- Leicht erstellbares wiki.
- gh-pages branch wird unter <user>.github.io/<repo> gehosted.
- Beispiel: http://sahib.github.io/rmlint/
Soziales:
- Andere User kann man followen.
- Andere Repos kann man watchen.
- Anzeige von Aktivitäten anderer auf dem Dashboard.
Möglichkeit um…
# Alle Repositories eines Users auflisten
$ curl -q https://api.github.com/users/qitta/repos \
| grep 'full_name'
"full_name": "qitta/dotfiles",
"full_name": "qitta/foozel",
"full_name": "qitta/scripts",
$ echo "echo I am a hook." > .git/hooks/pre-commit
$ git commit -am "some message"
I am a hook.
# Auf Zweig master
# Ihr Zweig ist vor 'origin/master' um 3 Versionen.
# ...
Hooks werden durch bestimmte Namen identifiziert
- pre-commit, prepare-commit-msg, commit-msg, post-commit
- pre-receive, update
Commit-Messages auf Twitter posten.
make && make test
Generierung von Dokumentation.
Linking von Bugs in Commit-Message.
Bei Commit Email an Mailingliste schicken.
Die Haupattraktion des Tages: Lasst die Spiele beginnen