Typical condiciones cum continua integratione

Have you learned Git mandata sed vis imaginari quam continua integratio (CI) in re operatur? Vel maybe vestri vis ad optimize cotidiana opera tua? Hoc cursum dabit tibi artes practicas in integratione continua utens repositorio GitHub. Is cursus magus non vult esse quod simpliciter per strepita potes, immo eadem opera facies, quae homines actu operantur, sicut illud faciunt. Explicabo theoriam ingrediens per gradus implicatos.

Quid facimus?

Dum progredimur, paulatim album gradibus CI typicis creabimus, quod magnum est huius indicem meminisse. Aliis verbis, habebimus indicem actionum quas tincidunt sumunt dum integrationem continuam facientes, integrationem continuam facientes. Simplex probationum copia utemur, ut processus nostros CI ad realem propius adducamus.

Hoc GIF schematically committit in promptuario tuo dum per cursum progrediaris. Ut vides, nihil est hic perplexum et solum maxime necessarium.

Typical condiciones cum continua integratione

Ibis per sequentem vexillum CI missiones;

  • Opus in pluma;
  • Applicatio automated probat ut qualitatem obtineat;
  • Exsecutio prioris operis;
  • Conflictus senatus cum bus ramis (merge conflict);
  • Error occurrit in environment productionis.

Quid disces?

Respondere poteris sequentibus quaestionibus;

  • Quid est integratio continua?
  • Quae genera testium automated in CI adhibentur, et in responsione ad quas actiones utitur?
  • Quid sunt petitiones viverra et quando opus est?
  • Quid est Test progressio agitata (TDD) et quomodo ad CI pertinet?
  • Numquid confundam vel diminuere mutationes?
  • Revolvere seu fix in altera versione?

Primum omnia sicut "prexationes trahere" ubique interpretatus sum, sed inde decrevi aliquot in locis redire phrases Anglice gradum furoris in textu reducere. Aliquando "programma surzhik" utar ut verbum mirabile "committere" ubi homines actu utuntur ad opus.

Quid est continua integratio?

Continua Integrationvel CI, est praxis technica qua unumquodque membrum suum codicem in reposito communi saltem semel in die integrat et in codice consequens saltem sine erroribus construi debet.

Discordiae sunt de hoc termino

Contentio est frequentia integrationis. Quidam contendunt codicem bus semel tantum in die non satis esse ut actu continue integrare possit. Exemplum est manipulus ubi quisque recens codicem accipit mane et semel in vespere integrat. Cum haec rationabilis obiectio est, generaliter accipitur definitio semel temporis rationabiliter practica, specifica et apta iunctionibus variarum magnitudinum.

Alia obiectio est quod C ++ non amplius est sola lingua in evolutione adhibita, et simpliciter requirit errorem liberum conventum tamquam via sanationis infirma. Quaedam statuta testium (exempli gratia, unitas probationum localiter executae) etiam feliciter perficere debet. In momento, communitas movetur ad hanc postulationem faciendam, et in posterum "unitatis experimenta+" verisimile fiet praxis communis, si iam nondum est.

Continua Integration alia ex continua traditio (Continuatio Delivery, CD) in eo quod candidatus emissio non requirit post cyclum singularem integrationem.

Index graduum in decursu utemur

  1. Aliquam in viverra codice. Partum a genere master. Incipit opus.
  2. Crea in novo genere tuo committit. Aedificare et probare localiter. Transi? Ad gradum proximum progredi. Deserunt? Figere errores vel probat et iterum tenta.
  3. Repositorium vel remotum ramum tuum ventilabis.
  4. Peto creare viverra. De mutationibus dissere, plura committit, quam disputatio prosequitur. Fac probationes in pluma ramo.
  5. Merge / rebase a domino committit. Fac probationes in merge exitum.
  6. Explica a pluma ramo ad productionem.
  7. Si omnia bona sunt in productione per aliquod tempus, mutationibus dominii confunduntur.

Typical condiciones cum continua integratione

Praeparatio

Fac tibi ius software

Ad hoc utique opus erit Node.js ΠΈ git clientis.

