Pagina 1 din 2

Creare forum - 1 - Git

Scris: Mie Mar 24, 2010 5:16 pm
de Amenthes
Se pare ca in urma post-ului meu exista cel putin 3 persoane care ar dori
inceperea unui astfel de proiect. Pentru ca niciunul dintre ei nu a zis nimic, voi
face eu primul pas.

Dupa capul meu, primul pas ar fi setarea mediului de lucru, lucru care ar
cuprinde un editor text, engine-ul PHP si posibilitatea de a contribui cod catre
repository.

Un editor text si PHP-ul instalat cred ca le are toata lumea. Asa ca vreau sa
incepem cu setarea sistemului de versionare. Chestia asta e destul de opinionata,
pentru ca eu tin foarte mult sa folosim Git, unul dintre cele mai bune sisteme
de versionare la ora actuala. Asa ca, daca aveti ceva impotriva... veniti cu
argumente solide.

Eu am setat deja un repository provizoriu pe cont-ul meu de GitHub. GitHub
este un serviciu gratuit de hosting al repository-urilor Git. Ma rog, e gratuit
atata timp cat codul sursa e open-source.

http://github.com/igstan/forum

Deci, daca are cineva ceva impotriva Git, sa spuna acum :)

Pentru cei care vor sa instaleze Git si intimpina probleme, sa tipe in topicul asta.

Apropo. Pentru Windows exista msysgit, pentru Mac exista GitX, iar pentru Linux
de obicei exista ceva asemanator cu apt-get install git.

Pentru clonarea repository-ului va trebui sa executati in directorul in care
doriti voi:

Cod: Selectaţi tot

git clone git://github.com/igstan/forum.git


Comanda de mai sus va crea un director /forum care va contine 3 fisiere. Le
puteti vedea listate si la adresa asta: http://github.com/igstan/forum

Astept ceva feedback ca sa putem trece la pasul urmator.

Scris: Mie Mar 24, 2010 5:22 pm
de alexcpp
Gata am instalat Git-ul si am si executat codul ;).

Scris: Mie Mar 24, 2010 6:11 pm
de Amenthes
Deci... alexcpp s-a miscat chiar foarte repede. Eu am crezut ca ma ia peste
picior. Are deja repository la: http://github.com/alexcpp/forum

Asteptam si altii :)

O sa postez si discutia mea cu el din privat, s-ar putea sa fie de ajutor si
altora.

Scris: Joi Mar 25, 2010 12:54 pm
de Amenthes
A mai incercat cineva sa isi seteze un repository?

Apropo. Pentru cei care sunt incepatori intr-ale Git-ului, exista o carte gratuita
pe net, scrisa chiar de unul dintre dezvoltatorii GitHub: http://progit.org/book/

Scris: Joi Mar 25, 2010 1:37 pm
de alexcpp
Am cazut de acord impreuna cu Amenthes sa incepem de luni. Asa ca cine mai doreste sa spuna ca sa il putem ajuta cu git-ul.

Scris: Joi Mar 25, 2010 1:48 pm
de vectorialpx
sa vad cum fac rost de timp si, va anunt si eu
sa-mi dati si mie un PM cu un ID de mess sau alt cont IM

Scris: Mie Mar 31, 2010 3:13 am
de thelazydude
Da-ti-mi si mie un PM cu id de mess.

Scris: Mie Mar 31, 2010 12:04 pm
de Amenthes
E ceva gresit in toata treaba asta. Proiectul e despre un forum, insa vad ca
toata lumea incearca sa vorbeasca pe PM. Ma intreb de ce? Topicul asta ce
are? Postati aici daca aveti probleme sau nu intelegeti ceva. Nu prea mai avem
membri ai comunitatii care sa se ia de voi fara motiv. Au fost odata, dar au cam
disparut :)

Scris: Lun Apr 12, 2010 10:07 am
de rudisoft
Felicitări pentru proiect, este o idee grozavă.

