Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc

Dostęp do repozytoriów git na repo.or.cz z neostrady

Od pewnego czasu, w swoich projektach,  porzucam Subversion na rzecz systemów DVSC takich jak Git, Mercurial czy Bazaar. Na świecie jest wiele projektów z publicznymi repozytoriami umieszczonymi ja takich serwisach jak GitHub, Google Code (od jakiegoś czasu supportuje Mercurial) i inne. W przypadku git jako klienta używam msysgit. Nie jest to jednak 100% port gita. Brakuje mu np. dostępu do repozytoriów za pośrednictwem protokołu https. Jednak istnieje branch, w którym dodana jest już ta możliwość. Repozytorium msysgit znajduje się tu http://repo.or.cz/r/msysgit.git i tu mamy problem. Okazuje się, że TPSA zablokowała jakikolwiek dostęp do domen “or.cz”. Na szczęście git potrafi korzystać z http proxy. Co należy zrobić ? Zakładamy ze znamy adres jakiegoś proxy spoza jurysdykcji TPSA (wystarczy poszukać na google). Do dzieła:

Tworzymy lokalne puste repozytorium git
mkdir msysgit
cd msysgit
git init

Initialized empty Git repository in c:/Projects.Other/msysgit/.git/

Wskazujemy zdalne repozytorium

git remote add origin http://repo.or.cz/r/msysgit.git

Definiujemy proxy

git config remote.origin.proxy "aaa.bbb.ccc.ddd:8080"

Pobieramy repozytorium

git fetch

 

Aktualizacja: 2009-07-19 21:58

Wykonane do tej pory kroki skopiowały nam tylko repozytorium. Aby móc pracować nad kodem należy stworzyć sobie “working copy”. I teraz jest kolejna pułapka. Jeżeli pracujemy nad kodem, który jest tworzony pod różnymi systemami, które mają różne końce linii to warto dać dla naszego lokalnego repozytorium takie ustawienie

git config core.autocrlf false

Teraz czas na stworzenie working copy. Jeżeli zamierzamy traktować nasze zdalne repozytorium jako główne to należy ustawić aby nasz branch master wskazywał na origin-a

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

Teraz juz wystarczy

git pull

 

Wersja uproszczona

Istnieje jednak prostsza metoda. Za pomocą zmiennej systemowej “http_proxy”.

export http_proxy=http://<username>:<password>@<proxy_ip>:<proxy_port>

Teraz juz wystarczy
git clone http://repo.or.cz/r/msysgit.git my_msysgit

I na wszelki wypadek aby po restarcie shella również działało.

git config remote.origin.proxy "aaa.bbb.ccc.ddd:8080"
Opublikowane 19 lipca 2009 18:30 przez rod
Filed under: ,

Komentarze:

19 lipca 2009 20:55 by mgrzeg

# re: Dostęp do repozytoriów git na repo.or.cz z neostrady

Widzialem kilka projektow hostowanych na Git-cie, Mercurialu, ale nie przygladalem sie jakos blizej szczegolom. Jakie widzisz zalety / wady w stosunku do subversion? Cos szczegolnego, na co warto zwrocic uwage?

19 lipca 2009 21:22 by rod

# re: Dostęp do repozytoriów git na repo.or.cz z neostrady

Oj temat rzeka.

Przede wszystkim zaleta rozproszonego systemu kontroli wersji. Przykład z życia wzięty.

Pracuje nad legacy projektem, który stoi na SVN. Niestety nikt tam nie zarządza kodem ... wszystko jest tylko jednym trunkiem a ja jestem tylko kontaktorem :). Można zapomnieć o tym że ktoś tam by mógł mieć pojecie co to merge i branch. Zatem wszystko leci do trunk zarówno aktualne poprawki jak kod nad którym się eksperymentuje. Jedyna szansa na wygodną pracę jest trzymanie lokalnych branches. Tak właśnie robię za pomocą git-svn. Svn/trunk jest dla mnie jako główne zdalne repozytorium a branches mam lokalnie po swojemu.

Inna zaleta tych systemów jest "rebase". Praktycznie mieszanie zmianami jak się tylko podoba jak np scalanie kilku commitow w jeden commit.

W swoich projektach wykorzystuje często vendor-branching .. czyli pisanie własnych patchy do cudzych bibliotek i potem utrzymywanie tych patchy wraz z aktualizacjami tych bibliotek. Da się to robić za pomocą svn-a ale zajmowało mi to godziny... samo zarządzanie zmiana. Teraz przy wykorzystaniu np git to jest czysta przyjemność.

Sa dostepne rowniez "shelves" tak jak w TFS. W Svn mozna niby robic to za pomocą patchy. Ale problem wowczas mamy kiedy jest zmiana nazwy pliku. Svn nie umie aplikowac patchy, które maja w sobie renaming

I przede wszystkim pełna praca offline czego nie da się uzyskać za pomoca TFS i Svn.

Dosyć łatwy hosting. Sporą cześć obowiązku ma na sobie tak naprawdę klient. W przypadku git po stronie serwera sa uruchamiane tylko git-upload-pack oraz git-receive-pack. Wystarczy mieć konto shell z ssh, jezeli nie ma gita to spróbować samemu skompilować i położyć lokalnie do np. ~/bin .. i juz można korzystać ze zdalnego repozytorium bez uprawnień roota. Do bazaar wystarczy nawet serwer ftp do skladowania repozytorium.

Fajna jest wersja pracy na "porucznika" :) Czyli wszystkie zmiany przechodza przez jedna osobę która ma prawa do zarzadzania głownym repozytoirum.

Sam przymierzałem się do DVCS od dłuższego czasu i podchodziłem do tego sceptycznie .... dopóki sam nie sprobowałem. To jest tak samo jak przy przejściu z CVS na SVN. Zrozumiesz jak sam spróbujesz :)

Polecam obejrzec to

http://www.gitcasts.com/posts/railsconf-git-talk

21 lipca 2009 10:27 by Procent

# re: Dostęp do repozytoriów git na repo.or.cz z neostrady

Jakbys mial czas i ochote rozwinac o to:

"Jedyna szansa na wygodną pracę jest trzymanie lokalnych branches. Tak właśnie robię za pomocą git-svn. Svn/trunk jest dla mnie jako główne zdalne repozytorium a branches mam lokalnie po swojemu."

nawet do postaci osobnej notki to bym bardzo chetnie poczytal :)

Komentarze anonimowe wyłączone