Quovis cliente Git uti potes, sed ego tantum imperata recta imperandi providebo.

Fac clientem habeas Git inauguratus qui sustinet mandatum linea

Si clientem Git habetis qui lineam rectam sustinet, institutionem institutionem invenire potes hic.

Para repositio

Opus creare exemplar personale (furca) template repositio cum codice ad cursum on GitHub. Lets 'conveniunt ad hoc exemplum personale appellare Scilicet repositio.

Factum est? Si occasus defaltam non mutasti, cursus tuus repositio est maxime probabile vocatur continuous-integration-team-scenarios-students, sita est in narratione tua GitHub et URL haec similia

https://github.com/<вашС имя ползоватСля Π½Π° GitHub>/continuous-integration-team-scenarios-students

Ego solum hanc electronicam vocamus <URL рСпозитория>.

Angulus brackets sicut <Ρ‚ΡƒΡ‚> significabit te talem locutionem cum debito valore reponere debere.

Fac quod GitHub actiones inclusa ad hoc utique repositio. Si non sunt, da illis strepitando puga pyga in media pagina, quam ad actiones strepitando in GitHub interface accipere potes.

Non poteris cursum meum sequentes mandata mea perficere, si Actiones GitHub non valeant.

Typical condiciones cum continua integratione

Semper uti potes GitHub facultate reddendi Markdown ad videndum statum hodiernum indicem quem hic componimus.

https://github.com/<your GitHub user name>/continuous-integration-team-scenarios-students/blob/master/ci.md

De responsa

Dum optume ad hunc cursum conficiendum ipse perfice, difficultates aliquas habere potes.

Si senseris te non intellegere quid facere nec permanere, stamina inspicere potes solutionquae est in promptuario.
Quaeso ne merge solution Π² master in cursu. Hoc ramo uti potes ad instar quid faciendum, aut codicem tuum cum auctoris comparare potes, omnibus facultatibus quas Git nobis praebet. Si omnino perditus es, ramum tuum totaliter reponere potes master in ramo solution et tunc reset vestri operis directorium ad cursum gradum debes.

Hoc tantum utere, si vere opus est

Committe codicem tuum

git add .
git commit -m "Backing up my work"