Din păcate, lipsa timpului mă impiedică să pot face promisiuni în legătură cu implicarea activă, dar aș dori să urmăresc totuși proiectul, nu se știe niciodată...

Încerc să realizez primul pas, dar am probleme cu înțelegerea workflow-ului.
Probabil din cauză că sunt obișnuit cu SVN?
Am reușit să setez repository pe local, și să îl clonez pe cel de la http://github.com/igstan/forum, dar atât.
După cum am spus deja, timpul nu îmi permite să mă ocup cum ar trebui, dar din câte am înțeles depozitul de la http://github.com/igstan/forum este de fapt master sau echivalentul lui trunk din SVN, iar clona pe care o am eu pe local ca developer (echivalentul working-copy din SVN) este de fapt un branch local al depozitului master. Am înțeles bine până acum?

Am încercat să urmez exemplul lui alexcpp și am creat un depozit la adresa: http://github.com/rudisoft/forum.
Dar aici m-am împotmolit. Ce relație are acest depozit cu master-ul de la igstan și cu copia mea locală de pe hdd (și cu copia lui alexcpp)?

Care sunt pașii de urmat în continuare?

Scris: Lun Apr 12, 2010 1:22 pm
de Amenthes
rudisoft scrie:Felicitări pentru proiect, este o idee grozavă.

Din păcate, lipsa timpului mă impiedică să pot face promisiuni în legătură cu implicarea activă, dar aș dori să urmăresc totuși proiectul, nu se știe niciodată...

De problema timpului ma lovesc si eu.

rudisoft scrie:Încerc să realizez primul pas, dar am probleme cu înțelegerea workflow-ului.
Probabil din cauză că sunt obișnuit cu SVN?
Am reușit să setez repository pe local, și să îl clonez pe cel de la http://github.com/igstan/forum, dar atât.
După cum am spus deja, timpul nu îmi permite să mă ocup cum ar trebui, dar din câte am înțeles depozitul de la http://github.com/igstan/forum este de fapt master sau echivalentul lui trunk din SVN, iar clona pe care o am eu pe local ca developer (echivalentul working-copy din SVN) este de fapt un branch local al depozitului master. Am înțeles bine până acum?

Am încercat să urmez exemplul lui alexcpp și am creat un depozit la adresa: http://github.com/rudisoft/forum.
Dar aici m-am împotmolit. Ce relație are acest depozit cu master-ul de la igstan și cu copia mea locală de pe hdd (și cu copia lui alexcpp)?

Care sunt pașii de urmat în continuare?


In Git nu exista un repository master decat prin conventie. De obicei este
repository-ul celui care a inceput proiectul, insa poate fi apoi migrat catre
altul. Toate sunt insa egale pentru ca sunt clone reciproce. Spre examplu,
repo-ul meu local este clona repo-ului de pe GitHub, iar daca cel local se
corupe cumva, pot oricand sa il reclonez pe cel de pe GitHub si totul e ok.
Mai putin daca am avut cumva branch-uri locale nesincronizate cu GitHub.

Pentru mine, repo-ul de pe GitHub este originea, insa pot sa imi aduc si alte
repo-uri cu care sa ma sincronizez, cum ar fi cel al lui alexcpp. Atunci in loc
sa fac:

git pull origin master

pot face

git pull alexcpp master

unde repo-ul alexcpp a fost definit asa:

git remote add alexcpp git://github.com/alexcpp/forum.git

In felul asta pot sa imi sincronizez repo-ul local direct cu repo-ul lui de pe
GitHub, fara sa mai treaca prin repo-ul meu de pe GitHub.

Cel mai usor pentru tine ar fi sa faci fork la repo-ul meu de pe GitHub. Exista
un buton de fork pe: http://github.com/igstan/forum

Dupa fork, iti clonezi repo-ul local:

git clone git@github.com:rudisoft/forum.git

operatiunea asta iti va defini repo-ul origin ca fiind: git@github.com:rudisoft/forum.git

