segunda-feira, 13 de junho de 2016

4.8 Git sur la servilo - GitLab

4.8 Git sur la servilo - GitLab

GitWeb estas sufiĉe simplista tamen. Se vi serĉas pli moderna, plene prezentita Git servilo, ekzistas kelkaj pluraj malfermita fonto solvoj tie ke vi povas instali anstataŭe. Kiel GitLab estas unu el la pli popularaj, ni kovras instalo kaj uzante gxin kiel ekzemplo. Tio estas iom pli kompleksa ol la GitWeb opcio kaj probable postulas pli bontenado, sed estas multe pli plene prezentis opcion.

Instalado

GitLab estas datumbazo subtenata apliko retejo, tiel ĝia instalado estas iom pli implikitaj ol iuj aliaj git serviloj. Feliĉe, ĉi tiu procezo estas tre bone dokumentita kaj apogis.
Estas kelkaj metodoj vi povas plutrakti instali GitLab. Akiri ion kaj kurante rapide, vi povas elŝuti virtuala maŝino bildo aŭ unu-alklako instalado de https://bitnami.com/stack/gitlab kaj tweak la agordo por kongrui kun via aparta medio. Unu bela tuŝo Bitnami inkludis estas la salutekrano (Montrita tajpante alt- →); ĝi diras vin la IP kaj defaŭlta salutnomon kaj pasvorton por la instalita GitLab.
La Bitnami GitLab virtuala maŝino salutekrano.
Figuro 4-2. La Bitnami GitLab virtuala maŝino salutekrano.
Por io alia, sekvi la gvidon en la GitLab Komunumo Eldono README, kiuj troveblas ĉe https://gitlab.com/gitlab-org/gitlab-ce/tree/master . Tie vi trovos helpon por instali GitLab uzante Chef receptoj, virtuala maŝino sur Cifereca Oceano kaj RPM kaj DEB pakoj (kiu, de ĉi tiu skribado, estas en fazo beta). Ekzistas ankaŭ "neoficiala" gvidon sur akiranta GitLab kurante kun nenorma operaciumoj kaj datumbazoj, plene manlibro instalado skripton, kaj multaj aliaj temoj.

Administrado

GitLab administrado interfaco aliras super la TTT. Simple montri vian foliumilon por la gastignomon aŭ IP kie GitLab estas instalita kaj ensaluti kiel administranto uzanto. La defaŭlta uzantnomo estas admin@local.host kaj la defaŭlta pasvorto estas 5iveL!fe (vi estos petata ŝanĝi kiam vin eniras ĝin). Ensalutinte, klaku "Admin areo" ikono en la menuo ĉe la supra dekstra.
La `` Admin areo '' eron en la GitLab menuo.
Figuro 4-3. La "Admin areo" eron en la GitLab menuo.

Uzantoj

Uzantoj en GitLab estas rakontas ke respondas al homoj. Uzanto kontoj ne havas multajn komplekseco; ĉefe estas kolekto de persona informo alfiksis ensaluti datumoj. Ĉiu uzantokonto venas kun nomspaco, kiu estas logika grupiĝo de projektoj kiuj apartenas al tiu uzanto. Se la uzanto jane havis projekton nomita project , tiu projekto url estus http: // servilo / jane / projekto .
La GitLab uzanto administrado ekrano.
Figuro 4-4. La GitLab uzanto administrado ekrano.
Forigado uzanto povas esti farita en du manieroj. "Blokante" uzanto malhelpas ilin arbohakanta en la GitLab ekzemple, sed ĉiuj el la datumoj sub tiu uzanto nomspaco estos konservita, kaj faras subskribita kun tiu uzanto retadreson ankoraŭ referencas al sia profilo.
"Detrui" uzanto, aliflanke, tute forigas ilin el la datumbazo kaj dosiersistemo. Ĉiuj projektoj kaj datumojn en ilia nomspaco estas forigita, kaj neniu grupoj posedas ankaŭ estos forigitaj. Tio estas evidente multe pli permanenta kaj detrua agado, kaj liaj uzoj estas maloftaj.

grupoj

