Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:git_centos_7

Git CentOS 7

Diese Dokumentation ist nach dem Kurs: Versionskotrolle mit Git im Linuxhotel mit dem Referenten Martin „Joey“ Schulze entstanden. Hier noch einmal meinen Dank für die Informationen

Git ist ein freies auf Open-Source basierendes Versionskontrollsystem, entwickelt um kleine bis sehr große Projekte, schnell und effizient verwalten zu können.

Beschreibung Externer Link
Homepage https://git-scm.com/
Dokumentation https://git-scm.com/doc
Referenzen https://git-scm.com/docs
Git Book https://git-scm.com/book/en/v2
Git Buch https://git-scm.com/book/de/v1
Zusatzprodukt Interner Link
GitWeb Git CentOS 7 - GitWeb

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um der Benutzer root zu werden, geben Sie bitte nachfolgenden Befehl ein:

$ su -
Password: 

Überblick

Nachfolgende Informationen sollen einen kurzen Überblick über den nachfolgend beschriebenen Aufbau des zum Einsatz kommenden Git-Konstrukts geben, ohne einen Anspruch auf Vollständigkeit zu haben.

Nachfolgend eine Möglichkeit eines grundlegenden Einsatzes von Git als Versionskontrollsystem mit Git auf dem lokalem Rechner und einem zentralen Git-Server und deren Bestandteile:

                        LOKALER RECHNER                                 ZENTRALER SERVER
+-------------------------------------------------------------+   +--------------------------+
|                                                             |   |                          |
|   +--------------+     +---------+     +--------------+     |   |     +----------------+   |
|   | Working Copy | --> |  INDEX  | --> | LOKALES REPO | <-> |<->| <-> | ZENTRALES REPO |   | 
|   +--------------+     +---------+     +--------------+     |   |     +----------------+   |
|                                                             |   |                          |
+-------------------------------------------------------------+   +--------------------------+

Die Komponenten im Überblick sind:

  • Working Copy = lokal gespeicherte Dateien
  • INDEX = Zur Aufnahme in das Repository vorgemerkte Dateien/Objekte, aus der Working Copy
  • REPOsitory = In der Struktur von Git gespeicherte Objekte

Als zentrales Konzept in Git gilt, das jeder lokale Rechner eine komplette Kopie des gesamten Repositorys - lokal gespeichert hält.

Zusätzlich kann ein zentraler Git-Server, konfiguriert als bare (nackter)-Server, ebenfalls eine komplette Kopie des gesamten Repositorys enthalten, um Informationen mit anderen kompletten lokalen Kopien des Repositorys austauschen zu können.

Dabei kann sich ein

  • lokales Repository und ein
  • zentrales Repository

dadurch unterscheiden, das im zentralen Repository, die Komponenten

  • Working Copy und
  • INDEX

weggelassen werden können.

Zugriffsmöglichkeiten

Die gebräuchlichsten Zugriffsmöglichkeiten auf einen entfernten Git-Server sind in nachfolgender Auflistung dargestellt:

  • ssh (ist der Standard)
    • VORTEILE:
      • Die Zugriffe sind sehr effizient und es können alle Befehle von Git ausgeführt werden
      • Alle Zugriffe erfolgen grundsätzlich verschlüsselt
    • NACHTEILE:
      • Das einrichten und verwalten einer ssh-Infrastruktur kann aufwendig sein, falls diese nicht vorhanden ist
      • Jeder Benutzer benötigt ein Benutzerkonto, falls eine Identifikation einzelner Benutzer erfolgen soll
  • git (eigenes Protokoll)
    • VORTEIL:
      • Der Git-Daemon bietet die effizienteste und schnellste Übertragung von Daten
    • NACHTEILE:
      • Es gibt keine Möglichkeit der Authentifizierung
      • Es gibt standardmäßig keine Verschlüsselung
  • http/https (durch verschiedene Authentifizierungsmöglichkeiten interessant)
    • VORTEILE:
      • Diese Möglichkeit bietet einen einfachen Zugriff via Web-Technologien
      • Es können meist vorhandene Firewall Freischaltungen genutzt werden (Port: 80, 443)
      • Die Authentifizierung kann über Web-Server durchgeführt werden
      • Verschlüsselung kann durch Einsatz von https erfolgen
    • NACHTEIL:
      • Es wird zusätzlich ein Web-Server benötigt

:!: HINWEIS - Nachfolgend soll der Zugriff auf einen entfernten Git-Server via http/https konfiguriert werden.

Voraussetzungen

Als Voraussetzung für die hier, nachfolgend dargestellte Installation von Git sind folgende Komponenten erforderlich:

iptables Regel

Damit der Git-Server als zentrales Git-Repository auch erreichbar ist und nicht die Weitergabe der IP-Pakete vom Paketfilter iptables blockiert werden, müssen nachfolgende Regeln zum iptables-Regelwerk hinzugefügt werden.

Um die aktuellen iptables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22  
5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Nachfolgender Befehl, fügt folgende iptables-Regeln dem iptables-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:

  • -A INPUT -p tcp --dport 80 -j ACCEPT
  • -A INPUT -p tcp --dport 443 -j ACCEPT

und hier der Befehl:

# iptables -I INPUT 5 -p tcp --dport 80 -j ACCEPT
# iptables -I INPUT 6 -p tcp --dport 443 -j ACCEPT

Eine erneute Abfrage des iptables-Regelwerks, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit nachfolgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5        0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 state NEW
6        0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:443 state NEW
7        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Die neuen Zeilen sind an Position 5 (INPUT) und Position 6 (INPUT) zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
5        0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:24 state NEW
6        0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:143 state NEW
...

Um diese iptables-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:

# /usr/sbin/iptables-save > /etc/sysconfig/iptables 

Installation - Linux - Server/Client

Die Installation kann aus den Standard CentOS-Repositorys erfolgen und wird mit nachfolgendem Befehl durchgeführt:

# yum install git
Loaded plugins: changelog, priorities
65 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package git.x86_64 0:1.8.3.1-4.el7 will be installed
--> Processing Dependency: perl-Git = 1.8.3.1-4.el7 for package: git-1.8.3.1-4.el7.x86_64
--> Processing Dependency: rsync for package: git-1.8.3.1-4.el7.x86_64
--> Processing Dependency: perl(Term::ReadKey) for package: git-1.8.3.1-4.el7.x86_64
--> Processing Dependency: perl(Git) for package: git-1.8.3.1-4.el7.x86_64
--> Processing Dependency: perl(Error) for package: git-1.8.3.1-4.el7.x86_64
--> Processing Dependency: libgnome-keyring.so.0()(64bit) for package: git-1.8.3.1-4.el7.x86_64
--> Running transaction check
---> Package libgnome-keyring.x86_64 0:3.8.0-3.el7 will be installed
---> Package perl-Error.noarch 1:0.17020-2.el7 will be installed
---> Package perl-Git.noarch 0:1.8.3.1-4.el7 will be installed
---> Package perl-TermReadKey.x86_64 0:2.30-20.el7 will be installed
---> Package rsync.x86_64 0:3.0.9-15.el7 will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package                 Arch          Version                Repository   Size
================================================================================
Installing:
 git                     x86_64        1.8.3.1-4.el7          base        4.3 M
Installing for dependencies:
 libgnome-keyring        x86_64        3.8.0-3.el7            base        109 k
 perl-Error              noarch        1:0.17020-2.el7        base         32 k
 perl-Git                noarch        1.8.3.1-4.el7          base         52 k
 perl-TermReadKey        x86_64        2.30-20.el7            base         31 k
 rsync                   x86_64        3.0.9-15.el7           base        359 k

Transaction Summary
================================================================================
Install  1 Package (+5 Dependent packages)

Total download size: 4.9 M
Installed size: 23 M
Is this ok [y/d/N]: y
Downloading packages:
(1/6): libgnome-keyring-3.8.0-3.el7.x86_64.rpm             | 109 kB   00:00     
(2/6): perl-Error-0.17020-2.el7.noarch.rpm                 |  32 kB   00:00     
(3/6): git-1.8.3.1-4.el7.x86_64.rpm                        | 4.3 MB   00:00     
(4/6): perl-Git-1.8.3.1-4.el7.noarch.rpm                   |  52 kB   00:00     
(5/6): perl-TermReadKey-2.30-20.el7.x86_64.rpm             |  31 kB   00:00     
(6/6): rsync-3.0.9-15.el7.x86_64.rpm                       | 359 kB   00:00     
--------------------------------------------------------------------------------
Total                                              9.8 MB/s | 4.9 MB  00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : 1:perl-Error-0.17020-2.el7.noarch                            1/6 
  Installing : libgnome-keyring-3.8.0-3.el7.x86_64                          2/6 
  Installing : rsync-3.0.9-15.el7.x86_64                                    3/6 
  Installing : perl-TermReadKey-2.30-20.el7.x86_64                          4/6 
  Installing : perl-Git-1.8.3.1-4.el7.noarch                                5/6 
  Installing : git-1.8.3.1-4.el7.x86_64                                     6/6 
  Verifying  : perl-TermReadKey-2.30-20.el7.x86_64                          1/6 
  Verifying  : perl-Git-1.8.3.1-4.el7.noarch                                2/6 
  Verifying  : 1:perl-Error-0.17020-2.el7.noarch                            3/6 
  Verifying  : git-1.8.3.1-4.el7.x86_64                                     4/6 
  Verifying  : rsync-3.0.9-15.el7.x86_64                                    5/6 
  Verifying  : libgnome-keyring-3.8.0-3.el7.x86_64                          6/6 

Installed:
  git.x86_64 0:1.8.3.1-4.el7                                                    

Dependency Installed:
  libgnome-keyring.x86_64 0:3.8.0-3.el7  perl-Error.noarch 1:0.17020-2.el7     
  perl-Git.noarch 0:1.8.3.1-4.el7        perl-TermReadKey.x86_64 0:2.30-20.el7 
  rsync.x86_64 0:3.0.9-15.el7           

Complete!

Mit nachfolgendem Befehl kann überprüft werden, welche Inhalte mit den Paket git installiert wurden.

# rpm -qil git
Name        : git
Version     : 1.8.3.1
Release     : 4.el7
Architecture: x86_64
Install Date: Tue 04 Aug 2015 09:17:27 AM CEST
Group       : Development/Tools
Size        : 22920720
License     : GPLv2
Signature   : RSA/SHA256, Fri 04 Jul 2014 03:32:38 AM CEST, Key ID 24c6a8a7f4a80eb5
Source RPM  : git-1.8.3.1-4.el7.src.rpm
Build Date  : Tue 10 Jun 2014 10:40:28 AM CEST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://git-scm.com/
Summary     : Fast Version Control System
Description :
Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