Acum poti sa modifici cod, iar cand simti ca e ok, sau cand vrei tu, il pui pe
GitHub:

git push origin master // trimiti doar codul de pe branch-ul master

In momentul asta, eu vreau modificarile tale, iar pentru asta imi definesc
un alt repo remote:

git remote add rudisoft git://github.com/rudisoft/forum.git

Dupa care pot prelua cod de la tine:

git pull rudisoft master // sincronizez master-ul meu cu al tau

Ultima operatiune e foarte posibil sa dea conflicte, dar na, de-asta exista
sisteme de versionare.

Acum, mie imi place ca pe master sa am doar cod production ready, iar
codul care se afla inca in dezvoltare doar in branch-uri derivate din master.
Astea se numesc branch-uri topic, pentru ca abordeaza un singur topic in
principiu. Am de reparat un bug, imi creez un branch doar pentru repararea
acelui bug:

git checkout -b bug-001 master

-b inseamna "creaza branch", checkout inseamna schimba branch.
bug-001 este numele noului branch, care este derivat din master.

git branch iti va lista branch-urile, cel curent este prefixat de un asterisc (*)

Ok, acum pot modifica cod si repara bug-ul. Eventual, daca e ceva mai
complicat, pot trimite noul branch pe GitHub, pentru sharing eventual.

git push origin bug-001

La final, dupa ce sunt gata cu reparatul, pot sa fac merge intre branch-ul
bug-001 si master:

git checkout master
git merge bug-001

In momentul asta pot sa imi updatez si branch-ul master remote:

git push origin master.

Cam asta ar fi workflow-ul in mare. Oricum, sa stii ca spre deosebire de SVN,
care nu are decat conceptul de commit, Git (ca si alte sisteme distribuite) are
doua concepte: commit si push.

Commit-ul il faci din working tree in repo-ul tau local, apoi push faci dinspre
repo-ul local inspre altul remote.

Un alt lucru fain la Git este ca inainte sa faci commit, trebuie sa faci staging
la ceea ce vrei sa faci commit. Lucrul asta iti permite sa faci commit la nivel
de linie de cod, sau doar la cateva fisiere, chiar daca tu ai modificat mai multe.

Daca descarci o interfata grafica o sa intelegi mai bine lucrul asta. La nivel
de linie de comanda, lucrurile ar sta cam asa:

1. modific cod in 2 fisiere: foo.php si bar.php
2. verific ce fisiere am modificat:

git status

3. fac stage doar la foo.php

git add foo.php

4. commit (doar la ceea ce am facut stage)

git commit -m 'Am modificat foo.php'

5. fac stage si la al doilea fisier

git add bar.php

6. commit

git commit -m 'Am modificat bar.php'

7. acum pot eventual sa fac push

git push origin master // sau orice alt branch



Ok... acum ma intorc la treburile de la birou. Sper sa imi fac timp saptamana
asta si pentru proiectul asta.

Scris: Vin Iun 18, 2010 12:22 pm
de lucian0308
am facut si eu http://github.com/lucian0308/FoRo

o sa-l fac oop dupa cel principal

o sa imi ia ceva sa invat git

Scris: Dum Iun 20, 2010 3:29 pm
de lucian0308
pt cei care nu stiu inca git asa ca mine
puteti folosi svn
http://github.com/blog/644-subversion-write-support

https://svn.github.com/[user]/[repository]

Scris: Dum Iun 20, 2010 4:03 pm
de lucian0308
si normal mi-am prins urechile

git e mai mult pentru cei care folosesc linux

niste instructiuni de instalare pentru windows
unde gasesc si eu

Scris: Dum Iun 20, 2010 4:14 pm
de Amenthes
Eu pe Windows folosesc msysgit, mi se pare foarte ok.

http://code.google.com/p/msysgit/

Scris: Dum Iun 20, 2010 6:05 pm
de lucian0308
pai pala il am si eu dar ce versiune si cum il configurez