A GitLab grupo estas arigo de projektoj, kune kun datumoj pri kiom uzantoj povas aliri tiujn projektojn. Ĉiu grupo havas projekton nomspaco (sammaniere ke uzantoj fari), do se la grupo training havas projekton materials , lia url estus http: // servilo / trejnado / materialojn .
La GitLab grupo administrado ekrano.
Figuro 4-5. La GitLab grupo administrado ekrano.
Ĉiu grupo estas asociita kun numero de uzantoj, ĉiu el kiuj havas nivelon de permesoj por la grupa projektoj kaj la grupo mem. Tiuj intervalas de "Gasto" (aferojn kaj babili nur) por "Owner" (plena kontrolo de la grupo, liaj membroj kaj liaj projektoj). La tipoj de permesoj estas tro multnombraj por listo tie, sed GitLab havas helpema ligilo sur la administrado ekrano.

projektoj

A GitLab projekto malglate korespondas al sola git-deponejo. Ĉiu projekto apartenas al sola nomspaco, ĉu uzanto aŭ grupo. Se la projekto apartenas al uzanto, la posedanto de la projekto havas rektan kontrolon super kiu havas aliron al la projekto; se la projekto apartenas al grupo, la grupo de uzanto-nivelo permesojn ankaŭ efektiviĝas.
Ĉiu projekto havas ankaŭ videbleco nivelo, kiu kontrolas kiu legrajtojn por ke projekto paĝoj kaj deponejo. Se projekto estas Privata, la projekto posedanto devas eksplicite doni aliro al specifaj uzantoj. Interna projekto estas videbla por ajna ensalutantojn uzanto kaj Publika projekto estas videbla por neniu. Notu ke tiu kontrolas ambaŭ git "fetch" aliro tiel kiel aliro al la TTT UI por tiu projekto.

hokoj

GitLab inkludas apogon por hokoj, ambaŭ ĉe projekto aŭ sistemo nivelo. Por iu el ili, la GitLab servilo plenumos HTTP POST kun iuj priskriba JSON kiam adekvataj okazaĵoj okazas. Tiu estas granda vojo por konekti git deponejoj kaj GitLab ekzemple al la resto de via evoluo aŭtomatigo, kiel CI serviloj, babilejoj, aŭ deplojo iloj.

bazaj Uzado

La unua afero vi deziras fari kun GitLab estas krei novan projekton. Ĉi tio sukcesas klakante la "+" ikono sur la ilobretaj. Vi estos petita por la projekto nomo, kiun nomspaco ĝi devus aparteni al kaj kio lia videbleco nivelo devus esti. Plejparto de kio vi ĉi tie specifitaj ne permanenta, kaj povas esti re-adaptitaj poste tra la agordojn interfaco. Alklaku "Krei Projekto", kaj vi faris.
Iam la projekto ekzistas, vi probable volas konekti ŝin kun loka Git-deponejo. Ĉiu projekto estas alirebla super HTTPS aŭ SSH, ĉu de kiu povas esti uzata por agordi Git fora. La URLoj estas videblaj ĉe la pinto de la projekta hejmpaĝo. Cxar ekzistantan loka deponejo, tiu komando kreos fora nomita gitlab al la gastigita loko:
  $ Git fora aldonu gitlab https: //server/namespace/project.git 
Se vi ne havas lokan kopion de la deponejo, vi povas simple faru jene:
  $ Git clone https: //server/namespace/project.git 
La ttt UI disponigas aliron al pluraj utilaj vidoj de la deponejo mem. Ĉiu projekto ĉefpaĝon montras freŝa aktiveco kaj ligiloj kune la supro kondukos vin al opinioj de la projekto dosierojn farante ensaluti.

laborante Kune

La plej simpla maniero de labori kune en GitLab projekto donante alia uzanto rekta puŝo aliro al la git-deponejo. Vi povas aldoni uzanton al projekto de iranta al la "membroj" sekcio de tiu projekto agordojn kaj asociante la nova uzanto kun aliro nivelo (la malsama aliro niveloj estas diskutitaj iom en Grupoj ). Donante uzanto aliron nivelo de "Developer" aŭ supre, ke uzanto povas premi interna kaj branĉoj rekte al la deponejo senpune.
Alia, pli decoupled vojon de kunlaboro estas per uzo kunfandi petoj. Tiu trajto ebligas ajna uzanto kiu povas vidi projekto kontribui al ĝi en kontrolita maniero. Uzantoj kun rekta aliro povas simple krei branĉon, puŝo faras al ĝi, kaj malfermi merge peto de sia branĉo reen en master aŭ ajna alia branĉo. Uzantoj kiuj ne havas puŝo permesojn por deponejo povas "forko" ĝin (krei lian propran kopion), puŝo kompromitas al tiu ekzemplero, kaj malfermi merge peto de sia forko al la ĉefa projekto. Tiu modelo permesas la proprietulo por esti en plena kontrolo de kio iras en la deponejo kaj kiam, dum permesante kontribuojn de untrusted uzantoj.
Kunfandi petoj kaj demandoj estas la ĉefaj unuoj de longeviva diskuto en GitLab. Ĉiu merge peto permesas linion post linio diskuto de la proponita ŝanĝo (kiu apogas malpeza speco de kodo recenzo), tiel kiel ĝenerala entuta diskuto fadeno. Ambaŭ povas esti atribuita al uzantoj, aŭ organizitaj en mejloŝtonojn.
Tiu sekcio estas koncentrita ĉefe en la Git-rilataj trajtoj de GitLab, sed kiel matura projekto, ĝi havigas multajn aliajn funkciojn por helpi vian teamon laboro kune, kiel projekto vikioj kaj sistemo bontenado iloj. Unu avantaĝo al GitLab estas kiu, fojo la servilo instalita kaj kuranta, Vi malofte bezonas tweak agorda dosiero aŭ aliri la servilon tra SSH; plej administrado kaj ĝenerala uzado povas esti plenumita tra la en-retumilo interfacon.