Haec mandata

  • secunda nomine master Π² master-backup;
  • secunda nomine solution Π² master;
  • Checkout ad novam ramum master et rescribe contenta presul operantis;
  • Facere "solutionem" ramum a "domini" (quod "solutione" esse solebat, si "solutio" ramus in futuro indiges.

git branch -m master master-backup
git branch -m solution master
git checkout master -f
git branch solution

Post hos gradus uti potes git log master ut instar sicco quod committere debes.
Potes reset vestri operandi directorium huic committi sicut hoc:

git reset --hard <the SHA you need>

Si laetus es cum effectu, necesse erit in aliquo loco versionem tuam emittere in repositorio remoto. Noli oblivisci explicite designare ramum remotum cum hoc feceris.

git push --force origin master

Lorem quod utimur git push --force. Verisimile est quod hoc saepissime facere voles, sed habemus hic missionem valde specificam cum uno repositorio usuario, qui praeterea quid agat intellegit.

Satus opus

Typical condiciones cum continua integratione

Initium scribendi nostrum indicem gradibus CI. Communiter hoc passum incipies annotando novissimam versionem codicis a repositorio remoto, sed repositorium locale adhuc non habemus, ita a remoto loco remotum est.

️ Negotium: repositorium loci update, ramum e creo master, Incipit opus

  1. Clone cursum repositio a <URL рСпозитория>.
  2. Curre npm install in curriculum repositorii presul; Non opus est ut Jest installandi, quo utimur ad probationes detegendas.
  3. Facere ramum ac nominare feature. Ad hoc filum vertas.
  4. Addere test code to ci.test.js inter commentarios rogabat me hoc facere.

    it('1. pull latest code', () => {
      expect(/.*pull.*/ig.test(fileContents)).toBe(true);
    });
    
    it('2. add commits', () => {
      expect(/.*commit.*/ig.test(fileContents)).toBe(true);
    });
    
    it('3. push to the remote branch with the same name', () => {
      expect(/.*push.*/ig.test(fileContents)).toBe(true);
    });
    
    it('4. create a pull request and continue working', () => {
      expect(/.*pulls+request.*/ig.test(fileContents)).toBe(true);
    });

  5. Adde textum cum primis 4 gradibus in tabella ci.md.
    1. Pull in the latest code. Create a branch from `master`. Start working.    
    2. Create commits on your new branch. Build and test locally.  
    Pass? Go to the next step. Fail? Fix errors or tests and try again.  
    3. Push to your remote repository or remote branch.  
    4. Create a pull request. Discuss the changes, add more commits  
    as discussion continues. Make tests pass on the feature branch.  

    imperium

# ΠšΠ»ΠΎΠ½ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ курса
git clone <repository URL>
cd <repository name>

# Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ npm install Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ рСпозитория курса; ΠΎΠ½ установит Jest, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для запуска тСстов.
npm install

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ ΠΈ Π½Π°Π·ΠΎΠ²ΠΈΡ‚Π΅ Π΅Π΅ feature. ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° эту Π² Π²Π΅Ρ‚ΠΊΡƒ.
git checkout -b feature

# ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.test.js ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅.
# ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.md ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

Crea in novo ramo committit, localiter aedifica et proba

Nos imus ut probationes erigas antequam committat, ac deinde signum committat.

Typical missionibus cum probat currere automatice

  • Locus:
    • Continuo vel in responsione ad congruum codicem mutationes;
    • On salutare (for interpretatus or JIT-lingua compilata) ;
    • Per ecclesiam (cum compilatio desideratur);
    • On committo;
    • cum libellorum reposito communicato.

  • In elit aedificare servo vel aedificare:
    • Cum codice divulgatur ad repositorium personale.
    • Codex in hoc filo probatur.
    • Potentiale effectus probatus est eive (plerumque cum master).
    • Sicut continuus integratio scaena / continua traditio pipeline

Typice, quo celerius currit in testam, eo saepius currere potes. Scaena typica distributio hoc modo spectare potest.

  • Unitas velociter probat - in structuris, in CI pipeline
  • Tardi unitas probat, componentis et integratio celeriter probat - in commissis, in CI pipeline
  • Tarda pars et integratio probat - in CI pipeline
  • Securitas probatio, onus probatio et alii temporis consumptiones vel pretiosae probationes - in CI/CD pipelinis, sed solum in quibusdam modis / stadiis/pipelinis aedificandi, exempli gratia, cum candidatus emissio parat aut cum manually currit.

adsignatione

Moneo currentem ad manually probat primo utens imperio npm test. Post hoc addamus hamum git ut nostras probationes in committamus curramus. Captura unus est: hami Git pars repositorii non sunt consideranda et ideo a GitHub cum ceteris materiae cursus ligari non possunt. Ut install hamo debes currere install_hook.sh aut effingo lima repo/hooks/pre-commit ad loci Directory .git/hooks/.
Cum feceris, videbis probationes currere et explorare si certae keywords insunt in indice.

  1. Currere probat manually currit per mandatum npm test in cursu reposito folder. Cognoscere probata sunt.
  2. Committere hamum (prae hamo committere) per currendo install_hook.sh.
  3. Committe mutationes tuas ad repositorium locale.
  4. Fac experimenta currunt antequam committat.

Repositorium tuum ut hoc videas post hos gradus sequentes.
Typical condiciones cum continua integratione

imperium

# УстановитС pre-commit hook Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² install_hook.sh.  

# Π—Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ измСнСния Π² Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ "Add first CI steps" Π² качСствС сообщСния ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅.
git add ci.md ci.test.js
git commit -m "Add first CI steps"

# Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ тСсты Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠΌ.  

Divulgare codicem remotum repositorium vel remotum ramum

Cum localiter laborant, tincidunt typice faciunt codicem suum publice available ut tandem cum publico integrari possit. Apud GitHub, hoc proprie fit ut opus edat vel exemplar personale repositorium (furca personalis) vel ramus personalis.

  • Cum furculis, elit clones remotum repositorium commune, cuius exemplum personale remotum efficiens, etiam furca notum est. Tunc clones hoc repositorium personale cum localiter laborandum est. Cum opus perfectum est et factae sunt commissiones, eas in furcam impellit, ubi praesto sunt aliis atque in repositio communis integrari possunt. Aditus communis usus est in fonte aperto in GitHub. Usurpatur etiam in curriculo provectus [Team Work et CI cum Git] (http://devops.redpill.solutions/).
  • Alius aditus est uno tantum reposito remoto utatur et ramum tantum numeret master communi reposito "protegi". In hoc missione singulae tincidunt suum codicem ad ramos repositorii evulgant ut alii hunc codicem, si omnia ordinantur, inspicere possint, cum eo confundantur. master communi reposito.

In hoc certo cursu, workflus qui utitur ramis utemur.

Codicem nostrum divulgemus.

adsignatione

  • Mutationes publicas ad ramum remotum cum eodem nomine ut ramus operarius tuus

imperium

git push --set-upstream origin feature

Create petitionem viverra

Creare viverra petitionem cum titulo Vestigia review. install feature sicut "caput ramus" et master sicut "basi ramus".

Fac es installed master in furca repositio Sicut "basis basis", non respondeo petitionibus mutationum ad cursum materiarum repositorium.

In GitHub lingo, ramus basilis est ramus quo opus tuum fundas, et "ramus capitis" est ramus continens mutationes propositas.

De mutationibus dissere, nova committit ut pergat disceptatio

Peto viverra (PR)

Peto viverra (PR) modus est disceptandi et codici documenti, itemque codici recensendi. Petitiones viverra nominatae sunt secundum communem modum integrandi singulas mutationes in altiore codice. De more, homo clones in repositorio officiali remotus consilii et opera in codice localiter. Post hoc, codicem ponit in repositorio personali remotis et ab iis petit qui repositorii officialis responsales sunt colligendi.trahere) suum codicem in eorum repositoria localia, ubi recensent et fortasse integrant.confundantur) eius. Haec notio etiam aliis nominibus notus est, v.gr. confundantur petitionem.