The git rpm installs the core tools with minimal dependencies.  To
install all git packages, including tools for integrating with other
SCMs, install the git-all meta-package.
/etc/bash_completion.d
/etc/bash_completion.d/git
/usr/bin/git
/usr/bin/git-receive-pack
/usr/bin/git-shell
/usr/bin/git-upload-archive
/usr/bin/git-upload-pack
/usr/libexec/git-core
/usr/libexec/git-core/git
/usr/libexec/git-core/git-add
/usr/libexec/git-core/git-add--interactive
/usr/libexec/git-core/git-am
/usr/libexec/git-core/git-annotate
/usr/libexec/git-core/git-apply
/usr/libexec/git-core/git-archive
/usr/libexec/git-core/git-bisect
/usr/libexec/git-core/git-bisect--helper
/usr/libexec/git-core/git-blame
/usr/libexec/git-core/git-branch
/usr/libexec/git-core/git-bundle
/usr/libexec/git-core/git-cat-file
/usr/libexec/git-core/git-check-attr
/usr/libexec/git-core/git-check-ignore
/usr/libexec/git-core/git-check-ref-format
/usr/libexec/git-core/git-checkout
/usr/libexec/git-core/git-checkout-index
/usr/libexec/git-core/git-cherry
/usr/libexec/git-core/git-cherry-pick
/usr/libexec/git-core/git-clean
/usr/libexec/git-core/git-clone
/usr/libexec/git-core/git-column
/usr/libexec/git-core/git-commit
/usr/libexec/git-core/git-commit-tree
/usr/libexec/git-core/git-config
/usr/libexec/git-core/git-count-objects
/usr/libexec/git-core/git-credential
/usr/libexec/git-core/git-credential-cache
/usr/libexec/git-core/git-credential-cache--daemon
/usr/libexec/git-core/git-credential-gnome-keyring
/usr/libexec/git-core/git-credential-store
/usr/libexec/git-core/git-describe
/usr/libexec/git-core/git-diff
/usr/libexec/git-core/git-diff-files
/usr/libexec/git-core/git-diff-index
/usr/libexec/git-core/git-diff-tree
/usr/libexec/git-core/git-difftool
/usr/libexec/git-core/git-difftool--helper
/usr/libexec/git-core/git-fast-export
/usr/libexec/git-core/git-fast-import
/usr/libexec/git-core/git-fetch
/usr/libexec/git-core/git-fetch-pack
/usr/libexec/git-core/git-filter-branch
/usr/libexec/git-core/git-fmt-merge-msg
/usr/libexec/git-core/git-for-each-ref
/usr/libexec/git-core/git-format-patch
/usr/libexec/git-core/git-fsck
/usr/libexec/git-core/git-fsck-objects
/usr/libexec/git-core/git-gc
/usr/libexec/git-core/git-get-tar-commit-id
/usr/libexec/git-core/git-grep
/usr/libexec/git-core/git-hash-object
/usr/libexec/git-core/git-help
/usr/libexec/git-core/git-http-backend
/usr/libexec/git-core/git-http-fetch
/usr/libexec/git-core/git-http-push
/usr/libexec/git-core/git-imap-send
/usr/libexec/git-core/git-index-pack
/usr/libexec/git-core/git-init
/usr/libexec/git-core/git-init-db
/usr/libexec/git-core/git-instaweb
/usr/libexec/git-core/git-log
/usr/libexec/git-core/git-lost-found
/usr/libexec/git-core/git-ls-files
/usr/libexec/git-core/git-ls-remote
/usr/libexec/git-core/git-ls-tree
/usr/libexec/git-core/git-mailinfo
/usr/libexec/git-core/git-mailsplit
/usr/libexec/git-core/git-merge
/usr/libexec/git-core/git-merge-base
/usr/libexec/git-core/git-merge-file
/usr/libexec/git-core/git-merge-index
/usr/libexec/git-core/git-merge-octopus
/usr/libexec/git-core/git-merge-one-file
/usr/libexec/git-core/git-merge-ours
/usr/libexec/git-core/git-merge-recursive
/usr/libexec/git-core/git-merge-resolve
/usr/libexec/git-core/git-merge-subtree
/usr/libexec/git-core/git-merge-tree
/usr/libexec/git-core/git-mergetool
/usr/libexec/git-core/git-mergetool--lib
/usr/libexec/git-core/git-mktag
/usr/libexec/git-core/git-mktree
/usr/libexec/git-core/git-mv
/usr/libexec/git-core/git-name-rev
/usr/libexec/git-core/git-notes
/usr/libexec/git-core/git-pack-objects
/usr/libexec/git-core/git-pack-redundant
/usr/libexec/git-core/git-pack-refs
/usr/libexec/git-core/git-parse-remote
/usr/libexec/git-core/git-patch-id
/usr/libexec/git-core/git-peek-remote
/usr/libexec/git-core/git-prune
/usr/libexec/git-core/git-prune-packed
/usr/libexec/git-core/git-pull
/usr/libexec/git-core/git-push
/usr/libexec/git-core/git-quiltimport
/usr/libexec/git-core/git-read-tree
/usr/libexec/git-core/git-rebase
/usr/libexec/git-core/git-rebase--am
/usr/libexec/git-core/git-rebase--interactive
/usr/libexec/git-core/git-rebase--merge
/usr/libexec/git-core/git-receive-pack
/usr/libexec/git-core/git-reflog
/usr/libexec/git-core/git-relink
/usr/libexec/git-core/git-remote
/usr/libexec/git-core/git-remote-ext
/usr/libexec/git-core/git-remote-fd
/usr/libexec/git-core/git-remote-ftp
/usr/libexec/git-core/git-remote-ftps
/usr/libexec/git-core/git-remote-http
/usr/libexec/git-core/git-remote-https
/usr/libexec/git-core/git-remote-testpy
/usr/libexec/git-core/git-repack
/usr/libexec/git-core/git-replace
/usr/libexec/git-core/git-repo-config
/usr/libexec/git-core/git-request-pull
/usr/libexec/git-core/git-rerere
/usr/libexec/git-core/git-reset
/usr/libexec/git-core/git-rev-list
/usr/libexec/git-core/git-rev-parse
/usr/libexec/git-core/git-revert
/usr/libexec/git-core/git-rm
/usr/libexec/git-core/git-send-pack
/usr/libexec/git-core/git-sh-i18n
/usr/libexec/git-core/git-sh-i18n--envsubst
/usr/libexec/git-core/git-sh-setup
/usr/libexec/git-core/git-shell
/usr/libexec/git-core/git-shortlog
/usr/libexec/git-core/git-show
/usr/libexec/git-core/git-show-branch
/usr/libexec/git-core/git-show-index
/usr/libexec/git-core/git-show-ref
/usr/libexec/git-core/git-stage
/usr/libexec/git-core/git-stash
/usr/libexec/git-core/git-status
/usr/libexec/git-core/git-stripspace
/usr/libexec/git-core/git-submodule
/usr/libexec/git-core/git-subtree
/usr/libexec/git-core/git-symbolic-ref
/usr/libexec/git-core/git-tag
/usr/libexec/git-core/git-tar-tree
/usr/libexec/git-core/git-unpack-file
/usr/libexec/git-core/git-unpack-objects
/usr/libexec/git-core/git-update-index
/usr/libexec/git-core/git-update-ref
/usr/libexec/git-core/git-update-server-info
/usr/libexec/git-core/git-upload-archive
/usr/libexec/git-core/git-upload-pack
/usr/libexec/git-core/git-var
/usr/libexec/git-core/git-verify-pack
/usr/libexec/git-core/git-verify-tag
/usr/libexec/git-core/git-web--browse
/usr/libexec/git-core/git-whatchanged
/usr/libexec/git-core/git-write-tree
/usr/libexec/git-core/mergetools
/usr/libexec/git-core/mergetools/araxis
/usr/libexec/git-core/mergetools/bc3
/usr/libexec/git-core/mergetools/codecompare
/usr/libexec/git-core/mergetools/deltawalker
/usr/libexec/git-core/mergetools/diffuse
/usr/libexec/git-core/mergetools/ecmerge
/usr/libexec/git-core/mergetools/emerge
/usr/libexec/git-core/mergetools/gvimdiff
/usr/libexec/git-core/mergetools/gvimdiff2
/usr/libexec/git-core/mergetools/kdiff3
/usr/libexec/git-core/mergetools/kompare
/usr/libexec/git-core/mergetools/meld
/usr/libexec/git-core/mergetools/opendiff
/usr/libexec/git-core/mergetools/tkdiff
/usr/libexec/git-core/mergetools/tortoisemerge
/usr/libexec/git-core/mergetools/vimdiff
/usr/libexec/git-core/mergetools/vimdiff2
/usr/libexec/git-core/mergetools/xxdiff
/usr/share/doc/git-1.8.3.1
/usr/share/doc/git-1.8.3.1/COPYING
/usr/share/doc/git-1.8.3.1/README
/usr/share/doc/git-1.8.3.1/RelNotes
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.0.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.0.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.0.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.0.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.0.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.0.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.0.7.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.0.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.1.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.1.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.1.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.1.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.1.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.1.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.2.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.2.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.2.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.2.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.2.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.3.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.3.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.3.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.3.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.3.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.3.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.3.7.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.3.8.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.4.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.4.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.4.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.4.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.4.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.4.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.4.7.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.5.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.5.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.5.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.5.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.5.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.5.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.6.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.6.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.6.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.6.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.6.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.6.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.5.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.0.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.0.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.0.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.0.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.0.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.0.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.0.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.1.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.1.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.1.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.1.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.2.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.2.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.2.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.2.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.2.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.3.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.3.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.3.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.3.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.4.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.4.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.4.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.4.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.4.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.7.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.8.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.9.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.6.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.6.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.6.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.6.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.7.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.8.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.9.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.0.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.1.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.1.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.1.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.1.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.10.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.10.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.10.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.10.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.10.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.10.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.11.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.11.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.11.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.11.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.11.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.11.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.11.7.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.11.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.12.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.12.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.12.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.12.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.12.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.2.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.2.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.2.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.2.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.2.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.3.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.3.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.3.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.3.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.3.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.4.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.4.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.4.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.4.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.4.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.5.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.5.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.5.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.5.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.6.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.6.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.6.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.6.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.6.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.6.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.7.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.7.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.7.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.7.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.7.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.7.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.7.7.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.7.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.8.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.8.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.8.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.8.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.8.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.8.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.8.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.9.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.9.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.9.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.9.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.9.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.9.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.9.7.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.7.9.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.0.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.0.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.0.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.0.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.1.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.1.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.1.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.1.4.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.1.5.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.1.6.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.2.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.2.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.2.3.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.2.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.3.1.txt
/usr/share/doc/git-1.8.3.1/RelNotes/1.8.3.txt
/usr/share/doc/git-1.8.3.1/blame-options.txt
/usr/share/doc/git-1.8.3.1/cmds-ancillaryinterrogators.txt
/usr/share/doc/git-1.8.3.1/cmds-ancillarymanipulators.txt
/usr/share/doc/git-1.8.3.1/cmds-foreignscminterface.txt
/usr/share/doc/git-1.8.3.1/cmds-mainporcelain.txt
/usr/share/doc/git-1.8.3.1/cmds-plumbinginterrogators.txt
/usr/share/doc/git-1.8.3.1/cmds-plumbingmanipulators.txt
/usr/share/doc/git-1.8.3.1/cmds-purehelpers.txt
/usr/share/doc/git-1.8.3.1/cmds-synchelpers.txt
/usr/share/doc/git-1.8.3.1/cmds-synchingrepositories.txt
/usr/share/doc/git-1.8.3.1/config.txt
/usr/share/doc/git-1.8.3.1/contrib
/usr/share/doc/git-1.8.3.1/contrib/README
/usr/share/doc/git-1.8.3.1/contrib/blameview
/usr/share/doc/git-1.8.3.1/contrib/blameview/README
/usr/share/doc/git-1.8.3.1/contrib/blameview/blameview.perl
/usr/share/doc/git-1.8.3.1/contrib/buildsystems
/usr/share/doc/git-1.8.3.1/contrib/buildsystems/Generators
/usr/share/doc/git-1.8.3.1/contrib/buildsystems/Generators.pm
/usr/share/doc/git-1.8.3.1/contrib/buildsystems/Generators/QMake.pm
/usr/share/doc/git-1.8.3.1/contrib/buildsystems/Generators/Vcproj.pm
/usr/share/doc/git-1.8.3.1/contrib/buildsystems/engine.pl
/usr/share/doc/git-1.8.3.1/contrib/buildsystems/generate
/usr/share/doc/git-1.8.3.1/contrib/buildsystems/parse.pl
/usr/share/doc/git-1.8.3.1/contrib/ciabot
/usr/share/doc/git-1.8.3.1/contrib/ciabot/INSTALL
/usr/share/doc/git-1.8.3.1/contrib/ciabot/README
/usr/share/doc/git-1.8.3.1/contrib/ciabot/ciabot.py
/usr/share/doc/git-1.8.3.1/contrib/ciabot/ciabot.sh
/usr/share/doc/git-1.8.3.1/contrib/completion
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.bash
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.tcsh
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.zsh
/usr/share/doc/git-1.8.3.1/contrib/completion/git-prompt.sh
/usr/share/doc/git-1.8.3.1/contrib/continuous
/usr/share/doc/git-1.8.3.1/contrib/continuous/cidaemon
/usr/share/doc/git-1.8.3.1/contrib/continuous/post-receive-cinotify
/usr/share/doc/git-1.8.3.1/contrib/convert-objects
/usr/share/doc/git-1.8.3.1/contrib/convert-objects/convert-objects.c
/usr/share/doc/git-1.8.3.1/contrib/convert-objects/git-convert-objects.txt
/usr/share/doc/git-1.8.3.1/contrib/credential
/usr/share/doc/git-1.8.3.1/contrib/credential/gnome-keyring
/usr/share/doc/git-1.8.3.1/contrib/credential/gnome-keyring/Makefile
/usr/share/doc/git-1.8.3.1/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
/usr/share/doc/git-1.8.3.1/contrib/credential/netrc
/usr/share/doc/git-1.8.3.1/contrib/credential/netrc/Makefile
/usr/share/doc/git-1.8.3.1/contrib/credential/netrc/git-credential-netrc
/usr/share/doc/git-1.8.3.1/contrib/credential/netrc/test.netrc
/usr/share/doc/git-1.8.3.1/contrib/credential/netrc/test.pl
/usr/share/doc/git-1.8.3.1/contrib/credential/osxkeychain
/usr/share/doc/git-1.8.3.1/contrib/credential/osxkeychain/.gitignore
/usr/share/doc/git-1.8.3.1/contrib/credential/osxkeychain/Makefile
/usr/share/doc/git-1.8.3.1/contrib/credential/osxkeychain/git-credential-osxkeychain.c
/usr/share/doc/git-1.8.3.1/contrib/credential/wincred
/usr/share/doc/git-1.8.3.1/contrib/credential/wincred/Makefile
/usr/share/doc/git-1.8.3.1/contrib/credential/wincred/git-credential-wincred.c
/usr/share/doc/git-1.8.3.1/contrib/diff-highlight
/usr/share/doc/git-1.8.3.1/contrib/diff-highlight/README
/usr/share/doc/git-1.8.3.1/contrib/diff-highlight/diff-highlight
/usr/share/doc/git-1.8.3.1/contrib/diffall
/usr/share/doc/git-1.8.3.1/contrib/diffall/README
/usr/share/doc/git-1.8.3.1/contrib/diffall/git-diffall
/usr/share/doc/git-1.8.3.1/contrib/emacs
/usr/share/doc/git-1.8.3.1/contrib/emacs/Makefile
/usr/share/doc/git-1.8.3.1/contrib/emacs/README
/usr/share/doc/git-1.8.3.1/contrib/emacs/git-blame.el
/usr/share/doc/git-1.8.3.1/contrib/emacs/git-blame.elc
/usr/share/doc/git-1.8.3.1/contrib/emacs/git.el
/usr/share/doc/git-1.8.3.1/contrib/emacs/git.elc
/usr/share/doc/git-1.8.3.1/contrib/examples
/usr/share/doc/git-1.8.3.1/contrib/examples/README
/usr/share/doc/git-1.8.3.1/contrib/examples/builtin-fetch--tool.c
/usr/share/doc/git-1.8.3.1/contrib/examples/git-checkout.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-clean.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-clone.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-commit.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-fetch.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-gc.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-ls-remote.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-merge-ours.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-merge.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-notes.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-remote.perl
/usr/share/doc/git-1.8.3.1/contrib/examples/git-rerere.perl
/usr/share/doc/git-1.8.3.1/contrib/examples/git-reset.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-resolve.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-revert.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-svnimport.perl
/usr/share/doc/git-1.8.3.1/contrib/examples/git-svnimport.txt
/usr/share/doc/git-1.8.3.1/contrib/examples/git-tag.sh
/usr/share/doc/git-1.8.3.1/contrib/examples/git-verify-tag.sh
/usr/share/doc/git-1.8.3.1/contrib/fast-import
/usr/share/doc/git-1.8.3.1/contrib/fast-import/git-import.perl
/usr/share/doc/git-1.8.3.1/contrib/fast-import/git-import.sh
/usr/share/doc/git-1.8.3.1/contrib/fast-import/git-p4.README
/usr/share/doc/git-1.8.3.1/contrib/fast-import/import-directories.perl
/usr/share/doc/git-1.8.3.1/contrib/fast-import/import-tars.perl
/usr/share/doc/git-1.8.3.1/contrib/fast-import/import-zips.py
/usr/share/doc/git-1.8.3.1/contrib/git-jump
/usr/share/doc/git-1.8.3.1/contrib/git-jump/README
/usr/share/doc/git-1.8.3.1/contrib/git-jump/git-jump
/usr/share/doc/git-1.8.3.1/contrib/git-resurrect.sh
/usr/share/doc/git-1.8.3.1/contrib/git-shell-commands
/usr/share/doc/git-1.8.3.1/contrib/git-shell-commands/README
/usr/share/doc/git-1.8.3.1/contrib/git-shell-commands/help
/usr/share/doc/git-1.8.3.1/contrib/git-shell-commands/list
/usr/share/doc/git-1.8.3.1/contrib/gitview
/usr/share/doc/git-1.8.3.1/contrib/gitview/gitview
/usr/share/doc/git-1.8.3.1/contrib/gitview/gitview.txt
/usr/share/doc/git-1.8.3.1/contrib/hg-to-git
/usr/share/doc/git-1.8.3.1/contrib/hg-to-git/hg-to-git.py
/usr/share/doc/git-1.8.3.1/contrib/hg-to-git/hg-to-git.txt
/usr/share/doc/git-1.8.3.1/contrib/hooks
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/.gitignore
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/Makefile
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/git-remote-mediawiki.perl
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/git-remote-mediawiki.txt
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/.gitignore
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/Makefile
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/README
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/install-wiki
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/install-wiki.sh
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/install-wiki/.gitignore
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/install-wiki/LocalSettings.php
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/install-wiki/db_install.php
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/push-pull-tests.sh
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/t9360-mw-to-git-clone.sh
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/t9361-mw-to-git-push-pull.sh
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/t9362-mw-to-git-utf8.sh
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/t9363-mw-to-git-export-import.sh
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/t9364-pull-by-rev.sh
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/test-gitmw-lib.sh
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/test-gitmw.pl
/usr/share/doc/git-1.8.3.1/contrib/mw-to-git/t/test.config
/usr/share/doc/git-1.8.3.1/contrib/p4import
/usr/share/doc/git-1.8.3.1/contrib/p4import/README
/usr/share/doc/git-1.8.3.1/contrib/p4import/git-p4import.py
/usr/share/doc/git-1.8.3.1/contrib/p4import/git-p4import.txt
/usr/share/doc/git-1.8.3.1/contrib/patches
/usr/share/doc/git-1.8.3.1/contrib/patches/docbook-xsl-manpages-charmap.patch
/usr/share/doc/git-1.8.3.1/contrib/persistent-https
/usr/share/doc/git-1.8.3.1/contrib/persistent-https/LICENSE
/usr/share/doc/git-1.8.3.1/contrib/persistent-https/Makefile
/usr/share/doc/git-1.8.3.1/contrib/persistent-https/README
/usr/share/doc/git-1.8.3.1/contrib/persistent-https/client.go
/usr/share/doc/git-1.8.3.1/contrib/persistent-https/main.go
/usr/share/doc/git-1.8.3.1/contrib/persistent-https/proxy.go
/usr/share/doc/git-1.8.3.1/contrib/persistent-https/socket.go
/usr/share/doc/git-1.8.3.1/contrib/remote-helpers
/usr/share/doc/git-1.8.3.1/contrib/remote-helpers/Makefile
/usr/share/doc/git-1.8.3.1/contrib/remote-helpers/git-remote-bzr
/usr/share/doc/git-1.8.3.1/contrib/remote-helpers/git-remote-hg
/usr/share/doc/git-1.8.3.1/contrib/remote-helpers/test-bzr.sh
/usr/share/doc/git-1.8.3.1/contrib/remote-helpers/test-hg-bidi.sh
/usr/share/doc/git-1.8.3.1/contrib/remote-helpers/test-hg-hg-git.sh
/usr/share/doc/git-1.8.3.1/contrib/remote-helpers/test-hg.sh
/usr/share/doc/git-1.8.3.1/contrib/remotes2config.sh
/usr/share/doc/git-1.8.3.1/contrib/rerere-train.sh
/usr/share/doc/git-1.8.3.1/contrib/stats
/usr/share/doc/git-1.8.3.1/contrib/stats/git-common-hash
/usr/share/doc/git-1.8.3.1/contrib/stats/mailmap.pl
/usr/share/doc/git-1.8.3.1/contrib/stats/packinfo.pl
/usr/share/doc/git-1.8.3.1/contrib/subtree
/usr/share/doc/git-1.8.3.1/contrib/subtree/.gitignore
/usr/share/doc/git-1.8.3.1/contrib/subtree/COPYING
/usr/share/doc/git-1.8.3.1/contrib/subtree/INSTALL
/usr/share/doc/git-1.8.3.1/contrib/subtree/Makefile
/usr/share/doc/git-1.8.3.1/contrib/subtree/README
/usr/share/doc/git-1.8.3.1/contrib/subtree/git-subtree
/usr/share/doc/git-1.8.3.1/contrib/subtree/git-subtree.1
/usr/share/doc/git-1.8.3.1/contrib/subtree/git-subtree.sh
/usr/share/doc/git-1.8.3.1/contrib/subtree/git-subtree.txt
/usr/share/doc/git-1.8.3.1/contrib/subtree/git-subtree.xml
/usr/share/doc/git-1.8.3.1/contrib/subtree/t
/usr/share/doc/git-1.8.3.1/contrib/subtree/t/Makefile
/usr/share/doc/git-1.8.3.1/contrib/subtree/t/t7900-subtree.sh
/usr/share/doc/git-1.8.3.1/contrib/subtree/todo
/usr/share/doc/git-1.8.3.1/contrib/svn-fe
/usr/share/doc/git-1.8.3.1/contrib/svn-fe/.gitignore
/usr/share/doc/git-1.8.3.1/contrib/svn-fe/Makefile
/usr/share/doc/git-1.8.3.1/contrib/svn-fe/svn-fe.c
/usr/share/doc/git-1.8.3.1/contrib/svn-fe/svn-fe.txt
/usr/share/doc/git-1.8.3.1/contrib/svn-fe/svnrdump_sim.py
/usr/share/doc/git-1.8.3.1/contrib/thunderbird-patch-inline
/usr/share/doc/git-1.8.3.1/contrib/thunderbird-patch-inline/README
/usr/share/doc/git-1.8.3.1/contrib/thunderbird-patch-inline/appp.sh
/usr/share/doc/git-1.8.3.1/contrib/vim
/usr/share/doc/git-1.8.3.1/contrib/vim/README
/usr/share/doc/git-1.8.3.1/contrib/workdir
/usr/share/doc/git-1.8.3.1/contrib/workdir/git-new-workdir
/usr/share/doc/git-1.8.3.1/date-formats.txt
/usr/share/doc/git-1.8.3.1/diff-config.txt
/usr/share/doc/git-1.8.3.1/diff-format.txt
/usr/share/doc/git-1.8.3.1/diff-generate-patch.txt
/usr/share/doc/git-1.8.3.1/diff-options.txt
/usr/share/doc/git-1.8.3.1/docbook-xsl.css
/usr/share/doc/git-1.8.3.1/everyday.html
/usr/share/doc/git-1.8.3.1/everyday.txt
/usr/share/doc/git-1.8.3.1/fetch-options.txt
/usr/share/doc/git-1.8.3.1/git-add.html
/usr/share/doc/git-1.8.3.1/git-add.txt
/usr/share/doc/git-1.8.3.1/git-am.html
/usr/share/doc/git-1.8.3.1/git-am.txt
/usr/share/doc/git-1.8.3.1/git-annotate.html
/usr/share/doc/git-1.8.3.1/git-annotate.txt
/usr/share/doc/git-1.8.3.1/git-apply.html
/usr/share/doc/git-1.8.3.1/git-apply.txt
/usr/share/doc/git-1.8.3.1/git-archive.html
/usr/share/doc/git-1.8.3.1/git-archive.txt
/usr/share/doc/git-1.8.3.1/git-bisect-lk2009.html
/usr/share/doc/git-1.8.3.1/git-bisect-lk2009.txt
/usr/share/doc/git-1.8.3.1/git-bisect.html
/usr/share/doc/git-1.8.3.1/git-bisect.txt
/usr/share/doc/git-1.8.3.1/git-blame.html
/usr/share/doc/git-1.8.3.1/git-blame.txt
/usr/share/doc/git-1.8.3.1/git-branch.html
/usr/share/doc/git-1.8.3.1/git-branch.txt
/usr/share/doc/git-1.8.3.1/git-bundle.html
/usr/share/doc/git-1.8.3.1/git-bundle.txt
/usr/share/doc/git-1.8.3.1/git-cat-file.html
/usr/share/doc/git-1.8.3.1/git-cat-file.txt
/usr/share/doc/git-1.8.3.1/git-check-attr.html
/usr/share/doc/git-1.8.3.1/git-check-attr.txt
/usr/share/doc/git-1.8.3.1/git-check-ignore.html
/usr/share/doc/git-1.8.3.1/git-check-ignore.txt
/usr/share/doc/git-1.8.3.1/git-check-ref-format.html
/usr/share/doc/git-1.8.3.1/git-check-ref-format.txt
/usr/share/doc/git-1.8.3.1/git-checkout-index.html
/usr/share/doc/git-1.8.3.1/git-checkout-index.txt
/usr/share/doc/git-1.8.3.1/git-checkout.html
/usr/share/doc/git-1.8.3.1/git-checkout.txt
/usr/share/doc/git-1.8.3.1/git-cherry-pick.html
/usr/share/doc/git-1.8.3.1/git-cherry-pick.txt
/usr/share/doc/git-1.8.3.1/git-cherry.html
/usr/share/doc/git-1.8.3.1/git-cherry.txt
/usr/share/doc/git-1.8.3.1/git-citool.html
/usr/share/doc/git-1.8.3.1/git-citool.txt
/usr/share/doc/git-1.8.3.1/git-clean.html
/usr/share/doc/git-1.8.3.1/git-clean.txt
/usr/share/doc/git-1.8.3.1/git-clone.html
/usr/share/doc/git-1.8.3.1/git-clone.txt
/usr/share/doc/git-1.8.3.1/git-column.html
/usr/share/doc/git-1.8.3.1/git-column.txt
/usr/share/doc/git-1.8.3.1/git-commit-tree.html
/usr/share/doc/git-1.8.3.1/git-commit-tree.txt
/usr/share/doc/git-1.8.3.1/git-commit.html
/usr/share/doc/git-1.8.3.1/git-commit.txt
/usr/share/doc/git-1.8.3.1/git-config.html
/usr/share/doc/git-1.8.3.1/git-config.txt
/usr/share/doc/git-1.8.3.1/git-count-objects.html
/usr/share/doc/git-1.8.3.1/git-count-objects.txt
/usr/share/doc/git-1.8.3.1/git-credential-cache--daemon.html
/usr/share/doc/git-1.8.3.1/git-credential-cache--daemon.txt
/usr/share/doc/git-1.8.3.1/git-credential-cache.html
/usr/share/doc/git-1.8.3.1/git-credential-cache.txt
/usr/share/doc/git-1.8.3.1/git-credential-store.html
/usr/share/doc/git-1.8.3.1/git-credential-store.txt
/usr/share/doc/git-1.8.3.1/git-credential.html
/usr/share/doc/git-1.8.3.1/git-credential.txt
/usr/share/doc/git-1.8.3.1/git-cvsexportcommit.html
/usr/share/doc/git-1.8.3.1/git-cvsexportcommit.txt
/usr/share/doc/git-1.8.3.1/git-cvsimport.html
/usr/share/doc/git-1.8.3.1/git-cvsimport.txt
/usr/share/doc/git-1.8.3.1/git-cvsserver.html
/usr/share/doc/git-1.8.3.1/git-cvsserver.txt
/usr/share/doc/git-1.8.3.1/git-daemon.html
/usr/share/doc/git-1.8.3.1/git-daemon.txt
/usr/share/doc/git-1.8.3.1/git-describe.html
/usr/share/doc/git-1.8.3.1/git-describe.txt
/usr/share/doc/git-1.8.3.1/git-diff-files.html
/usr/share/doc/git-1.8.3.1/git-diff-files.txt
/usr/share/doc/git-1.8.3.1/git-diff-index.html
/usr/share/doc/git-1.8.3.1/git-diff-index.txt
/usr/share/doc/git-1.8.3.1/git-diff-tree.html
/usr/share/doc/git-1.8.3.1/git-diff-tree.txt
/usr/share/doc/git-1.8.3.1/git-diff.html
/usr/share/doc/git-1.8.3.1/git-diff.txt
/usr/share/doc/git-1.8.3.1/git-difftool.html
/usr/share/doc/git-1.8.3.1/git-difftool.txt
/usr/share/doc/git-1.8.3.1/git-fast-export.html
/usr/share/doc/git-1.8.3.1/git-fast-export.txt
/usr/share/doc/git-1.8.3.1/git-fast-import.html
/usr/share/doc/git-1.8.3.1/git-fast-import.txt
/usr/share/doc/git-1.8.3.1/git-fetch-pack.html
/usr/share/doc/git-1.8.3.1/git-fetch-pack.txt
/usr/share/doc/git-1.8.3.1/git-fetch.html
/usr/share/doc/git-1.8.3.1/git-fetch.txt
/usr/share/doc/git-1.8.3.1/git-filter-branch.html
/usr/share/doc/git-1.8.3.1/git-filter-branch.txt
/usr/share/doc/git-1.8.3.1/git-fmt-merge-msg.html
/usr/share/doc/git-1.8.3.1/git-fmt-merge-msg.txt
/usr/share/doc/git-1.8.3.1/git-for-each-ref.html
/usr/share/doc/git-1.8.3.1/git-for-each-ref.txt
/usr/share/doc/git-1.8.3.1/git-format-patch.html
/usr/share/doc/git-1.8.3.1/git-format-patch.txt
/usr/share/doc/git-1.8.3.1/git-fsck-objects.html
/usr/share/doc/git-1.8.3.1/git-fsck-objects.txt
/usr/share/doc/git-1.8.3.1/git-fsck.html
/usr/share/doc/git-1.8.3.1/git-fsck.txt
/usr/share/doc/git-1.8.3.1/git-gc.html
/usr/share/doc/git-1.8.3.1/git-gc.txt
/usr/share/doc/git-1.8.3.1/git-get-tar-commit-id.html
/usr/share/doc/git-1.8.3.1/git-get-tar-commit-id.txt
/usr/share/doc/git-1.8.3.1/git-grep.html
/usr/share/doc/git-1.8.3.1/git-grep.txt
/usr/share/doc/git-1.8.3.1/git-gui.html
/usr/share/doc/git-1.8.3.1/git-gui.txt
/usr/share/doc/git-1.8.3.1/git-hash-object.html
/usr/share/doc/git-1.8.3.1/git-hash-object.txt
/usr/share/doc/git-1.8.3.1/git-help.html
/usr/share/doc/git-1.8.3.1/git-help.txt
/usr/share/doc/git-1.8.3.1/git-http-backend.html
/usr/share/doc/git-1.8.3.1/git-http-backend.txt
/usr/share/doc/git-1.8.3.1/git-http-fetch.html
/usr/share/doc/git-1.8.3.1/git-http-fetch.txt
/usr/share/doc/git-1.8.3.1/git-http-push.html
/usr/share/doc/git-1.8.3.1/git-http-push.txt
/usr/share/doc/git-1.8.3.1/git-imap-send.html
/usr/share/doc/git-1.8.3.1/git-imap-send.txt
/usr/share/doc/git-1.8.3.1/git-index-pack.html
/usr/share/doc/git-1.8.3.1/git-index-pack.txt
/usr/share/doc/git-1.8.3.1/git-init-db.html
/usr/share/doc/git-1.8.3.1/git-init-db.txt
/usr/share/doc/git-1.8.3.1/git-init.html
/usr/share/doc/git-1.8.3.1/git-init.txt
/usr/share/doc/git-1.8.3.1/git-instaweb.html
/usr/share/doc/git-1.8.3.1/git-instaweb.txt
/usr/share/doc/git-1.8.3.1/git-log.html
/usr/share/doc/git-1.8.3.1/git-log.txt
/usr/share/doc/git-1.8.3.1/git-lost-found.html
/usr/share/doc/git-1.8.3.1/git-lost-found.txt
/usr/share/doc/git-1.8.3.1/git-ls-files.html
/usr/share/doc/git-1.8.3.1/git-ls-files.txt
/usr/share/doc/git-1.8.3.1/git-ls-remote.html
/usr/share/doc/git-1.8.3.1/git-ls-remote.txt
/usr/share/doc/git-1.8.3.1/git-ls-tree.html
/usr/share/doc/git-1.8.3.1/git-ls-tree.txt
/usr/share/doc/git-1.8.3.1/git-mailinfo.html
/usr/share/doc/git-1.8.3.1/git-mailinfo.txt
/usr/share/doc/git-1.8.3.1/git-mailsplit.html
/usr/share/doc/git-1.8.3.1/git-mailsplit.txt
/usr/share/doc/git-1.8.3.1/git-merge-base.html
/usr/share/doc/git-1.8.3.1/git-merge-base.txt
/usr/share/doc/git-1.8.3.1/git-merge-file.html
/usr/share/doc/git-1.8.3.1/git-merge-file.txt
/usr/share/doc/git-1.8.3.1/git-merge-index.html
/usr/share/doc/git-1.8.3.1/git-merge-index.txt
/usr/share/doc/git-1.8.3.1/git-merge-one-file.html
/usr/share/doc/git-1.8.3.1/git-merge-one-file.txt
/usr/share/doc/git-1.8.3.1/git-merge-tree.html
/usr/share/doc/git-1.8.3.1/git-merge-tree.txt
/usr/share/doc/git-1.8.3.1/git-merge.html
/usr/share/doc/git-1.8.3.1/git-merge.txt
/usr/share/doc/git-1.8.3.1/git-mergetool--lib.html
/usr/share/doc/git-1.8.3.1/git-mergetool--lib.txt
/usr/share/doc/git-1.8.3.1/git-mergetool.html
/usr/share/doc/git-1.8.3.1/git-mergetool.txt
/usr/share/doc/git-1.8.3.1/git-mktag.html
/usr/share/doc/git-1.8.3.1/git-mktag.txt
/usr/share/doc/git-1.8.3.1/git-mktree.html
/usr/share/doc/git-1.8.3.1/git-mktree.txt
/usr/share/doc/git-1.8.3.1/git-mv.html
/usr/share/doc/git-1.8.3.1/git-mv.txt
/usr/share/doc/git-1.8.3.1/git-name-rev.html
/usr/share/doc/git-1.8.3.1/git-name-rev.txt
/usr/share/doc/git-1.8.3.1/git-notes.html
/usr/share/doc/git-1.8.3.1/git-notes.txt
/usr/share/doc/git-1.8.3.1/git-p4.html
/usr/share/doc/git-1.8.3.1/git-p4.txt
/usr/share/doc/git-1.8.3.1/git-pack-objects.html
/usr/share/doc/git-1.8.3.1/git-pack-objects.txt
/usr/share/doc/git-1.8.3.1/git-pack-redundant.html
/usr/share/doc/git-1.8.3.1/git-pack-redundant.txt
/usr/share/doc/git-1.8.3.1/git-pack-refs.html
/usr/share/doc/git-1.8.3.1/git-pack-refs.txt
/usr/share/doc/git-1.8.3.1/git-parse-remote.html
/usr/share/doc/git-1.8.3.1/git-parse-remote.txt
/usr/share/doc/git-1.8.3.1/git-patch-id.html
/usr/share/doc/git-1.8.3.1/git-patch-id.txt
/usr/share/doc/git-1.8.3.1/git-peek-remote.html
/usr/share/doc/git-1.8.3.1/git-peek-remote.txt
/usr/share/doc/git-1.8.3.1/git-prune-packed.html
/usr/share/doc/git-1.8.3.1/git-prune-packed.txt
/usr/share/doc/git-1.8.3.1/git-prune.html
/usr/share/doc/git-1.8.3.1/git-prune.txt
/usr/share/doc/git-1.8.3.1/git-pull.html
/usr/share/doc/git-1.8.3.1/git-pull.txt
/usr/share/doc/git-1.8.3.1/git-push.html
/usr/share/doc/git-1.8.3.1/git-push.txt
/usr/share/doc/git-1.8.3.1/git-quiltimport.html
/usr/share/doc/git-1.8.3.1/git-quiltimport.txt
/usr/share/doc/git-1.8.3.1/git-read-tree.html
/usr/share/doc/git-1.8.3.1/git-read-tree.txt
/usr/share/doc/git-1.8.3.1/git-rebase.html
/usr/share/doc/git-1.8.3.1/git-rebase.txt
/usr/share/doc/git-1.8.3.1/git-receive-pack.html
/usr/share/doc/git-1.8.3.1/git-receive-pack.txt
/usr/share/doc/git-1.8.3.1/git-reflog.html
/usr/share/doc/git-1.8.3.1/git-reflog.txt
/usr/share/doc/git-1.8.3.1/git-relink.html
/usr/share/doc/git-1.8.3.1/git-relink.txt
/usr/share/doc/git-1.8.3.1/git-remote-ext.html
/usr/share/doc/git-1.8.3.1/git-remote-ext.txt
/usr/share/doc/git-1.8.3.1/git-remote-fd.html
/usr/share/doc/git-1.8.3.1/git-remote-fd.txt
/usr/share/doc/git-1.8.3.1/git-remote-helpers.html
/usr/share/doc/git-1.8.3.1/git-remote-testgit.html
/usr/share/doc/git-1.8.3.1/git-remote-testgit.txt
/usr/share/doc/git-1.8.3.1/git-remote.html
/usr/share/doc/git-1.8.3.1/git-remote.txt
/usr/share/doc/git-1.8.3.1/git-repack.html
/usr/share/doc/git-1.8.3.1/git-repack.txt
/usr/share/doc/git-1.8.3.1/git-replace.html
/usr/share/doc/git-1.8.3.1/git-replace.txt
/usr/share/doc/git-1.8.3.1/git-repo-config.html
/usr/share/doc/git-1.8.3.1/git-repo-config.txt
/usr/share/doc/git-1.8.3.1/git-request-pull.html
/usr/share/doc/git-1.8.3.1/git-request-pull.txt
/usr/share/doc/git-1.8.3.1/git-rerere.html
/usr/share/doc/git-1.8.3.1/git-rerere.txt
/usr/share/doc/git-1.8.3.1/git-reset.html
/usr/share/doc/git-1.8.3.1/git-reset.txt
/usr/share/doc/git-1.8.3.1/git-rev-list.html
/usr/share/doc/git-1.8.3.1/git-rev-list.txt
/usr/share/doc/git-1.8.3.1/git-rev-parse.html
/usr/share/doc/git-1.8.3.1/git-rev-parse.txt
/usr/share/doc/git-1.8.3.1/git-revert.html
/usr/share/doc/git-1.8.3.1/git-revert.txt
/usr/share/doc/git-1.8.3.1/git-rm.html
/usr/share/doc/git-1.8.3.1/git-rm.txt
/usr/share/doc/git-1.8.3.1/git-send-email.html
/usr/share/doc/git-1.8.3.1/git-send-email.txt
/usr/share/doc/git-1.8.3.1/git-send-pack.html
/usr/share/doc/git-1.8.3.1/git-send-pack.txt
/usr/share/doc/git-1.8.3.1/git-sh-i18n--envsubst.html
/usr/share/doc/git-1.8.3.1/git-sh-i18n--envsubst.txt
/usr/share/doc/git-1.8.3.1/git-sh-i18n.html
/usr/share/doc/git-1.8.3.1/git-sh-i18n.txt
/usr/share/doc/git-1.8.3.1/git-sh-setup.html
/usr/share/doc/git-1.8.3.1/git-sh-setup.txt
/usr/share/doc/git-1.8.3.1/git-shell.html
/usr/share/doc/git-1.8.3.1/git-shell.txt
/usr/share/doc/git-1.8.3.1/git-shortlog.html
/usr/share/doc/git-1.8.3.1/git-shortlog.txt
/usr/share/doc/git-1.8.3.1/git-show-branch.html
/usr/share/doc/git-1.8.3.1/git-show-branch.txt
/usr/share/doc/git-1.8.3.1/git-show-index.html
/usr/share/doc/git-1.8.3.1/git-show-index.txt
/usr/share/doc/git-1.8.3.1/git-show-ref.html
/usr/share/doc/git-1.8.3.1/git-show-ref.txt
/usr/share/doc/git-1.8.3.1/git-show.html
/usr/share/doc/git-1.8.3.1/git-show.txt
/usr/share/doc/git-1.8.3.1/git-stage.html
/usr/share/doc/git-1.8.3.1/git-stage.txt
/usr/share/doc/git-1.8.3.1/git-stash.html
/usr/share/doc/git-1.8.3.1/git-stash.txt
/usr/share/doc/git-1.8.3.1/git-status.html
/usr/share/doc/git-1.8.3.1/git-status.txt
/usr/share/doc/git-1.8.3.1/git-stripspace.html
/usr/share/doc/git-1.8.3.1/git-stripspace.txt
/usr/share/doc/git-1.8.3.1/git-submodule.html
/usr/share/doc/git-1.8.3.1/git-submodule.txt
/usr/share/doc/git-1.8.3.1/git-svn.html
/usr/share/doc/git-1.8.3.1/git-svn.txt
/usr/share/doc/git-1.8.3.1/git-symbolic-ref.html
/usr/share/doc/git-1.8.3.1/git-symbolic-ref.txt
/usr/share/doc/git-1.8.3.1/git-tag.html
/usr/share/doc/git-1.8.3.1/git-tag.txt
/usr/share/doc/git-1.8.3.1/git-tar-tree.html
/usr/share/doc/git-1.8.3.1/git-tar-tree.txt
/usr/share/doc/git-1.8.3.1/git-tools.html
/usr/share/doc/git-1.8.3.1/git-tools.txt
/usr/share/doc/git-1.8.3.1/git-unpack-file.html
/usr/share/doc/git-1.8.3.1/git-unpack-file.txt
/usr/share/doc/git-1.8.3.1/git-unpack-objects.html
/usr/share/doc/git-1.8.3.1/git-unpack-objects.txt
/usr/share/doc/git-1.8.3.1/git-update-index.html
/usr/share/doc/git-1.8.3.1/git-update-index.txt
/usr/share/doc/git-1.8.3.1/git-update-ref.html
/usr/share/doc/git-1.8.3.1/git-update-ref.txt
/usr/share/doc/git-1.8.3.1/git-update-server-info.html
/usr/share/doc/git-1.8.3.1/git-update-server-info.txt
/usr/share/doc/git-1.8.3.1/git-upload-archive.html
/usr/share/doc/git-1.8.3.1/git-upload-archive.txt
/usr/share/doc/git-1.8.3.1/git-upload-pack.html
/usr/share/doc/git-1.8.3.1/git-upload-pack.txt
/usr/share/doc/git-1.8.3.1/git-var.html
/usr/share/doc/git-1.8.3.1/git-var.txt
/usr/share/doc/git-1.8.3.1/git-verify-pack.html
/usr/share/doc/git-1.8.3.1/git-verify-pack.txt
/usr/share/doc/git-1.8.3.1/git-verify-tag.html
/usr/share/doc/git-1.8.3.1/git-verify-tag.txt
/usr/share/doc/git-1.8.3.1/git-web--browse.html
/usr/share/doc/git-1.8.3.1/git-web--browse.txt
/usr/share/doc/git-1.8.3.1/git-whatchanged.html
/usr/share/doc/git-1.8.3.1/git-whatchanged.txt
/usr/share/doc/git-1.8.3.1/git-write-tree.html
/usr/share/doc/git-1.8.3.1/git-write-tree.txt
/usr/share/doc/git-1.8.3.1/git.html
/usr/share/doc/git-1.8.3.1/git.txt
/usr/share/doc/git-1.8.3.1/gitattributes.html
/usr/share/doc/git-1.8.3.1/gitattributes.txt
/usr/share/doc/git-1.8.3.1/gitcli.html
/usr/share/doc/git-1.8.3.1/gitcli.txt
/usr/share/doc/git-1.8.3.1/gitcore-tutorial.html
/usr/share/doc/git-1.8.3.1/gitcore-tutorial.txt
/usr/share/doc/git-1.8.3.1/gitcredentials.html
/usr/share/doc/git-1.8.3.1/gitcredentials.txt
/usr/share/doc/git-1.8.3.1/gitcvs-migration.html
/usr/share/doc/git-1.8.3.1/gitcvs-migration.txt
/usr/share/doc/git-1.8.3.1/gitdiffcore.html
/usr/share/doc/git-1.8.3.1/gitdiffcore.txt
/usr/share/doc/git-1.8.3.1/gitglossary.html
/usr/share/doc/git-1.8.3.1/gitglossary.txt
/usr/share/doc/git-1.8.3.1/githooks.html
/usr/share/doc/git-1.8.3.1/githooks.txt
/usr/share/doc/git-1.8.3.1/gitignore.html
/usr/share/doc/git-1.8.3.1/gitignore.txt
/usr/share/doc/git-1.8.3.1/gitk.html
/usr/share/doc/git-1.8.3.1/gitk.txt
/usr/share/doc/git-1.8.3.1/gitmodules.html
/usr/share/doc/git-1.8.3.1/gitmodules.txt
/usr/share/doc/git-1.8.3.1/gitnamespaces.html
/usr/share/doc/git-1.8.3.1/gitnamespaces.txt
/usr/share/doc/git-1.8.3.1/gitremote-helpers.html
/usr/share/doc/git-1.8.3.1/gitremote-helpers.txt
/usr/share/doc/git-1.8.3.1/gitrepository-layout.html
/usr/share/doc/git-1.8.3.1/gitrepository-layout.txt
/usr/share/doc/git-1.8.3.1/gitrevisions.html
/usr/share/doc/git-1.8.3.1/gitrevisions.txt
/usr/share/doc/git-1.8.3.1/gittutorial-2.html
/usr/share/doc/git-1.8.3.1/gittutorial-2.txt
/usr/share/doc/git-1.8.3.1/gittutorial.html
/usr/share/doc/git-1.8.3.1/gittutorial.txt
/usr/share/doc/git-1.8.3.1/gitweb.conf.html
/usr/share/doc/git-1.8.3.1/gitweb.conf.txt
/usr/share/doc/git-1.8.3.1/gitweb.html
/usr/share/doc/git-1.8.3.1/gitweb.txt
/usr/share/doc/git-1.8.3.1/gitworkflows.html
/usr/share/doc/git-1.8.3.1/gitworkflows.txt
/usr/share/doc/git-1.8.3.1/glossary-content.txt
/usr/share/doc/git-1.8.3.1/howto
/usr/share/doc/git-1.8.3.1/howto-index.html
/usr/share/doc/git-1.8.3.1/howto-index.txt
/usr/share/doc/git-1.8.3.1/howto/maintain-git.html
/usr/share/doc/git-1.8.3.1/howto/maintain-git.txt
/usr/share/doc/git-1.8.3.1/howto/new-command.html
/usr/share/doc/git-1.8.3.1/howto/new-command.txt
/usr/share/doc/git-1.8.3.1/howto/rebase-from-internal-branch.html
/usr/share/doc/git-1.8.3.1/howto/rebase-from-internal-branch.txt
/usr/share/doc/git-1.8.3.1/howto/rebuild-from-update-hook.html
/usr/share/doc/git-1.8.3.1/howto/rebuild-from-update-hook.txt
/usr/share/doc/git-1.8.3.1/howto/recover-corrupted-blob-object.html
/usr/share/doc/git-1.8.3.1/howto/recover-corrupted-blob-object.txt
/usr/share/doc/git-1.8.3.1/howto/revert-a-faulty-merge.html
/usr/share/doc/git-1.8.3.1/howto/revert-a-faulty-merge.txt
/usr/share/doc/git-1.8.3.1/howto/revert-branch-rebase.html
/usr/share/doc/git-1.8.3.1/howto/revert-branch-rebase.txt
/usr/share/doc/git-1.8.3.1/howto/separating-topic-branches.html
/usr/share/doc/git-1.8.3.1/howto/separating-topic-branches.txt
/usr/share/doc/git-1.8.3.1/howto/setup-git-server-over-http.html
/usr/share/doc/git-1.8.3.1/howto/setup-git-server-over-http.txt
/usr/share/doc/git-1.8.3.1/howto/update-hook-example.html
/usr/share/doc/git-1.8.3.1/howto/update-hook-example.txt
/usr/share/doc/git-1.8.3.1/howto/use-git-daemon.html
/usr/share/doc/git-1.8.3.1/howto/use-git-daemon.txt
/usr/share/doc/git-1.8.3.1/howto/using-merge-subtree.html
/usr/share/doc/git-1.8.3.1/howto/using-merge-subtree.txt
/usr/share/doc/git-1.8.3.1/howto/using-signed-tag-in-pull-request.html
/usr/share/doc/git-1.8.3.1/howto/using-signed-tag-in-pull-request.txt
/usr/share/doc/git-1.8.3.1/i18n.txt
/usr/share/doc/git-1.8.3.1/mailmap.txt
/usr/share/doc/git-1.8.3.1/merge-config.txt
/usr/share/doc/git-1.8.3.1/merge-options.txt
/usr/share/doc/git-1.8.3.1/merge-strategies.txt
/usr/share/doc/git-1.8.3.1/mergetools-diff.txt
/usr/share/doc/git-1.8.3.1/mergetools-merge.txt
/usr/share/doc/git-1.8.3.1/pretty-formats.txt
/usr/share/doc/git-1.8.3.1/pretty-options.txt
/usr/share/doc/git-1.8.3.1/pull-fetch-param.txt
/usr/share/doc/git-1.8.3.1/rev-list-options.txt
/usr/share/doc/git-1.8.3.1/revisions.txt
/usr/share/doc/git-1.8.3.1/sequencer.txt
/usr/share/doc/git-1.8.3.1/technical
/usr/share/doc/git-1.8.3.1/technical/api-allocation-growing.html
/usr/share/doc/git-1.8.3.1/technical/api-allocation-growing.txt
/usr/share/doc/git-1.8.3.1/technical/api-argv-array.html
/usr/share/doc/git-1.8.3.1/technical/api-argv-array.txt
/usr/share/doc/git-1.8.3.1/technical/api-builtin.html
/usr/share/doc/git-1.8.3.1/technical/api-builtin.txt
/usr/share/doc/git-1.8.3.1/technical/api-config.html
/usr/share/doc/git-1.8.3.1/technical/api-config.txt
/usr/share/doc/git-1.8.3.1/technical/api-credentials.html
/usr/share/doc/git-1.8.3.1/technical/api-credentials.txt
/usr/share/doc/git-1.8.3.1/technical/api-decorate.html
/usr/share/doc/git-1.8.3.1/technical/api-decorate.txt
/usr/share/doc/git-1.8.3.1/technical/api-diff.html
/usr/share/doc/git-1.8.3.1/technical/api-diff.txt
/usr/share/doc/git-1.8.3.1/technical/api-directory-listing.html
/usr/share/doc/git-1.8.3.1/technical/api-directory-listing.txt
/usr/share/doc/git-1.8.3.1/technical/api-gitattributes.html
/usr/share/doc/git-1.8.3.1/technical/api-gitattributes.txt
/usr/share/doc/git-1.8.3.1/technical/api-grep.html
/usr/share/doc/git-1.8.3.1/technical/api-grep.txt
/usr/share/doc/git-1.8.3.1/technical/api-hash.html
/usr/share/doc/git-1.8.3.1/technical/api-hash.txt
/usr/share/doc/git-1.8.3.1/technical/api-history-graph.html
/usr/share/doc/git-1.8.3.1/technical/api-history-graph.txt
/usr/share/doc/git-1.8.3.1/technical/api-in-core-index.html
/usr/share/doc/git-1.8.3.1/technical/api-in-core-index.txt
/usr/share/doc/git-1.8.3.1/technical/api-index-skel.txt
/usr/share/doc/git-1.8.3.1/technical/api-index.html
/usr/share/doc/git-1.8.3.1/technical/api-index.sh
/usr/share/doc/git-1.8.3.1/technical/api-index.txt
/usr/share/doc/git-1.8.3.1/technical/api-lockfile.html
/usr/share/doc/git-1.8.3.1/technical/api-lockfile.txt
/usr/share/doc/git-1.8.3.1/technical/api-merge.html
/usr/share/doc/git-1.8.3.1/technical/api-merge.txt
/usr/share/doc/git-1.8.3.1/technical/api-object-access.html
/usr/share/doc/git-1.8.3.1/technical/api-object-access.txt
/usr/share/doc/git-1.8.3.1/technical/api-parse-options.html
/usr/share/doc/git-1.8.3.1/technical/api-parse-options.txt
/usr/share/doc/git-1.8.3.1/technical/api-quote.html
/usr/share/doc/git-1.8.3.1/technical/api-quote.txt
/usr/share/doc/git-1.8.3.1/technical/api-ref-iteration.html
/usr/share/doc/git-1.8.3.1/technical/api-ref-iteration.txt
/usr/share/doc/git-1.8.3.1/technical/api-remote.html
/usr/share/doc/git-1.8.3.1/technical/api-remote.txt
/usr/share/doc/git-1.8.3.1/technical/api-revision-walking.html
/usr/share/doc/git-1.8.3.1/technical/api-revision-walking.txt
/usr/share/doc/git-1.8.3.1/technical/api-run-command.html
/usr/share/doc/git-1.8.3.1/technical/api-run-command.txt
/usr/share/doc/git-1.8.3.1/technical/api-setup.html
/usr/share/doc/git-1.8.3.1/technical/api-setup.txt
/usr/share/doc/git-1.8.3.1/technical/api-sha1-array.html
/usr/share/doc/git-1.8.3.1/technical/api-sha1-array.txt
/usr/share/doc/git-1.8.3.1/technical/api-sigchain.html
/usr/share/doc/git-1.8.3.1/technical/api-sigchain.txt
/usr/share/doc/git-1.8.3.1/technical/api-strbuf.html
/usr/share/doc/git-1.8.3.1/technical/api-strbuf.txt
/usr/share/doc/git-1.8.3.1/technical/api-string-list.html
/usr/share/doc/git-1.8.3.1/technical/api-string-list.txt
/usr/share/doc/git-1.8.3.1/technical/api-tree-walking.html
/usr/share/doc/git-1.8.3.1/technical/api-tree-walking.txt
/usr/share/doc/git-1.8.3.1/technical/api-xdiff-interface.html
/usr/share/doc/git-1.8.3.1/technical/api-xdiff-interface.txt
/usr/share/doc/git-1.8.3.1/technical/index-format.html
/usr/share/doc/git-1.8.3.1/technical/index-format.txt
/usr/share/doc/git-1.8.3.1/technical/pack-format.html
/usr/share/doc/git-1.8.3.1/technical/pack-format.txt
/usr/share/doc/git-1.8.3.1/technical/pack-heuristics.html
/usr/share/doc/git-1.8.3.1/technical/pack-heuristics.txt
/usr/share/doc/git-1.8.3.1/technical/pack-protocol.html
/usr/share/doc/git-1.8.3.1/technical/pack-protocol.txt
/usr/share/doc/git-1.8.3.1/technical/protocol-capabilities.html
/usr/share/doc/git-1.8.3.1/technical/protocol-capabilities.txt
/usr/share/doc/git-1.8.3.1/technical/protocol-common.html
/usr/share/doc/git-1.8.3.1/technical/protocol-common.txt
/usr/share/doc/git-1.8.3.1/technical/racy-git.html
/usr/share/doc/git-1.8.3.1/technical/racy-git.txt
/usr/share/doc/git-1.8.3.1/technical/send-pack-pipeline.html
/usr/share/doc/git-1.8.3.1/technical/send-pack-pipeline.txt
/usr/share/doc/git-1.8.3.1/technical/shallow.html
/usr/share/doc/git-1.8.3.1/technical/shallow.txt
/usr/share/doc/git-1.8.3.1/technical/trivial-merge.html
/usr/share/doc/git-1.8.3.1/technical/trivial-merge.txt
/usr/share/doc/git-1.8.3.1/urls-remotes.txt
/usr/share/doc/git-1.8.3.1/urls.txt
/usr/share/doc/git-1.8.3.1/user-manual.html
/usr/share/doc/git-1.8.3.1/user-manual.txt
/usr/share/git-core
/usr/share/git-core/contrib
/usr/share/git-core/contrib/completion
/usr/share/git-core/contrib/completion/git-completion.tcsh
/usr/share/git-core/contrib/completion/git-prompt.sh
/usr/share/git-core/contrib/hooks
/usr/share/git-core/contrib/hooks/post-receive-email
/usr/share/git-core/contrib/hooks/pre-auto-gc-battery
/usr/share/git-core/contrib/hooks/setgitperms.perl
/usr/share/git-core/contrib/hooks/update-paranoid
/usr/share/git-core/templates
/usr/share/git-core/templates/branches
/usr/share/git-core/templates/description
/usr/share/git-core/templates/hooks
/usr/share/git-core/templates/hooks/applypatch-msg.sample
/usr/share/git-core/templates/hooks/commit-msg.sample
/usr/share/git-core/templates/hooks/post-update.sample
/usr/share/git-core/templates/hooks/pre-applypatch.sample
/usr/share/git-core/templates/hooks/pre-commit.sample
/usr/share/git-core/templates/hooks/pre-push.sample
/usr/share/git-core/templates/hooks/pre-rebase.sample
/usr/share/git-core/templates/hooks/prepare-commit-msg.sample
/usr/share/git-core/templates/hooks/update.sample
/usr/share/git-core/templates/info
/usr/share/git-core/templates/info/exclude
/usr/share/locale/da/LC_MESSAGES/git.mo
/usr/share/locale/de/LC_MESSAGES/git.mo
/usr/share/locale/is/LC_MESSAGES/git.mo
/usr/share/locale/it/LC_MESSAGES/git.mo
/usr/share/locale/nl/LC_MESSAGES/git.mo
/usr/share/locale/pt_PT/LC_MESSAGES/git.mo
/usr/share/locale/sv/LC_MESSAGES/git.mo
/usr/share/locale/vi/LC_MESSAGES/git.mo
/usr/share/locale/zh_CN/LC_MESSAGES/git.mo
/usr/share/man/man1/git-add.1.gz
/usr/share/man/man1/git-am.1.gz
/usr/share/man/man1/git-annotate.1.gz
/usr/share/man/man1/git-apply.1.gz
/usr/share/man/man1/git-archive.1.gz
/usr/share/man/man1/git-bisect.1.gz
/usr/share/man/man1/git-blame.1.gz
/usr/share/man/man1/git-branch.1.gz
/usr/share/man/man1/git-bundle.1.gz
/usr/share/man/man1/git-cat-file.1.gz
/usr/share/man/man1/git-check-attr.1.gz
/usr/share/man/man1/git-check-ignore.1.gz
/usr/share/man/man1/git-check-ref-format.1.gz
/usr/share/man/man1/git-checkout-index.1.gz
/usr/share/man/man1/git-checkout.1.gz
/usr/share/man/man1/git-cherry-pick.1.gz
/usr/share/man/man1/git-cherry.1.gz
/usr/share/man/man1/git-clean.1.gz
/usr/share/man/man1/git-clone.1.gz
/usr/share/man/man1/git-column.1.gz
/usr/share/man/man1/git-commit-tree.1.gz
/usr/share/man/man1/git-commit.1.gz
/usr/share/man/man1/git-config.1.gz
/usr/share/man/man1/git-count-objects.1.gz
/usr/share/man/man1/git-credential-cache--daemon.1.gz
/usr/share/man/man1/git-credential-cache.1.gz
/usr/share/man/man1/git-credential-store.1.gz
/usr/share/man/man1/git-credential.1.gz
/usr/share/man/man1/git-describe.1.gz
/usr/share/man/man1/git-diff-files.1.gz
/usr/share/man/man1/git-diff-index.1.gz
/usr/share/man/man1/git-diff-tree.1.gz
/usr/share/man/man1/git-diff.1.gz
/usr/share/man/man1/git-difftool.1.gz
/usr/share/man/man1/git-fast-export.1.gz
/usr/share/man/man1/git-fast-import.1.gz
/usr/share/man/man1/git-fetch-pack.1.gz
/usr/share/man/man1/git-fetch.1.gz
/usr/share/man/man1/git-filter-branch.1.gz
/usr/share/man/man1/git-fmt-merge-msg.1.gz
/usr/share/man/man1/git-for-each-ref.1.gz
/usr/share/man/man1/git-format-patch.1.gz
/usr/share/man/man1/git-fsck-objects.1.gz
/usr/share/man/man1/git-fsck.1.gz
/usr/share/man/man1/git-gc.1.gz
/usr/share/man/man1/git-get-tar-commit-id.1.gz
/usr/share/man/man1/git-grep.1.gz
/usr/share/man/man1/git-hash-object.1.gz
/usr/share/man/man1/git-help.1.gz
/usr/share/man/man1/git-http-backend.1.gz
/usr/share/man/man1/git-http-fetch.1.gz
/usr/share/man/man1/git-http-push.1.gz
/usr/share/man/man1/git-imap-send.1.gz
/usr/share/man/man1/git-index-pack.1.gz
/usr/share/man/man1/git-init-db.1.gz
/usr/share/man/man1/git-init.1.gz
/usr/share/man/man1/git-instaweb.1.gz
/usr/share/man/man1/git-log.1.gz
/usr/share/man/man1/git-lost-found.1.gz
/usr/share/man/man1/git-ls-files.1.gz
/usr/share/man/man1/git-ls-remote.1.gz
/usr/share/man/man1/git-ls-tree.1.gz
/usr/share/man/man1/git-mailinfo.1.gz
/usr/share/man/man1/git-mailsplit.1.gz
/usr/share/man/man1/git-merge-base.1.gz
/usr/share/man/man1/git-merge-file.1.gz
/usr/share/man/man1/git-merge-index.1.gz
/usr/share/man/man1/git-merge-one-file.1.gz
/usr/share/man/man1/git-merge-tree.1.gz
/usr/share/man/man1/git-merge.1.gz
/usr/share/man/man1/git-mergetool--lib.1.gz
/usr/share/man/man1/git-mergetool.1.gz
/usr/share/man/man1/git-mktag.1.gz
/usr/share/man/man1/git-mktree.1.gz
/usr/share/man/man1/git-mv.1.gz
/usr/share/man/man1/git-name-rev.1.gz
/usr/share/man/man1/git-notes.1.gz
/usr/share/man/man1/git-pack-objects.1.gz
/usr/share/man/man1/git-pack-redundant.1.gz
/usr/share/man/man1/git-pack-refs.1.gz
/usr/share/man/man1/git-parse-remote.1.gz
/usr/share/man/man1/git-patch-id.1.gz
/usr/share/man/man1/git-peek-remote.1.gz
/usr/share/man/man1/git-prune-packed.1.gz
/usr/share/man/man1/git-prune.1.gz
/usr/share/man/man1/git-pull.1.gz
/usr/share/man/man1/git-push.1.gz
/usr/share/man/man1/git-quiltimport.1.gz
/usr/share/man/man1/git-read-tree.1.gz
/usr/share/man/man1/git-rebase.1.gz
/usr/share/man/man1/git-receive-pack.1.gz
/usr/share/man/man1/git-reflog.1.gz
/usr/share/man/man1/git-relink.1.gz
/usr/share/man/man1/git-remote-ext.1.gz
/usr/share/man/man1/git-remote-fd.1.gz
/usr/share/man/man1/git-remote-testgit.1.gz
/usr/share/man/man1/git-remote.1.gz
/usr/share/man/man1/git-repack.1.gz
/usr/share/man/man1/git-replace.1.gz
/usr/share/man/man1/git-repo-config.1.gz
/usr/share/man/man1/git-request-pull.1.gz
/usr/share/man/man1/git-rerere.1.gz
/usr/share/man/man1/git-reset.1.gz
/usr/share/man/man1/git-rev-list.1.gz
/usr/share/man/man1/git-rev-parse.1.gz
/usr/share/man/man1/git-revert.1.gz
/usr/share/man/man1/git-rm.1.gz
/usr/share/man/man1/git-send-pack.1.gz
/usr/share/man/man1/git-sh-i18n--envsubst.1.gz
/usr/share/man/man1/git-sh-i18n.1.gz
/usr/share/man/man1/git-sh-setup.1.gz
/usr/share/man/man1/git-shell.1.gz
/usr/share/man/man1/git-shortlog.1.gz
/usr/share/man/man1/git-show-branch.1.gz
/usr/share/man/man1/git-show-index.1.gz
/usr/share/man/man1/git-show-ref.1.gz
/usr/share/man/man1/git-show.1.gz
/usr/share/man/man1/git-stage.1.gz
/usr/share/man/man1/git-stash.1.gz
/usr/share/man/man1/git-status.1.gz
/usr/share/man/man1/git-stripspace.1.gz
/usr/share/man/man1/git-submodule.1.gz
/usr/share/man/man1/git-subtree.1.gz
/usr/share/man/man1/git-symbolic-ref.1.gz
/usr/share/man/man1/git-tag.1.gz
/usr/share/man/man1/git-tar-tree.1.gz
/usr/share/man/man1/git-unpack-file.1.gz
/usr/share/man/man1/git-unpack-objects.1.gz
/usr/share/man/man1/git-update-index.1.gz
/usr/share/man/man1/git-update-ref.1.gz
/usr/share/man/man1/git-update-server-info.1.gz
/usr/share/man/man1/git-upload-archive.1.gz
/usr/share/man/man1/git-upload-pack.1.gz
/usr/share/man/man1/git-var.1.gz
/usr/share/man/man1/git-verify-pack.1.gz
/usr/share/man/man1/git-verify-tag.1.gz
/usr/share/man/man1/git-web--browse.1.gz
/usr/share/man/man1/git-whatchanged.1.gz
/usr/share/man/man1/git-write-tree.1.gz
/usr/share/man/man1/git.1.gz
/usr/share/man/man1/gitremote-helpers.1.gz
/usr/share/man/man1/gitweb.1.gz
/usr/share/man/man5/gitattributes.5.gz
/usr/share/man/man5/githooks.5.gz
/usr/share/man/man5/gitignore.5.gz
/usr/share/man/man5/gitmodules.5.gz
/usr/share/man/man5/gitrepository-layout.5.gz
/usr/share/man/man5/gitweb.conf.5.gz
/usr/share/man/man7/gitcli.7.gz
/usr/share/man/man7/gitcore-tutorial.7.gz
/usr/share/man/man7/gitcredentials.7.gz
/usr/share/man/man7/gitcvs-migration.7.gz
/usr/share/man/man7/gitdiffcore.7.gz
/usr/share/man/man7/gitglossary.7.gz
/usr/share/man/man7/gitnamespaces.7.gz
/usr/share/man/man7/gitrevisions.7.gz
/usr/share/man/man7/gittutorial-2.7.gz
/usr/share/man/man7/gittutorial.7.gz
/usr/share/man/man7/gitworkflows.7.gz