4.7 Git sur la servilo - GitWeb

4.7 Git sur la servilo - GitWeb

Nun ke vi havas bazan legado/skribo kaj legado nur aliro al via projekto, povas esti utile starigi simplan ttt-bazita visualizador. Git venas kun CGI skripto nomita GitWeb ke foje uzita por tiu.
La GitWeb ttt-bazita uzulinterfaco.
Figuro 4-1. La GitWeb ttt-bazita uzulinterfaco.
Se vi volas kontroli kio GitWeb aspektus kiel por via projekto, Git venas kun komando pafi supren provizoran Ekzemple se vi havas malpezan servilo en via sistemo kiel lighttpdwebrick . Sur Linukso maŝinoj, lighttpd ofte instalita, do vi eble povas akiri ĝin kuri tajpante git instaweb en via projekto dosierujo. Se vi uzas Mac, Leopardo venas antaŭinstalitaj kun Ruby, Do webrick povas esti via plej bona veto. Komenci instaweb kun ne-lighttpd traktilo, vi povas ruli ĝin kun la --httpd opcion.
  $ Git instaweb --httpd = webrick
[2009-02-21 10:02:21] INFO WEBrick 1.3.1
[2009-02-21 10:02:21] INFO ruby 1.8.6 (2008-03-03) [universal-darwin9.0] 
Kiu funkciigas kiel httpd servilo haveno 1234 kaj tiam aŭtomate komenciĝas retumilo kiu malfermas sur tiu paĝo. Ĝi estas sufiĉe facila viaflanke. Kiam vi faris kaj volas fermi la servilo, vi povas kuri la saman ordonon per la --stop eblo:
  $ Git instaweb --httpd = webrick --stop 
Se vi volas lanĉi la retinterfaco sur servilo tutan tempon por via teamo aŭ por malferma fonto projekto vi retprovizanton, vi devas agordi la CGI skripto por esti utilita de via normala retservilo. Kelkaj Linukso distribuaĵoj havas gitweb pako ke vi povu instali tra aptyum , tiel vi eble volas provi ke unue. Ni trairu instali GitWeb permane tre rapide. Unua, vi bezonos akiri la Git fontkodo, kiun GitWeb venas kun kaj generi la kutimo CGI skripto:
  $ Git clone git: //git.kernel.org/pub/scm/git/git.git
 $ cd git /
 $ Fari GITWEB_PROJECTROOT = "/opt/git" prefix = / usr gitweb
 SUBDIR gitweb
 SUBDIR ../
