Dela projekt över internet? Arbeta flera samtidigt :=)

Permalänk
Medlem

Dela projekt över internet? Arbeta flera samtidigt :=)

Hej.

Jag och en kamrat hobbyprogrammerar på fritiden och har ett par små projekt på gång.
Vi jobbar dock på distans och vill kunna dela projektdata med varandra på ett smidigare sätt.

Det handlar inte om stora filer. Kod, lätt grafik och små ljudsnuttar.
Men, det är inte hållbart att .rara-ner allt gång på gång på gång och skicka över Dropbox/Skype eller liknande.
Vi måste kunna jobba "i samma mapp över internet"-typ. Förstår ni vad jag menar? Typ, slänga ihop en
filserver eller något av gamla datordelar?

Hur gör stora mjukvaruföretag och spelutvecklare för att jobba på samma projekt samtidigt?
Känns som att detta borde vara ett vanligt problem som dyker upp för nybörjare

Visa signatur

Chassi - Cooler Master HAF XB || CPU: - i7 3770K @4,5Ghz || PSU: - TXFX P1-750B-NLG9 XXX 750W
RAM - 4x Corsair vengeance 4096MB CL 9 1600Mhz LP || Mobo - ASUS P8Z77-V S-1155

Permalänk

Dropbox borde ju fungera utmärkt Dela mapp där bara så är de klart

Visa signatur

Intel I5 7600K @ 4.8Ghz undervolt, Hyper 212 Evo | 16GB ddr4 | Kingston m2 1TB | Msi 1060 6GB

Legion 5 Pro: Intel 12500H | 16GB ram | Samsung 980 Pro 1TB | RTX 3060 mobile

Permalänk
Medlem

Git är väl precis detta..

Till exempel https://github.com

Permalänk

Dropbox, Google Drive, Sparkleshare och andra fungerar bra så länge flera personer inte behöver arbeta i samma fil samtidigt. I dessa fall funkar det bättre med verktyg som begriper sig på informationen som ska hanteras. För källkod finns en drös tjänster, med Github i spetsen, för text funkar Google Docs eller MS Office-motsvarigheten bra.

Permalänk
Medlem

Vi har kikat på dem, men tanken är att slänga ihop något själva och inte vara beroende av "molntjänster".
Dropbox fungerade sådär, still lite mekkit dock.

Visa signatur

Chassi - Cooler Master HAF XB || CPU: - i7 3770K @4,5Ghz || PSU: - TXFX P1-750B-NLG9 XXX 750W
RAM - 4x Corsair vengeance 4096MB CL 9 1600Mhz LP || Mobo - ASUS P8Z77-V S-1155

Permalänk

Såå, git mellan er båda, då?

Permalänk
Inaktiv

Lägg genast ner den dåliga arbetsmetoden att inte versionshantera filer på ett bra sätt! Att arbeta ensam utan versionshantering är i princip omöjligt om man gör något större, blir man en till ja då gäller det allt att prioritera att börja få någon ordning.

Jag själv skulle ha skapat en Team Foundation Server (TFS ) maskin som jag själv hostar, men för hobbybruk så tror jag Git som rekommenderas är alldeles utmärkt. OBS att jag inte på något sätt påstår att Git är sämre, bara det att Microsoft TFS är lite omständligare och dyrare att komma igång med.

Skrivet av malte:

Git är väl precis detta..

Till exempel https://github.com

Ja Git är riktigt bra!

Permalänk
Medlem

Skall kika på github!
Fungerar det med andra filer än kod? Ex, grafik och ljudfiler (typ Audacity, gmip, blender osv...).

Visa signatur

Chassi - Cooler Master HAF XB || CPU: - i7 3770K @4,5Ghz || PSU: - TXFX P1-750B-NLG9 XXX 750W
RAM - 4x Corsair vengeance 4096MB CL 9 1600Mhz LP || Mobo - ASUS P8Z77-V S-1155

Permalänk
Inaktiv
Skrivet av defifisk:

Skall kika på github!
Fungerar det med andra filer än kod? Ex, grafik och ljudfiler (typ Audacity, gmip, blender osv...).

