Det jeg tenker på Build Numbers er at når en ny nattlig bygning opprettes, blir en ny BUILDNUMBER genereres og tildeles den bygningen. Så for applikasjonen til versjonen 7.0 vil nattbyggene være 7.0.1, 7.0.2 og så videre. Er det sånn? Hva er da bruken av en REVISJON etter byggenummeret? Eller økes REVISJON-delen etter hver nattlige bygning? Jeg er litt forvirret her … refererer vi til hver nattlige bygning som en BYGG ?
Formatet er nevnt her: AssemblyVersion – MSDN
Kommentarer
- Så kan du bruke datoen som byggenummer!
- Bygg: Hver ny versjon av systemet, Revisjon: hurtigreparasjon eller » revisjon » av en utgitt Build, og derfor endrer den Build-versjonen ; Du ‘ gjeldende build kan være 2.2.12.0, men den frigjorte builden kan være 2.2.8.0, og når du trenger å hurtigreparere det, trekker du kildekoden for 2.2.8, reviderer den, og bygge 2.2.8.1, 3 måneder senere er 2.2.16.0, men en kunde er fremdeles på 2.2.8.1 og løper inn i en annen feil, du trekker koden for 2.2.8.1 og reviderer den for å fikse feilen, og slipper den som 2.2. 8.2
- @JimmyHoffa, build-tallet skal alltid øke, så jeg er ikke sikker på at eksemplet ditt gir mening, da du ikke kunne ‘ t har 2.2.8.0, 2.2.8.1 , som om du er i build 16 når du fikser forrige 2.2-utgivelse, bør du få 2.2.17.1 … Det gjør ikke ‘ det fornuftig at hvis du fortsetter utviklingsprosessen, er du fremdeles på 2.2 mens du er i build 16 mens du hadde ønsket å opprette en ny funksjon, så skal du være minst à 2.3.16.0 … Selvfølgelig er det fullt mulig å ha forskjellige sett med regler som føre til versjonsskjemaet du beskriver …
Svar
Jeg har aldri sett det skrevet ut i den formen. Der jeg jobber, bruker vi skjemaet MAJOR.MINOR.REVISION.BUILDNUMBER
, der:
- STOR er en stor utgivelse (vanligvis mange nye funksjoner eller endringer i brukergrensesnittet eller underliggende operativsystem)
- MINOR er en mindre utgivelse (kanskje noen nye funksjoner) på en tidligere større utgivelse
- REVISJON er vanligvis en løsning for en tidligere mindre utgivelse (ingen ny funksjonalitet)
- BUILDNUMBER økes for hver siste versjon av en revisjon.
For eksempel kan en revisjon bli utgitt til QA (kvalitetskontroll), og de kommer tilbake med et problem som krever endring. Feilen vil bli løst, og sluppet tilbake til QA med samme REVISION-nummer, men et inkrementert BUILDNUMBER.
Kommentarer
- +1: At ‘ er ganske sånn som jeg ‘ har sett det overalt også. Jeg ‘ har sett og likte hvordan noen selskaper bare bruker et DateTime-stempel for BUILDNUMBER.
- +1: » MAJOR.MINOR.REVISION.BUILDNUMBER » form er forståelig og gir mening. Jeg så BUILDNUMBER.REVISION-skjemaet på MSDN-nettstedet (lenke oppdatert i spørsmålet), og det forvirret meg totalt.
- Odd. Jeg forventer at revisjon er sist for å gi mest mening – det ‘ er tallet som (sannsynligvis) vil endre seg mest.
- @Izkata, faktisk bygningen antallet endres mest, i det minste måten vi bruker det på hovedkontrakten min akkurat nå som bruker streng versjonskontroll fordi vi lager medisinsk utstyr. En oppdatert revisjon indikerer at det har vært en løsning på den forrige programvaren, som må testes av QA (Quality Assurance). Dette er en helt egen avdeling som gjør omfattende tester i tre dager (i henhold til FDA-retningslinjer). Hvis de finner noen problemer, kan det være nødvendig med ytterligere kodeendringer som krever en ny versjon (kompilering og lenke) og deretter testes på nytt, men revisjonsnummeret forblir det samme.
- @tcrosley Jeg antar det ‘ et tilfelle av uklar terminologi. Jeg tenkte på revisjoner i versjonskontroll.
Svar
Hele forvirringen stammer fra forskjellig semantikk som MS bruker til «Build number» og spesielt «Revision». Begrepene betyr bare forskjellige ting.
De fleste (meg selv inkludert) bruker et semantisk versjonsnummereringsskjema hvor du bare får et høyere BYGGT-nummer når du må lage et nytt bygg av en eller annen grunn. For oss blir en hurtigreparasjon betraktet som bare en ny kodeendring, og BUILD-delen øker automatisk med hvert CI-løp. Moduler med samme MAJ.MIN.REV regnes som utskiftbare, og BUILD forteller deg hvilken som er den siste.
Stigende REVISJON indikerer imidlertid en ny gren for permanent utgivelse, det er derfor vi plasserer den før BYGG.Ulempen med denne tilnærmingen er at vi kan få følgende sekvens av hendelser:
- forpliktelsesnummer 4711: Alice la til funksjon A
- CI produserer build 1.2.3.100
- forpliktelsesnummer 4712: Bob modifiserte funksjon B
- forpliktelsesnummer 4713: Alice fast funksjon A («hurtigreparasjonen»)
- CI produserer build 1.2.3.101
Som du kan se, er hurtigreparasjonen ikke den eneste endringen i neste bygg, også Bobs modifikasjon blir en del av den bygningen. Hvis du vil stabilisere den nåværende grenen, kan du komme i problemer, siden du aldri kan være sikker på om Bob nettopp har lagt til en haug med bugs.
MS bruker begge begrepene forskjellig. BUILD-nummeret økes ikke automatisk, i stedet kan det betraktes som en slags utgivelsesgren, for å fryse koden som brukes for en bestemt versjon av koden. REVISJONEN indikerer ytterligere «varme» endringer som er brukt på den BUILD-grenen. Sekvensen vil derfor være som følger:
- forpliktelsesnummer 4711: Alice la til funksjon A til trunk / master
- Carl oppretter build-gren
1.2.100
- CI produserer build 1.2.100.0
- forpliktelsesnummer 4712: Bob modifiserte funksjon B i bagasjerommet / master
- forpliktelsesnummer 4713: Alice fast funksjon A i
1.2.100
-gren - CI produserer build 1.2.100.1
Begrepet REVISION kan referere til
- a produkt revisjon (det er slik folk flest bruker det)
- en revisjon av en bestemt daglig bygging (det er hva MS gjør)
Hovedforskjellen mellom de to prosessene er, hvorvidt du vil ha muligheten til å bruke hurtigreparasjoner på CI builds og dermed, på hvilket tidspunkt i prosessen grenen blir laget. Dette aspektet blir viktig når du når som helst vil være i stand til å velge en bestemt versjon etter at alle testene har lykkes og markedsføre akkurat den versjonen til neste offisielle utgivelse av produktet.
I vårt tilfelle oppretter CI-verktøyet en depot-tag, så vi har alltid den nødvendige informasjonen klar til bruk, når det er nødvendig. Med SVN blir det enda enklere, fordi koder og grener implementeres nøyaktig på samme måte – en tag er ikke noe mer enn en gren som ligger under /tags
.
Se også
Fra FAQ-seksjonen på TFS-forgreningsstrategi :
I hvilken gren skal jeg fikse P1 (hurtigreparasjons) -billetten?
P1 skal fikses i grenen som er nærmest kodebasen som kjører i Produksjon. I dette tilfellet bør P1 fikses i Prod-grenen. Ved å bruke løsningen i en hvilken som helst annen gren og utrulle produksjonsendringene risikerer du å frigjøre halvferdig eller uprøvd kode fra de påfølgende iterasjonene.
Nå kan du diskutere om det er trygt å jobbe direkte mot Prod-grenen, tenk igjen, en P1 som krever øyeblikkelig oppmerksomhet, bør ikke være et grunnleggende problem i systemet. I tilfelle det er et grunnleggende problem, bør det legges til i produktets etterslep, ettersom det kan kreve ytterligere analyse og diskusjon med kunden.
En annen god lesning er TFS-forgreningsveiledning
Kommentarer
- Dette er et flott svar! +1
Svar
Microsoft beskriver formålet med hver komponent i et .NET-versjonsnummer i MSDN-dokumentasjonen for Version
klassen. Her er den relevante delen:
major.minor [.build [.revision]]
Komponentene brukes etter konvensjon som følger:
Major: Enheter med samme navn, men forskjellige hovedversjoner er ikke utskiftbare. Et høyere versjonsnummer kan indikere en større omskriving av et produkt der bakoverkompatibilitet ikke kan antas.
Mindre: Hvis navnet og hovedversjonsnummeret på to enheter er det samme, men det mindre versjonsnummeret er forskjellig, dette indikerer betydelig forbedring med den hensikt å være bakoverkompatibel. Dette høyere versjonsnummeret kan indikere en punktutgivelse av et produkt eller en helt bakoverkompatibel ny versjon av et produkt.
Build: En forskjell i build-nummer representerer en rekompilering av samme kilde. Ulike byggenumre kan brukes når prosessoren, plattformen eller kompilatoren endres.
Revisjon: Enheter med samme navn, hoved- og mindre versjonsnummer, men forskjellige revisjoner er ment å være fullt utskiftbare. Et høyere revisjonsnummer kan brukes i en versjon som fikser et sikkerhetshull i en tidligere utgitt forsamling.
http://msdn.microsoft.com/en-us/library/system.version.aspx
Kommentarer
- Det forvirrer meg hvorfor ingen kjenner denne standarden, hvert svar her hevder build går på slutten og ikke ‘ t forstå revisjon er veldig enkelt; det betyr hurtigreparasjon. Du slipper en build, og oppretter deretter flere builds, men når du må gå tilbake og fikse den utgivelsen, oppdaterer du revisjonen for å vise den spesifikke builden som ble utgitt ble endret for en ny utgivelse et svar som har et forsvarlig byggenummer. Bare å øke nummeret er ganske ubrukelig hvis revisjonen forblir den samme (med mindre du har et sinnsykt byggesystem som er tidsavhengig). Å bruke build-nummeret til å signalisere hvilken kompilator, plattformer osv. som er nyttig .
-
Build
somrecompilation of the same source
ser ut til å være et viktig poeng som går glipp av. Hvis det ‘ en kodeendring (som ikke ‘ ikke krever en helt ny Major / Minor-økning), såRevision
må også endres. - @PeterX Som i tilfelle bygningsspesifikke endringer når du målretter på nytt?
- » En forskjell i byggetall representerer en rekompilering av samme kilde » ser ut til å være i strid med dokumentasjonen. Når du har foretatt en revisjon, er den ikke lenger den samme kilden. Å ha BYGGT før REVISJON er bare fornuftig hvis en revisjon er spesifikk for en versjon som representerer en » prosessor, plattform eller kompilatorendring «. Så jeg antar at det som de fleste ser på som en REVISION-bump, egentlig burde være en MINDRE bump når man bruker disse beskrivelsene. Selv om dokumentene nevner å bruke REVISION for hurtigreparasjoner, men jeg antar at hurtigreparasjoner vil gjelde for alle versjoner, og bør derfor være en MINDRE bump. Jeg vil bare ha litt logisk konsistens !!
Svar
Det er i det minste et par forskjellige ting jeg kunne tenk deg byggnummeret som refererer til:
-
Kildekontrollversjon som ble utgitt. For eksempel hvis det var en utgivelse av revisjon nr. 12345, kan dette spores ved å ha det til å være build-nummeret, og hvis det er lappet, kan revisjoner gå opp fordi det ikke er ny funksjonalitet som vil øke større eller mindre versjoner og build-nummeret må huskes i tilfelle noen vil kjøre den builden på nytt.
-
Kontinuerlig integrasjonsserveridentifikator. I dette tilfellet kan CI-serveren nummerere hver build den kjører og dermed er build-nummeret det som en vellykket build får, og revisjonsdelen er ikke nødvendig i dette scenariet.
Det kan være andre jeg ikke vet, men dette er de store jeg kjenner når det gjelder tall på kodebaser.
Kommentarer
- +1 for nr. 1. Jeg liker å bruke kildekontrollrevisjon #, fordi det gjør det mye lettere å slå opp feil rapportert mot den versjonen i kildekontroll.
- @MasonWheeler: fungerer bra hvis du er på SVN. Men når du kommer til DCV lander det får ekorn y. Dette vil være en ting jeg savner mest ved svn I ‘ vil legge til.
Svar
Et build-nummer økes vanligvis ved hver build slik at det er unikt.
For enkelhets skyld, tilbakestiller noen build-nummeret når MAJOR- eller MINOR-tallene blir støtet.
De fleste kontinuerlige integrasjonsmotorer tillater autogenererte unike build-nummer.
Svar
Revisjonen kan brukes til oppdateringer av bygger. La oss si at to lag jobber med et produkt.
Team 1 er det viktigste utviklingsteamet og produserer nattlig bygging med følgende versjonsskjema 1.0.X.0, der X økes. Nå er de på build 1.0.50.0 Team 2 tar en build fra tid til annen. La oss si at de tar bygget fra forrige uke, som er 1.0.43.0 og begynner å bruke det. Team 1 går videre til 1.0.51.0 når team 2 finner et problem i 1.0.43.0.
Nå skal team 1 ta den build (43), fikse problemet og gi team 2 build 1.0.43.1. Fix kan også spres i hovedbygget, så endringen vil vises i 1.0.52.0.
Hope dette er tydelig og nyttig.
* Revisjon er nyttig når ikke alle som er involvert i prosjektet bruker samme build, og du må lappe spesifikke builds.
Svar
La meg bare si hvordan jeg ser og bruker det ….
Programnavnversjon major.minor.build.revision
major: For meg er det nåværende prosjektet jeg jobber med. Antallet endres ikke før jeg starter et nytt prosjekt med samme programnavn. Dette betyr at jeg bokstavelig talt vil skrive et nytt program av samme kjønn (eksempel: tilgang v1 – tilgang v-2 – få tilgang til v-3 * alt det samme programmet, men fullstendig omskrevet).
minor: Dette betyr at jeg er annonse ting funksjonalitet til det nåværende publiserte prosjektet.For eksempel kanskje jeg la til muligheten til å skrive ut en kvittering eller la til muligheten til å importere bilder. I utgangspunktet vil jeg legge til ekstra funksjonalitet nå og ikke vente på at neste store utgivelse skal gjøre det.
build: Dette bruker jeg for å indikere veldig små endringer i den publiserte major.minor-versjonen. Dette kan være en endring i layout, fargevalg osv.
revisjon: Dette bruker jeg for å indikere en feilretting i den nåværende publiserte major.minor.build – Det er anledninger der jeg ikke går videre med nåværende prosjekt og en feil oppstår. Denne feilen må løses og publiseres. Det betyr bare at jeg fikser det jeg allerede har publisert for å fungere ordentlig. Jeg vil også bruke dette hvis jeg jobber med et nytt bygg, et nytt tillegg eller startet en ny større versjon. Den publiserte versjonen må selvsagt lappes når vi venter på neste store, mindre eller build-utgivelse.
Så på denne måten kan et ferdig eller stoppet prosjekt fremdeles løses og gjøres brukbart til neste utgivelse er publisert.
Jeg håper dette gir noen en bedre forståelse av hvordan denne typen versjonering ville (eller burde) fungere. For meg er det den eneste definisjonen og praksisen som gir noen form for virkelig mening når du bruker denne typen versjonering.
Svar
Jeg har bare sett et build-nummer som det siste nummeret i utgivelses-ID-en. Jeg er ikke sikker på hvordan du ville komme med en revisjon til et build-nummer. Jeg antar at hvis du endret noen av de ikke-bygde ressursene ( ikoner, DB-skript osv.), men de fleste prosjekter jeg nylig har jobbet med har også alle de tingene under versjonskontroll, så byggeprosessen plukker dem opp når jeg lager installasjonsprogrammet / utgivelsen. Jeg liker tidsstemplede byggetall, men ikke helt som @David beskriver (jeg liker major.minor.revision.HHMM). Der jeg jobber, bruker vi bare et løpenummer som byggeserveren vår genererer.
Svar
Det er hva du vil det skal være. Jeg pleier å bruke year.month.day.hhmm for min store.minor.build.visjon. Hvis jeg produserer mer enn ett i minuttet, er det noe galt. du kan bare bruke et enkelt trinn, eller jeg har sett noen forseggjorte generatorer for dem. Hva du vil at det skal være. Det de trenger å gjøre er å gjøre det slik at du kommer til kilden som brukes til lage den utgangen, så hva som gjør det mulig for deg å gjøre det.
Svar
Teamet vårt bruker det tredje tallet (revisjon) som revisjonsnummer fra Subversion-depotet. Vi bruker det fjerde nummeret (build) som build-nummeret fra vår kontinuerlige TeamCity-integreringsserver som faktisk oppretter build. TeamCity oppretter en ny AssemblyInfo-fil med de rette #s i løpet av byggeprosessen.
Svar
Som jkohlhepp bruker vi den tredje delen av versjonen for å vise revisjonsnummeret i SubVersion og den fjerde for å vise bygge nummer fra vår kontinuerlige integreringsserver (Jenkins for oss). Dette gir oss flere fordeler – å ha versjonsnummeret satt av CI-serveren vår fjerner et manuelt trinn som ellers kan være savnet; det er lett å sjekke at en utvikler ikke har gjort en frekk utgivelse fra utviklings-PC-en (som vil føre til at disse tallene blir null); og det lar oss knytte hvilken som helst programvare tilbake til både koden den ble generert fra og CI-jobben som bygde den, bare ved å se på versjonsnummeret – som vi noen ganger synes er veldig nyttig.
Svar
De to siste sifrene er det totale byggetallet
1.01.2.1234
byggenummeret er 2.1234, men de fleste vil bare bruke 1234 siden 2-delen ikke endres ofte.
Kommentarer
- OP spør om hva som er build-nummeret, ikke hvilket som er build-nummeret i revisjons-ID.