Konfiguration - Server

Nachfolgend soll die Konfiguration eines entfernten Git-Serves durchgeführt werden, welcher primär via http/https erreichbar sein soll.

Server: git init --bare

Nachfolgend soll beschrieben werden wie ein Verzeichnis mit nachfolgendem Pfad und Namen

  • /srv/git/homepage.git

angelegt werden soll und innerhalb dieses Verzeichnisses ein

  • neues leeres Git-Repository

als zentrales Server Git-Repository auf welches via remote Zugriff zugegriffen werden kann, erstellt werden soll.

Befehl zusätzliche Informationen
git init --bare
http://git-scm.com/docs/git-init/1.8.3.1

Nachfolgender Befehl erstellt die benötigten neuen Verzeichnisse:

# mkdir -p /srv/git/homepage.git

Nachfolgender Befehl wechselt in das Verzeichnis /srv/git/homepage.git

# cd /srv/git/homepage.git

Abschließend wird mit nachfolgendem Befehl die Verzeichnisstruktur des zentralen Servers und das Git-Repository auf welches via remote Zugriff zugegriffen werden kann, als reines –bare (nacktes) Repository erstellt:

# git init --bare
Initialized empty Git repository in /srv/git/homepage.git/

Mit nachfolgendem Befehl kann nun überprüft werden, ob die Erstellung der Verzeichnisstruktur des zentralen Servers und das Git-Repository auf welches via remote Zugriff zugegriffen werden kann, als reines –bare (nacktes) Repository erfolgreich war:

# find /srv/git/homepage.git
/srv/git/homepage.git
/srv/git/homepage.git/refs
/srv/git/homepage.git/refs/heads
/srv/git/homepage.git/refs/tags
/srv/git/homepage.git/branches
/srv/git/homepage.git/description
/srv/git/homepage.git/hooks
/srv/git/homepage.git/hooks/applypatch-msg.sample
/srv/git/homepage.git/hooks/commit-msg.sample
/srv/git/homepage.git/hooks/post-update.sample
/srv/git/homepage.git/hooks/pre-applypatch.sample
/srv/git/homepage.git/hooks/pre-commit.sample
/srv/git/homepage.git/hooks/pre-push.sample
/srv/git/homepage.git/hooks/pre-rebase.sample
/srv/git/homepage.git/hooks/prepare-commit-msg.sample
/srv/git/homepage.git/hooks/update.sample
/srv/git/homepage.git/info
/srv/git/homepage.git/info/exclude
/srv/git/homepage.git/HEAD
/srv/git/homepage.git/config
/srv/git/homepage.git/objects
/srv/git/homepage.git/objects/pack
/srv/git/homepage.git/objects/info

Nachfolgend ein paar kurze Erläuterungen zu der Verzeichnisstruktur des zentralen Servers und das Git-Repository auf welches via remote Zugriff zugegriffen werden kann:

