Cum să trageți un depozit git pe ubuntu fără conexiune la internet?

Vreau să folosesc Git prin rețeaua locală a companiei noastre, deoarece nu am acces la internet în computerul meu. Prietenul meu are o conexiune la internet și o mașină ubuntu, a împins niște coduri sursă în Git și trebuie să le trag fără conexiune la internet și folosesc și ubuntu 14.04. În plus, am configurat un depozit cu comanda:

git init --bare

EDIT: Ambele mașini sunt ubuntu, scuze pentru neînțelegere.


person sosa    schedule 02.10.2014    source sursă
comment
posibil duplicat al echivalentul git al „hg serve”?   -  person Jean-Karim Bockstael    schedule 02.10.2014
comment
Posibil relevant: stackoverflow.com/q/11792671 folosind git-bundle pentru a copia depozitul. pagina de manual pentru git-bundle și stackoverflow.com/a/3639182 arată cum să sincronizezi mai târziu, dacă este necesar.   -  person Hasturkun    schedule 02.10.2014
comment
@Hasturkun este posibil să utilizați pachetul git fără a utiliza sneakernet   -  person sosa    schedule 14.10.2014
comment
@sosa: Scopul principal al acestuia este de a permite transferurile offline. Ai putea de ex. creați un pachet, puneți-l într-un loc accesibil (de exemplu, descărcarea pachetului extern pe o unitate flash) și importați-l. Ai nevoie de o modalitate de a duce pachetul la destinație. Dacă ambele mașini sunt online în aceeași rețea, puteți utiliza git clone peste ssh sau rsync și să omiteți toate acestea.   -  person Hasturkun    schedule 14.10.2014


Răspunsuri (4)


Cereți prietenului dvs. să creeze o partajare Windows pentru depozitul git.

Asigurați-vă că ați instalat

apt-get install cifs-utils

creați un director de montare

$ mkdir ~/my_friends_repo

montați partajarea la distanță folosind

$ sudo mount -t cifs -o username=USERNAME,password=PASSWORD \
      //your_friends_ip_or_computer_name/NAME_OF_SHARE ~/my_friends_repo

Acum puteți fie să-l clonați

git clone ~/my_friends_repo my_friends_repo_clone

sau adăugați-l la depozitul dvs. existent ca un alt depozit la distanță și extrageți modificările acestuia

git remote add my_friends_repo ~/my_friends_repo
git pull my_friends_repo master
person René Link    schedule 02.10.2014
comment
Am adăugat și un alt răspuns care ar putea fi mai simplu stackoverflow.com/a/26159184/974186 - person René Link; 02.10.2014

Pe lângă răspunsul meu anterior...

Prietenul tău poate folosi git daemon pe mașina lui Windows pentru a exporta depozitul

Pe mașina Windows, faceți acest lucru în git bash

git daemon --export-all --reuseaddr --verbose --enable=receive-pack --base-path=PATH_TO_THE_REPOSITORY

Pe mașina dvs. ubuntu puteți decât să clonați depozitul

git clone git://your_friends_ip_or_computer_name REPO_CLONE_NAME

sau adăugați-l la depozitul dvs. existent ca un alt depozit la distanță și extrageți modificările acestuia

git remote add my_friends_repo  git://your_friends_ip_or_computer_name
git pull my_friends_repo master


touch git-daemon-export-ok
person René Link    schedule 02.10.2014

Bazele

Un depozit git nu este mult mai mult decât o cutie. Puteți introduce codul în el (commit), puteți trimite o copie a conținutului într-o altă casetă (la distanță) (push) și puteți prelua conținutul dintr-o altă casetă în propria casetă (pull).

Dacă prietenul tău și-a împins conținutul într-o casetă de pe internet (cum ar fi github) și nu poți accesa acea locație de la gazda ta, această casetă nu este utilă în cazul tău.

Aveți câteva opțiuni:

  • Trageți direct din depozitul prietenilor dvs. („Cutia” pe care o împingea în github.)
  • Cereți-i să-și împingă direct depozitul către gazda dvs.
  • Configurați un depozit undeva în rețeaua dvs. (În acest caz, el poate împinge în acel depozit și apoi puteți trage din el.)

Soluție folosind un depozit intermediar

Pe măsură ce utilizați ubuntu care vine deja cu ssh, poate cea mai ușoară soluție este să configurați un nou utilizator pe caseta dvs. și să creați un depozit simplu acolo. Apoi aveți un loc de unde să trageți de la un prieten pe care îl poate folosi acel utilizator pentru a trimite către acel depozit.

Puteți face asta astfel:

sudo useradd -m gituser                     # create user
sudo -iu gituser git init --bare reponame   # create repository
sudo passwd gituser                         # set password for user

Ulterior, prietenul tău poate apăsa la el folosind git push gituser@yourhost/reponame. Și puteți obține conținutul împins cu git clone gituser@yourhost/reponame.

Soluție folosind git-daemon

O altă modalitate este să utilizați git-daemon pe prietenii tăi găzduiesc pentru a-și servi depozitul. În acest caz, puteți trage direct de la gazda lui. Pe windows tip:

git daemon --base-path=PATH --export-all

unde "PATH" este directorul local care conține depozitul. Pe ubuntu puteți accesa acel depozit folosind

git clone git://friendshost/reponame

unde „friendshost” este numele gazdei prietenilor tăi, iar „reponame” este numele directorului care conține depozitul. De exemplu, dacă depozitul este localizat la „C:\some\dir\repo”, atunci „C:\some\dir” este PATH și „repo” este numele de depozit.)

person michas    schedule 02.10.2014

Aceasta depinde de locul în care prietenul tău își are depozitul git.

Puteți specifica locația originilor de la distanță în fișierul .gitconfig. Consultați acest link pentru mai multe detalii.

person aairey    schedule 02.10.2014