Nu har jag inte använt Git så mycket, men det går att versionshantera precis alla filer och det finns en massa inställningar man kan göra som vilka filer som automatisk ska läggas till som förslag för incheckning m.m.
Det man ska tänka på är dock hur man versionshanterar filerför att det inte ska ta för mycket plats eller ta för mycket tid/datorkraft.
T.ex. för ällkodsfiler vill man kunna se varenda ändring, en film på 10GB vill man nödvändigtvis inte kunna återskapa varenda ny incheckning på. Nu är det smarta algoritmer som ser vad skillnaden är och bara sparar denna, men stora binär-filer slukar snabbt hd.

Permalänk
Medlem

Skall läsa på om github, verkar finns gott om videomaterial på youtube.

Förutom kod, alltså för de relativt större filerna vill vi gärna sätta ihop en egen server, för att lära oss hur man gör.
Finns det något bra program för nybörjare? De är inte lika viktigt att den grafiska delen är "senaste update/ändrig".

Man får ju börja någonstans. Bara något vi båda kan ansluta till på distans. Typ som en egen dropbox.

Visa signatur

Chassi - Cooler Master HAF XB || CPU: - i7 3770K @4,5Ghz || PSU: - TXFX P1-750B-NLG9 XXX 750W
RAM - 4x Corsair vengeance 4096MB CL 9 1600Mhz LP || Mobo - ASUS P8Z77-V S-1155

Permalänk
Skrivet av defifisk:

Skall läsa på om github, verkar finns gott om videomaterial på youtube.

Github är en onlinetjänst för att lagra filer som versionshanteras av git. Om ni inte vill lagra er kod hos någon tredje part rekommenderar jag att ni bara kör git mellan varandra.

Citat:

Man får ju börja någonstans. Bara något vi båda kan ansluta till på distans. Typ som en egen dropbox.

Git är decentraliserat och kräver ingen traditionell server. Däremot kan det vara elegant att ha en "fast punkt i tillvaron", en uppsättning av de filer ni behöver versionshantera som ni bägge synkroniserar mot. Dokumentation för git finns det gott om.

Permalänk
Medlem

Ett alternativ till Github är www.bitbucket.org som kostar gratis så länge ni inte är för många. Använder det själv och är nöjd.

Permalänk
Hedersmedlem
Skrivet av vargylet:

Ett alternativ till Github är www.bitbucket.org som kostar gratis så länge ni inte är för många. Använder det själv och är nöjd.

Kan nämnas att Bitbucket till skillnad från Github stöder både Git som redan nämnts och Mercurial som är ett snarlikt projekt. Vilket system man väljer handlar mycket om tycke och smak i mina ögon (eller ja, att just Github blivit så stort är en anledning till att Git ofta "vinner" per default idag).

Jag minns en SweClockers-tråd från 2013 med mer eller mindre samma inriktning, där jag skrev en längre utläggning om samarbetesprojekt. Innehållet verkar väl funka hyfsat även i denna tråd (inte minst gällande din fråga hur stora företag gör), så för att effektivisera så citerar jag mig själv hellre än att skriver samma sak en gång till :

Skrivet av phz:

Det låter som att det är ett rätt litet projekt med bara ett par medverkande, men du frågade efter hur större projekt löser det, så jag utgår ifrån det nedan. Vissa delar kan ses som irrelevanta, eller åtminstone mindre viktiga, i ett litet hobbyprojekt.

Detta är som alla förstår ett extremt vanligt problem som uppkommit otaliga gånger i historien: hur samarbetar man med koden? Lösningen som programmerare tagit fram heter versionshantering, som nämnts ovan.

Distribuerade versionshanteringssystem så som Git/Mercurial är rätt vedertagna för utveckling idag, och jag vet egentligen inget projekt som håller kvar vid centraliserade system som CVS/SVN/etc. på tekniska meriter, utan snarare av vana eller specifik kompetens. Även om man bara jobbar lokalt så har distribuerade system fördelar. Är man fri att välja så bör/ska man välja ett modernt distribuerat versionshanteringssystem. Google använder Perforce som är ett betalverktyg. Facebook använde SVN, men har gått över till Git. Det finns andra varianter som Darcs och Bazaar, men, tja. Jag ser ingen direkt anledning att använda dessa före Git/Mercurial om man inte har något speciellt krav. Git eller Mercurial är ganska jämnt skägg i mina ögon då de erbjuder väldigt likartad funktionalitet och båda har stora användarbaser. Går man in på finlir så är Git nog det kraftfullare alternativet, samtidigt som jag kan tycka att Mercurials gränssnitt är mer intuitivt i början.

