Creare forum - 1 - Git

Ai un proiect pe care l-ai realizat în PHP? Doreşti să propui un proiect pe care să îl realizăm în cadrul comunităţii?

Moderatori: cristi, icsfails, Moderatori

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Creare forum - 1 - Git

Mesajde Amenthes » Mie Mar 24, 2010 5:16 pm

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.
Ultima oară modificat Vin Iun 18, 2010 9:50 am de către Amenthes, modificat de 2 ori în total.


I'm under construction | http://igstan.ro

Avatar utilizator
alexcpp
Average Member
Mesaje: 180
Membru din: Mar Dec 30, 2008 7:11 pm

Mesajde alexcpp » Mie Mar 24, 2010 5:22 pm

Gata am instalat Git-ul si am si executat codul ;).

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Mesajde Amenthes » Mie Mar 24, 2010 6:11 pm

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.
I'm under construction | http://igstan.ro

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Mesajde Amenthes » Joi Mar 25, 2010 12:54 pm

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/
I'm under construction | http://igstan.ro

Avatar utilizator
alexcpp
Average Member
Mesaje: 180
Membru din: Mar Dec 30, 2008 7:11 pm

Mesajde alexcpp » Joi Mar 25, 2010 1:37 pm

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.

Avatar utilizator
vectorialpx
Senior Member
Mesaje: 4832
Membru din: Mar Mar 01, 2005 9:48 am
Localitate: Bucuresti
Contact:

Mesajde vectorialpx » Joi Mar 25, 2010 1:48 pm

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

thelazydude
New Member
Mesaje: 2
Membru din: Mar Feb 23, 2010 9:39 am
Localitate: Timisoara
Contact:

Mesajde thelazydude » Mie Mar 31, 2010 3:13 am

Da-ti-mi si mie un PM cu id de mess.

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Mesajde Amenthes » Mie Mar 31, 2010 12:04 pm

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 :)
I'm under construction | http://igstan.ro

rudisoft
Average Member
Mesaje: 109
Membru din: Mar Feb 10, 2009 1:22 pm
Contact:

Mesajde rudisoft » Lun Apr 12, 2010 10:07 am

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?
Professional PSD/Image to XHTML/CSS services: Design2Code | Web Services | Android Developer

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Mesajde Amenthes » Lun Apr 12, 2010 1:22 pm

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.
I'm under construction | http://igstan.ro

lucian0308
Average Member
Mesaje: 68
Membru din: Mie Mai 19, 2010 2:34 am
Localitate: Bucuresti
Contact:

Mesajde lucian0308 » Vin Iun 18, 2010 12:22 pm

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

lucian0308
Average Member
Mesaje: 68
Membru din: Mie Mai 19, 2010 2:34 am
Localitate: Bucuresti
Contact:

Mesajde lucian0308 » Dum Iun 20, 2010 3:29 pm

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]

lucian0308
Average Member
Mesaje: 68
Membru din: Mie Mai 19, 2010 2:34 am
Localitate: Bucuresti
Contact:

Mesajde lucian0308 » Dum Iun 20, 2010 4:03 pm

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

Avatar utilizator
Amenthes
Senior Member
Mesaje: 1370
Membru din: Lun Dec 12, 2005 8:00 am
Contact:

Mesajde Amenthes » Dum Iun 20, 2010 4:14 pm

Eu pe Windows folosesc msysgit, mi se pare foarte ok.

http://code.google.com/p/msysgit/
I'm under construction | http://igstan.ro

lucian0308
Average Member
Mesaje: 68
Membru din: Mie Mai 19, 2010 2:34 am
Localitate: Bucuresti
Contact:

Mesajde lucian0308 » Dum Iun 20, 2010 6:05 pm

pai pala il am si eu dar ce versiune si cum il configurez


Înapoi la “Proiecte”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 21 vizitatori