make[2]: `GIT-VERSION-FILE' is up to date.
 GEN gitweb.cgi
 GEN static/gitweb.js
 $ Ŝvitas cp -Rf gitweb / var / www / 
Rimarku ke vi devas diri la komando kie trovi vian Git deponejoj kun la GITWEB_PROJECTROOT variablo. Nun, Vi devas fari Apache uzo CGI por tiu skripto, por kiu vi povas aldoni VirtualHost:
 <VirtualHost *:80>
 ServerName gitserver
 DocumentRoot /var/www/gitweb
 <Directory /var/www/gitweb>
 Options ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
 AllowOverride All
 order allow,deny
 Allow from all
 AddHandler cgi-script cgi
 DirectoryIndex gitweb.cgi
 </Directory>
</VirtualHost> 
Denove, GitWeb povas utili kun ajna CGI aŭ Perl kapabla retservilo; se vi preferas uzi ion alian, ĝi ne devus esti malfacila starigi. Ĉe tiu punkto, vi devus povi viziti http://gitserver/ vidi vian deponejoj rete.

4.6 Git sur la servilo - Smart HTTP

4.6 Git sur la servilo - Smart HTTP

Ni nun aŭtentikigita aliro kvankam SSH kaj unauthenticated aliro tra git:// , sed ekzistas ankaŭ protokolo kiu povas fari ambaŭ samtempe. Starigadon Smart HTTP estas esence nur ebligante CGI skripto kiu estas provizita kun Git nomita git-http-backend sur la servilo. Ĉi CGI legos la padon kaj titolaj sendis per git fetchgit push al HTTP URL kaj determini se la kliento povas komuniki super HTTP (kiu estas vera por ĉiu kliento ekde versio 1.6.6). Se la CGI vidas ke la kliento estas inteligenta, ĝi komunikos smartly kun ĝi, alie ĝi falos reen al muta konduto (tia estas retrokongrua por legas kun malnovaj klientoj).
Ni iras tra tre baza agordo. Ni povas tion supren kun Apache kiel la CGI servilo. Se vi ne havas Apache instalinstrukciojn, vi povas fari ĝin sur Linukso skatolo kun io tiamaniere:
  $ sudo apt-get install apache2 apache2-utils
 $ a2enmod CGI alias env reverki 
Ĉi ankaŭ ebligas la mod_cgi , mod_alias , mod_env kaj mod_rewrite moduloj, kiuj estas ĉiuj bezonataj por ĉi labori konvene.
Vi ankaŭ devas agordi la Uniksa uzanto grupo de la /opt/git dosierujojn al www-data tiel via retservilo povas read- kaj skribi-aliro la deponejoj, ĉar la Apache ekzemple kurado la CGI skripto estos (defaŭlte) esti kurante kiel tiu uzanto:
  $ Chgrp -R Www-data / opt / git 
Ni tuj devas aldoni kelkajn aferojn al la Apache agorda kuri la git-http-backend kiel la traktilo por nenio venanta en la /git vojon de via retservilo.
 SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/ 
Se vi ellasas GIT_HTTP_EXPORT_ALL Mediovariablo do Git nur utilos por unauthenticated klientoj la deponejoj kun la git-daemon-export-ok dosieron en ili, same kiel la Git-demono faris.
Fine vi volas diri Apache permesi petoj al git-http-backend kaj fari skribas legalizita iel, eble kun auth bloko tiel:
 RewriteEngine On
RewriteCond %{QUERY_STRING} service=git-receive-pack [OR]
RewriteCond %{REQUEST_URI} /git-receive-pack$
RewriteRule ^/git/ - [E=AUTHREQUIRED]

<Files "git-http-backend">
 AuthType Basic
 AuthName "Git Access"
 AuthUserFile /opt/git/.htpasswd
 Require valid-user
 Order deny,allow
 Deny from env=AUTHREQUIRED
 Satisfy any
</Files> 
Kiu postulos vin krei .htpasswd dosiero enhavanta la pasvortoj de ĉiuj validaj uzantoj. Jen ekzemplo de aldonanta "schacon" uzanto al la dosiero:
  $ Htpasswd -c /opt/git/.htpasswd schacon 
Estas tunoj de manieroj havi Apache autenticar uzantoj, vi devos elekti kaj efektivigi unu el ili. Tiu estas nur la plej simpla ekzemplo ni povus elpensi. Vi ankaŭ preskaŭ certe volas agordi tion, super SSL por ĉiuj ĉi tiuj datumoj estas ĉifrita.
Ni ne volas iri tro ege malsupren la kuniklotruon de Apache agorda specifaj, ĉar vi bone povus uzi alian servilo aŭ havas malsamajn autenticación bezonoj. La ideo estas ke Git venas kun CGI nomita git-http-backend ke kiam alvokebla faros cxiujn intertraktado por sendi kaj ricevi datumojn sur HTTP. Ne apliki ajnan identigan mem, sed kiuj povas facile esti kontrolita ĉe la mantelo de la retservilo kiu alpreĝas lin. Vi povas fari tion kun preskaŭ ajna CGI-kapabla retservilo, ke vi iru kun kiu vi scias plej bone.
noto
Por pli informo sur agordi autenticación en Apache, kontrolu la Apache dokumentojn tie: http://httpd.apache.org/docs/current/howto/auth.html

4.5 Git sur la servilo - Git Daemon

4.5 Git sur la servilo - Git Daemon

Sekva ni starigis demono servanta deponejoj super la "Git" protokolo. Tio estas komuna elekto por rapida, unauthenticated aliro al via Git datumoj. Memoru ke ekde ĝi estas ne aŭtentikigita servo, ion vi servi super tiu protokolo estas publika ene lia reto.
Se vi uzas ĉi en servanto ekster via fajroŝirmilo, ĝi devus nur esti uzita por projektoj kiuj estas publike videbla por la mondo. Se la servilo vi uzas ĝin estas en via fajroŝirmilo, vi povus uzi ĝin por projektoj ke granda nombro da personoj aŭ komputiloj (kontinua integriĝo aŭ kreas serviloj) legis-nur aliro al, kiam vi ne volas havi aldoni SSH klavon por ĉiu.
En ajna kazo, la Git protokolo estas relative facila agordi. Esence, Vi devas kuri ĉi komando en daemonized maniero:
 $ Git demono --reuseaddr --base-vojo = / opt / git / / opt / git / 
--reuseaddr permesas la servilo rekomenci sen atendi malnovaj rilatoj al tempo el la --base-path opcio ebligas homojn kloni projektoj sen specifi la tuta vojo, kaj la vojo fine rakontas la Git-demono kie serĉi deponejoj eksporti. Se vi uzas fajroŝirmilo, vi ankaŭ bezonos trui truon en ĝi ĉe haveno 9418 sur la skatolo vi opcio ĉi supre sur.
Vi povas daemonize tiu procezo kelkaj manieroj, depende de la mastruma sistemo vi uzas. Sur Ubuntu maŝino, vi povas uzi Upstart skripto. Do, en la sekvaj dosieron
 /etc/init/local-git-daemon.conf 
vi metis tiun skripton:
 start on startup
stop on shutdown
exec /usr/bin/git daemon \
 --user=git --group=git \
 --reuseaddr \
 --base-path=/opt/git/ \
 /opt/git/
respawn 
Por sekureco, ĝi estas forte instigita havas ĉi demono kuri kiel uzanto kun nurlega permesojn al la deponejoj - vi povas facile fari tion per kreado de nova uzanto git-ro kaj kurante la demono kiel ili. Pro simpleco ni simple ruli ĝin kiel la sama git uzanto ke git-shell kuras kiel.
Kiam vi restartigu vian komputilon, via Git demono komencos aŭtomate kaj Respawn se ĝi iras malsupren. Akiri ĝin kurante sen devi restartu, vi povas kuri ĉi:
  $ Initctl komenci local -git-demono 
Sur aliaj sistemoj, vi povas deziri uzi xinetd , skripto en via sysvinit sistemo, aŭ io alia - tiel longe kiel vi havas tiun komandon daemonized kaj rigardis iel.
Sekva, vi devas diri al Git kiu deponejoj permesi unauthenticated Git servilo-bazita aliro al. Vi povas fari tion en ĉiu deponejo kreante dosieron nomita git-daemon-export-ok .
  $ cd /path/to/project.git
 $ Tuŝo git-demono-eksporto-ok 
La ĉeesto de tiu dosiero diras Git ke ĝi estas BONE servi tiun projekton sen aŭtentokontrolo.

4.4 Git sur la servilo - Konfigurante la Servilo

4.4 Git sur la servilo - Konfigurante la Servilo (

Setting U)

Ni marŝas tra la starigadon SSH aliro sur la servilo flanko. En ĉi tiu ekzemplo, vi uzos la authorized_keys metodo por aŭtentikigi viaj uzantoj. Ni ankaŭ supozu, ke vi uzas norman Linukso distribuo kiel Ubuntu. Unue, oni kreas git uzanto kaj .ssh dosierujo por ke uzanto.
  $ Ŝvitas adduser git
 $ Su git
 $ cd
$    mkdir .ssh && chmod 700 .ssh
 $ Tuŝi .ssh / authorized_keys && chmod 600 .ssh / authorized_keys 
Sekva, necesas aldoni iun ellaboranto SSH publikajn ŝlosilojn al la authorized_keys dosieron por la git uzanto. Ni supozu vi havas iuj fidindaj publikajn ŝlosilojn kaj savis ilin temporal dosierojn. Denove, la publikaj ŝlosiloj aspektas tiel:
  $ Cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair 
Vi nur postglui al la git uzanto authorized_keys dosieron en lia .ssh dosierujo:
  $ Cat /tmp/id_rsa.john.pub >> ~ / .ssh / authorized_keys
 $ Cat /tmp/id_rsa.josie.pub >> ~ / .ssh / authorized_keys
 $ Cat /tmp/id_rsa.jessica.pub >> ~ / .ssh / authorized_keys 
Nun, vi povas agordi malplena dosieraro por ili kuras git init kun la --bare eblo, kiu inicializa la deponejo sen laboranta dosierujo:
  $ cd / opt / git
 $ Mkdir project.git
 $ cd project.git
 $ Git init --bare
Initialized empty Git repository in /opt/git/project.git/ 
Tiam, Johano, Josie, aŭ Jessica povas puŝi la unua versio de lia projekto en tiu deponejo aldonante ĝin kiel fora kaj puŝante supren branĉo. Notu ke iu devas alkanonadi sur la maŝino kaj krei nudajn enciklopedio ĉiufoje vi volas aldoni projekton. Ni uzu gitserver kiel la gastignomon de la servilo sur kiu vi instalis vian git uzanto kaj deponejo. Se vi uzas gxin interne, kaj vi agordi DNS por gitserver atentigi al tiu servilo, tiam vi povas uzi la komandojn preskaux kiel estas (supozante ke myproject estas ekzistanta projekto kun dosieroj en ĝi):
  # Johanon 's computer
 $  cd myproject
 $  git init
 $  git add .
 $  git commit -m ' komenca commit '
 $ Git fora aldonu origino git @ gitserver: /opt/git/project.git
 $ Git puŝo origino majstro 
Ĉe tiu punkto, la aliaj povas kloni ĝin kaj puŝi ŝanĝojn reen same facile:
  $ Git clone git @ gitserver: /opt/git/project.git
 $ cd projekto
 $ Vim README
 $ Git commit -AM 'fix for the README file'
 $ Git puŝo origino majstro 
Kun tiu metodo, vi povas rapide akiri legita / skribi Git servilon supren kaj kurante por plenmano de programistoj.
Notu ke nuntempe ĉiuj tiuj uzantoj povas ankaŭ eniri ankaŭ la servilan kaj akiri ŝelon kiel la git uzanto. Se vi volas limigi tion, vi devos ŝanĝi la ŝelon por io alia en la passwd dosiero.
Vi povas facile limigi la git uzanto nur faras Git aktivecoj kun limigita ŝelo ilo nomita git-shell kiu venas kun Git. Se vi povas tion kiel viaj git uzanto login shell, tiam la git uzanto povas havi normalan ŝelo aliro al via servilo. Uzi tiun, specifi git-shell anstataŭ bash aŭ csh por via uzanto salutnomo ŝelo. Fari tion, vi devas unue aldoni git-shell al /etc/shells se ĝi ne jam ekzistas:
  $ Cat / etc / shells # see if `git-shell` is already in there. If not... # see if `git-shell` is already in there. If not...
 $ Kio git-ŝelo # make sure git-shell is installed on your system.
 $ Ŝvitas vim / etc / shells # and add the path to git-shell from last command 
Nun vi povas redakti la ŝelon por uzanto uzante chsh <username> :
  $ Ŝvitas chsh git # and enter the path to git-shell, usually: /usr/bin/git-shell 
Nun la git uzanto povas nur uzi la SSH konekto puŝi kaj tiri Git deponejoj kaj ne povas alkanonadi sur la maŝino. Se vi provos, vi vidos salutnomon malakcepto tiel:
  $ Ssh git @ gitserver
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to gitserver closed. 
Nun Git reto komandoj daŭre funkcios ĝuste fajna sed la uzantoj ne povos akiri ŝelo. Kiel la eligo ŝtatoj, vi povas ankaŭ agordi dosierujo en la git uzanto hejmo dosierujo kiu customizes la git-shell ordonas iom. Ekzemple, vi povas limigi la Git ordonas ke la servilo akceptos aŭ vi povas personecigi la mesaĝon ke uzantoj vidi se ili provas SSH en tia. Kuri git help shell por pliaj informoj pri agordigo la ŝelo.

4.3 Git sur la servilo - Generante Via SSH Publika Ŝlosilo

4.3 Git sur la servilo - Generante Via SSH Publika Ŝlosilo

KE estanta dirita, multaj Git serviloj autenticar uzante SSH publikaj ŝlosiloj. Por havigi publika ŝlosilo, ĉiu uzanto en via sistemo devas generi unu se ili ne jam havas unu. Tiu procezo estas simila trans ĉiuj mastrumaj sistemoj. Unue, vi devus kontroli por certiĝi vi ne jam havas ŝlosilon. Defaŭlte, uzanto SSH klavoj estas stokitaj en tiu uzanto ~/.ssh dosierujo. Vi povas facile kontroli ĉu vi havas ŝlosilon jam irante al tiu dosierujo kaj printi la enhavo:
  $ cd ~ / .ssh
 $ ls
authorized_keys2 id_dsa known_hosts
config id_dsa.pub 
Vi serĉas paron de dosieroj nomis ion kiel id_dsaid_rsa kaj trafa dosieron kun .pub etendo. La .pub dosiero estas via publika ŝlosilo, kaj la alia dosiero estas via privata ŝlosilo. Se vi ne havas tiujn dosierojn (aŭ vi ne eĉ havas .ssh dosierujo), vi povas krei ilin per kurado programo nomata ssh-keygen , kiu estas provizita kun la SSH pakaĵon sur Linukso / Mac sistemoj kaj venas kun Git por Vindozo:
  $ Ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/schacon/.ssh/id_rsa):
Created directory '/home/schacon/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/schacon/.ssh/id_rsa.
Your public key has been saved in /home/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
d0:82:24:8e:d7:f1:bb:9b:33:53:96:93:49:da:9b:e3 schacon@mylaptop.local 
Unua konfirmas kie vi deziras savi la ŝlosilo ( .ssh/id_rsa ), kaj tiam ĝi demandas dufoje dum pasvorton, kiun vi povas lasi malplena se vi ne volas tajpi pasvorton kiam vi uzas la klavon.
Nun, ĉiu uzanto kiu faras ĉi devas sendi sian publikan ŝlosilon al vi aŭ al iu, kiu estas administrating la Git-servilo (supozante vi uzas SSH servilo agordo kiu postulas publikajn ŝlosilojn). Ĉiuj ili devas fari estas kopii la enhavon de la .pub dosieron kaj retpoŝtu ĝin. La publikaj ŝlosiloj aspektas tiel:
  $ Cat ~ / .ssh / id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSU
GPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3
Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XA
t3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/En
mZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbx
NrRFi9wrf+M7Q== schacon@mylaptop.local 
Por pli detala lernilo pri kreanta SSH ŝlosilo sur multoblaj operaciumoj, vidu la GitHub gvidas sur SSH klavoj ĉe https://help.github.com/articles/generating-ssh-keys .

4.2 Git sur la servilo - Uzante Git sur Servilo

4.2 Git sur la servilo - Uzante Git sur Servilo

Nun ni kovri starigante Git servo kuranta tiuj protokoloj sur via propra servilo.
noto
Tie ni estos montranta la komandojn kaj paŝoj bezonataj por fari bazan, simpligita instalaĵoj sur Linukso bazita servilo, kvankam ĝi estas ankaŭ ebla por kuri ĉi tiuj servoj en Mac aŭ Windows serviloj. Fakte starigante produktado servilo en via infrastrukturo certe kunportos diferencoj en sekureco mezuroj aŭ mastruma sistemo iloj, sed espereble ĉi donos vin la ĝenerala ideo de kio implikitaj.
Por komence starigita ajna Git servilo, vi devas eksporti ekzistantan deponejon en novan nudajn deponejo - deponejo kiu ne enhavas labordosierujon. Tio estas ĝenerale simpla fari. Por kloni via deponejo krei novan nudajn deponejo, vi kuras la clon komando kun la --bare opcion. Por konvencio, nudajn enciklopedio dosierujojn fini en .git , kiel tia:
  $ Git clone --bare my_project my_project.git
Cloning into bare repository 'my_project.git'...
done. 
Vi devus nun havas kopion de la Git dosierujo datumojn en via my_project.git dosierujo.
Tio estas proksimume ekvivalenta al iu kiel
  $ Kmp -Rf my_project / .git my_project.git 
Estas paro de malgrandaj diferencoj en la agordo-dosiero; sed por via celo, tio estas proksime al la sama afero. Ĝi prenas la Git-deponejo per sin, sen labori dosierujo, kaj kreas dosierujon specife por tio sole.

Metante la Senŝeligita Repository sur Servilo

Nun ke vi havas nudajn kopion de via deponejo, ĉiuj vi devas fari estas meti ĝin sur servilo kaj agordi vian protokoloj. Imagu ke vi jam instalis servilan nomita git.example.com ke vi havas SSH aliro al, kaj vi volas stoki tutan vian Git deponejoj sub la /srv/git dosierujo. Supozante ke /srv/git ekzistas sur tiu servilo, vi povas agordi vian novan enciklopedio kopiante viajn nudajn deponejo super:
  $ Scp -r my_project.git user@git.example.com: / SRV / git 
Ĉe tiu punkto, aliaj uzantoj, kiuj havas SSH aliro al la sama servilo kiu legas-aliro al la /srv/git dosierujo povas kloni via deponejo per kurado
  $ Git clone user@git.example.com: /srv/git/my_project.git 
Se uzanto SSHs en servilo kaj havas skribi aliro al la /srv/git/my_project.git dosierujo, ili ankaŭ aŭtomate havas puŝo aliro.
Git aŭtomate aldoni grupon skribpermeson al deponejo konvene se vi uzas git init komando kun la --shared opcion.
  $ Ssh user@git.example.com
 $ cd /srv/git/my_project.git
 $ Git init --bare --shared 
Vi vidos kiel facile estas preni Git-deponejo, krei nudajn versio kaj meti ĝin sur servilo al kiu vi kaj via kunlaborantoj havas SSH aliro. Nun vi pretas kunlabori en tiu projekto.
Estas grave noti, ke tiu estas laŭvorte ĉiuj vi bezonas fari por kuri utila Git servilo al kiu pluraj personoj havas aliron - simple aldonu SSH-able kontojn en servanto, kaj algluita nuda enciklopedio ie ke ĉiuj tiuj uzantoj legis kaj skribi aliro al. Vi estas preta iri - nenion alian bezonas.
En la venontaj sekcioj, vi vidos kiel ekspansiiĝi ​​al pli kompleksaj aranĝoj. Tiu diskuto inkludos ne devi krei uzanto kontoj por ĉiu uzanto, aldonante publika legado aliro al deponejoj, starigante retejo UIS kaj pli. Tamen, memoru ke por kunlabori kun paro de personoj en privata projekto, oni nur bezonas SSH servilo kaj nuda enciklopedio.

malgranda Muntaĵoj

Se vi estas malgranda kostumo aŭ jxus elprovanta Git en via organizo kaj havas nur kelkajn programistoj, aĵoj povas esti simpla por vi. Unu el la plej komplikitaj aspektoj de starigado de Git servilo estas uzanto mastrumado. Se vi volas iun deponejoj por legi nur al iuj uzantoj kaj legi / skribi al aliaj, aliro kaj permesoj povas esti iom pli malfacile aranĝi.

SSH Aliro

Se vi havas servilon kiu ĉiuj viaj ellaborantoj jam havas SSH aliro, estas ĝenerale facila starigi vian unuan enciklopedio tie, ĉar vi devos fari preskaŭ sen laboro (kiel ni kovris en la lasta sekcio). Se vi volas pli kompleksaj alirkontrolo tipo permesojn sur via deponejoj, vi povas pritrakti ilin kun la normala dosiersistemo permesojn de la mastruma sistemo de via servilo kuras.
Se vi volas meti vian deponejoj en servanto kiu ne havas kontojn por ĉiuj en via teamo, kiun vi volas havi registran rajton, tiam vi devas agordi SSH aliro por ili. Ni supozas ke se vi havas servilon kun kiu fari tion, vi jam havas SSH-servilo instalita kaj tiel estas kiel vi konsentas la servilo.
Estas kelkaj manieroj vi povas doni aliron al ĉiuj en via teamo. La unua estas starigi kontojn por ĉiuj, kiuj estas simpla sed povas esti maloportuna. Vi eble ne volas kuri adduser kaj starigis provizoran pasvortojn por ĉiu uzanto.
Dua metodo estas krei ununuran git uzanto sur la maŝino, petu cxiu uzanto kiu estas havi registran rajton sendi vin SSH publika ŝlosilo, kaj aldoni ke ŝlosilo al la ~/.ssh/authorized_keys dosiero de via nova git uzanto. En tiu momento, ĉiuj povos aliri tiun maŝinon tra la git uzanto. Tiu ne afekti la commit datumoj iamaniere - la SSH uzanto por konekti kiel ne tuŝas la interna vi registris.
Alia maniero fari tion estas havi vian SSH servilo Aŭtentigu el LDAP-servilo aŭ alian centralizita aŭtentikigado fonto ke vi jam starigis. Tiel longe kiel ĉiu uzanto povas akiri ŝelo aliro sur la maŝino, iu SSH autenticación mekanismo povas pensi devus labori.