Om man inte använder versionshantering överhuvudtaget så har man ett fantastiskt verktyg kvar att upptäcka . Det handlar inte bara om att registrera projektets historik (även om det i sig vore mer än skäl nog), utan att man "tvingas" applicera struktur på utvecklingen, och se kod för vad det egentligen är: samverkande instruktioner snarare än flytande skönlitteratur. Detta är som du märkt extra viktigt vid samarbete, men det hjälper starkt även vid personliga projekt. Att ha signerad commithistorik med korta förklaringar över varje kodsnutt gör också att frågor som "vad gör denna kodbit och vem #¤% skrev den?" får sitt svar på sekunder.

Gällande kodningen så är det av hyfsad vikt att ha någon sorts schema för att undvika dubbelarbete. Är det ett gigantiskt projekt så krävs betydande planeringstid i förväg för att få någon fart på arbetet. Är det ett mindre projekt så kanske det räcker att kontinuerligt kommunicera vad man gör, t ex genom att samla utvecklarna i en IRC-kanal. En enkel detalj som kan hjälpa mycket är att köra en IRC-bot som vidarebefordrar centrala commitmeddelanden till kanalen.

Utöver detta väljer många projekt att ha en maillista eller liknande, men det kan substitueras av en gemensam bugtracker av något slag. Maillistan har fördelar i teknisk enkelhet, men en tracker har många förenklande funktioner. Dessutom så om man startar projektet på Github eller liknande större sida så får man detta integrerat i versionshanteringssystemet på köpet.

Gällande din fråga om att arbeta multipla personer med samma programkod i realtid så är det inget som direkt används då det dras med en himla massa problem. Vad man i stället gör är att man jobbar på varsin kopia. Person 1 programmerar sin del och registrerar ändringarna på ett bestämt centralt ställe. När person 2 som jobbat parallellt vill registrera sina ändringar, så om det inte är någon konflikt med vad person 1 har gjort så fixar versionshanteringssystemet sammanslagningen (moderna system är klart smartare gällande detta än äldre). Om det råkar vara en konflikt så startar systemet ett diffverktyg som visar konflikterna och ber användaren att lösa dessa innan registrering. Genom att registrera och även kontrollera vad andra registrerat ofta så blir det en väldigt sömlös upplevelse. Om man har kommunikation inom projektet så bör det sällan uppstå konflikter.

Du nämner att du sitter i Dreamweaver och de andra i Notepad++ — det känns som ett recept på problem. Grafiska verktyg har en förmåga att ändra mycket i koden (även om just Dreamweaver till en början blev stort mycket pga att det var bättre i detta hänseende än konkurrenterna), vilket kan göra det svårt att passa in i ett vettigt versionshanteringsflöde. Jag har inte använt Dreamweaver på många år dock, och ser att de lagt till stöd för åtminstone SVN direkt i programmet, så visst arbete har de gjort för att rätta till dess brister.

Om det är så att någon av er jobbar med layout, någon med funktioner och någon med t ex databaserna så är det läge att separera dessa delar kodmässigt och titta på buzzword:et MVC. Med genomtänkt design så kan ni då jobba mer eller mindre helt självständigt på var sin del, utan att designern behöver kunna Python eller vad man nu kodar funktionaliteten i.

För att återgå till ett "mindre" projekt så skulle jag trots allt säga att versionshantering är så pass nyttigt att det kan ses som ett krav. En IRC-kanal för utveckling är väldigt smidigt, men ni kanske har något annat sätt att kommunicera. Notera dock att om ni är fler än två så kan det vara väldigt bra att ha just en allmän kanal så som IRC för att inte kommunikationen ska fastna mellan fyra ögon.

Dold text

