Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  8 2549
Driver for tiden å jobber med et hobbeprosjekt hvor jeg tenker å prøve å ha en god struktur på bruken av Git. Men jeg er fortsatt noe usikker på hvordan best håndtere releases.

Kort oppsumert har jeg en master branch, som skal være stabil. Hvor jeg bruker tags med versjonsnummer til å legge ut nye releases. Denne delen går helt greit - men jeg sliter litt med hvordan håndtere kompilerte filer.

Normalt når man er i utviklingsfasen er det ikke ønskelig at disse filene skal ligge i repoet. Men akkurat når man lanserer en ny release ønsker man at disse filene skal følge med i en egen mappe slik at folk som ønsker å laste ned en bestemt release ikke trenger å bygge alle filene selv.

Så hvordan kan man på en god måte sørge for at disse filene ikke er i repoet når man driver med utvikling - men samtidig enkelt sørge for at de kommer med når man gjør en ny release?
Hva med å bruke git hooks som kjører alle tester og så evt bygger prosjektet ditt hver gang du commiter til master-branchen?
Ukjent
Trådstarter Donor
Hvordan vil det funke med tanke på at disse filene (dvs hele dist-mappa) vil ligge i gitignore? Vil ikke filene bare bli ignorert også i masterbranchen?
http://nvie.com/posts/a-successful-git-branching-model/ er en branching modell jeg har brukt en del de siste årene. Dette fungerer bra!
Ukjent
Trådstarter Donor
Ser ikke helt hvor den er relevant. Skummet over den, og den snakket mest om bare hvordan strukturere branches. Her finnes det mange ulike og gode modeller - som har fine fordeler og ulemper. Selv er jeg ikke fan av featurebranching med mindre man driver med kode som direkte vil ødelegge et bygg for andre frem til den er helt ferdig.

Problemet mitt er bare at jeg ønsker at de kompilerte filene kun skal eksistere ved nye releases. Altså om jeg tager en commit på master branchen med "v2.1.0" så ønsker jeg samtidig å legge ved de kompilerte filene - som normalt er ignoret. Slik som jQuery gjør det på deres GitHub. Normalt finnes ikke /dist/ mappa, som har de kompilerte filene (den er ignoret i .gitignore) - med om du går til en bestemt release så ligger den der. F.eks. om man ser på 1.11 releasen så er den mappen lagt ved.

Grunnen til at jeg ønsker dette er at det gjør det enkelt å legge ut programmet i package managere, hvor jeg bare kan referere til GitHub siden til prosjektet, og så vil den automatisk finne nye releases når jeg tager en commit med et høyere versjonsnummer - samtidig ønsker jeg ikke at de skal trenge å laste ned hele kildekoden og bygge selv, med mindre de eksplisitt ber om det.
Sist endret av etse; 4. november 2014 kl. 19:59. Grunn: Automatisk sammenslåing med etterfølgende innlegg.
Hva med å force-adde (git add -f) mappen som ligger i .gitignore hver gang du skal gjøre en release?
Hmmm, mulig jeg er helt på jordet, men jeg vill git clone releaseversjon til /tmp/ på min lokale maskin, kompilert og pakket, tbz2, deb, whatever.
Spør jQuery-teamet hva de gjør?

Mistenker dog at det enten er en manuell operasjon involvert, eller at de bruker maven el. og har et oppsett som sørger for at kompilerte filer legges i dist-mappen når de gjør release.

De prosjektene jeg har jobbet med har release som en egen oppgave, og enten bruker egne maven-profiler eller gjør en manuell jobb med kopiering av filer når det bygges en release.
Ukjent
Trådstarter Donor
Sitat av nudo Vis innlegg
Hmmm, mulig jeg er helt på jordet, men jeg vill git clone releaseversjon til /tmp/ på min lokale maskin, kompilert og pakket, tbz2, deb, whatever.
Vis hele sitatet...
Detter har du også muligheten til. Men hvor mange laster f.eks. ned kildekoden til jQuery og bygger selv i forhold til folk som laster ned jQuery direkte? Og med ting som bower er det veldig enkelt å bare legge release-filene rett i repoet for å holde package-manageren oppdatert med nye versjoner.

Men etter å ha sett litt rundt virker det som løsningen er å sette opp en release-jobb som bare gjør følgende:
- Bumper versjon opp til neste release.
- Bygger prosjektet
- Force-adder release filene til Git
- Comitter og tager med release-versjon
- Fjerner release-filene fra Git
- Bumper versjonen opp til neste pre-release.
- Gjør en ny commit ("Preparing for next development iteration")