In actu non habes petitionem trahendi GitHub vel similibus suggestis uti. Partes progressionis aliis communicationis modis uti possunt, incluso communicationis facie-ad-facie, voce vocat, vel electronica, sed adhuc sunt plures rationes ut petitiones fori stili trahere possint. Hic sunt quidam eorum;

  • disceptationes ordinatae ad peculiares mutationes codicem pertinentes;
  • as a place to view feedback on work-in-procession from both autotests and procers;
  • de conformatione codicis recognitiones;
  • ut postea rationes ac considerationes post hunc vel illum codicem invenire possis.

Typice creas petitionem trahere cum opus est aliquid discutere vel feedback accipere. Exempli gratia, si in pluma quae plus uno modo perfici potest, petitionem trahere potes, antequam primam lineam codicis scribendo ad tuas notiones communicandas et consilia tua cum fautoribus tuis discutias. Si opus simplicius, petitio trahendi aperitur, cum aliquid iam factum est, commissum et discuti potest. In nonnullis missionibus, solum PR aperire vis rationes qualitatum imperium: ad probationes automated currere aut recognitiones codicem inchoare. Quidquid statuis, @meminire noli homines quorum approbationem vis in petitione tua viverra.

De more, cum PR creando, sequentia facis.

  • Indica quid mutandum et ubi.
  • Scribere descriptionem explicandi causa mutationum. Velis licet:
    • Adde aliquid momenti quod ex codice notum est, vel aliquid utile ad contextum intelligendum, sicut #bugs et numeros admittunt;
    • @mentionem alicuius vis inire, vel ea in commentarios postea commemorare potes;
    • quaeritur collegae auxilium ad aliquid vel in aliquo speciali inspicias.

Postquam PR aperis, probationes conformatae ad in talibus casibus exsecuti sunt. In casu nostro, haec eadem ratio probationum erit quae localiter currimus, sed in re vera adiectis probationibus ac impedimentis esse potest.

Expecta quaeso dum probationes perficiuntur. Potes videre statum probat in fundo PR disputationis in GitHub interface. Continue cum probationes perficiantur.