Ett litet tillägg är att jag exempelvis igår natt började jaga en bugg som introducerats i ett externt bibliotek någon gång det senaste året. Jag visste att buggen inte existerade i en viss gammal revision, och jag visste att den existerade i senaste revisionen. Att leta upp exakt vad som orsakat felet däremellan (och när det hänt) hade kunnat vara en större insats om jag bara haft dessa mätpunkter, men eftersom projektet dessutom lagrats i Git så var det bara att säga simsala… förlåt, `git bisect`, så fick jag svaret på logaritmisk tid och kunde meddela författaren. Möjligheten till sådana saker skulle på egen hand kunna vara en total dealbreaker för att någonsin använda något annat än versionshantering, och det finns säkert ytterligare ett tiotal liknande anledningar att hitta.

Kort sagt: ni kommer bli vansinniga om ni inte använder versionshantering till delade projekt. Sedan så är alla dessa fördelar inget som uppstår helt av sig själv: man måste även lära sig att använda versionshantering effektivt och korrekt, men det är i mina ögon en av de bästa tidsinvesteringarna som kan göras.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

WTF hände med google wave?

Visa signatur

Z170-WS | Intel 6700K | Dominator 2x16GB 3000MHz | Samsung 950 Pro 2x512GB NVMe RAID0 | MSI 1080 Gaming X | Seasonic 520 Fanless | 7260 HMV-AC | Fractal Design Define R4 | Noctua NH-U12S@475RPM | Noctua P12@475RPM x5
Supermicro X10SLL-F | Supermicro 1U SC813MT-300C | XEON E3 1231v3 | Hynix 4x8GB ECC | 840 EVO | WD 6x 4TB RE
x220 | IPS | i7 | SSD | 9-cell

Permalänk
Hedersmedlem
Skrivet av ggwp:

WTF hände med google wave?

Det blev Apache Wave. Stora delar av teknologin inkorporerades i andra Google-produkter. Då protokollet var designat för att vara öppet från början så finns det flera andra aktörer som använder det; exempelvis erbjuder både Novell (Novell Vibe (Wikipedia)) och SAP (SAP StreamWork (Wikipedia)) det som en del av sina företagspaket, och det finns även i öppna lösningar som Kune (Wikipedia; verkar fortfarande pågå viss utveckling, om än inte överväldigande mycket).

Det är inget substitut mot versionshantering just vad gäller programkod likväl, men målet var väl snarare att skapa en effektiv plattform för kommunikation som skulle samla "det bästa" av IM, mail och liknande på ett enda ställe. Mer beprövade lösningar visade sig kanske dock vara hyfsat effektiva och, just, beprövade .

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Skrivet av phz:

Det blev Apache Wave. Stora delar av teknologin inkorporerades i andra Google-produkter. Då protokollet var designat för att vara öppet från början så finns det flera andra aktörer som använder det; exempelvis erbjuder både Novell (Novell Vibe (Wikipedia)) och SAP (SAP StreamWork (Wikipedia)) det som en del av sina företagspaket, och det finns även i öppna lösningar som Kune (Wikipedia; verkar fortfarande pågå viss utveckling, om än inte överväldigande mycket).

Det är inget substitut mot versionshantering just vad gäller programkod likväl, men målet var väl snarare att skapa en effektiv plattform för kommunikation som skulle samla "det bästa" av IM, mail och liknande på ett enda ställe. Mer beprövade lösningar visade sig kanske dock vara hyfsat effektiva och, just, beprövade .

Det är så synd, det var riktigt bra i betan tyckte jag. Så smidigt att jobba internationellt på projekt där man inte hade samma arbetstider. Vet du varför man tog beslutet på google att kassera hela wave, iaf som brand?

Visa signatur

Z170-WS | Intel 6700K | Dominator 2x16GB 3000MHz | Samsung 950 Pro 2x512GB NVMe RAID0 | MSI 1080 Gaming X | Seasonic 520 Fanless | 7260 HMV-AC | Fractal Design Define R4 | Noctua NH-U12S@475RPM | Noctua P12@475RPM x5
Supermicro X10SLL-F | Supermicro 1U SC813MT-300C | XEON E3 1231v3 | Hynix 4x8GB ECC | 840 EVO | WD 6x 4TB RE
x220 | IPS | i7 | SSD | 9-cell

