webForumDet fria alternativet

3 personer i samma projekt - är SVN en bra lösning?

Webbutveckling

14 svar · 2 308 visningar · startad av MickeA.com

Medlem sedan feb. 20034 441 inlägg
Frågan#1

Tjena hej!

Jag håller på med ett projekt i PHP/MySQL där vi nu tagit in 2 utvecklare till och tanken är att vi ska jobba alla tre (eller iaf. två av oss) med vidareutvecklig. Jag har aldrig "delat" projekt med någon så vet inte riktigt hur jag ska lösa det här. I nuläget har jag ett program för att synka en lokal katalog med en server via FTP. Men när vi blir fler som ska jobba i samma projekt håller inte det längre.

Har därför börjat kolla på SVN. Någon som har erfarenhet av det? Vi har en VPS hos Linode där jag har rootaccess och kan därför göra vad jag vill. Den här har jag hittat:
http://www.howtoforge.com/debian_subversion_websvn

Planen är alltså att jag sätter upp en SVN-server, sen har vi tre varsin kopia av projektet lokalt där vi kan jobba. Sen kan t.ex. jag som har Windows använda TortoiseSVN och de som sitter med Unix kan använda något annat.

Fungerar det så? Kommer våra 3 "versioner" att slås ihop så att slutversionen "stämmer"?

Tanken är ju inte direkt att sitta i samma filer jämt utan vi kommer dela upp projektet och jobba i varsin del, men det kan ju hända att man gör en snabb ändring någonstans och det blir svårt att hålla reda på manuellt.

Det finns så sjukt mycket information om det här på nätet - jag vet, men vet inte var jag ska börja läsa så om någon mer erfarenhet kunde putta mig i rätt riktigt vore jag glad.

Tack!

Medlem sedan juni 20019 519 inlägg
#2

Jag hade kanske använt mig av git istället, men saken är densamma, om ni har jobbat i samma fil och SVN eller git inte kan köra en merge på det utan att man få en konflikt så få du manuellt säga hur slut filen skall se ut.

Medlem sedan apr. 20007 588 inlägg
#3

MickeA.com skrev:

3 personer i samma projekt - är SVN en bra lösning?

Ja, synnerligen.

Fungerar det så? Kommer våra 3 "versioner" att slås ihop så att slutversionen "stämmer"?

Ja, i stort sett. Ni har alla tre lokala utcheckade kopior av filerna, när en ändring gjorts i en fil så checkar utvecklaren in det i versionshanteringssystemet (gör en "commit"). Har någon annan redan "commitat" en ändring så blir det en konflikt - en nyare version av filen finns i SVN än den som utvecklaren har uppdaterat - och då får man slå ihop versionerna ("merge"). Denna merge-operation finns det verktygsstöd för som gör det enkelt.

Det finns så sjukt mycket information om det här på nätet - jag vet, men vet inte var jag ska börja läsa så om någon mer erfarenhet kunde putta mig i rätt riktigt vore jag glad.

SVN-communityns egen bok om SVN hittar du här: http://svnbook.red-bean.com/

Medlem sedan feb. 20002 300 inlägg
#4

Jag kan rekommendera Mercurial som liksom git är ett distribuerat VCS.

Jag gillar verkligen att kunna göra en "pull" från mitt main-repository, kunna arbeta lokalt och göra commits så ofta jag vill och samtidigt dra ner eventuella förändringar från "main" utan att mina commits faktiskt förändrar main. När jag känner mig redo att låta andra ta del av mitt arbete så kör jag en "push" upp till main igen.

Joel Spolsky har en rätt bra guide för Mercurial: http://hginit.com/

Medlem sedan nov. 20041 740 inlägg
#5

Välj hellre Git eller Mercurial istället för SVN. De gånger ni jobbar med samma filer eller behöver sitta i olika brancher är det betydligt smidigare än SVN. Dessutom är ni inte beroende av en SVN-server.

Medlem sedan feb. 20034 441 inlägg
#6

Tack för alla tips. Har läst på lite om Mercurial och det ser klockrent ut. Ska testa att installera servermjukvaran nu och göra lite tester.

Medlem sedan mars 20007 896 inlägg
#7

Om ni arbetar i IDEs som Eclipse eller Visual Studio skulle jag göra mer research och tester av versionshanteringssystemet i utvecklingsmiljön innan jag bestämmer mig för ett. Både Eclipse och Visual Studio har native-stöd för Subversion, medan man måste använda plugins för Git och Mercurial. De gånger jag har tittat på Eclipse+Git (EGit och JGit) har det tyvärr inte fungerat optimalt, och jag har haft vissa problem fram och tillbaka. Det har alltid slutat med att jag faller tillbaka till Subversion, där det fungerar ypperligt (plus att jag kan använda mina färdiga hooks som packar/optimerar JavaScript och CSS, slår ihop filter och deployar till test- eller produktionsmiljö automagiskt).