️ Addere notam de fortuitis gradibus CI

Elenchus qui hac in re usus est arbitraria et subiectiva, notula de hoc debet addere.

️ Negotium: petitionem viverra creare huius comment

  1. Switch ad ramum master.
  2. Nomen creare ramum bugfix.
  3. Addere notam textum ad finem tabellae ci.md.
    > **GitHub flow** is sometimes used as a nickname to refer to a flavor of trunk-based development  
    when code is deployed straight from feature branches. This list is just an interpretation  
    that I use in my [DevOps courses](http://redpill.solutions).  
    The official tutorial is [here](https://guides.github.com/introduction/flow/).
  4. Mutationes committere.
  5. Divulgare filum bugfix remoto reposito.
  6. Creare viverra petitionem nomine Addit dictum cum capite ramo bugfix et basi ramusmaster.

Fac es installed master in furca repositio Sicut "basis basis", non respondeo petitionibus mutationum ad cursum materiarum repositorium.

Hoc est quod promptarium tuum spectare debet.
Typical condiciones cum continua integratione

imperium

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ bugfix.
git checkout master

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ bugfix-remark.
git checkout -b bugfix

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ тСкст примСчания Π²Π½ΠΈΠ·Ρƒ ci.md.

# Π—Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ измСнСния
git add ci.md
git commit -m "Add a remark about the list being opinionated"

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ bugfix Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.
git push --set-upstream origin bugfix

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ pull request ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ интСрфСйса GitHub ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

Probo petitionem viverra "Addens verbum"

adsignatione

  1. Peto creare viverra.
  2. Preme "Merge viverra petitionem".
  3. Preme "Confirma merge".
  4. Preme "ramum Delete", non iam opus est.

Hoc schema est post merge committit.
Typical condiciones cum continua integratione

Keep working et addendo probat

In petitione viverra cooperata saepe in addito opere consequitur. Solet hoc ex codice recensionis vel discussionis, at in cursu nostro id imitaturi sumus additis novis elementis ad indicem CI gradibus.

Continua integratio typice involvit experimentum coverage. Testis coverage requisita variantur et plerumque inveniuntur in documento quod quasi "conlationes guidelines" vocatur. Simplex illud servabimus et experimentum cuiusque lineae in nostro maculoso adde.

Cum currit provincias, tentant primo committere probat. Si recte installed pre-commit falce priora, recens addita probatio curret, deficiet, nihilque committetur. Nota quod sic cognoscimus probata nostra esse in actu aliquid tentantes. Interestingly, si cum codice ante probationes incepimus, probationes praetereuntes significare posse vel significari codicem sicut expectatum operatum esse vel probationes nulla re probare. Plus, nisi probationes primo loco scripsissemus, omnino obliti essemus, cum nihil nos de eo monuisset.

Test Coegi Development (TDD)

Ante codicem scripturam probat TDD commendat. Typical workflow utens TDD hoc spectat.

  1. temptare add.
  2. Currite omnes probationes ac ut nova missio deficiat.
  3. Scribe codicem.
  4. Curre probationes, fac omnes probationes.
  5. Refice codicem tuum.
  6. Repetere.

Quia eventus testium quae deficientium ostenduntur in rubro solent, et quae transeuntes ostenduntur in viridi solent, cyclus etiam notus est ut ruber-viridis-refactor.

adsignatione

Primum, experire committere probationes et eas deficere, deinde addere et textum CI gradus ipsum album committere. Videbis probationes transeuntes ("viridis").
Deinde ede novum codicem ad repositorium remotum et perspice probationes in interface GitHub in fundo trahere discussionem rogationis et status renovationis PR.

  1. Switch ad ramum feature.
  2. His addere probat to ci.test.js post ciemus it (...);.

    it('5. Merge/rebase commits from master. Make tests pass on the merge result.', () => {
      expect(/.*merge.*commits.*testss+pass.*/ig.test(fileContents)).toBe(true);
    });
    
    it('6. Deploy from the feature branch to production.', () => {
      expect(/.*Deploy.*tos+production.*/ig.test(fileContents)).toBe(true);
    });
    
    it('7. If everything is good in production for some period of time, merge changes to master.', () => {
      expect(/.*merge.*tos+master.*/ig.test(fileContents)).toBe(true);
    });

  3. Experiri adulterio probat. Si pre-commit uncus inauguratus est, adul- tendum deficiet.
  4. Adde hunc textum to ci.md.
    5. Merge/rebase commits from master. Make tests pass on the merge result.  
    6. Deploy from the feature branch with a sneaky bug to production.
    7. If everything is good in production for some period of time, merge changes to master. 
  5. Fac et committo vices localiter.
  6. Post mutationes in genere feature.

Nunc tibi aliquid simile hoc
Typical condiciones cum continua integratione

imperium


# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π° Π²Π΅Ρ‚ΠΊΡƒ feature
git checkout feature

# Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ тСсты Π² ci.test.js ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² индСкс ci.test.js Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·ΠΆΠ΅ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ
git add ci.test.js

# ΠŸΠΎΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΈΡ‚ΡŒ тСсты. Если pre-commit hook установлСны, ΠΊΠΎΠΌΠΌΠΈΡ‚ Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚.
git commit

# Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ тСкст Π² ci.md ΠΊΠ°ΠΊ описано Π²Ρ‹ΡˆΠ΅

# ВнСситС измСнСния ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ ΠΈΡ…
git add ci.md
git commit -m "Add the remaining CI steps"

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ измСнСния Π² Π²Π΅Ρ‚ΠΊΡƒ feature
git push

Merge conflictus

Ad Mutare Request Vestigia review.

Etsi nihil mali fecimus ac probationes in codice nostro transierunt, non tamen ramum iungi possumus feature ΠΈ master. Est quod alia stamina bugfix immiscet master dum hac PR.
Hoc facit ubi ramus remotus master habet recentiorem versionem quam ille nos fundatur in genere feature. Propter hoc non possumus tantum rewind PATER master usque ad finem sequelae feature. In hoc casu, necesse est nos committit vel confundi vel applicare feature rebase master. GitHub actu automatariam migrare potest, si certamina non sunt. Eheu, in nostro situ, ambo rami in tabella mutationes certantes habent ci.md. Haec condicio quasi pugnae mergae cognoscitur et necesse est eam manualem resolvere.

Merge vel rebase

vade

  • Additamentum merge creat et operis historiam servat.
    • Originalia committit ramos cum suis originalibus indicationibus et auctoribus.
    • SHA committit et nexus salvat cum illis in disceptationibus petendis mutatis.
  • Certamen requirit unum tempus resolutio.
  • Fabulam non linearem facit.
    • Fabula difficilis legi potest ob magnum numerum ramorum (reminiscent of an IDE cable).
    • Facit latae sententiae difficilius debugging, exempli causa git bisect minus utile est β€” hoc solum invenietis merge committere.

rebase

  • Replays committit e ramo currenti super basin ramum unum post alterum.
    • Nova committit cum novis SHAs generatis, causans in GitHub ut petitiones traheret originalis aequare, sed commentationes non respondentes.
    • Commissa in processu componi et mutari possunt, vel etiam in unum coalescere.
  • Plures conflictus resolvi possunt.
  • Permittit te tenere fabulam linearem.
    • Facilius est fabulam legere quam longum non est sine ratione.
    • Lorem debugging et fermentum est paulo facilius: permittit fieri git bisect, potest facere autocinetum cinematographica clariora et praevidiora.
  • Requirit editae ramum cum migrante flagello --force quando usus est cum viverra petitiones.

De more, iunctiones consentiunt semper eodem consilio uti cum mutationes iungi indigent. Hoc potest esse "purum" merge vel "purum" committere superne, vel aliquid intermedium, ut commissum facere super interactive.git rebase -i) localiter pro ramis editis non in reposito publico, sed iungi pro ramis "publicis".

Hic utemur verbam.

adsignatione

  1. Vide codicem in loci ramo master updated remota repositio.
  2. Switch ad ramum feature.
  3. Initium merge cum ramo master. A conflictu merge propter mutationes in competing ci.md.
  4. Conflictationem ita resolvas ut tam indicem nostrorum CI vestigia et notula de illo in textu maneat.
  5. Merge a remotis genere committere ad publicandum feature.
  6. Reprehendo statum rogationis viverra in GitHub UI et exspecta donec merge resolvatur.

imperium

# Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ Π² локальноС Π²Π΅Ρ‚ΠΊΠ΅ `master` ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория.
git checkout master
git pull

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ feature
git checkout feature

# Π˜Π½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠΉΡ‚Π΅ слияниС с Π²Π΅Ρ‚ΠΊΠΎΠΉ master 
git merge master

# A merge conflict related to concurrent changes to ci.md will be reported
# => Auto-merging ci.md
#    CONFLICT (content): Merge conflict in ci.md
#    Automatic merge failed; fix conflicts and then commit the result.

# Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈ наш список шагов CI, ΠΈ Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΌ ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ Π² тСкстС.
# ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.md Ρ‡Ρ‚ΠΎΠ± ΠΎΠ½ Π½Π΅ содСрТал ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° слияния
git add ci.md
git merge --continue
# ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сообщСниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния Π² ΡƒΠ΄Π°Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ feature.
git push

# ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ статус запроса Π½Π° измСнСния Π² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ интСрфСйсС GitHub, Π΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ΡΡŒ ΠΏΠΎΠΊΠ° слияниС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ.

Magnum officium!

Tu peractum cum indice et nunc approbare debes petitionem viverra in master.

️ Negotium: Approba viverra petitionem "Recensionem Gradus"

  1. Aperire petitionem viverra.
  2. Preme "Merge viverra petitionem".
  3. Preme "Confirma merge".
  4. Preme "ramum Delete" quia non iam opus est.

Hoc est repositio in tempore
Typical condiciones cum continua integratione

Product error

Dicitur quod probatio adhiberi potest ad ostendendum praesentiam errorum, sed numquam ad exhibendum absentiam suam. Etsi probationes habuimus et nullos errores ostenderunt, cimex insidiosa productio irrepsit.

In missione huius modi, curam habere debemus;

  • quae in productione discursant;
  • codice in sequela master cum errore, e quo tincidunt opus novum incipere possunt.

Num revolvam vel in altera versione figam?

Revolutio est processus explicandi bonam antea notam versionem ad productionem et revertitur committit errorem continentes. "Defixus" est additamentum fixi ad master novam versionem quam primum explicant. Quia APIs ac schematum datorum mutatio in codice ad productionem explicatur, cum continua traditione et bene testi coverage, revolutio est proprie multo difficilior et periculosa quam in altera versione figere.

Cum revolutio nullum periculum in casu nostro portat, hanc viam ibimus, quia nos sinit

  • quam primum productum in errorem fige;
  • fac code in master statim idoneam ad officium novum incipiens.

adsignatione

  1. Switch ad ramum master secundum locum.
  2. Renovatio locorum repositorium e repositorio remoto.
  3. Reverti PR merge committere Vestigia review Π² master.
  4. Mutationes publicas ad armarium remotum.

Haec est historia repositorium cum merge committere revertitur
Typical condiciones cum continua integratione

imperium

# ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Ρ‚ΠΊΡƒ master.
git checkout master

# ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ· ΡƒΠ΄Π°Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ рСпозитория.
git pull

# ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния PR Steps review Π² master.
# ΠœΡ‹ отмСняСм ΠΊΠΎΠΌΠΌΠΈΡ‚ слияния, поэтому Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΡƒ истории, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ
git show HEAD

# ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» послСдним Π² Π²Π΅Ρ‚ΠΊΠ΅ master Π΄ΠΎ слияния, Π±Ρ‹Π» ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΡ‘Π½ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ
git revert HEAD -m 1
# ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ сообщСния ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ измСнСния Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
git push

Sui test

Fac quod ci.md non diutius textum "sneaky bug" post reditum merge committere.

Pone indicem gradibus CI et ad dominum redde

Nos totaliter ad merge commit ramus. feature. Evangelium est quod nunc non erramus master. Malum nuntium est, quod pretiosorum nostrorum indicem continuae integrationis vestigia nimis recesserunt. Ita, idealiter, opus est ut fix ad quod emittit feature et revertetur ad illos master una cum figere.

Ad quaestionem diversimode accedere possumus:

  • reverti est committere quod retexit merge feature с master;
  • motus facit ab illo feature.

Partes evolutionis variae diversis accessionibus in hoc casu utuntur, sed utiles committit ad ramum separatum movebimus et petitionem separatim trahemus pro novo genere huius.

adsignatione

  1. Create filo vocatur feature-fix et vertas ad eam.
  2. Commeare omnia committit ex illo genere feature ad linum novum. Propono certamina merge quae per migrationem facta sunt.

    Typical condiciones cum continua integratione

  3. Addere procedere test to ci.test.js:

    it('does not contain the sneaky bug', () => {
    expect( /.*sneakys+bug.*/gi.test(fileContents)).toBe(false);
    });

  4. Probat localiter currunt fac quod non deficiunt.
  5. Remove textum "cum ausu bug" in ci.md.
  6. Mutationes testium addere et indicem gradatim mutationes in indicem et eas committere.
  7. Divulga ramum ad repositorium remotum.

Finire debes cum simili hoc:
Typical condiciones cum continua integratione

imperium

# Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ feature-fix ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π½Π΅Π΅.
git checkout -b feature-fix

# ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠΈΡ‚Π΅ всС ΠΊΠΎΠΌΠΌΠΈΡ‚Ρ‹ ΠΈΠ· Π±Ρ‹Π²ΡˆΠ΅ΠΉ Π²Π΅Ρ‚ΠΊΠΈ feature Π² Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ‚ΠΊΡƒ. Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ΠΏΡ€ΠΈ пСрСносС.
# ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ…ΡΡˆΠΈ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ²:
# - ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΠΈΡ‚Ρƒ с ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ списка: C0
# - Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ послСдниС элСмСнты списка: C2
git log --oneline --graph
git cherry-pick C0..C2
# Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Ρ‹ слияния
# - ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ ci.md ΠΈ/ΠΈΠ»ΠΈ ci.test.js
# - Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² индСкс
# - Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ "git cherry-pick --continue", ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ сообщСниС ΠΊΠΎΠΌΠΌΠΈΡ‚Π°

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ рСгрСссионный тСст Π² ci.test.js
# ЗапуститС тСсты локально, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ΡΡ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

# Π£Π΄Π°Π»ΠΈΡ‚Π΅ тСкст " with a sneaky bug" Π² ci.md.

# Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π² индСкс измСнСния тСстов ΠΈ Π² спискС шагов ΠΈ Π·Π°ΠΊΠΎΠΌΠΌΠΈΡ‚ΡŒΡ‚Π΅ ΠΈΡ….
git add ci.md ci.test.js
git commit -m "Fix the bug in steps list"

# ΠžΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠΉΡ‚Π΅ Π²Π΅Ρ‚ΠΊΡƒ Π² ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.
git push --set-upstream origin feature-fix

Peto creare viverra.

Creare viverra petitionem cum titulo Fixing pluma. install feature-fix sicut "caput ramus" et master sicut "basi ramus".
Please wait while the probat complete. Potes videre statum probat in fundo PR discussionis.

Fac es installed master in furca repositio Sicut "basis basis", non respondeo petitionibus mutationum ad cursum materiarum repositorium.

Probant viverra petitionem "fixus pluma"

Gratias pro correctione! Quaeso probant mutationes master from traho peto.

adsignatione

  1. Preme "Merge viverra petitionem".
  2. Preme "Confirma merge".
  3. Preme "ramum Delete" quia non iam opus est.

Hoc est quod debes habere ad presens.
Typical condiciones cum continua integratione

Macte!

Perfecisti omnes gradus quos homines typice capiunt in continua integratione.

Si difficultates aliquas observas cum curriculo vel quomodo eam emendare scias, quaeso bilem crea in repositoria cum utique materiae. Hoc utique habet interactive version usura GitHub Learning Lab sicut suggestum.

Source: www.habr.com