Verzeichnis/Datei Erläuterung
./refs/ Enthält Referenzen auf Commit-Objekte
./refs/heads/ Enthält Referenzen auf die „Branches“ der Commit-Objekte
./refs/tags/ Enthält Referenzen auf die „Tags“ der Commit-Objekte
./branches/ Wird von neueren Git-Versionen nicht mehr verwendet
./description Wird nur vom Programm GitWeb benötigt
./hooks/ Enthält Client- oder Serverseitige „Hook“-Skripte
./info/ Enthält die Datei exclude mit globalen Dateiausschlussmuster, die nicht in jeder
.gitignore-Datei neu spezifizieren werden müssen
./HEAD Zeigt auf denjenigen „Branch“, welcher gegenwärtig der aktive und letzte Commit-Stand ist
./config Enthält Projekt spezifischen Konfigurationsoptionen
./objects/ Inhalte mit den Objekten mit den SHA1-Dateinamen
./objects/pack/ Inhalte mit den Objekten in „gepackter“ Form
./objects/info/ Informationen zu den Inhalten der Objekte in „gepackter“ Form
Dokument zusätzliche Informationen
Git-Repository-Aufbau http://git-scm.com/docs/gitrepository-layout

Server: git update-server-info

Nachfolgender Befehl fügt der Verzeichnisstruktur des zentralen Servers und dem Git-Repository auf welches via remote Zugriff zugegriffen werden kann, zusätzliche Informationsdateien hinzu, weil dieser nicht automatisch Paket- und Referenzinformationen zur Verfügung stellt, damit auch über https/https Zugriff genommen werden kann.