Det var dock ett tag sedan jag försökte mig på att använda Git från t.ex. Eclipse (EGit), och det har antagligen utvecklats en hel del sen dess. Om dom fungerar för er är dom verkligen att föredra över SVN, då just decentralisering av repon är en trevlig funktion. Plus att dom båda två är sjukt snabba vid större repon.

Medlem sedan feb. 20034 441 inlägg
#8

Jag blir helt snurrig, har läst igenom den här artikel 10ggr nu utan att förstå särskilt mycket alls:
http://www.chenit.com.au/blog/setup-mercurial-1-31-on-debian-5-with-apache/

Jag är inte med alls på hur kopplingar fungerar mellan själva projektet och repon. Dist är debian 6 och webbservern Apache. Jag sitter på Windows med Apache och ska göra ändringar. Hur kommer dessa ändringar upp på servern sen? Är det vad TortoiseHG gör? Är inte med alls....

Någon som kan förklara grunden? I de få guider jag hittar är det bara massa kommandon och sånt som jag inte riktigt förstår.

Medlem sedan feb. 20034 441 inlägg
#9

Nu har jag efter rekommendation valt att kolla mer på GIT istället för HG, men precis samma sak jag förstår inte alls:

  • Var i en repo anger man var filerna ska ligga på servern?
  • Hur lägger man till olika användare? (I mitt fall är vi 2st, jag på Windows som klient och den andra vet jag faktist inte)

Finns det något som kan förklara på ett sätt så att även jag förstår det här? Alla guider liknar mer eller mindre varandra (såklart) men det står ingenstans hur själva repon har någon koppling till det ställe på servern där filerna ligger. I mitt fall är webbrooten /var/www/domain/public_html men det framgår aldrig hur den kopplingen ser ut. Bara massa länkar och annat jox mellan min klient och repot man skapat på servern.

Medlem sedan feb. 20034 441 inlägg
#10

Nu har jag kommit lite framåt...
Jag hittade msysgit för Windows och har skapat ett repo på servern. Har lyckats ansluta till servern och logga in som min användare (som heter "git"). Provade att göra en commit/push med hjälp av msysgit och det står "Success" men filen finns inte någonstans på servern.

Förstår inte vad som är fel eller vad jag ska göra... Finns det någon (självklart mot betalning) kan hjälpa oss att komma igång med det här? Kan snart inte lägga mer tid på att sitta och gissa mig fram.

Medlem sedan maj 20012 237 inlägg
#11

Har ni satt up en egen git-repository?

Persoligen skulle jag investera i ett konto hos github. Bekvämt och enkelt att komma igång. Vi kör med git och github på jobbet i alla nya projekt. Vi övergav svn förra året.

Medlem sedan juni 20019 519 inlägg
#12

Om ni vill ha en gratis privat (max 5 pers) så kan ni köra på: https://bitbucket.org finns en 101 guide på hur man sätter upp det.

Medlem sedan feb. 20034 441 inlägg
#13

GitHub ser ju enkelt och bekvämt ut. Men nu har vi en egen VPS hos Linode där alla filer ska ligga, den biten förstår jag ingenting av... Kan jag har mitt repository hos GitHub men hosta alla filer själv?

Medlem sedan feb. 20034 441 inlägg
#14

Nu tror jag mig (äntligen) ha kommit igång. Såhär har jag gjort:

  • Skapat ett repo lokalt på datorn med git init i den aktuella mappen.
  • Skapat ett repo på BitBucket.org och sedan kört git clone git@bitbucket:[USERNAME]/Repo inuti min lokala mapp på klienten.
  • Kört git add . för att inkludera alla filer (filerna finns sedan tidigare).
  • git commit -m "Kommentar" för att göra en commit.
  • git push <repo> master för att skjuta upp ev. ändringar till BitBucket.org
  • På servern (hos Linode) har jag genomfört steg 1 och 2.
  • Till sist körde jag git pull för att suga ner förändringar från BitBucket till servern.

Självklart har jag sedan tidigare konfigurerat användare, ssh-keys osv. på både klienten och på servern, så att inloggning och autentisering sker. Testade att göra en ändring på klienten och sen körde git add, git commit samt git push på klienten och sen git pull på servern och ändringarna kom upp.

Vad som återstår nu är att bjuda in den andra utvecklaren och se hur våra ev. ändringar "mergas".

Är det rätt som jag gjort, eller finns det bättre sätt?

En sak som är konstig är att i mappen på servern (/var/www/domain/public_html) ligger det ytterligare en mapp med samma namn som mitt repo. Inuti den mappen ligger det också en uppsättning av samma filer. Dessa filer och mappen .git ligger också i /var/www/domain/public_html. Misstänker att jag gjort något fel där...

Medlem sedan feb. 20034 441 inlägg
#15

Tja!

Nu har jag kört GIT sen jag startade den här tråden och det lirar sjukt bra. Efter en uppdatering av GIT Bash, får jag följande meddelande varje gång jag kör push på mitt repo:

warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

Vilken av dom ska man "välja"?

Kan det bli några problem om jag hittills kört med den gamla varianten, och byter till "simple"?

Tack!

262 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)