Moin,
ich möchte auf einem Linuxsystem ein GIT Repository einrichten. Gängige
Methode ist ja, einen SSH Zugang einzurichten, mit dem man dann auf das
im Dateisystem liegende Repo zugreifen kann. Damit hat aber jeder, der
GIT Zugriff haben soll, automatisch vollen SSH Zugang. Das finde ich
irgendwie suboptimal...
Gibts keine andere Möglichkeit, bei der ich Usern nur Zugriff auf GIT
biete, und sonst nix?
Man kann auch in SSH einstellen, dass alle oder bestimmte User darüber
nur git-Zugriff haben (ForceCommand und so), dann hat man direkt die
nette SSH-Authentifizierung & Verschlüsselung.
monte schrieb:> Ich würde gitolite nehmen.
Sieht interessant aus. Also gitolite nutzt ja ssh als Authentifizierung.
Das heißt es gibt einen lokalen user git der sich per SSH verbinden
kann. Aber hab ich dann nicht das gleiche Problem, dass man dann per SSH
alles mögliche aus dem Rechner machen kann, wenn man sich in den GIT
Account einloggt? Vielleicht kann mir ja jemand der sich mit gitolite
auskennt, diese Frage beantworten, bevor ich stundenlang unnötigerweise
im gitolite manual rumgelesen hab ;-)
Ich habe alle durch. Nimm gitolite und für git user einen eigenen neuen
key generieren.
Sonst wirst du wunderbare probleme mit deinen repos bekommen.
Z.b. Klonen geht aber pushen nicht. Niemals den key für deinen ssh
zugang benutzen.
Gruss Jörg
Wenn es nicht unbedingt git sein muß, bietet sich für Projekte die nicht
gerade die Komplexität des Linux-Kernels haben (was die Anzahl und
Hierarchie der Entwickler angeht), u.U. auch fossil
(http://fossil-scm.org) an.
Das besteht aus einem einzigen Binary von weniger als 2MB und kann
wahlweise lokal, per SSH, als CGI hinter einem bestehenden Webserver
oder über einen kleinen eingebauten Webserver angesprochen werden. Neben
der eigentlichen Versionsverwaltung sind noch ein Bugtracker und ein
Wiki enthalten, so daß man gerade bei kleineren Projekten dafür keinen
extra Aufwand treiben muß.
Ich habe den Eindruck, daß sehr oft der Vorschlaghammer git genommen
wird, ohne darüber nachzudenken, ob nicht ein leichterer Hammer wie
fossil viel besser zu dem feinen Nägelchen passen würde, das man gerade
einzuschlagen hat.
R. Max schrieb:> Vorschlaghammer git
Das ist ja das Schöne an git, man gibt "git init" ein und man hat sein
Repository und kann seine Versionsgeschichte anlegen, man muss keinen
Server haben/aufsetzen etc. Für kleine Projekte braucht man vermutlich
keine Branches & merges womit sich der große Teil der Komplexität
erledigt. git ist dank des kleinen Overheads somit wunderbar auch für
kleine Projekte geeignet, da man keine unnötigen Bugtracker oder Wiki's
dabei hat...
Antiexperte schrieb:> Das ist ja das Schöne an git, man gibt "git init" ein und man hat sein> Repository und kann seine Versionsgeschichte anlegen, man muss keinen> Server haben/aufsetzen etc.
Vielleicht ist das falsch rübergekommen, aber auch bei Fossil mußt Du
keinen Server aufsetzen, wenn Du keinen brauchst: "fossil new" und Du
hast Dein lokales Repository. Aber die Fragestellung in diesem Thread
bezog sich nunmal ausdrücklich auf einen Server, deshalb habe ich diese
Eigenschaften herausgehoben. Im übrigen gibt es selbst beim
Serverbetrieb von Fossil nicht viel "aufzusetzen".
> git ist dank des kleinen Overheads somit wunderbar auch für> kleine Projekte geeignet,
Woran machst Du den kleineren Overhead von git denn fest?
Alleine der Kern von git ist knapp zwölf mal so groß ist wie Fossil und
besteht aus hunderten von Dateien, während Fossil als ein einziges (im
Grunde installationsfreies) Binary daherkommt:
$ rpm -q --qf '%{SIZE} %{NAME}\n' fossil git-core
1441168 fossil
17032393 git-core
$ rpm -ql fossil
/usr/bin/fossil
/usr/share/doc/packages/fossil
/usr/share/doc/packages/fossil/COPYRIGHT-BSD2.txt
$ rpm -ql git-core | wc -l
767
Dazu kommt, daß git-core (zunindest auf openSUSE) u.A. Perl und Python
benötigt, die ihrerseits nicht eben klein sind, während Fossil nur libz
und (optional) openSSL braucht.
> da man keine unnötigen Bugtracker oder Wiki's dabei hat...
Wenn Du sie nicht brauchst, kannst Du sie einfach ignorieren, ohne daß
Dir dadurch irgendein Nachteil entsteht. Wenn Du sie irgendwann dann
doch nutzen willst, kannst Du das tun, ohne nochmal zusätzlichen
Konfigurationsaufwand dafür zu haben.
Einen etwas detaillierteren Vergleich zwischen git und Fossil gibt es
übrigens hier:
http://www.fossil-scm.org/xfer/doc/trunk/www/fossil-v-git.wiki
Versteh' mich nicht falsch, ich sage nicht, daß git schlecht ist. Es ist
mit Sicherheit das perfekte Tool für den Linux-Kernel und wurde ja auch
genau dafür gemacht. Aber es gibt wohl nur wenige andere Projekte, die
mit dem Kernel vergleichbare Anforderungen an die Versionsverwaltung
haben, und deshalb sollte man sich beim Start eines Projekts gut
überlegen, welches Tool am besten paßt, anstatt einfach blindlings git
zu nehmen, nur weil das alle tun.
R. Max schrieb:> "fossil new" und Du> hast Dein lokales Repository.
Immerhin.
R. Max schrieb:> Woran machst Du den kleineren Overhead von git denn fest?
Ob kleiner als fossil weiß ich jetzt nicht, aber mit Overhead meinte ich
wie viele (evtl. komplizierte) Befehle man zur Pflege seines
Repositories braucht - und git ist da doch recht einfach.
R. Max schrieb:> Alleine der Kern von git ist knapp zwölf mal so groß ist wie Fossil
Na und, das händelt der Packagemanager für mich (du verwendest ja selber
einen), und für die 18MB ist noch Platz auf meiner 500GB Platte (und
gerüchteweise ist die noch vergleichsweise klein). IDE's,
Desktopumgebungen und Spiele sind da jedenfalls um Größenordnungen
platzhungriger (und stehen somit weiter oben auf der
nicht-installieren-Liste).
R. Max schrieb:> Aber es gibt wohl nur wenige andere Projekte, die> mit dem Kernel vergleichbare Anforderungen an die Versionsverwaltung> haben,
Es gibt jedenfalls wenige Projekte, die die Anforderung haben, dass das
SCM selbst keine 18MB groß sein darf. git passt wunderbar auf kleine
Projekte, und dank github kann man das auch sehr einfach zentral auf
einem Server haben.
Nur weil git auch für große Projekte wie den Kernel geeignet ist, heißt
das nicht, dass es weniger für kleine Projekte geeignet wäre...