Nachfolgender Befehl generiert diese Zusatzinformationsdateien in nachfolgenden Verzeichnissen:

  • ./objects/info/packs/
  • ./info/refs/
Befehl zusätzliche Informationen
git update-server-info
http://git-scm.com/docs/git-update-server-info/1.8.3.1
# git update-server-info

:!: HINWEIS - Der Befehl erzeugt bei erfolgreicher Ausführung keine Ausgabe!

Mit nachfolgendem Befehl kann nun überprüft werden, ob die Ergänzung der Verzeichnisstruktur des zentralen Servers und das Git-Repository auf welches via remote Zugriff zugegriffen werden kann, erfolgreich war:

# find /srv/git/homepage.git
/srv/git/homepage.git
/srv/git/homepage.git/refs
/srv/git/homepage.git/refs/heads
/srv/git/homepage.git/refs/tags
/srv/git/homepage.git/branches
/srv/git/homepage.git/description
/srv/git/homepage.git/hooks
/srv/git/homepage.git/hooks/applypatch-msg.sample
/srv/git/homepage.git/hooks/commit-msg.sample
/srv/git/homepage.git/hooks/post-update.sample
/srv/git/homepage.git/hooks/pre-applypatch.sample
/srv/git/homepage.git/hooks/pre-commit.sample
/srv/git/homepage.git/hooks/pre-push.sample
/srv/git/homepage.git/hooks/pre-rebase.sample
/srv/git/homepage.git/hooks/prepare-commit-msg.sample
/srv/git/homepage.git/hooks/update.sample
/srv/git/homepage.git/info
/srv/git/homepage.git/info/exclude
/srv/git/homepage.git/info/refs
/srv/git/homepage.git/HEAD
/srv/git/homepage.git/config
/srv/git/homepage.git/objects
/srv/git/homepage.git/objects/pack
/srv/git/homepage.git/objects/info
/srv/git/homepage.git/objects/info/packs

Nachfolgende Verzeichnisse sollten dabei nun entstanden sein:

(Nur relevanter Ausschnitt)

...
/srv/git/homepage.git/info/refs
...
/srv/git/homepage.git/objects/info/packs

Server: git-config

Bevor die Arbeit mit einem Git-Repository auf einem zentralen Server begonnen werden kann, sollten nachfolgende Konfigurationen durchgeführt werden.

Konfigurationen in Git werden durch nachfolgenden Befehl durchgeführt:

Befehl zusätzliche Informationen
git config
http://git-scm.com/docs/git-config/1.8.3.1

Git kann auf zwei Ebenen konfiguriert werden, diese sind:

  1. auf systemweiter Ebene
  2. auf lokaler Ebene

Git speichert globale Konfigurationen unter dem jeweiligen HOME-Verzeichnis des Benutzer in der Konfigurationsdatei - hier:

  • /home/klaus/.gitconfig

Git speichert lokale Konfigurationen unter dem jeweiligen Git-Repository in der Konfigurationsdatei - hier:

  • /srv/git/homepage.git/config

:!: WICHTIG - Wenn Konfigurationen auf systemweiter Ebene erfolgen sollen, ist die Angabe des Schlüsselwortes

--global

erforderlich!

Nachfolgender Befehl listet die aktuell konfigurierten Parameter auf:

# git config --list
core.repositoryformatversion=0
core.filemode=true
core.bare=true

Die oben gezeigte Ausgabe, stellt die Standardparameter nach einer erfolgreichen Erstellung des Git-Repositorys auf dem zentralen Server dar, auf welches via remote Zugriff zugegriffen werden kann.

Erklärung der Standardparameter:

  • core.repositoryformatversion=0

Interne Variable, welche die Version, das Format und die Gestaltung des Git-Repositorys identifiziert.

  • core.filemode=true

Stellt die Differenz des Parameters „Ausführbar (executable bit)“ zwischen dem INDEX und der Working Copy Verzeichnisstruktur dar. Wenn dieser Parameter auf false (falsch) gesetzt ist, wird eine Differenz ignoriert, was bei Dateisystemen wir z.B. FAT der Fall ist. Der Standard ist allerdings true (wahr).

  • core.bare=true

Gibt an ob es sich um ein –bare (nacktes) Git-Repository handelt, also ohne INDEX und Working Copy, oder es sich um eines mit diesen Komponenten handelt. Bei –bare (nackte) Git-Repositorys sind einige Befehle wie z.B. git add oder git merge nicht verfügbar, da diese einen INDEX bzw. eine Working Copy voraussetzen.

Server: git-config - color.ui

Dieser Parameter auf auto gesetzt ist, versucht Git, die Ausgabe farbig darzustellen, soweit dies - je nach Ausgabemedium - möglich ist.

Nachfolgender Befehl setzt den Parameter - lokal, da dieser je nach Bearbeitung des Git-Repositorys anders sein kann.

# git config --add color.ui "auto"

Server: git-config (minimum)

Anschließend können mit nachfolgender Befehl die aktuell konfigurierten Parameter nochmals aufgelistet werden, die auch die minimale Konfiguration die erforderlich ist, darstellen:

# git config --list
core.repositoryformatversion=0
core.filemode=true
core.bare=true
color.ui=auto

Apache: Module laden

Zum Einsatz eines zentralen Servers und eines Git-Repository auf welches via remote Zugriff zugegriffen werden kann, ist ein lauffähiger Web-Server z.B. Apache HTTP Server nötig.

Siehe auch die internen Links:

Nachfolgende Apache HTTP Server-Module müssen deshalb ebenfalls mit dem Apache HTTP Server geladen werden, welche sich unter

  • /etc/httpd/modules/ bzw. /usr/lib64/httpd/modules/

befinden:

  • mod_cgi.so
  • mod_alias.so
  • mod_env.so

Das Laden der Apache HTTP Server-Module erfolgt durch anpassen der Apache HTTP Server-Konfigurationsdateien

  • /etc/httpd/conf.modules.d/00-base.conf
  • /etc/httpd/conf.modules.d/01-cgi.conf

bzw. durch Aufhebung der Auskommentierung der nachfolgenden Zeilen, falls diese nicht bereits aktiv sind:

/etc/httpd/conf.modules.d/00-base.conf

(Nur relevanter Ausschnitt)

#
# This file loads most of the modules included with the Apache HTTP
# Server itself.
#
...
LoadModule alias_module modules/mod_alias.so
...
LoadModule env_module modules/mod_env.so
...

/etc/httpd/conf.modules.d/01-cgi.conf

(Komplette Konfigurationsdatei)