Permalänk
Hedersmedlem
Skrivet av ggwp:

Det är så synd, det var riktigt bra i betan tyckte jag. Så smidigt att jobba internationellt på projekt där man inte hade samma arbetstider. Vet du varför man tog beslutet på google att kassera hela wave, iaf som brand?

De sa själva att det var för att det inte verkade vara så stort intresse av att faktiskt använda tjänsten, vilket visade sig i att de hade få användare mer än något år efter att projektet utannonserats. Samtidigt så gjorde de aldrig så mycket reklam för tjänsten utåt, utöver att de skrev om den på sin utvecklarblogg, så de satsade kanske inga enorma resurser på tjänsten överhuvudtaget.

Men som sagt, specifikationerna var alltid öppna så det är fritt för andra aktörer att starta egna Wave-servrar om de känner att lösningen har potential.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Skrivet av defifisk:

Vi har kikat på dem, men tanken är att slänga ihop något själva och inte vara beroende av "molntjänster".
Dropbox fungerade sådär, still lite mekkit dock.

Owncloud. Det är typ moln, fast som ni hostar själva. Open source.

Visa signatur
Permalänk
Medlem

För programmering:
Valfri gittjänst funkar bra.
Github, bitbucket

Använder ni Visual Studio ingererar MS egna Team Foundation bra också:
"Free unlimited private repos"
http://www.visualstudio.com/

Det är dumt att använda en "ren molntjänst" som t.ex. Dropbox/drive för kod. Förstår inte att folk rekommenderar det när det finns gratisalternativ som är mycket bättre lämpade.

Permalänk

Gillar man inte att lägga saker på github.com kan man alltid hosta en egen gitlab server

Visa signatur

Every time I see some piece of medical research saying that caffeine is good for you, I high-five myself. Because I'm going to live forever.
~ Linus Torvalds (2010-08-03)

Permalänk
Medlem

Vi använder Monodevelop.
Hade ingen aning om att den hade inbyggt stöd för git och versionshantering. Fick reda på det idag.
Det måste ju ändå vara smidigt. Verkar inte allt för komplicerat efter att ha kikat lite på youtube efter instruktionsvideor.

Skrivet av Usling:

Owncloud. Det är typ moln, fast som ni hostar själva. Open source.

Exakt vad vi letar efter! Tack!

Visa signatur

Chassi - Cooler Master HAF XB || CPU: - i7 3770K @4,5Ghz || PSU: - TXFX P1-750B-NLG9 XXX 750W
RAM - 4x Corsair vengeance 4096MB CL 9 1600Mhz LP || Mobo - ASUS P8Z77-V S-1155

Permalänk
Medlem
Skrivet av defifisk:

Vi använder Monodevelop.
Hade ingen aning om att den hade inbyggt stöd för git och versionshantering. Fick reda på det idag.
Det måste ju ändå vara smidigt. Verkar inte allt för komplicerat efter att ha kikat lite på youtube efter instruktionsvideor.

Exakt vad vi letar efter! Tack!

Om ni ska ha server hemma hos nån och inte orkar mecka så mycket kan jag även rekommendera FreeNAS. Då installerar man Owncloud som en plugin, dvs ett färdigt paket som tar 1min att installera och få igång. Även FreeNAS är open source.

Visa signatur
Permalänk
Medlem

Droppar även in att flera routrar har FTP stöd (ej det säkraste men om säkerhet ej är utav största bekymmer ett utmärkt val). Då kopplar man bara in en extern HDD i routern så ställer du in den att användas som filserver. Väldigt smidigt och hyfsat snabbt, se bara till att göra backups då routers inte alltid har den bästa fil hanteraren samt attacker är lätta att utföra.

Visa signatur

Citera eller @philipborg om du vill att jag ska läsa dina svar.

Permalänk
Hedersmedlem

Även Synology har färdiga paket för både Git och eget moln till sina NAS'ar. Enkelt att installera och komma igång.

Visa signatur

Använd gilla för att markera nyttiga inlägg!

Permalänk
Medlem

Tycker definitivt att ni ska köra typ git. Då kan ni hålla koll på vem som gjort vad och ha versionshistorik.