#
# This file loads most of the modules included with the Apache HTTP
# Server itself.
#
# This configuration file loads a CGI module appropriate to the MPM
# which has been configured in 00-mpm.conf.  mod_cgid should be used
# with a threaded MPM; mod_cgi with the prefork MPM.
 
<IfModule mpm_worker_module>
   LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_event_module>
   LoadModule cgid_module modules/mod_cgid.so
</IfModule>
<IfModule mpm_prefork_module>
   LoadModule cgi_module modules/mod_cgi.so
</IfModule>

Apache: Besitzrechte

Zum Einsatz eines zentralen Servers und eines Git-Repository auf welches via remote Zugriff zugegriffen werden kann, ist ein lauffähiger Web-Server z.B. Apache HTTP Server nötig, welcher ausreichend Rechte auf das Git-Repository benötigt.

Nachfolgender Befehl weist dem Benutzer unter dem der Apache HTTP Server läuft die Besitzrechte für das Verzeichnis

  • /srv/git/

und alle darin enthaltenen Verzeichnisse, Unterverzeichnisse und Dateien zu, so dass der Apache HTTP Server die benötigten Rechte zur Durchführung seiner Aufgaben besitzt:

# chown -R apache:apache /srv/git

Zur Überprüfung, ob die Vergabe der benötigten Rechte für den Apache HTTP Server erfolgreich war, kann nachfolgender Befehl verwendet werden:

# ls -l /srv/git /srv/git/*
/srv/git:
total 0
drwxr-xr-x 7 apache apache 111 Aug  4 14:53 homepage.git

/srv/git/homepage.git:
total 16
drwxr-xr-x 2 apache apache    6 Aug  4 14:53 branches
-rw-r--r-- 1 apache apache   66 Aug  4 14:53 config
-rw-r--r-- 1 apache apache   73 Aug  4 14:53 description
-rw-r--r-- 1 apache apache   23 Aug  4 14:53 HEAD
drwxr-xr-x 2 apache apache 4096 Aug  4 14:53 hooks
drwxr-xr-x 2 apache apache   31 Aug  4 14:53 info
drwxr-xr-x 4 apache apache   28 Aug  4 14:53 objects
drwxr-xr-x 4 apache apache   29 Aug  4 14:53 refs

Apache: VHOST

Zum Einsatz eines zentralen Servers und eines Git-Repository auf welches via remote Zugriff zugegriffen werden kann, ist ein lauffähiger Web-Server z.B. Apache HTTP Server nötig, auf dem ein VHOST eingerichtet ist, über den das Git-Repository erreichbar ist.

:!: WICHTIG - Nachfolgende Konfigurationen stellen eine grundlegende Apache HTTP Server-VHOST-Konfiguration dar.
Weitere Einzelheiten zu Apache HTTP Server-VHOST sind in der Dokumentation zum Apache HTTP Server verfügbar!

Nachfolgend ein Beispiel für einen Apache HTTP Server-VHOST via http:

#
# git.tachtler.net (Git Repository Bare Remote Server)
#
<VirtualHost *:80>
        ServerAdmin webmaster@tachtler.net
        ServerName git.tachtler.net
        ServerAlias www.git.tachtler.net
        ServerPath /
 
        <Directory "/usr/libexec/git-core">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
 
        ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
 
        SetEnv GIT_PROJECT_ROOT /srv/git
        SetEnv GIT_HTTP_EXPORT_ALL
 
        DocumentRoot "/srv/git"
        <Directory "/srv/git">
                Options -Indexes +FollowSymLinks +ExecCGI
                AllowOverride None
                # LDAP
                AuthType Basic
                AuthName "Git Repository Bare Remote Server (git.tachtler.net)"
                AuthBasicProvider ldap
                AuthLDAPURL "ldaps://ldap.tachtler.net:636/dc=tachtler,dc=net?uid"
                AuthLDAPBindDN "cn=Ersatzbenutzer,dc=tachtler,dc=net"
                AuthLDAPBindPassword "geheim"
                <RequireAll>
                        Require ldap-user klaus
                </RequireAll>
        </Directory>
 
        # Tachtler
        # Repository: homepage.git
        # ----------------------------------------------------------------------------------------------------
        <Location /git/homepage.git>
                # LDAP
                AuthType Basic
                AuthName "Git Repository - homepage (git.tachtler.net/git/homepage.git)"
                AuthBasicProvider ldap
                AuthLDAPURL "ldaps://ldap.idmz.tachtler.net:636/dc=tachtler,dc=net?uid"
                AuthLDAPBindDN "cn=Ersatzbenutzer,dc=tachtler,dc=net"
                AuthLDAPBindPassword "geheim"
                <RequireAll>
                        Require ldap-user klaus
               </RequireAll>
        </Location>
 
        ErrorLog logs/git_error.log
        CustomLog logs/git_access.log combined
</VirtualHost>

Nachfolgend ein Beispiel für einen Apache HTTP Server-VHOST via https:

#
# git.tachtler.net (Git Repository Bare Remote Server)
#
<VirtualHost *:443>
        ServerAdmin webmaster@tachtler.net
        ServerName git.tachtler.net
        ServerPath /
 
        SSLEngine on
        SSLProtocol all -SSLv2 -SSLv3
        SSLHonorCipherOrder on
        SSLCipherSuite "ECDHE-RSA-AES128-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA128:DHE-RSA-AES128-GCM-SHA384:DHE-RSA-AES128-GCM-SHA128:ECDHE-RSA-AES128-SHA384:ECDHE-RSA-AES128-SHA128:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA128:DHE-RSA-AES128-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA384:AES128-GCM-SHA128:AES128-SHA128:AES128-SHA128:AES128-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"
        SSLCertificateFile /etc/pki/httpd/certs/tachtler.net.crt
        SSLCertificateKeyFile /etc/pki/httpd/private/tachtler.net.key
        SSLCertificateChainFile /etc/pki/httpd/certs/CAcert_chain.pem
        SSLCACertificateFile /etc/pki/httpd/certs/CAcert_root.pem
 
        <Directory "/usr/libexec/git-core">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
 
        ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
 
        SetEnv GIT_PROJECT_ROOT /srv/git
        SetEnv GIT_HTTP_EXPORT_ALL
 
        DocumentRoot "/srv/git"
        <Directory "/srv/git">
                Options -Indexes +FollowSymLinks +ExecCGI
                AllowOverride None
                # LDAP
                AuthType Basic
                AuthName "Git Repository Bare Remote Server (git.tachtler.net)"
                AuthBasicProvider ldap
                AuthLDAPURL "ldaps://ldap.idmz.tachtler.net:636/dc=tachtler,dc=net?uid"
                AuthLDAPBindDN "cn=Ersatzbenutzer,dc=tachtler,dc=net"
                AuthLDAPBindPassword "geheim"
                <RequireAll>
                        # (enable for LDAP access)
                        Require ldap-user klaus
                </RequireAll>
        </Directory>
 
        # Tachtler
        # Repository: homepage.git
        # ----------------------------------------------------------------------------------------------------
        <Location /git/homepage.git>
                # LDAP
                AuthType Basic
                AuthName "Git Repository - homepage (git.tachtler.net/git/homepage.git)"
                AuthBasicProvider ldap
                AuthLDAPURL "ldaps://ldap.idmz.tachtler.net:636/dc=tachtler,dc=net?uid"
                AuthLDAPBindDN "cn=Ersatzbenutzer,dc=tachtler,dc=net"
                AuthLDAPBindPassword "geheim"
                <RequireAll>
                        Require ldap-user klaus
               </RequireAll>
        </Location>
 
        <Files ~ "\.(cgi|shtml|phtml|php3?)$">
                SSLOptions +StdEnvVars
        </Files>
        <Directory "/var/www/cgi-bin">
                SSLOptions +StdEnvVars
        </Directory>
 
        BrowserMatch "MSIE [2-5]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
 
        ErrorLog logs/git_error.log
        CustomLog logs/git_access.log combined_ssl
</VirtualHost>

Erklärungen zu den Git bezogenen VHOST-Konfigurationen:

Nachfolgende Konfigurationen sind Git spezifisch:

(Nur relevanter Ausschnitt):

...
        <Directory "/usr/libexec/git-core">
                Options None
                AllowOverride None
                Require all granted
        </Directory>
 
        ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
 
        SetEnv GIT_PROJECT_ROOT /srv/git
        SetEnv GIT_HTTP_EXPORT_ALL
...
        <Location /git/homepage.git>
                # LDAP
                AuthType Basic
                AuthName "Git Repository - homepage (git.tachtler.net/git/homepage.git)"
                AuthBasicProvider ldap
                AuthLDAPURL "ldaps://ldap.idmz.tachtler.net:636/dc=tachtler,dc=net?uid"
                AuthLDAPBindDN "cn=Ersatzbenutzer,dc=tachtler,dc=net"
                AuthLDAPBindPassword "geheim"
                <RequireAll>
                        Require ldap-user klaus
               </RequireAll>
        </Location>
...
  •         <Directory "/usr/libexec/git-core">
                    Options None
                    AllowOverride None
                    Require all granted
            </Directory>

Berechtigt den Apache HTTP Server Zugriff auf das Verzeichnis /usr/libexec/git-core zu nehmen, da sich hier das CGI-Skript befindet. Der Apache HTTP Server benötigt außerdem Lese- und Ausführungsrechte auf das CGI-Skript, was jedoch standardmäßig nach der Installation von Git der Fall sein sollte.

  • ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/

Bezeichnet das Skript, welches beim Zugriff auf den Apache HTTP Server-VHOST zur Anwendung kommt und die entsprechenden Git Befehle verarbeitet.

  • SetEnv GIT_PROJECT_ROOT /srv/git

Setzt die Umgebungsvariable GIT_PROJECT_ROOT, welche das Wurzelverzeichnis aller Git-Repositorys darstellt, auf die über den Apache HTTP Server-VHOST zugegriffen werden kann.

  • SetEnv GIT_HTTP_EXPORT_ALL

Setzt die Umgebungsvariable GIT_HTTP_EXPORT_ALL, welche die Überprüfung ausschaltet, ob im entsprechenden Git-Repository die Datei git-daemon-export-ok vorhanden ist, da sonst nur beim Vorhandensein dieser Datei, das Git-Repository via Apache HTTP Server-VHOST sichtbar wäre.

  •         <Location /git/homepage.git>
                    # LDAP
                    AuthType Basic
                    AuthName "Git Repository - homepage (git.tachtler.net/git/homepage.git)"
                    AuthBasicProvider ldap
                    AuthLDAPURL "ldaps://ldap.idmz.tachtler.net:636/dc=tachtler,dc=net?uid"
                    AuthLDAPBindDN "cn=Ersatzbenutzer,dc=tachtler,dc=net"
                    AuthLDAPBindPassword "geheim"
                    <RequireAll>
                            Require ldap-user klaus
                   </RequireAll>
            </Location>

Schutz des Git-Repository - unter der „Location“ - /git/homepage.git durch den Apache HTTP Server mittels Authentifizierung gegen LDAP vor lesenden und schreibenden Zugriff.

Test: git ls-remote

Nachfolgende Tests beschreiben den Zugriff via http/https durch Kontaktaufnahme eines Clients mit dem Server durch Nutzung des Befehls:

Befehl zusätzliche Informationen
git ls-remote
http://git-scm.com/docs/git-ls-remote/1.8.3.1

Nachfolgender Aufruf dient zur Überprüfung, ob eine Authentifizierung gegen LDAP bei der Auflistung der Referenzen eines Git-Repository, erfolgt.

:!: HINWEIS - Da das Git-Repository auf dem Server - hier, noch leer ist, sollte keine Anzeige erfolgen, sondern nur eine Authentifizierung gegen LDAP erfolgen!

Zugriff via http:

# git ls-remote http://git.tachtler.net/git/homepage.git
Username for 'http://git.tachtler.net': klaus
Password for 'http://klaus@git.tachtler.net':

Zugriff via https:

# git ls-remote https://git.tachtler.net/git/homepage.git
Username for 'https://git.tachtler.net': klaus
Password for 'https://klaus@git.tachtler.net':

:!: WICHTIG - Falls nachfolgende Fehlermeldung beim Zugriff via https erscheinen sollte:

# git ls-remote https://git.tachtler.net/git/homepage.git
fatal: unable to access 'https://git.tachtler.net/git/homepage.git/': Peer's Certificate issuer is not recognized.

liegt dies daran, das es sich ggf. um ein self-signed-certificate handelt, oder die ROOT-Zeritifkate dem Client zur Authentifizierung des präsentierten Server-Zeritifikats nicht vorliegen bzw. nicht im Betriebssystem hinterlegt sind!

Um ROOT-zertifikate unter CentOS in der Version 7.x dem Betriebssystem hinzuzufügen, sind nachfolgende Schritte erforderlich.

Zuerst müssen die hinzuzufügenden ROOT-Zertifikate im PEM-Format in nachfolgendes Verzeichnis kopiert werden, hier vom Verzeichnis /tmp nach

  • /etc/pki/ca-trust/source/anchors

mit nachfolgendem Befehl:

# cp -a /tmp/CAcert_* /etc/pki/ca-trust/source/anchors

Anschließend werden mit nachfolgendem Befehl, alle sich in oben genanntem Verzeichnis befindlichen Zeritifikate, der vom Betriebssystem verwendeten „bundle“-Datei für Zertifikate, welche sich unter nachfolgendem Verzeichnis mit nachfolgendem Namen

  • /etc/pki/tls/certs/ca-bundle.crt (Link auf /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem)

befindet, hinzugefügt:

# update-ca-trust

Konfiguration - Client (Linux)

Nachfolgend soll die Konfiguration eines lokalen Git-Clients durchgeführt werden, welcher primär via http/https - remote auf einen entfernten Git-Server zum Abgleich zugreifen soll.

Client: git init

Nachfolgend soll beschrieben werden wie ein Verzeichnis mit nachfolgendem Pfad und Namen

  • /home/klaus/git/homepage

angelegt werden soll und innerhalb dieses Verzeichnisses ein

  • neues leeres Git-Repository

auf dem lokalen Rechner ein Git-Repository, welches via remote Zugriff mit einem zentralen Server abgeglichen werden kann, erstellt werden soll.

Befehl zusätzliche Informationen
git init
http://git-scm.com/docs/git-init/1.8.3.1

Nachfolgender Befehl erstellt die benötigten neuen Verzeichnisse:

$ mkdir -p /home/klaus/git/homepage

Nachfolgender Befehl wechselt in das Verzeichnis /home/klaus/git/homepage

$ cd /home/klaus/git/homepage

Abschließend wird mit nachfolgendem Befehl die Verzeichnisstruktur des Git-Repositorys auf dem lokalen Rechner erstellt, welches via remote Zugriff mit einem zentralen Server abgeglichen werden kann:

$ git init
Initialized empty Git repository in /home/klaus/git/homepage/.git/

Mit nachfolgendem Befehl kann nun überprüft werden, ob die Erstellung der Verzeichnisstruktur des Git-Repositorys auf dem lokalen Rechner erstellt wurde, welches via remote Zugriff mit einem zentralen Server abgeglichen werden kann, erfolgreich war:

$ find /home/klaus/git/homepage/.git
/home/klaus/git/homepage/.git
/home/klaus/git/homepage/.git/refs
/home/klaus/git/homepage/.git/refs/heads
/home/klaus/git/homepage/.git/refs/tags
/home/klaus/git/homepage/.git/branches
/home/klaus/git/homepage/.git/description
/home/klaus/git/homepage/.git/hooks
/home/klaus/git/homepage/.git/hooks/applypatch-msg.sample
/home/klaus/git/homepage/.git/hooks/commit-msg.sample
/home/klaus/git/homepage/.git/hooks/post-update.sample
/home/klaus/git/homepage/.git/hooks/pre-applypatch.sample
/home/klaus/git/homepage/.git/hooks/pre-commit.sample
/home/klaus/git/homepage/.git/hooks/pre-push.sample
/home/klaus/git/homepage/.git/hooks/pre-rebase.sample
/home/klaus/git/homepage/.git/hooks/prepare-commit-msg.sample
/home/klaus/git/homepage/.git/hooks/update.sample
/home/klaus/git/homepage/.git/info
/home/klaus/git/homepage/.git/info/exclude
/home/klaus/git/homepage/.git/HEAD
/home/klaus/git/homepage/.git/config
/home/klaus/git/homepage/.git/objects
/home/klaus/git/homepage/.git/objects/pack
/home/klaus/git/homepage/.git/objects/info

Nachfolgend ein paar kurze Erläuterungen zu der Verzeichnisstruktur des Git-Repositorys auf dem lokalen Rechner, welches via remote Zugriff mit einem zentralen Server abgeglichen werden kann:

Verzeichnis/Datei Erläuterung
./.git/refs/ Enthält Referenzen auf Commit-Objekte
./.git/refs/heads/ Enthält Referenzen auf die „Branches“ der Commit-Objekte
./.git/refs/tags/ Enthält Referenzen auf die „Tags“ der Commit-Objekte
./.git/branches/ Wird von neueren Git-Versionen nicht mehr verwendet
./.git/description Wird nur vom Programm GitWeb benötigt
./.git/hooks/ Enthält Client- oder Serverseitige „Hook“-Skripte
./.git/info/ Enthält die Datei exclude mit globalen Dateiausschlussmuster, die nicht in jeder
.gitignore-Datei neu spezifizieren werden müssen
./.git/HEAD Zeigt auf denjenigen „Branch“, welcher gegenwärtig der aktive und letzte Commit-Stand ist
./.git/config Enthält Projekt spezifischen Konfigurationsoptionen
./.git/objects/ Inhalte mit den Objekten mit den SHA1-Dateinamen
./.git/objects/pack/ Inhalte mit den Objekten in „gepackter“ Form
./.git/objects/info/ Informationen zu den Inhalten der Objekte in „gepackter“ Form
Dokument zusätzliche Informationen
Git-Repository-Aufbau http://git-scm.com/docs/gitrepository-layout

Client: git-config

Bevor die Arbeit mit einem Git-Repository auf einem lokalen Rechner begonnen werden kann, sollten nachfolgende Konfigurationen durchgeführt werden.

Konfigurationen in Git werden durch nachfolgenden Befehl durchgeführt:

Befehl zusätzliche Informationen
git config
http://git-scm.com/docs/git-config/1.8.3.1

Git kann auf zwei Ebenen konfiguriert werden, diese sind:

  1. auf systemweiter Ebene
  2. auf lokaler Ebene

Git speichert globale Konfigurationen unter dem jeweiligen HOME-Verzeichnis des Benutzer in der Konfigurationsdatei - hier:

  • /home/klaus/.gitconfig

Git speichert lokale Konfigurationen unter dem jeweiligen Git-Repository in der Konfigurationsdatei - hier:

  • /home/klaus/git/homepage/.git/config

:!: WICHTIG - Wenn Konfigurationen auf systemweiter Ebene erfolgen sollen, ist die Angabe des Schlüsselwortes

--global

erforderlich!

Nachfolgender Befehl listet die aktuell konfigurierten Parameter auf:

$ git config --list
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true

Die oben gezeigte Ausgabe, stellt die Standardparameter nach einer erfolgreichen Erstellung des Git-Repositorys auf dem lokalen Rechner dar, welches via remote Zugriff mit einem zentralen Server abgeglichen werden kann.

Erklärung der Standardparameter:

  • core.repositoryformatversion=0

Interne Variable, welche die Version, das Format und die Gestaltung des Git-Repositorys identifiziert.

  • core.filemode=true

Stellt die Differenz des Parameters „Ausführbar (executable bit)“ zwischen dem INDEX und der Working Copy Verzeichnisstruktur dar. Wenn dieser Parameter auf false (falsch) gesetzt ist, wird eine Differenz ignoriert, was bei Dateisystemen wir z.B. FAT der Fall ist. Der Standard ist allerdings true (wahr).

  • core.bare=false

Gibt an ob es sich um ein –bare (nacktes) Git-Repository handelt, also ohne INDEX und Working Copy, oder es sich um eines mit diesen Komponenten handelt. Bei –bare (nackte) Git-Repositorys sind einige Befehle wie z.B. git add oder git merge nicht verfügbar, da diese einen INDEX bzw. eine Working Copy voraussetzen.

  • core.logallrefupdates=true

Schaltet das „Protokollieren (logging)“ ref ein. Dieser Parameter ist standardmäßig bei Git-Repositorys mit INDEX und Working Copy auf true (wahr) gesetzt und bei –bare (nackten) Git-Repositorys auf false (falsch) gesetzt.

Nachfolgende Parameter sollten deshalb zwingend vor der Arbeit mit einem Git-Repository zusätzlich gesetzt werden:

  • user.name
  • user.email

da diese bei jeder Aktion, welche der Benutzer auslöst Anwendung finden.

Client: git-config - user.name

Dieser Parameter gibt den Namen des Benutzer des Git-Repositorys an und wird bei jeder Aktion, welche der Benutzer auslöst angewandt.

Nachfolgender Befehl setzt den Namen des Benutzer - global, da dieser auch ggf. standardmäßig für andere Git-Repositorys in denen der Benutzer aktiv ist, gelten soll. Bei einer globalen Definition, kann jedoch Git-Repository spezifisch auch ein von der globalen Definition abweichender Name des Benutzer definiert werden.

$ git config --global --add user.name "Klaus Tachtler"

Client: git-config - user.email

Dieser Parameter gibt die E-Mail-Adresse des Benutzer des Git-Repositorys an und wird bei jeder Aktion, welche der Benutzer auslöst angewandt.

Nachfolgender Befehl setzt die E-Mail-Adresse des Benutzer - global, da diese auch ggf. standardmäßig für andere Git-Repositorys in denen der Benutzer aktiv ist, gelten soll. Bei einer globalen Definition, kann jedoch Git-Repository spezifisch auch ein von der globalen Definition abweichende E-Mail-Adresse des Benutzer definiert werden.

$ git config --global --add user.email "klaus@tachtler.net"

Client: git-config - color.ui

Dieser Parameter auf auto gesetzt ist, versucht Git, die Ausgabe farbig darzustellen, soweit dies - je nach Ausgabemedium - möglich ist.

Nachfolgender Befehl setzt den Parameter - lokal, da dieser je nach Bearbeitung des Git-Repositorys anders sein kann.

$ git config --add color.ui "auto"

Client: git-config (minimum)

Anschließend können mit nachfolgender Befehl die aktuell konfigurierten Parameter nochmals aufgelistet werden, die auch die minimale Konfiguration die erforderlich ist, darstellen:

$ git config --list
user.name=Klaus Tachtler
user.email=klaus@tachtler.net
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
color.ui=auto

Client: git-config - signing.key

:!: HINWEIS - Um einen „Signing Key“ hinzufügen zu können, ist ein GPG-Schlüsselpaar erforderlich!

Unter nachfolgendem internen Link wird beschrieben, wie ein GPG-Schlüsselpaar erstellt werden kann: GnuPG

Nachfolgender Befehl listet alle verfügbaren GPG-Schlüssel im Schlüsselbund auf:

# gpg --list-keys
/root/.gnupg/pubring.gpg
------------------------
pub   1024D/96CB52B7 2009-06-03
uid                  Klaus Tachtler (root) <root@tachtler.net>
sub   4096g/F347C5BA 2009-06-03

Nachfolgender Befehl setzt den Parameter - global, da dieser je nach Bearbeitung des Git-Repositorys anders sein kann.

# git config --global user.signingkey 96CB52B7

Client: git-config - commit.gpgSign

Um jeden commit auch gleich via GPG-Schlüssel zu signieren, kann nachfolgender Befehl den Parameter - global setzen:

# git config --global commit.gpgSign true

Client: git-config - merge.guitool

Um bei Vergleich eine grafische Unterstützung erhalten zu können, kann ebenfalls in der Konfiguration ein Programm hinterlegt werden, welches bei einem Vergleich ein grafisches Werkzeug startet. Nachfolgender Befehl setzt den Parameter - global:

# git config --global merge.guitool kdiff3

Repositorys verbinden

Es gibt zwei Wege, das Git-Repository auf dem

  • lokalen Rechner

und das Git-Repository auf dem

  • zentralen Server

miteinander zu verbinden.

Repository: lokal --> zentral

Diesere Weg sollte dann Anwendung finden, wenn

  • Daten im lokalen Rechner Git-Repository vorhanden sind
  • Leeres (neues) zentrales Git-Repository vorliegt
                        LOKALER RECHNER                                 ZENTRALER SERVER
+-------------------------------------------------------------+   +--------------------------+
|                                                             |   |                          |
|   +--------------+     +---------+     +--------------+     |   |     +----------------+   |
|   | Working Copy | --> |  INDEX  | --> | LOKALES REPO | ------------> | ZENTRALES REPO |   | 
|   +--------------+     +---------+     +--------------+     |   |     +----------------+   |
|                                                             |   |                          |
+-------------------------------------------------------------+   +--------------------------+

Mit nachfolgendem Befehl kann eine grundsätzliche Verbindung zwischen lokalem Rechner und zentralem Server Git-Repository hergestellt werden:

$ git remote add origin https://git.tachtler.net/git/homepage.git

Ob eine Verbindung erfolgreich zustande gekommen ist, kann durch Überprüfung der Konfiguration des lokalen Rechner Git-Repositorys, durchgeführt werden:

$ git config --list
user.name=Klaus Tachtler
user.email=klaus@tachtler.net
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
color.ui=auto
remote.origin.url=https://git.tachtler.net/git/homepage.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

Die am Ende der Konfigurationsdatei neu hinzugekommen Zeilen, zeigen die Verbindung des lokalen Rechner Git-Repositorys mit dem dort konfigurierten zentralen Server Git-Repositorys auf.

(Nur relevanter Ausschnitt):

...
remote.origin.url=https://git.tachtler.net/git/homepage.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

Die eigentliche Übertragung der Daten aus dem lokalen Rechner Git-Repository auf den zentralen Server Git-Repository kann dann mit nachfolgendem Befehl durchgeführt werden:

Befehl zusätzliche Informationen
git push
http://git-scm.com/docs/git-push/1.8.3.1
$ git push origin master
Username for 'https://git.tachtler.net': klaus
Password for 'https://klaus@git.tachtler.net': 
Counting objects: 6, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), 598 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To https://git.tachtler.net/git/homepage.git
 * [new branch]      master -> master

Repository: zentral --> lokal

Dieser Weg sollte dann Anwendung finden, wenn

  • Daten im zentralen Git-Repository vorhanden sind
  • Leeres (neues) lokaler Rechner Git-Repository vorhanden
                        LOKALER RECHNER                                 ZENTRALER SERVER
+-------------------------------------------------------------+   +--------------------------+
|                                                             |   |                          |
|   +--------------+     +---------+     +--------------+     |   |     +----------------+   |
|   | Working Copy | --> |  INDEX  | --> | LOKALES REPO | <------------ | ZENTRALES REPO |   | 
|   +--------------+     +---------+     +--------------+     |   |     +----------------+   |
|                                                             |   |                          |
+-------------------------------------------------------------+   +--------------------------+

Mit nachfolgendem Befehl kann eine grundsätzliche Verbindung zwischen zentralem Server und lokalem Rechner Git-Repository hergestellt werden:

$ git remote add origin https://git.tachtler.net/git/homepage.git

Ob eine Verbindung erfolgreich zustande gekommen ist, kann durch Überprüfung der Konfiguration des lokalen Rechner Git-Repositorys, durchgeführt werden:

$ git config --list
user.name=Klaus Tachtler
user.email=klaus@tachtler.net
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
color.ui=auto
remote.origin.url=https://git.tachtler.net/git/homepage.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

Die am Ende der Konfigurationsdatei neu hinzugekommen Zeilen, zeigen die Verbindung des lokalen Rechner Git-Repositorys mit dem dort konfigurierten zentralen Server Git-Repositorys auf.

(Nur relevanter Ausschnitt):

...
remote.origin.url=https://git.tachtler.net/git/homepage.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

Die eigentliche Übertragung der Daten von dem zentralen Server Git-Repository auf das lokale Rechner Git-Repository kann dann mit nachfolgendem Befehl durchgeführt werden:

Befehl zusätzliche Informationen
git pull
http://git-scm.com/docs/git-pull/1.8.3.1
$ git pull origin master
Username for 'https://git.tachtler.net': klaus
Password for 'https://klaus@git.tachtler.net': 
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From https://git.tachtler.net/git/homepage
 * branch            master     -> FETCH_HEAD

Repositorys klonen

Eine sehr häufig verwendetet Möglichkeit ein Git-Repository von einem zentralen Server auf den lokalen Rechner als Git-Repository zu bringen, ist das Git-Repository von einem zentralen Server zu „klonen“.

Repository: git-clone

Dieser Weg sollte dann Anwendung finden, wenn

  • Daten im zentralen Git-Repository vorhanden sind
  • auf dem lokalen Rechner :!: kein Git-Repository vorhanden ist!

Dir initiale Übertragung der Daten von dem zentralen Server Git-Repository auf das lokale Rechner Git-Repository kann mit nachfolgendem Befehl durchgeführt werden, ohne das vorher ein Git-Repository auf dem lokalen Rechner vorhanden sein darf, da hier eine neues Verzeichnis mit erstellt wird:

Befehl zusätzliche Informationen
git clone
http://git-scm.com/docs/git-clone/1.8.3.1
$ git clone https://git.tachtler.net/git/homepage.git /home/klaus/git/homepage
Cloning into '/home/klaus/git/homepage'...
Username for 'https://git.tachtler.net': klaus
Password for 'https://klaus@git.tachtler.net': 
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 9 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (9/9), done. 

Nachfolgender Befehl kann dazu genutzt werden, um die Beziehungen des soeben neu entstandenenGit-Repositorys auf dem lokalen Rechner und des Git-Repositorys auf dem zentralen Server darzustellen:

$ git config --list
user.name=Klaus Tachtler
user.email=klaus@tachtler.net
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=https://git.tachtler.net/git/homepage.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/git_centos_7.txt · Zuletzt geändert: 2019/09/02 14:12 von klaus